| #
f4223918 |
| 24-Apr-2014 |
Adrian Prantl <[email protected]> |
Debug info for optimized code: Support variables that are on the stack and described by DBG_VALUEs during their lifetime.
Previously, when a variable was at a FrameIndex for any part of its lifetime
Debug info for optimized code: Support variables that are on the stack and described by DBG_VALUEs during their lifetime.
Previously, when a variable was at a FrameIndex for any part of its lifetime, this would shadow all other DBG_VALUEs and only a single fbreg location would be emitted, which in fact is only valid for a small range and not the entire lexical scope of the variable. The included dbg-value-const-byref testcase demonstrates this.
This patch fixes this by Local - emitting dbg.value intrinsics for allocas that are passed by reference - dropping all dbg.declares (they are now fully lowered to dbg.values) SelectionDAG - renamed constructors for SDDbgValue for better readability. - fix UserValue::match() to handle indirect values correctly - not inserting an MMI table entries for dbg.values that describe allocas. - lowering dbg.values that describe allocas into *indirect* DBG_VALUEs. CodeGenPrepare - leaving dbg.values for an alloca were they are (see comment) Other - regenerated/updated instcombine-intrinsics testcase and included source
rdar://problem/16679879 http://reviews.llvm.org/D3374
llvm-svn: 207130
show more ...
|
| #
1b9dde08 |
| 22-Apr-2014 |
Chandler Carruth <[email protected]> |
[Modules] Remove potential ODR violations by sinking the DEBUG_TYPE define below all header includes in the lib/CodeGen/... tree. While the current modules implementation doesn't check for this kind
[Modules] Remove potential ODR violations by sinking the DEBUG_TYPE define below all header includes in the lib/CodeGen/... tree. While the current modules implementation doesn't check for this kind of ODR violation yet, it is likely to grow support for it in the future. It also removes one layer of macro pollution across all the included headers.
Other sub-trees will follow.
llvm-svn: 206837
show more ...
|
| #
2b1dfa72 |
| 21-Apr-2014 |
David Blaikie <[email protected]> |
Use unique_ptr to handle ownership of UserValues in LiveDebugVariablesImpl
llvm-svn: 206785
|
| #
c0196b1b |
| 14-Apr-2014 |
Craig Topper <[email protected]> |
[C++11] More 'nullptr' conversion. In some cases just using a boolean check instead of comparing to nullptr.
llvm-svn: 206142
|
|
Revision tags: llvmorg-3.4.1-rc1 |
|
| #
b36376ef |
| 17-Mar-2014 |
Owen Anderson <[email protected]> |
Switch a number of loops in lib/CodeGen over to range-based for-loops, now that the MachineRegisterInfo iterators are compatible with it.
llvm-svn: 204075
|
| #
16c6bf49 |
| 13-Mar-2014 |
Owen Anderson <[email protected]> |
Phase 2 of the great MachineRegisterInfo cleanup. This time, we're changing operator* on the by-operand iterators to return a MachineOperand& rather than a MachineInstr&. At this point they almost
Phase 2 of the great MachineRegisterInfo cleanup. This time, we're changing operator* on the by-operand iterators to return a MachineOperand& rather than a MachineInstr&. At this point they almost behave like normal iterators!
Again, this requires making some existing loops more verbose, but should pave the way for the big range-based for-loop cleanups in the future.
llvm-svn: 203865
show more ...
|
| #
9a4c9e59 |
| 06-Mar-2014 |
Chandler Carruth <[email protected]> |
[Layering] Move DebugInfo.h into the IR library where its implementation already lives.
llvm-svn: 203046
|
| #
b6d0bd48 |
| 02-Mar-2014 |
Benjamin Kramer <[email protected]> |
[C++11] Replace llvm::next and llvm::prior with std::next and std::prev.
Remove the old functions.
llvm-svn: 202636
|
|
Revision tags: llvmorg-3.4.0, llvmorg-3.4.0-rc3, llvmorg-3.4.0-rc2, llvmorg-3.4.0-rc1 |
|
| #
b7dee8a6 |
| 20-Nov-2013 |
Eric Christopher <[email protected]> |
Remove capability for polymorphic destruction from LexicalScope and LexicalScopes, we're not using it.
llvm-svn: 195182
|
| #
9d7d5da6 |
| 20-Nov-2013 |
Eric Christopher <[email protected]> |
Grammar.
llvm-svn: 195181
|
| #
34e1be94 |
| 10-Oct-2013 |
Matthias Braun <[email protected]> |
Represent RegUnit liveness with LiveRange instance
Previously LiveInterval has been used, but having a spill weight and register number is unnecessary for a register unit.
llvm-svn: 192397
|
| #
13ddb7cd |
| 10-Oct-2013 |
Matthias Braun <[email protected]> |
Rename LiveRange to LiveInterval::Segment
The Segment struct contains a single interval; multiple instances of this struct are used to construct a live range, but the struct is not a live range by i
Rename LiveRange to LiveInterval::Segment
The Segment struct contains a single interval; multiple instances of this struct are used to construct a live range, but the struct is not a live range by itself.
llvm-svn: 192392
show more ...
|
| #
db3e26d1 |
| 16-Sep-2013 |
Adrian Prantl <[email protected]> |
Debug info: Fix PR16736 and rdar://problem/14990587. A DBG_VALUE is register-indirect iff the first operand is a register _and_ the second operand is an immediate.
llvm-svn: 190821
|
| #
f9ea8854 |
| 14-Aug-2013 |
Mark Lacey <[email protected]> |
Track new virtual registers by register number.
Track new virtual registers by register number, rather than by the live interval created for them. This is the first step in separating the creation o
Track new virtual registers by register number.
Track new virtual registers by register number, rather than by the live interval created for them. This is the first step in separating the creation of new virtual registers and new live intervals. Eventually live intervals will be created and populated on demand after the virtual registers have been created and used in instructions.
llvm-svn: 188434
show more ...
|
| #
418d1d1e |
| 09-Jul-2013 |
Adrian Prantl <[email protected]> |
Reapply an improved version of r180816/180817.
Change the informal convention of DBG_VALUE machine instructions so that we can express a register-indirect address with an offset of 0. The old conven
Reapply an improved version of r180816/180817.
Change the informal convention of DBG_VALUE machine instructions so that we can express a register-indirect address with an offset of 0. The old convention was that a DBG_VALUE is a register-indirect value if the offset (operand 1) is nonzero. The new convention is that a DBG_VALUE is register-indirect if the first operand is a register and the second operand is an immediate. For plain register values the combination reg, reg is used. MachineInstrBuilder::BuildMI knows how to build the new DBG_VALUES.
rdar://problem/13658587
llvm-svn: 185966
show more ...
|
|
Revision tags: llvmorg-3.3.1-rc1 |
|
| #
0252265b |
| 16-Jun-2013 |
David Blaikie <[email protected]> |
Debug Info: Simplify Frame Index handling in DBG_VALUE Machine Instructions
Rather than using the full power of target-specific addressing modes in DBG_VALUEs with Frame Indicies, simply use Frame I
Debug Info: Simplify Frame Index handling in DBG_VALUE Machine Instructions
Rather than using the full power of target-specific addressing modes in DBG_VALUEs with Frame Indicies, simply use Frame Index + Offset. This reduces the complexity of debug info handling down to two representations of values (reg+offset and frame index+offset) rather than three or four.
Ideally we could ensure that frame indicies had been eliminated by the time we reached an assembly or dwarf generation, but I haven't spent the time to figure out where the FIs are leaking through into that & whether there's a good place to convert them. Some FI+offset=>reg+offset conversion is done (see PrologEpilogInserter, for example) which is necessary for some SelectionDAG assumptions about registers, I believe, but it might be possible to make this a more thorough conversion & ensure there are no remaining FIs no matter how instruction selection is performed.
llvm-svn: 184066
show more ...
|
|
Revision tags: llvmorg-3.3.0, llvmorg-3.3.0-rc3, llvmorg-3.3.0-rc2, llvmorg-3.3.0-rc1 |
|
| #
a2888e71 |
| 30-Apr-2013 |
Adrian Prantl <[email protected]> |
Temporarily revert "Change the informal convention of DBG_VALUE so that we can express a" because it breaks some buildbots.
This reverts commit 180816.
llvm-svn: 180819
|
| #
9a576644 |
| 30-Apr-2013 |
Adrian Prantl <[email protected]> |
Change the informal convention of DBG_VALUE so that we can express a register-indirect address with an offset of 0. It used to be that a DBG_VALUE is a register-indirect value if the offset (operand
Change the informal convention of DBG_VALUE so that we can express a register-indirect address with an offset of 0. It used to be that a DBG_VALUE is a register-indirect value if the offset (operand 1) is nonzero. The new convention is that a DBG_VALUE is register-indirect if the first operand is a register and the second operand is an immediate. For plain registers use the combination reg, reg.
rdar://problem/13658587
llvm-svn: 180816
show more ...
|
| #
7a4c8a78 |
| 13-Feb-2013 |
Manman Ren <[email protected]> |
Clean up LDV, no functionality change.
Remove dead functions: renameRegister Move private member variables from LDV to Impl Remove ssp/uwtable from testing case
llvm-svn: 175072
|
| #
bc671700 |
| 13-Feb-2013 |
Eric Christopher <[email protected]> |
Fix comment.
llvm-svn: 175024
|
| #
f019cd62 |
| 13-Feb-2013 |
Manman Ren <[email protected]> |
Debug Info: LiveDebugVarible can remove DBG_VALUEs, make sure we emit them back.
RegisterCoalescer used to depend on LiveDebugVariable. LDV removes DBG_VALUEs without emitting them at the end.
We f
Debug Info: LiveDebugVarible can remove DBG_VALUEs, make sure we emit them back.
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
show more ...
|
| #
9fb823bb |
| 02-Jan-2013 |
Chandler Carruth <[email protected]> |
Move all of the header files which are involved in modelling the LLVM IR into their new header subdirectory: include/llvm/IR. This matches the directory structure of lib, and begins to correct a long
Move all of the header files which are involved in modelling the LLVM IR into their new header subdirectory: include/llvm/IR. This matches the directory structure of lib, and begins to correct a long standing point of file layout clutter in LLVM.
There are still more header files to move here, but I wanted to handle them in separate commits to make tracking what files make sense at each layer easier.
The only really questionable files here are the target intrinsic tablegen files. But that's a battle I'd rather not fight today.
I've updated both CMake and Makefile build systems (I think, and my tests think, but I may have missed something).
I've also re-sorted the includes throughout the project. I'll be committing updates to Clang, DragonEgg, and Polly momentarily.
llvm-svn: 171366
show more ...
|
|
Revision tags: llvmorg-3.2.0, llvmorg-3.2.0-rc3 |
|
| #
ed0881b2 |
| 03-Dec-2012 |
Chandler Carruth <[email protected]> |
Use the new script to sort the includes of every file under lib.
Sooooo many of these had incorrect or strange main module includes. I have manually inspected all of these, and fixed the main module
Use the new script to sort the includes of every file under lib.
Sooooo many of these had incorrect or strange main module includes. I have manually inspected all of these, and fixed the main module include to be the nearest plausible thing I could find. If you own or care about any of these source files, I encourage you to take some time and check that these edits were sensible. I can't have broken anything (I strictly added headers, and reordered them, never removed), but they may not be the headers you'd really like to identify as containing the API being implemented.
Many forward declarations and missing includes were added to a header files to allow them to parse cleanly when included first. The main module rule does in fact have its merits. =]
llvm-svn: 169131
show more ...
|
|
Revision tags: llvmorg-3.2.0-rc2 |
|
| #
26c9d70d |
| 28-Nov-2012 |
Jakob Stoklund Olesen <[email protected]> |
Make the LiveRegMatrix analysis available to targets.
No functional change, just moved header files.
Targets can inject custom passes between register allocation and rewriting. This makes it possib
Make the LiveRegMatrix analysis available to targets.
No functional change, just moved header files.
Targets can inject custom passes between register allocation and rewriting. This makes it possible to tweak the register allocation before rewriting, using the full global interference checking available from LiveRegMatrix.
llvm-svn: 168806
show more ...
|
|
Revision tags: llvmorg-3.2.0-rc1 |
|
| #
c8c2920a |
| 22-Aug-2012 |
David Blaikie <[email protected]> |
Tidy up a few more uses of MF.getFunction()->getName().
Based on CR feedback from r162301 and Craig Topper's refactoring in r162347 here are a few other places that could use the same API (& in one
Tidy up a few more uses of MF.getFunction()->getName().
Based on CR feedback from r162301 and Craig Topper's refactoring in r162347 here are a few other places that could use the same API (& in one instance drop a Function.h dependency).
llvm-svn: 162367
show more ...
|