2007-11-14 01:03:01 +00:00
|
|
|
#include <algorithm>
|
2011-03-10 01:31:33 +00:00
|
|
|
#include "odr_header1.h"
|
2007-11-14 01:03:01 +00:00
|
|
|
|
|
|
|
class Ordering {
|
|
|
|
public:
|
2011-03-10 01:31:33 +00:00
|
|
|
bool operator()(int a, int b) __attribute__((never_inline));
|
|
|
|
};
|
|
|
|
|
2011-03-11 21:42:12 +00:00
|
|
|
// This comment makes the line numbers in Ordering::operator() all have
|
|
|
|
// two digits, which causes gold's output to be independent of which
|
|
|
|
// instruction the compiler optimizes into the front of the function.
|
2011-03-10 01:31:33 +00:00
|
|
|
bool Ordering::operator()(int a, int b) {
|
|
|
|
// Optimization makes this operator() a different size than the one
|
|
|
|
// in odr_violation1.cc.
|
2011-07-09 05:09:52 +00:00
|
|
|
return a + 12345 > b / 67;
|
2011-03-11 21:42:12 +00:00
|
|
|
}
|
2007-11-14 01:03:01 +00:00
|
|
|
|
|
|
|
void SortDescending(int array[], int size) {
|
|
|
|
std::sort(array, array + size, Ordering());
|
|
|
|
}
|
2010-07-27 08:22:49 +00:00
|
|
|
|
|
|
|
// This is weak in odr_violation1.cc.
|
|
|
|
extern "C" int OverriddenCFunction(int i) {
|
|
|
|
return i * i;
|
|
|
|
}
|
|
|
|
// This is inline in debug_msg.cc, which makes it a weak symbol too.
|
|
|
|
int SometimesInlineFunction(int i) {
|
|
|
|
return i * i;
|
|
|
|
}
|
2011-03-10 01:31:33 +00:00
|
|
|
|
|
|
|
// Instantiate the Derived vtable, with optimization (see Makefile.am).
|
|
|
|
OdrBase* CreateOdrDerived2() {
|
|
|
|
return new OdrDerived;
|
|
|
|
}
|