- Feb 17, 2013
-
-
Cameron Zwarich authored
llvm-svn: 175385
-
Cameron Zwarich authored
MachineBasicBlock::SplitCriticalEdge. Since this is an iterator rather than an instr_iterator, the isBundled() check only passes if getFirstTerminator() returned end() and the garbage memory happens to lean that way. Multiple successors can be present without any terminator instructions in the case of exception handling with a fallthrough. llvm-svn: 175383
-
Cameron Zwarich authored
terminators that actually have register uses when splitting critical edges. This commit also introduces a method repairIntervalsInRange() on LiveIntervals, which allows for repairing LiveIntervals in a small range after an arbitrary target hook modifies, inserts, and removes instructions. It's pretty limited right now, but I hope to extend it to support all of the things that are done by the convertToThreeAddress() target hooks. llvm-svn: 175382
-
- Feb 16, 2013
-
-
Benjamin Kramer authored
This avoids unnecessary copies. No functionality change. llvm-svn: 175367
-
Benjamin Kramer authored
No functionality change. llvm-svn: 175366
-
Jakub Staszak authored
llvm-svn: 175365
-
Jakub Staszak authored
updateScheduledPressure method. llvm-svn: 175362
-
Chad Rosier authored
If the frame pointer is omitted, and any stack changes occur in the inline assembly, e.g.: "pusha", then any C local variable or C argument references will be incorrect. I pass no judgement on anyone who would do such a thing. ;) rdar://13218191 llvm-svn: 175334
-
- Feb 15, 2013
-
-
Bill Wendling authored
If two functions require different features (e.g., `-mno-sse' vs. `-msse') then we want to honor that, especially during LTO. We can do that by resetting the subtarget's features depending upon the 'target-feature' attribute. llvm-svn: 175314
-
Paul Redmond authored
- add sincos to runtime library if target triple environment is GNU - added canCombineSinCosLibcall() which checks that sincos is in the RTL and if the environment is GNU then unsafe fpmath is enabled (required to preserve errno) - extended sincos-opt lit test Reviewed by: Hal Finkel llvm-svn: 175283
-
Benjamin Kramer authored
llvm-svn: 175264
-
- Feb 14, 2013
-
-
Nadav Rotem authored
llvm-svn: 175190
-
Owen Anderson authored
Add some legality checks for SETCC before introducing it in the DAG combiner post-operand legalization. llvm-svn: 175149
-
Cameron Zwarich authored
register class to match the defining instruction. llvm-svn: 175130
-
Cameron Zwarich authored
CoalescerPairs. Also, make it take a CoalescerPair directly like other methods of RegisterCoalescer. llvm-svn: 175123
-
Cameron Zwarich authored
of the copy is a subregister def. The current code assumes that it can do a full def of the destination register, but it is not checking that the def operand is read-undef. It also doesn't clear the subregister index of the destination in the new instruction to reflect the full subregister def. These issues were found running 'make check' with my next commit that enables rematerialization in more cases. llvm-svn: 175122
-
- Feb 13, 2013
-
-
Manman Ren authored
Remove dead functions: renameRegister Move private member variables from LDV to Impl Remove ssp/uwtable from testing case llvm-svn: 175072
-
Andrew Trick authored
llvm-svn: 175067
-
Eric Christopher authored
llvm-svn: 175024
-
Manman Ren authored
RegisterCoalescer used to depend on LiveDebugVariable. LDV removes DBG_VALUEs without emitting them at the end. We fix this by removing LDV from RegisterCoalescer. Also add an assertion to make sure we call emitDebugValues if DBG_VALUEs are removed at runOnMachineFunction. rdar://problem/13183203 Reviewed by Andy & Jakob llvm-svn: 175023
-
- Feb 12, 2013
-
-
Guy Benyei authored
Add static cast to unsigned char whenever a character classification function is called with a signed char argument, in order to avoid assertions in Windows Debug configuration. llvm-svn: 175006
-
Krzysztof Parzyszek authored
option "generate-dwarf-pubnames" to control it, set to "false" by default. llvm-svn: 174981
-
Sergei Larin authored
Equal treatment of labels and other terminators in MI DAG construction. MI sched DAG construction allows targets to include terminators into scheduling DAG. Extend this functionality to labels as well. llvm-svn: 174977
-
Paul Redmond authored
DAGCombiner::ReduceLoadWidth was converting (trunc i32 (shl i64 v, 32)) into (shl i32 v, 32) into undef. To prevent this, check the shift count against the final result size. Patch by: Kevin Schoedel Reviewed by: Nadav Rotem llvm-svn: 174972
-
Cameron Zwarich authored
live range after inserting a copy at the end of a block. llvm-svn: 174945
-
Cameron Zwarich authored
llvm-svn: 174944
-
Cameron Zwarich authored
particularly useful for catching issues with architectures that have exotic terminators like MIPS. llvm-svn: 174938
-
Cameron Zwarich authored
a critical edge. llvm-svn: 174936
-
Cameron Zwarich authored
live ranges should always be extended, and the only successor that should be considered for extension of other ranges is the target of the split edge. llvm-svn: 174935
-
Pete Cooper authored
Sorry for the lack of a test case. I tried writing one for i386 as i know selects are illegal on this target, but they are actually considered legal by isel and expanded later. I can't see any targets to trigger this, but checking for the legality of a node before forming it is general goodness. llvm-svn: 174934
-
- Feb 11, 2013
-
-
Cameron Zwarich authored
This is currently a bit hairier than it needs to be, since depending on where the split block resides the end ListEntry of the split block may be the end ListEntry of the original block or a new entry. Some changes to the SlotIndexes updating should make it possible to eliminate the two cases here. This also isn't as optimized as it could be. In the future Liveinterval should probably get a flag that indicates whether the LiveInterval is within a single basic block. We could ignore all such intervals when splitting an edge. llvm-svn: 174870
-
Cameron Zwarich authored
really trying to avoid piping SlotIndexes through to RemoveBranch() and friends. llvm-svn: 174869
-
Bob Wilson authored
This reverts my commit 171047. Now that I've removed my misguided attempt to support backend warnings, these diagnostics are only about inline assembly. It would take quite a bit more work to generalize them properly, so I'm just reverting this. llvm-svn: 174860
-
Evan Cheng authored
function is successfully handled by fast-isel. That's because function arguments are *always* handled by SDISel. Introduce FastLowerArguments to allow each target to provide hook to handle formal argument lowering. As a proof-of-concept, add ARMFastIsel::FastLowerArguments to handle functions with 4 or fewer scalar integer (i8, i16, or i32) arguments. It completely eliminates the need for SDISel for trivial functions. rdar://13163905 llvm-svn: 174855
-
Evan Cheng authored
llvm-svn: 174854
-
Cameron Zwarich authored
support for updating SlotIndexes to MachineBasicBlock::SplitCriticalEdge(). This calls renumberIndexes() every time; it should be improved to only renumber locally. llvm-svn: 174851
-
Cameron Zwarich authored
both LiveVariables and LiveIntervals. llvm-svn: 174850
-
- Feb 10, 2013
-
-
Cameron Zwarich authored
present, it currently verifies them with the MachineVerifier, and this passed all of the test cases in 'make check' (when accounting for existing verifier errors). There were some assertion failures in the two-address pass, but they also happened on code without phis and look like they are caused by different kill flags from LiveIntervals. The only part that doesn't work is the critical edge splitting heuristic, because there isn't currently an efficient way to update LiveIntervals after splitting an edge. I'll probably start by implementing the slow fallback and test that it works before tackling the fast path for single-block ranges. The existing code that updates LiveVariables is fairly slow as it is. There isn't a command-line option for enabling this; instead, just edit PHIElimination.cpp to require LiveIntervals. llvm-svn: 174831
-
Cameron Zwarich authored
llvm-svn: 174830
-
Cameron Zwarich authored
make sense anymore. llvm-svn: 174829
-