llvm-6502/test
Chandler Carruth 03300ecaee Move the handling of unanalyzable branches out of the loop-driven chain
formation phase and into the initial walk of the basic blocks. We
essentially pre-merge all blocks where unanalyzable fallthrough exists,
as we won't be able to update the terminators effectively after any
reorderings. This is quite a bit more principled as there may be CFGs
where the second half of the unanalyzable pair has some analyzable
predecessor that gets placed first. Then it may get placed next,
implicitly breaking the unanalyzable branch even though we never even
looked at the part that isn't analyzable. I've included a test case that
triggers this (thanks Benjamin yet again!), and I'm hoping to synthesize
some more general ones as I dig into related issues.

Also, to make this new scheme work we have to be able to handle branches
into the middle of a chain, so add this check. We always fallback on the
incoming ordering.

Finally, this starts to really underscore a known limitation of the
current implementation -- we don't consider broken predecessors when
merging successors. This can caused major missed opportunities, and is
something I'm planning on looking at next (modulo more bug reports).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144994 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-19 10:26:02 +00:00
..
Analysis Don't forget to check FlagNW when determining whether an AddRecExpr will wrap 2011-11-09 07:11:37 +00:00
Archive
Assembler Fix a typo in the bitcode reader in the handling of atomic stores. Reported by David Meyer on llvmdev. 2011-09-19 19:41:28 +00:00
Bindings/Ocaml OCaml bindings: add some missing functions and testcases. 2011-10-14 20:38:33 +00:00
Bitcode The bitcode reader can create an shuffle with a place holder mask which it will 2011-10-26 00:34:48 +00:00
BugPoint
CodeGen Move the handling of unanalyzable branches out of the loop-driven chain 2011-11-19 10:26:02 +00:00
DebugInfo The dwarf standard says that the only differences between a out-of-line 2011-11-12 01:57:54 +00:00
ExecutionEngine Excluding ARM JIT tests until someone can fix this compilation path. 2011-08-26 23:39:30 +00:00
Feature Update tests to the newest EH syntax. 2011-08-25 01:30:18 +00:00
Instrumentation/AddressSanitizer [asan] workaround for reg alloc bug 11395: don't instrument functions with large chunks of inline assembler 2011-11-18 01:41:06 +00:00
Integer
lib tests: Rip out a bunch of now unused test code relating to use of llvm-gcc in LLVM tests. 2011-10-27 20:59:26 +00:00
Linker Let this test pass even if 'int' is somewhere in its directory path. 2011-10-15 18:07:16 +00:00
MC Remove obsolete test. 2011-11-16 22:50:38 +00:00
Object Move x86-specific tests into X86 folder. 2011-11-01 03:21:48 +00:00
Other Update to new EH scheme. 2011-08-31 21:44:24 +00:00
Scripts Fix the bitwidth of the remaining fields. 2011-08-04 17:00:11 +00:00
TableGen XFAIL test on leak checkers. 2011-10-24 17:24:05 +00:00
Transforms Fix a corner case in updating LoopInfo after fully unrolling an outer loop. 2011-11-18 03:42:41 +00:00
Unit tests: Rip out a bunch of now unused test code relating to use of llvm-gcc in LLVM tests. 2011-10-27 20:59:26 +00:00
Verifier
CMakeLists.txt build/cmake: Change to require Python be available. 2011-11-04 23:04:05 +00:00
lit.cfg Update lit's list of tools. 2011-11-05 16:20:52 +00:00
lit.site.cfg.in tests: Rip out a bunch of now unused test code relating to use of llvm-gcc in LLVM tests. 2011-10-27 20:59:26 +00:00
Makefile build/make/test: Get rid of unused BUGPOINT_TOPTS variable. 2011-11-16 23:56:03 +00:00
Makefile.tests
site.exp.in tests: Rip out a bunch of now unused test code relating to use of llvm-gcc in LLVM tests. 2011-10-27 20:59:26 +00:00
TestRunner.sh