Re-apply [1346], which was reverted in [1348], now that padding should no longer

be a problem.
As noted before, this will break ABI-compatibility on x86-64, so recompile old
code before linking with newly-compiled code if you're on x86-64.
As an added bonus, I actually tested it this time :).
This commit is contained in:
Frits van Bommel
2009-05-14 20:40:56 +02:00
parent 287b1278d3
commit 41c738f4da

View File

@@ -44,7 +44,6 @@
#include "gen/abi.h"
#include "gen/abi-x86-64.h"
#include "gen/structs.h"
//#include "gen/llvm-version.h" // only use is commented out.
#include "ir/irfunction.h"
#include <cassert>
@@ -402,19 +401,6 @@ namespace x86_64_D_cc {
bool retStructInRegs(TypeStruct* st) {
// 'fastcc' allows returns in up to two registers of each kind:
DRegCount state(2, 2, 2);
#if 1 //LLVM_REV < 67588
// (If uncommenting the LLVM_REV line above, also uncomment llvm-version #include
// LLVM before trunk r67588 doesn't allow a second int to be an i1 or
// i8. (See <http://llvm.org/PR3861>)
// Rather than complicating shouldPassStructInRegs(), just disallow
// second integers for now.
// FIXME: Disabling this for older LLVM only makes the abi dependent on
// LLVM revision, which seems like a bad idea. We could extend
// i8 parts to i16 to work around this issue until 2.6...
// TODO: Remove this workaround when support for LLVM 2.5 is dropped.
state.ints = 1;
#endif
return shouldPassStructInRegs(st, state);
}