- Sep 12, 2012
-
-
Eric Christopher authored
This should be done on the subprogram, not the variable itself. llvm-svn: 163734
-
Dmitri Gribenko authored
llvm-svn: 163721
-
Kristof Beyls authored
Fix constant folding through bitcasts by no longer relying on undefined behaviour (converting NaN values between float and double). SelectionDAG::getConstantFP(double Val, EVT VT, bool isTarget); should not be used when Val is not a simple constant (as the comment in SelectionDAG.h indicates). This patch avoids using this function when folding an unknown constant through a bitcast, where it cannot be guaranteed that Val will be a simple constant. llvm-svn: 163703
-
Nadav Rotem authored
Add a flag to disable the code that looks for allocas which escaped the lifetime regions. This is useful for debugging. No testcase because without this check we fail on assertions when finding escaped allocas. llvm-svn: 163702
-
James Molloy authored
Add a function computeRegisterLiveness() to MachineBasicBlock. This uses analyzePhysReg() from r163694 to heuristically try and determine the liveness state of a physical register upon arrival at a particular instruction in a block. The search for liveness is clipped to a specific number of instructions around the target MachineInstr, in order to avoid degenerating into an O(N^2) algorithm. It tries to use various clues about how instructions around (both before and after) a given MachineInstr use that register, to determine its state at the MachineInstr. llvm-svn: 163695
-
James Molloy authored
Add an analyzePhysReg() function to MachineOperandIteratorBase that analyses an instruction's use of a physical register, analogous to analyzeVirtReg. Rename RegInfo to VirtRegInfo so as not to be confused with the new PhysRegInfo. llvm-svn: 163694
-
Nadav Rotem authored
llvm-svn: 163687
-
Lang Hames authored
findLastUseBefore was previous considering virtreg liveness only, leading to incorrect live intervals for reg units when instrs with physreg operands were moved up. llvm-svn: 163685
-
Nadav Rotem authored
The input program may contain intructions which are not inside lifetime markers. This can happen due to a bug in the compiler or due to a bug in user code (for example, returning a reference to a local variable). This commit adds checks that all of the instructions in the function and invalidates lifetime ranges which do not contain all of the instructions. llvm-svn: 163678
-
Eric Christopher authored
Part of rdar://9797999 llvm-svn: 163667
-
Manman Ren authored
"#if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP)" No functional change. Update r163339. llvm-svn: 163653
-
- Sep 11, 2012
-
-
Chad Rosier authored
Add support in the EmitMSInlineAsmStr() function for handling integer consts. llvm-svn: 163645
-
Nadav Rotem authored
Dragonegg selfhost exposed additional cases where alloca usage moved outside of lifetime markers. Disabling the pass for now. llvm-svn: 163623
-
Nadav Rotem authored
llvm-svn: 163617
-
Nadav Rotem authored
llvm-svn: 163616
-
Craig Topper authored
Teach DAG combiner to constant fold FABS of a BUILD_VECTOR of ConstantFPs. Factor similar code out of FNEG DAG combiner. llvm-svn: 163587
-
Andrew Trick authored
The Hexagon target decided to use a lot of functionality from the target-independent scheduler. That's fine, and other targets should be able to do the same. This reorg and API update makes that easy. For the record, ScheduleDAGMI was not meant to be subclassed. Instead, new scheduling algorithms should be able to implement MachineSchedStrategy and be done. But if need be, it's nice to be able to extend ScheduleDAGMI, so I also made that easier. The target scheduler is somewhat more apt to break that way though. llvm-svn: 163580
-
Eric Christopher authored
right now. We'll fix PR13303 a different way. llvm-svn: 163570
-
Eric Christopher authored
llvm-svn: 163569
-
Eric Christopher authored
llvm-svn: 163568
-
Eric Christopher authored
llvm-svn: 163567
-
- Sep 10, 2012
-
-
Chad Rosier authored
and InlineAsmVariant don't match. llvm-svn: 163550
-
Dmitri Gribenko authored
llvm-svn: 163547
-
Nadav Rotem authored
llvm-svn: 163545
-
Chad Rosier authored
and update the printOperand() function accordingly. llvm-svn: 163544
-
Nadav Rotem authored
llvm-svn: 163539
-
Nadav Rotem authored
llvm-svn: 163530
-
Michael Ilseman authored
This folding happens as early as possible for performance reasons, and to make sure it isn't foiled by other transforms (e.g. forming FMAs). llvm-svn: 163519
-
Michael Ilseman authored
llvm-svn: 163518
-
James Molloy authored
Fix an assertion failure when optimising a shufflevector incorrectly into concat_vectors, and a followup bug with SelectionDAG::getNode() creating nodes with invalid types. llvm-svn: 163511
-
Nadav Rotem authored
llvm-svn: 163510
-
Nadav Rotem authored
llvm-svn: 163509
-
Nadav Rotem authored
Stack Coloring: When searching for disjoint regions, do not compare intervals twice or to theirself. llvm-svn: 163508
-
Nadav Rotem authored
llvm-svn: 163507
-
Nadav Rotem authored
llvm-svn: 163496
-
Nadav Rotem authored
llvm-svn: 163495
-
Nadav Rotem authored
llvm-svn: 163494
-
Craig Topper authored
llvm-svn: 163483
-
- Sep 09, 2012
-
-
Benjamin Kramer authored
LiveVariables: Compute a set of defs and kills to speed up updating LV during critical edge splitting. Previously we checked if the register is def'd in a block via the def/use list a nd walked the list of kills to check if the register is killed in a block. Both of these checks can be made much cheaper by walking the block first and recording all defs and kills. This reduces the compile time of the test case from PR13651 from 40s to 15s at -O2. The compile time is still dominated by LV updating but now the main culprit is SparseBitVector's slowness. llvm-svn: 163478
-
- Sep 07, 2012
-
-
Benjamin Kramer authored
For some reason .lcomm uses byte alignment and .comm log2 alignment so we can't use the same setting for both. Fix this by reintroducing the LCOMM enum. I verified this against mingw's gcc. llvm-svn: 163420
-