llvm-6502/lib
Chandler Carruth 3b7b209bf8 Fix a devilish miscompile exposed by block placement. The
updateTerminator code didn't correctly handle EH terminators in one very
specific case. AnalyzeBranch would find no terminator instruction, and
so the fallback in updateTerminator is to assume fallthrough. This is
correct, but the destination of the fallthrough was assumed to be the
first successor.

This is *almost always* true, but in certain cases the loop
transformations will cause the landing pad to be the first successor!
Instead of this brittle logic, actually look through the successors for
a non-landing-pad accessor, and to assert if more than one is found.

This will hopefully fix some (if not all) of the self host miscompiles
with block placement. Thanks to Benjamin Kramer for reporting, Nick
Lewycky for an initial stab at a reduction, and Duncan for endless
advice on EH (which I know nothing about) as well as reviewing the
actual fix.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145062 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-22 13:13:16 +00:00
..
Analysis Fix crasher in GVN due to my recent capture tracking changes. 2011-11-21 19:42:56 +00:00
Archive build: Add initial cut at LLVMBuild.txt files. 2011-11-03 18:53:17 +00:00
AsmParser build: Add initial cut at LLVMBuild.txt files. 2011-11-03 18:53:17 +00:00
Bitcode build: Add initial cut at LLVMBuild.txt files. 2011-11-03 18:53:17 +00:00
CodeGen Fix a devilish miscompile exposed by block placement. The 2011-11-22 13:13:16 +00:00
DebugInfo Audited all the format strings in libDebugInfo and fixed those that didn't match the types. 2011-11-05 16:01:13 +00:00
ExecutionEngine Sink codegen optimization level into MCCodeGenInfo along side relocation model 2011-11-16 08:38:26 +00:00
Linker build: Add initial cut at LLVMBuild.txt files. 2011-11-03 18:53:17 +00:00
MC Sink codegen optimization level into MCCodeGenInfo along side relocation model 2011-11-16 08:38:26 +00:00
Object Object/COFF: Support common symbols. 2011-11-16 23:36:12 +00:00
Support Add configure checking for pread(2) and use it to save a syscall when reading files. 2011-11-22 12:31:53 +00:00
TableGen ARM vldm and vstm VFP instructions can take a data type suffix. 2011-11-11 23:08:10 +00:00
Target Fix shuffle decoding logic to handle UNPCKLPS/UNPCKLPD on 256-bit vectors correctly. Add support for decoding UNPCKHPS/UNPCKHPD for AVX 128-bit and 256-bit forms. 2011-11-22 01:57:35 +00:00
Transforms Refactor code to use new attribute getters on CallSite for NoCapture and ByVal. 2011-11-20 19:09:04 +00:00
VMCore Fixing a comment 2011-11-21 04:42:21 +00:00
CMakeLists.txt Move TableGen's parser and entry point into a library 2011-10-01 16:41:13 +00:00
LLVMBuild.txt build: Add initial cut at LLVMBuild.txt files. 2011-11-03 18:53:17 +00:00
Makefile Remove more of llvmc and dependencies. 2011-09-20 00:34:27 +00:00