From 2dcc7be873396260e10161e2258d5a75b6be3ade Mon Sep 17 00:00:00 2001 From: Frits van Bommel Date: Mon, 23 Mar 2009 01:01:55 +0100 Subject: [PATCH] Workaround for LLVM PR 3861 (http://llvm.org/PR3861). (LLVM abort()s in codegen if the second integer in a return value is <= i8 on x86/x86-64) This was breaking native compilation of Tango's TempFile module on x86-64. --- gen/abi-x86-64.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/gen/abi-x86-64.cpp b/gen/abi-x86-64.cpp index 71939aa3..933df668 100644 --- a/gen/abi-x86-64.cpp +++ b/gen/abi-x86-64.cpp @@ -400,6 +400,15 @@ 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 + // TODO: Disable this if and when LLVM PR 3861 gets fixed. + + // LLVM currently doesn't allow a second int to be an i1 or i8. + // (See ) + // Rather than complicating shouldPassStructInRegs(), just disallow + // second integers for now. + state.ints = 1; + #endif return shouldPassStructInRegs(st, state); }