#
29baf9c0 |
| 01-Oct-2016 |
Mehdi Amini <mehdi.amini@apple.com> |
Use StringRef in Datalayout API (NFC)
llvm-svn: 283009
|
#
aae7fe99 |
| 29-Sep-2016 |
Matthias Braun <matze@braunis.de> |
MachineFunction: Add missing newline in debug print()
Should not be a functional but an aesthetic change.
llvm-svn: 282669
|
#
9abb2fa5 |
| 26-Sep-2016 |
James Molloy <james.molloy@arm.com> |
[ARM] Promote small global constants to constant pools
If a constant is unamed_addr and is only used within one function, we can save on the code size and runtime cost of an indirection by changing
[ARM] Promote small global constants to constant pools
If a constant is unamed_addr and is only used within one function, we can save on the code size and runtime cost of an indirection by changing the global's storage to inside the constant pool. For example, instead of:
ldr r0, .CPI0 bl printf bx lr .CPI0: &format_string format_string: .asciz "hello, world!\n"
We can emit:
adr r0, .CPI0 bl printf bx lr .CPI0: .asciz "hello, world!\n"
This can cause significant code size savings when many small strings are used in one function (4 bytes per string).
This recommit contains fixes for a nasty bug related to fast-isel fallback - because fast-isel doesn't know about this optimization, if it runs and emits references to a string that we inline (because fast-isel fell back to SDAG) we will end up with an inlined string and also an out-of-line string, and we won't emit the out-of-line string, causing backend failures.
It also contains fixes for emitting .text relocations which made the sanitizer bots unhappy.
llvm-svn: 282387
show more ...
|
#
64488118 |
| 31-Aug-2016 |
Krzysztof Parzyszek <kparzysz@codeaurora.org> |
Fixed spill stack objects are mutable
Differential Revision: https://reviews.llvm.org/D24039
llvm-svn: 280244
|
#
f947c3af |
| 30-Aug-2016 |
Duncan P. N. Exon Smith <dexonsmith@apple.com> |
ADT: Split ilist_node_traits into alloc and callback, NFC
Many lists want to override only allocation semantics, or callbacks for iplist. Split these up to prevent code duplication. - Specialize il
ADT: Split ilist_node_traits into alloc and callback, NFC
Many lists want to override only allocation semantics, or callbacks for iplist. Split these up to prevent code duplication. - Specialize ilist_alloc_traits to change the implementations of deleteNode() and createNode(). - One common desire is to do nothing deleteNode() and disable createNode(). Specialize ilist_alloc_traits to inherit from ilist_noalloc_traits for that behaviour. - Specialize ilist_callback_traits to use the addNodeToList(), removeNodeFromList(), and transferNodesFromList() callbacks.
As a drive-by, add some coverage to the callback-related unit tests.
llvm-svn: 280128
show more ...
|
#
e076d309 |
| 26-Aug-2016 |
Quentin Colombet <qcolombet@apple.com> |
[MFProperties] Introduce a FailedISel property.
This is used to communicate that the instruction selection pipeline failed at some point. Another way to achieve that would be to have some kind of co
[MFProperties] Introduce a FailedISel property.
This is used to communicate that the instruction selection pipeline failed at some point. Another way to achieve that would be to have some kind of conditional scheduling in the PassManager, such that we only schedule a pass based on the success/failure of another one. The property approach has the advantage of being lightweight and solve the problem at stake.
llvm-svn: 279885
show more ...
|
#
380cd3eb |
| 26-Aug-2016 |
Quentin Colombet <qcolombet@apple.com> |
[MachineFunction] Introduce a reset method.
This method allows to reset the state of a MachineFunction as if it was just created. This will be used during the bring-up of GlobalISel to provide a way
[MachineFunction] Introduce a reset method.
This method allows to reset the state of a MachineFunction as if it was just created. This will be used during the bring-up of GlobalISel to provide a way to fallback on SelectionDAG. That way, we can start doing correctness testing even if we are not able to select all functions via the global instruction selector.
llvm-svn: 279876
show more ...
|
#
1eb47368 |
| 25-Aug-2016 |
Matthias Braun <matze@braunis.de> |
MachineFunctionProperties/MIRParser: Rename AllVRegsAllocated->NoVRegs, compute it
Rename AllVRegsAllocated to NoVRegs. This avoids the connotation of running after register and simply describes tha
MachineFunctionProperties/MIRParser: Rename AllVRegsAllocated->NoVRegs, compute it
Rename AllVRegsAllocated to NoVRegs. This avoids the connotation of running after register and simply describes that no vregs are used in a machine function. With that we can simply compute the property and do not need to dump/parse it in .mir files.
Differential Revision: http://reviews.llvm.org/D23850
llvm-svn: 279698
show more ...
|
Revision tags: llvmorg-3.9.0, llvmorg-3.9.0-rc3 |
|
#
90799ce8 |
| 23-Aug-2016 |
Matthias Braun <matze@braunis.de> |
MachineFunction: Introduce NoPHIs property
I want to compute the SSA property of .mir files automatically in upcoming patches. The problem with this is that some inputs will be reported as static si
MachineFunction: Introduce NoPHIs property
I want to compute the SSA property of .mir files automatically in upcoming patches. The problem with this is that some inputs will be reported as static single assignment with some passes claiming not to support SSA form. In reality though those passes do not support PHI instructions => Track the presence of PHI instructions separate from the SSA property.
Differential Revision: https://reviews.llvm.org/D22719
llvm-svn: 279573
show more ...
|
#
367d8530 |
| 19-Aug-2016 |
Matthias Braun <matze@braunis.de> |
MachineFunction: Add llvm_unreachable for missing properties
Most compilers should give you a warning anyway though.
llvm-svn: 279346
|
#
a7d6fc96 |
| 19-Aug-2016 |
Matthias Braun <matze@braunis.de> |
MachineFunction: Cleanup/simplify MachineFunctionProperties::print()
- Always compile print() regardless of LLVM_ENABLE_DUMP. (We usually only gard dump() functions with that). - Only show the set
MachineFunction: Cleanup/simplify MachineFunctionProperties::print()
- Always compile print() regardless of LLVM_ENABLE_DUMP. (We usually only gard dump() functions with that). - Only show the set properties to reduce output clutter. - Remove the unused variant that even shows the unset properties. - Fix comments
llvm-svn: 279338
show more ...
|
#
a3b983aa |
| 19-Aug-2016 |
Matthias Braun <matze@braunis.de> |
MachineFunction: Make LastProperty an alias of the last property
This avoids unnecessary cases in switch statements covering all properties.
llvm-svn: 279337
|
Revision tags: llvmorg-3.9.0-rc2 |
|
#
b109d518 |
| 02-Aug-2016 |
Ahmed Bougacha <ahmed.bougacha@gmail.com> |
[GlobalISel] Add Selected MachineFunction property.
Selected: the InstructionSelect pass ran and all pre-isel generic instructions have been eliminated; i.e., all instructions are now target-specifi
[GlobalISel] Add Selected MachineFunction property.
Selected: the InstructionSelect pass ran and all pre-isel generic instructions have been eliminated; i.e., all instructions are now target-specific or non-pre-isel generic instructions (e.g., COPY).
Since only pre-isel generic instructions can have generic virtual register operands, this also means that all generic virtual registers have been constrained to virtual registers (assigned to register classes) and that all sizes attached to them have been eliminated.
This lets us enforce certain invariants across passes. This property is GlobalISel-specific, but is always available.
llvm-svn: 277482
show more ...
|
#
24712655 |
| 02-Aug-2016 |
Ahmed Bougacha <ahmed.bougacha@gmail.com> |
[GlobalISel] Add RegBankSelected MachineFunction property.
RegBankSelected: the RegBankSelect pass ran and all generic virtual registers have been assigned to a register bank.
This lets us enforce
[GlobalISel] Add RegBankSelected MachineFunction property.
RegBankSelected: the RegBankSelect pass ran and all generic virtual registers have been assigned to a register bank.
This lets us enforce certain invariants across passes. This property is GlobalISel-specific, but is always available.
llvm-svn: 277475
show more ...
|
#
0d7b0cb8 |
| 02-Aug-2016 |
Ahmed Bougacha <ahmed.bougacha@gmail.com> |
[GlobalISel] Add Legalized MachineFunction property.
Legalized: The MachineLegalizer ran; all pre-isel generic instructions have been legalized, i.e., all instructions are now one of: - generic an
[GlobalISel] Add Legalized MachineFunction property.
Legalized: The MachineLegalizer ran; all pre-isel generic instructions have been legalized, i.e., all instructions are now one of: - generic and always legal (e.g., COPY) - target-specific - legal pre-isel generic instructions.
This lets us enforce certain invariants across passes. This property is GlobalISel-specific, but is always available.
llvm-svn: 277470
show more ...
|
#
c8454a77 |
| 02-Aug-2016 |
Ahmed Bougacha <ahmed.bougacha@gmail.com> |
[CodeGen] Generalize MachineFunctionProperties::print comma handling.
This is only used for debug prints, but the previous hardcoded ", " caused it to be printed unnecessarily when OnlySet, and is a
[CodeGen] Generalize MachineFunctionProperties::print comma handling.
This is only used for debug prints, but the previous hardcoded ", " caused it to be printed unnecessarily when OnlySet, and is annoying when adding new properties.
llvm-svn: 277465
show more ...
|
Revision tags: llvmorg-3.9.0-rc1 |
|
#
0af80cd6 |
| 15-Jul-2016 |
Justin Lebar <jlebar@google.com> |
[CodeGen] Take a MachineMemOperand::Flags in MachineFunction::getMachineMemOperand.
Summary: Previously we took an unsigned.
Hooray for type-safety.
Reviewers: chandlerc
Subscribers: dsanders, ll
[CodeGen] Take a MachineMemOperand::Flags in MachineFunction::getMachineMemOperand.
Summary: Previously we took an unsigned.
Hooray for type-safety.
Reviewers: chandlerc
Subscribers: dsanders, llvm-commits
Differential Revision: http://reviews.llvm.org/D22282
llvm-svn: 275591
show more ...
|
#
a3b786a8 |
| 14-Jul-2016 |
Justin Lebar <jlebar@google.com> |
[CodeGen] Refactor MachineMemOperand's Flags enum.
Summary: - Give it a shorter name (because we're going to refer to it often from SelectionDAG and friends).
- Split the flags and alignment into
[CodeGen] Refactor MachineMemOperand's Flags enum.
Summary: - Give it a shorter name (because we're going to refer to it often from SelectionDAG and friends).
- Split the flags and alignment into separate variables.
- Specialize FlagsEnumTraits for it, so we can do bitwise ops on it without losing type information.
- Make some enum values constants in MachineMemOperand instead. MOMaxBits should not be a valid Flag.
- Simplify some of the bitwise ops for dealing with Flags.
Reviewers: chandlerc
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D22281
llvm-svn: 275438
show more ...
|
#
bdc4956b |
| 12-Jun-2016 |
Benjamin Kramer <benny.kra@googlemail.com> |
Pass DebugLoc and SDLoc by const ref.
This used to be free, copying and moving DebugLocs became expensive after the metadata rewrite. Passing by reference eliminates a ton of track/untrack operation
Pass DebugLoc and SDLoc by const ref.
This used to be free, copying and moving DebugLocs became expensive after the metadata rewrite. Passing by reference eliminates a ton of track/untrack operations. No functionality change intended.
llvm-svn: 272512
show more ...
|
Revision tags: llvmorg-3.8.1, llvmorg-3.8.1-rc1 |
|
#
0e881d61 |
| 05-May-2016 |
Matthias Braun <matze@braunis.de> |
MachineFunction: Add a const modifier to print() parameter
llvm-svn: 268657
|
#
025191d4 |
| 21-Apr-2016 |
Derek Schuff <dschuff@google.com> |
Improve error message reporting for MachineFunctionProperties
When printing the properties required by a pass, only print the properties that are set, and not those that are clear (only properties t
Improve error message reporting for MachineFunctionProperties
When printing the properties required by a pass, only print the properties that are set, and not those that are clear (only properties that are set are verified, clear properties are "don't-care").
llvm-svn: 267070
show more ...
|
#
f7b2bce1 |
| 11-Apr-2016 |
Derek Schuff <dschuff@google.com> |
Replace MachineRegisterInfo::TracksLiveness with a MachineFunctionProperty
Use the MachineFunctionProperty mechanism to indicate whether the liveness info is accurate instead of a bool flag on MRI.
Replace MachineRegisterInfo::TracksLiveness with a MachineFunctionProperty
Use the MachineFunctionProperty mechanism to indicate whether the liveness info is accurate instead of a bool flag on MRI. Keeps the MRI accessor function for convenience. NFC
Differential Revision: http://reviews.llvm.org/D18767
llvm-svn: 266020
show more ...
|
#
b6800b30 |
| 11-Apr-2016 |
Reid Kleckner <rnk@google.com> |
Combine redundant stack realignment booleans in MachineFrameInfo
MachineFrameInfo does not need to be able to distinguish between the user asking us not to realign the stack and the target telling u
Combine redundant stack realignment booleans in MachineFrameInfo
MachineFrameInfo does not need to be able to distinguish between the user asking us not to realign the stack and the target telling us it doesn't support stack realignment. Either way, fixed stack objects have their alignment clamped.
llvm-svn: 265971
show more ...
|
#
2f65f35c |
| 09-Apr-2016 |
Charles Davis <cdavis5x@gmail.com> |
[CodeGen] Don't assume that fixed stack objects are aligned in a stack-realigned function.
Summary: After we make the adjustment, we can assume that for local allocas, but not for stack parameters,
[CodeGen] Don't assume that fixed stack objects are aligned in a stack-realigned function.
Summary: After we make the adjustment, we can assume that for local allocas, but not for stack parameters, the return address, or any other fixed stack object (which has a negative offset and therefore lies prior to the adjusted SP).
Fixes PR26662.
Reviewers: hfinkel, qcolombet, rnk
Subscribers: rnk, llvm-commits
Differential Revision: http://reviews.llvm.org/D18471
llvm-svn: 265886
show more ...
|
#
73900c68 |
| 04-Apr-2016 |
Derek Schuff <dschuff@google.com> |
Replace MachineRegisterInfo::isSSA() with a MachineFunctionProperty
Use the MachineFunctionProperty mechanism to indicate whether a MachineFunction is in SSA form instead of a custom method on Machi
Replace MachineRegisterInfo::isSSA() with a MachineFunctionProperty
Use the MachineFunctionProperty mechanism to indicate whether a MachineFunction is in SSA form instead of a custom method on MachineRegisterInfo. NFC
Differential Revision: http://reviews.llvm.org/D18574
llvm-svn: 265318
show more ...
|