Go to file
Chandler Carruth ee54feb6f6 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.

llvm-svn: 145062
2011-11-22 13:13:16 +00:00
clang [libclang] Indexing API: Support C++ symbols. 2011-11-22 07:24:51 +00:00
compiler-rt platform/clang_darwin: Fix a refacto and commento. 2011-11-17 17:47:22 +00:00
debuginfo-tests Testcase for r133065 2011-06-15 17:57:23 +00:00
libcxx Clarify building instructions for 10.7 2011-11-17 17:14:16 +00:00
libcxxabi reformatted to match Clang style; thanks to John McCall for the nudge 2011-08-15 18:06:47 +00:00
lldb Save the arguments for a process launch in the target.run-args so they can 2011-11-21 21:51:18 +00:00
llvm Fix a devilish miscompile exposed by block placement. The 2011-11-22 13:13:16 +00:00
polly RegisterPass: Disable Polly by default 2011-11-17 19:10:48 +00:00