1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-19 02:52:53 +02:00
llvm-mirror/lib
James Y Knight 42de23f7fd [SPARC] Revamp AnalyzeBranch and add ReverseBranchCondition.
AnalyzeBranch on X86 (and, previously, SPARC, which implementation was
copied from X86) tries to modify the branches based on block
layout (e.g. checking isLayoutSuccessor), when AllowModify is true.

The rest of the architectures leave that up to the caller, which can
call InsertBranch, RemoveBranch, and ReverseBranchCondition as
appropriate. That appears to be the preferred way to do it nowadays.

This commit makes SPARC like the rest: replaces AnalyzeBranch with an
implementation cribbed from AArch64, and adds a ReverseBranchCondition
implementation.

Additionally, a test-case has been added (also cribbed from AArch64)
demonstrating that redundant branch sequences no longer get emitted.

E.g., it used to emit code like this:
         bne .LBB1_2
         nop
         ba .LBB1_1
         nop
 .LBB1_2:

And now emits:
        cmp %i0, 42
        be .LBB1_1
        nop

llvm-svn: 257572
2016-01-13 04:44:14 +00:00
..
Analysis CannotBeOrderedLessThanZero: add some missing cases 2016-01-12 23:37:30 +00:00
AsmParser Implemented Support of IA interrupt and exception handlers: 2015-12-21 14:07:14 +00:00
Bitcode Bitcode: Fix reading and writing of ConstantDataVectors of halfs 2016-01-06 22:31:32 +00:00
CodeGen Re-Revert r257105 (Verifier debug info changes) 2016-01-13 02:31:14 +00:00
DebugInfo fixing type. 2016-01-09 00:31:56 +00:00
ExecutionEngine [LLI] Replace the LLI remote-JIT support with the new ORC remote-JIT components. 2016-01-11 16:35:55 +00:00
Fuzzer [libFuzzer] make sure to update CurrentUnit when drilling 2016-01-13 01:58:27 +00:00
IR Re-Revert r257105 (Verifier debug info changes) 2016-01-13 02:31:14 +00:00
IRReader [ThinLTO] Metadata linking for imported functions 2015-12-17 17:14:09 +00:00
LibDriver [Option] Use an ArrayRef to store the Option Infos in OptTable. NFC 2015-10-21 16:30:42 +00:00
LineEditor
Linker [IRMover] Don't copy personality, etc unless creating def 2016-01-12 00:24:24 +00:00
LTO [attrs] Split the late-revisit pattern for deducing norecurse in 2016-01-08 10:55:52 +00:00
MC [WebAssembly] Define WebAssembly-specific relocation codes. 2016-01-11 23:38:05 +00:00
Object COFF: Teach llvm-objdump how to dump DLL forwarder symbols. 2016-01-12 23:28:42 +00:00
Option Convert Arg, ArgList, and Option to dump() to dbgs() rather than errs(). 2015-12-18 18:55:26 +00:00
Passes [attrs] Extract the pure inference of function attributes into 2015-12-27 08:41:34 +00:00
ProfileData [Coverage] Refactor coverage mapping reader code 2016-01-13 04:36:15 +00:00
Support Auto-link with ole32.dll to simplify building LLVM.dll 2016-01-12 18:33:49 +00:00
TableGen [TableGen] Use some free space in Init to store the opcode for UnOpInit/BinOpInit/TernOpInit allowing those types to be a little smaller. NFC 2016-01-04 06:28:49 +00:00
Target [SPARC] Revamp AnalyzeBranch and add ReverseBranchCondition. 2016-01-13 04:44:14 +00:00
Transforms [Utils] Insert DW_OP_bit_piece when only describing part of the variable 2016-01-12 22:46:09 +00:00
CMakeLists.txt
LLVMBuild.txt
Makefile