#
72a58c3e |
| 29-Mar-2016 |
Matthias Braun <matze@braunis.de> |
MachineVerifier: On dead-def live segments, check that corresponding machine operand has a dead flag
llvm-svn: 264769
|
#
42666eee |
| 29-Mar-2016 |
Derek Schuff <dschuff@google.com> |
Add MachineVerifier check for AllVRegsAllocated MachineFunctionProperty
Summary: Check that any function that has the property set is free of virtual register operands.
Also, it is actually VirtReg
Add MachineVerifier check for AllVRegsAllocated MachineFunctionProperty
Summary: Check that any function that has the property set is free of virtual register operands.
Also, it is actually VirtRegMap (and not the register allocators) that acutally remove the VReg operands (except for RegAllocFast).
Reviewers: qcolombet
Subscribers: MatzeB, llvm-commits, qcolombet
Differential Revision: http://reviews.llvm.org/D18535
llvm-svn: 264755
show more ...
|
Revision tags: llvmorg-3.8.0 |
|
#
f9ab416d |
| 27-Feb-2016 |
Duncan P. N. Exon Smith <dexonsmith@apple.com> |
WIP: CodeGen: Use MachineInstr& in MachineInstrBundle.h, NFC
Update APIs in MachineInstrBundle.h to take and return MachineInstr& instead of MachineInstr* when the instruction cannot be null. Besid
WIP: CodeGen: Use MachineInstr& in MachineInstrBundle.h, NFC
Update APIs in MachineInstrBundle.h to take and return MachineInstr& instead of MachineInstr* when the instruction cannot be null. Besides being a nice cleanup, this is tacking toward a fix for PR26753.
llvm-svn: 262141
show more ...
|
#
3ac9cc61 |
| 27-Feb-2016 |
Duncan P. N. Exon Smith <dexonsmith@apple.com> |
CodeGen: Take MachineInstr& in SlotIndexes and LiveIntervals, NFC
Take MachineInstr by reference instead of by pointer in SlotIndexes and the SlotIndex wrappers in LiveIntervals. The MachineInstrs
CodeGen: Take MachineInstr& in SlotIndexes and LiveIntervals, NFC
Take MachineInstr by reference instead of by pointer in SlotIndexes and the SlotIndex wrappers in LiveIntervals. The MachineInstrs here are never null, so this cleans up the API a bit. It also incidentally removes a few implicit conversions from MachineInstrBundleIterator to MachineInstr* (see PR26753).
At a couple of call sites it was convenient to convert to a range-based for loop over MachineBasicBlock::instr_begin/instr_end, so I added MachineBasicBlock::instrs.
llvm-svn: 262115
show more ...
|
Revision tags: llvmorg-3.8.0-rc3 |
|
#
6307eb55 |
| 23-Feb-2016 |
Duncan P. N. Exon Smith <dexonsmith@apple.com> |
CodeGen: TII: Take MachineInstr& in predicate API, NFC
Change TargetInstrInfo API to take `MachineInstr&` instead of `MachineInstr*` in the functions related to predicated instructions (I'll try to
CodeGen: TII: Take MachineInstr& in predicate API, NFC
Change TargetInstrInfo API to take `MachineInstr&` instead of `MachineInstr*` in the functions related to predicated instructions (I'll try to come back later and get some of the rest). All of these functions require non-null parameters already, so references are more clear. As a bonus, this happens to factor away a host of implicit iterator => pointer conversions.
No functionality change intended.
llvm-svn: 261605
show more ...
|
#
e9bc579c |
| 21-Feb-2016 |
Duncan P. N. Exon Smith <dexonsmith@apple.com> |
ADT: Remove == and != comparisons between ilist iterators and pointers
I missed == and != when I removed implicit conversions between iterators and pointers in r252380 since they were defined outsid
ADT: Remove == and != comparisons between ilist iterators and pointers
I missed == and != when I removed implicit conversions between iterators and pointers in r252380 since they were defined outside ilist_iterator.
Since they depend on getNodePtrUnchecked(), they indirectly rely on UB. This commit removes all uses of these operators. (I'll delete the operators themselves in a separate commit so that it can be easily reverted if necessary.)
There should be NFC here.
llvm-svn: 261498
show more ...
|
#
b3aefc3a |
| 15-Feb-2016 |
Matthias Braun <matze@braunis.de> |
MachineVerifier: Add parameter to choose if MachineFunction::verify() aborts
The abort on error behaviour is unpractical for debugger and unittest usage.
llvm-svn: 260904
|
#
1377fd67 |
| 02-Feb-2016 |
Matthias Braun <matze@braunis.de> |
MachineVerifier: Check that defs/uses are live in subregisters as well.
llvm-svn: 259552
|
Revision tags: llvmorg-3.8.0-rc2 |
|
#
579c9cda |
| 02-Feb-2016 |
Matthias Braun <matze@braunis.de> |
MachineVerifier: Use report_context() instead of ad-hoc messages.
llvm-svn: 259457
|
Revision tags: llvmorg-3.8.0-rc1 |
|
#
bf47f63b |
| 08-Jan-2016 |
Matthias Braun <matze@braunis.de> |
LiveInterval: A LiveRange is enough for ConnectedVNInfoEqClasses::Classify()
llvm-svn: 257129
|
#
70497c69 |
| 02-Dec-2015 |
David Majnemer <david.majnemer@gmail.com> |
Move EH-specific helper functions to a more appropriate place
No functionality change is intended.
llvm-svn: 254562
|
Revision tags: llvmorg-3.7.1, llvmorg-3.7.1-rc2, llvmorg-3.7.1-rc1 |
|
#
7e624d5f |
| 09-Nov-2015 |
Matthias Braun <matze@braunis.de> |
MachineVerifier: Streamline live interval related error reporting
Simply perform additional report_context() calls after a report() instead of adding more and more overloaded variations of report().
MachineVerifier: Streamline live interval related error reporting
Simply perform additional report_context() calls after a report() instead of adding more and more overloaded variations of report(). Also improve several instances where information was output in an ad-hoc way probably because no matching report() overload was available.
llvm-svn: 252552
show more ...
|
#
716b4330 |
| 09-Nov-2015 |
Matthias Braun <matze@braunis.de> |
MachineVerifier: Add missing linebreak
MachineInstr::print() with SkipOppers==true does not produce a linebreak, so we have to do that in MachineVerifier::report().
llvm-svn: 252551
|
#
45718db0 |
| 09-Nov-2015 |
Matthias Braun <matze@braunis.de> |
MachineVerifier: MI::print has no TargetMachine overload
The code was passing a target machine pointer which degraded to a true operand to SkipOppers.
llvm-svn: 252550
|
#
42b4b630 |
| 09-Nov-2015 |
Matthias Braun <matze@braunis.de> |
MachineVerifier: print list of live intervals if available
llvm-svn: 252549
|
#
64b003f0 |
| 09-Nov-2015 |
Reid Kleckner <rnk@google.com> |
[WinEH] Tweak funclet prologue/epilogue insertion to pass verifier
For some reason we'd never run MachineVerifier on WinEH code, and you explicitly have to ask for it with llc. I added it to a few t
[WinEH] Tweak funclet prologue/epilogue insertion to pass verifier
For some reason we'd never run MachineVerifier on WinEH code, and you explicitly have to ask for it with llc. I added it to a few test cases to get some coverage.
Fixes PR25461.
llvm-svn: 252512
show more ...
|
#
72640f1c |
| 29-Oct-2015 |
Jonas Paulsson <paulsson@linux.vnet.ibm.com> |
[MachineVerifier] Analyze MachineMemOperands for mem-to-mem moves.
Since the verifier will give false reports if it incorrectly thinks MI is loading or storing using an FI, it is necessary to scan m
[MachineVerifier] Analyze MachineMemOperands for mem-to-mem moves.
Since the verifier will give false reports if it incorrectly thinks MI is loading or storing using an FI, it is necessary to scan memoperands and find out how the FI is used in the instruction. This should be relatively rare.
Needed to make CodeGen/SystemZ/spill-01.ll pass, which now runs with this flag.
Reviewed by Quentin Colombet.
llvm-svn: 251620
show more ...
|
#
17ad0453 |
| 21-Oct-2015 |
Jonas Paulsson <jonas.paulsson@ericsson.com> |
Let MachineVerifier be aware of mem-to-mem instructions.
A mem-to-mem instruction (that both loads and stores), which store to an FI, cannot pass the verifier since it thinks it is loading from the
Let MachineVerifier be aware of mem-to-mem instructions.
A mem-to-mem instruction (that both loads and stores), which store to an FI, cannot pass the verifier since it thinks it is loading from the FI.
For the mem-to-mem instruction, do a looser check in visitMachineOperand() and only check liveness at the reg-slot while analyzing a frame index operand.
Needed to make CodeGen/SystemZ/xor-01.ll pass with -verify-machineinstrs, which now runs with this flag.
Reviewed by Evan Cheng and Quentin Colombet.
llvm-svn: 250885
show more ...
|
#
5ec1568c |
| 09-Oct-2015 |
Duncan P. N. Exon Smith <dexonsmith@apple.com> |
CodeGen: Continue removing ilist iterator implicit conversions
llvm-svn: 249884
|
#
c804cdb9 |
| 25-Sep-2015 |
Matthias Braun <matze@braunis.de> |
TargetRegisterInfo: Introduce PrintLaneMask.
This makes it more convenient to print lane masks and lead to more uniform printing.
llvm-svn: 248624
|
#
e6a2485e |
| 25-Sep-2015 |
Matthias Braun <matze@braunis.de> |
TargetRegisterInfo: Add typedef unsigned LaneBitmask and use it where apropriate; NFC
llvm-svn: 248623
|
#
d9da1627 |
| 09-Sep-2015 |
Matthias Braun <matze@braunis.de> |
Save LaneMask with livein registers
With subregister liveness enabled we can detect the case where only parts of a register are live in, this is expressed as a 32bit lanemask. The current code only
Save LaneMask with livein registers
With subregister liveness enabled we can detect the case where only parts of a register are live in, this is expressed as a 32bit lanemask. The current code only keeps registers in the live-in list and therefore enumerated all subregisters affected by the lanemask. This turned out to be too conservative as the subregister may also cover additional parts of the lanemask which are not live. Expressing a given lanemask by enumerating a minimum set of subregisters is computationally expensive so the best solution is to simply change the live-in list to store the lanemasks as well. This will reduce memory usage for targets using subregister liveness and slightly increase it for other targets
Differential Revision: http://reviews.llvm.org/D12442
llvm-svn: 247171
show more ...
|
#
80595460 |
| 09-Sep-2015 |
Matthias Braun <matze@braunis.de> |
MachineVerifier: Check that SlotIndex MBBIndexList is sorted.
This introduces a check that the MBBIndexList is sorted as proposed in http://reviews.llvm.org/D12443 but split up into a separate commi
MachineVerifier: Check that SlotIndex MBBIndexList is sorted.
This introduces a check that the MBBIndexList is sorted as proposed in http://reviews.llvm.org/D12443 but split up into a separate commit.
llvm-svn: 247166
show more ...
|
#
0e288234 |
| 27-Aug-2015 |
Reid Kleckner <rnk@google.com> |
[WinEH] Add some support for code generating catchpad
We can now run 32-bit programs with empty catch bodies. The next step is to change PEI so that we get funclet prologues and epilogues.
llvm-sv
[WinEH] Add some support for code generating catchpad
We can now run 32-bit programs with empty catch bodies. The next step is to change PEI so that we get funclet prologues and epilogues.
llvm-svn: 246235
show more ...
|
Revision tags: llvmorg-3.7.0, llvmorg-3.7.0-rc4 |
|
#
b2b7ef1d |
| 24-Aug-2015 |
Matthias Braun <matze@braunis.de> |
MachineBasicBlock: Add liveins() method returning an iterator_range
llvm-svn: 245895
|