From ec476cc5f10677f4ee5e228bf6ee15e0c5b41a97 Mon Sep 17 00:00:00 2001 From: Frits van Bommel Date: Tue, 12 May 2009 15:50:48 +0200 Subject: [PATCH] Remove an old workaround that was kept around for ABI-compatibility on x86-64 between different LLVM versions. This means LLVM r67588 is required if you want to compile for x86-64, otherwise the backend will assert when you try to return e.g. struct { int i; char c; } from a function. (In particular, this is no longer compatible with LLVM 2.5) It also means that any code returning small structs on x86-64 will probably need to be recompiled in order to be linkable to code compiled with this change. --- gen/abi-x86-64.cpp | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/gen/abi-x86-64.cpp b/gen/abi-x86-64.cpp index 7fdbb5d0..71939aa3 100644 --- a/gen/abi-x86-64.cpp +++ b/gen/abi-x86-64.cpp @@ -43,7 +43,6 @@ #include "gen/llvmhelpers.h" #include "gen/abi.h" #include "gen/abi-x86-64.h" -//#include "gen/llvm-version.h" // only use is commented out. #include "ir/irfunction.h" #include @@ -401,19 +400,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 ) - // 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); }