After Jakob's r147938 exception handling on i386 was completely broken.
authorBenjamin Kramer <benny.kra@googlemail.com>
Thu, 12 Jan 2012 17:37:18 +0000 (17:37 +0000)
committerBenjamin Kramer <benny.kra@googlemail.com>
Thu, 12 Jan 2012 17:37:18 +0000 (17:37 +0000)
Restore the (obviously wrong) behavior from before r147938 without relying on
undefined behavior. Add a fat FIXME note.

This should fix nightly tester failures.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148030 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/X86/X86FrameLowering.cpp

index 4cda76c0a410a18a4b6e7288d52fd576c50ddb46..c2f2c1ffef472d7668d55c015a6a877db77bd70a 100644 (file)
@@ -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;