From 9ece950ddb1555a08bf8a0b6813ea330dbe6dae8 Mon Sep 17 00:00:00 2001 From: Benjamin Kramer Date: Thu, 12 Jan 2012 17:37:18 +0000 Subject: After Jakob's r147938 exception handling on i386 was completely broken. Restore the (obviously wrong) behavior from before r147938 without relying on undefined behavior. Add a fat FIXME note. This should fix nightly tester failures. llvm-svn: 148030 --- llvm/lib/Target/X86/X86FrameLowering.cpp | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'llvm/lib') diff --git a/llvm/lib/Target/X86/X86FrameLowering.cpp b/llvm/lib/Target/X86/X86FrameLowering.cpp index 4cda76c0a41..c2f2c1ffef4 100644 --- a/llvm/lib/Target/X86/X86FrameLowering.cpp +++ b/llvm/lib/Target/X86/X86FrameLowering.cpp @@ -455,6 +455,13 @@ encodeCompactUnwindRegistersWithFrame(unsigned SavedRegs[CU_NUM_SAVED_REGS], }; const unsigned *CURegs = (Is64Bit ? CU64BitRegs : CU32BitRegs); + // FIXME: The code below is WRONG and breaks tests on i386, see + // SingleSource/Regression/C++/EH/ctor_dtor_count.exec + // SingleSource/Regression/C++/EH/exception_spec_test.exec + // SingleSource/Regression/C++/EH/function_try_block.exec + // SingleSource/Regression/C++/EH/throw_rethrow_test.exec + return ~0U; + // Encode the registers in the order they were saved, 3-bits per register. The // registers are numbered from 1 to 6. uint32_t RegEnc = 0; -- cgit v1.2.3