Commit | Line | Data |
---|---|---|
a55ce7fe | 1 | #include <algorithm> |
71ff8986 | 2 | #include "odr_header1.h" |
a55ce7fe ILT |
3 | |
4 | class Ordering { | |
5 | public: | |
71ff8986 ILT |
6 | bool operator()(int a, int b) __attribute__((never_inline)); |
7 | }; | |
8 | ||
ed16fd1b ILT |
9 | // This comment makes the line numbers in Ordering::operator() all have |
10 | // two digits, which causes gold's output to be independent of which | |
11 | // instruction the compiler optimizes into the front of the function. | |
71ff8986 ILT |
12 | bool Ordering::operator()(int a, int b) { |
13 | // Optimization makes this operator() a different size than the one | |
14 | // in odr_violation1.cc. | |
9c16daf1 | 15 | return a + 12345 > b / 67; |
ed16fd1b | 16 | } |
a55ce7fe ILT |
17 | |
18 | void SortDescending(int array[], int size) { | |
19 | std::sort(array, array + size, Ordering()); | |
20 | } | |
9691462b ILT |
21 | |
22 | // This is weak in odr_violation1.cc. | |
23 | extern "C" int OverriddenCFunction(int i) { | |
24 | return i * i; | |
25 | } | |
26 | // This is inline in debug_msg.cc, which makes it a weak symbol too. | |
27 | int SometimesInlineFunction(int i) { | |
28 | return i * i; | |
29 | } | |
71ff8986 ILT |
30 | |
31 | // Instantiate the Derived vtable, with optimization (see Makefile.am). | |
32 | OdrBase* CreateOdrDerived2() { | |
33 | return new OdrDerived; | |
34 | } |