| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
| |
llvm-svn: 150178
|
| |
|
|
|
|
|
|
|
| |
GlobalOpt runs early in the pipeline (before inlining) and complex class
hierarchies often introduce bitcasts or GEPs which weren't optimized away.
Teach it to ignore side-effect free instructions instead of depending on
other passes to remove them.
llvm-svn: 150174
|
| |
|
|
|
|
| |
UNPREDICTABLE on ARM. Wire this to tBLX in order to provide test coverage.
llvm-svn: 150169
|
| |
|
|
| |
llvm-svn: 150167
|
| |
|
|
|
|
| |
needed to store pointers on 64-bit hosts and reduce relocations needed at startup. Part of PR11953.
llvm-svn: 150161
|
| |
|
|
|
|
|
| |
Failure to preserve kills was causing LiveIntervals to miss some EFLAGS live
ranges. Unfortunately I've been unable to reduce a good test case yet.
llvm-svn: 150152
|
| |
|
|
| |
llvm-svn: 150150
|
| |
|
|
| |
llvm-svn: 150149
|
| |
|
|
|
|
|
| |
Split CodeGen into stages.
Distinguish between optimization and correctness.
llvm-svn: 150122
|
| |
|
|
| |
llvm-svn: 150121
|
| |
|
|
|
|
|
|
|
|
|
| |
If someone would prefer a clear name for the 'success' error_value we could
come up with one - potentially just a 'named constructor' style
'error_value::success()' to make this expression more self-documenting. If
I see this come up in other cases I'll certainly consider it.
One step along the way to resolving PR11944.
llvm-svn: 150120
|
| |
|
|
|
|
| |
This does make a difference, at least when using RABasic.
llvm-svn: 150118
|
| |
|
|
|
|
|
| |
Calls clobber the flags, but when using register masks there is no
EFLAGS<imp-def> operand.
llvm-svn: 150117
|
| |
|
|
|
|
|
|
|
|
|
| |
I think this was already the intention, but DeadMachineInstructionElim
was accidentally tracking the liveness of reserved registers. Now,
instructions with reserved defs are never deleted.
This prevents the call stack adjustment instructions from getting
deleted when enabling register masks.
llvm-svn: 150116
|
| |
|
|
|
|
|
|
| |
For simplicity, treat calls with register masks as basic block
boundaries. This means we can't copy propagate callee-saved registers
across calls, but I don't think that is a big deal.
llvm-svn: 150108
|
| |
|
|
|
|
| |
llvm part
llvm-svn: 150102
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Moving toward a uniform style of pass definition to allow easier target configuration.
Globally declare Pass ID.
Globally declare pass initializer.
Use INITIALIZE_PASS consistently.
Add a call to the initializer from CodeGen.cpp.
Remove redundant "createPass" functions and "getPassName" methods.
While cleaning up declarations, cleaned up comments (sorry for large diff).
llvm-svn: 150100
|
| |
|
|
| |
llvm-svn: 150099
|
| |
|
|
| |
llvm-svn: 150098
|
| |
|
|
| |
llvm-svn: 150097
|
| |
|
|
| |
llvm-svn: 150096
|
| |
|
|
| |
llvm-svn: 150095
|
| |
|
|
| |
llvm-svn: 150094
|
| |
|
|
| |
llvm-svn: 150093
|
| |
|
|
| |
llvm-svn: 150092
|
| |
|
|
| |
llvm-svn: 150091
|
| |
|
|
|
|
|
| |
When a virtual register is live across a call, limit the search space to
call-preserved registers.
llvm-svn: 150081
|
| |
|
|
|
|
|
|
| |
Creating the isPredicated TSFlag enables the code
to use the property defined in the instruction format
instead of using a large switch statement.
llvm-svn: 150078
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Build an ordered vector of register mask operands (i.e., calls) when
computing live intervals. Provide a checkRegMaskInterference() function
that computes a bit mask of usable registers for a live range.
This is a quick way of determining of a live range crosses any calls,
and restricting it to the callee saved registers if it does.
Previously, we had to discover call clobbers for each candidate register
independently.
llvm-svn: 150077
|
| |
|
|
|
|
| |
and setting that.
llvm-svn: 150074
|
| |
|
|
| |
llvm-svn: 150071
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
> This IR code
> %res = call <8 x float> @llvm.x86.avx.cmp.ps.256(<8 x float> %a0, <8 x float> %a1, i8 14)
> fails with assertion:
>
> llc: X86ATTInstPrinter.cpp:62: void llvm::X86ATTInstPrinter::printSSECC(const llvm::MCInst*, unsigned int, llvm::raw_ostream&): Assertion `0 && "Invalid ssecc argument!"' failed.
> 0 llc 0x0000000001355803
> 1 llc 0x0000000001355dc9
> 2 libpthread.so.0 0x00007f79a30575d0
> 3 libc.so.6 0x00007f79a23a1945 gsignal + 53
> 4 libc.so.6 0x00007f79a23a2f21 abort + 385
> 5 libc.so.6 0x00007f79a239a810 __assert_fail + 240
> 6 llc 0x00000000011858d5 llvm::X86ATTInstPrinter::printSSECC(llvm::MCInst const*, unsigned int, llvm::raw_ostream&) + 119
I added the full testing for all possible pseudo-ops of cmp.
I extended X86AsmPrinter.cpp and X86IntelInstPrinter.cpp.
You'l also see lines alignments (unrelated to this fix) in X86IselLowering.cpp from my previous check-in.
llvm-svn: 150068
|
| |
|
|
| |
llvm-svn: 150067
|
| |
|
|
|
|
| |
Custom lower the intrinsics to the vpermilp target specific node and remove intrinsic patterns.
llvm-svn: 150060
|
| |
|
|
| |
llvm-svn: 150047
|
| |
|
|
| |
llvm-svn: 150045
|
| |
|
|
| |
llvm-svn: 150044
|
| |
|
|
| |
llvm-svn: 150043
|
| |
|
|
| |
llvm-svn: 150041
|
| |
|
|
|
|
|
|
| |
can rauw forward declarations if we decide to emit the full type.
Part of rdar://10809898
llvm-svn: 150024
|
| |
|
|
| |
llvm-svn: 150022
|
| |
|
|
| |
llvm-svn: 150014
|
| |
|
|
| |
llvm-svn: 150012
|
| |
|
|
| |
llvm-svn: 150008
|
| |
|
|
| |
llvm-svn: 149999
|
| |
|
|
|
|
|
|
| |
load / store) if the ADD / SUB has a live definition of CPSR.
Bug reported by David Meyer. Alas, no test case.
llvm-svn: 149970
|
| |
|
|
| |
llvm-svn: 149968
|
| |
|
|
| |
llvm-svn: 149967
|
| |
|
|
| |
llvm-svn: 149961
|
| |
|
|
| |
llvm-svn: 149954
|