llvm-6502/lib
Richard Sandiford 487399a60f [SystemZ] Fix thinko in long branch pass
The original version of the pass could underestimate the length of a backward
branch in cases like:

    alignment to N bytes or more
    ...
    relaxable branch A
    ...
 foo: (aligned to M<N bytes)
    ...
 bar: (aligned to N bytes)
    ...
    relaxable branch B to foo

We don't add any misalignment gap for "bar" because N bytes of alignment
had already been reached earlier in the function.  In this case, assuming
that A is relaxed can push "foo" closer to "bar", and make B appear to be
in range.  Similar problems can occur for forward branches.

I don't think it's possible to create blocks with mixed alignments as
things stand, not least because we haven't yet defined getPrefLoopAlignment()
for SystemZ (that would need benchmarking).  So I don't think we can test
this yet.

Thanks to Rafael Espíndola for spotting the bug.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182460 91177308-0d34-0410-b5e6-96231b3b80d8
2013-05-22 09:57:57 +00:00
..
Analysis isKnownToBeAPowerOfTwo: (X & Y) + Y is a power of 2 or zero if y is also. 2013-05-18 19:30:37 +00:00
Archive
AsmParser Add ArrayRef constructor from None, and do the cleanups that this constructor enables 2013-05-05 00:40:33 +00:00
Bitcode Micro-optimization: don't shift an entire bitcode record over to get the code. 2013-05-10 22:17:10 +00:00
CodeGen Drop @llvm.annotation and @llvm.ptr.annotation intrinsics during codegen. 2013-05-21 14:37:16 +00:00
DebugInfo libDebugInfo depends on libObject nowadays. 2013-05-09 13:48:26 +00:00
ExecutionEngine Expose the RTDyldMemoryManager through the C API. This allows clients of 2013-05-22 02:46:43 +00:00
IR Expose the RTDyldMemoryManager through the C API. This allows clients of 2013-05-22 02:46:43 +00:00
IRReader
Linker Fix a performance bug in the Linker. 2013-05-04 05:05:18 +00:00
MC Cleanup relocation sorting for ELF. 2013-05-15 18:22:01 +00:00
Object Convert obj2yaml to use yamlio. 2013-05-17 22:58:42 +00:00
Option
Support Add cmake bits for md5. 2013-05-21 01:30:38 +00:00
TableGen
Target [SystemZ] Fix thinko in long branch pass 2013-05-22 09:57:57 +00:00
Transforms [msan] A no-op implementation of VarArg handling. 2013-05-21 12:27:47 +00:00
CMakeLists.txt
LLVMBuild.txt
Makefile