Jakob Stoklund Olesen
66d0f39904
Verify kill flags conservatively.
...
Allow a live range to end with a kill flag, but don't allow a kill flag that
doesn't end the live range.
This makes the machine code verifier more useful during register allocation when
kill flag computation is deferred.
llvm-svn: 124838
2011-02-04 00:39:18 +00:00
Jakob Stoklund Olesen
58b6f4d832
Verify slot index ordering.
...
The slot indexes must be monotonically increasing through the function.
llvm-svn: 123324
2011-01-12 21:27:48 +00:00
Jakob Stoklund Olesen
b5b4a5d0ba
Verify that machine instruction parent pointers are consistent.
...
llvm-svn: 123322
2011-01-12 21:27:41 +00:00
Jakob Stoklund Olesen
1331a15b0c
Replace TargetRegisterInfo::printReg with a PrintReg class that also works without a TRI instance.
...
Print virtual registers numbered from 0 instead of the arbitrary
FirstVirtualRegister. The first virtual register is printed as %vreg0.
TRI::NoRegister is printed as %noreg.
llvm-svn: 123107
2011-01-09 03:05:53 +00:00
Jakob Stoklund Olesen
6ff70ad356
Fix a MachineVerifier loop that probably didn't mean to skip the last two
...
virtual registers.
llvm-svn: 123100
2011-01-08 23:11:02 +00:00
Cameron Zwarich
6fe33fdd63
Simplify some code in MachineVerifier that was doing the correct thing, but not
...
in the most obvious way.
llvm-svn: 122610
2010-12-28 23:45:38 +00:00
Cameron Zwarich
b95bfe1667
Add knowledge of phi-def and phi-kill valnos to MachineVerifier's predecessor
...
valno verification. The "Different value live out of predecessor" check is
incorrect in the case of phi-def valnos, so just skip that check for phi-def
valnos and instead check that all of the valnos for predecessors have phi-kill.
Fixes PR8863.
llvm-svn: 122581
2010-12-27 05:17:23 +00:00
Cameron Zwarich
4ffda706d0
MachineVerifier should count landing pad successors as basic blocks rather than
...
out-edges. Fixes PR8824.
llvm-svn: 122228
2010-12-20 04:19:48 +00:00
Cameron Zwarich
660bce67f3
Teach MachineVerifier that early clobber defs begin at USE slots and other defs
...
begin at DEF slots. Fixes the second half of PR8813.
llvm-svn: 122225
2010-12-20 03:15:20 +00:00
Cameron Zwarich
bc2461c5f9
Add a missing check from r122218.
...
llvm-svn: 122224
2010-12-20 02:59:51 +00:00
Cameron Zwarich
fc0c6b1ea9
Don't assume that an instruction ending a register's live range always reads
...
the register; it may be a dead def instead. Fixes PR8820.
llvm-svn: 122218
2010-12-20 01:22:37 +00:00
Cameron Zwarich
1b67d6c565
Ignore debug values when performing MachineVerifier liveness checks. Fixes
...
PR8822.
llvm-svn: 122207
2010-12-20 00:08:10 +00:00
Cameron Zwarich
0b111b1aee
Early clobber operands are allowed to be defined at use indices. This fixes one
...
half of PR8813.
llvm-svn: 122205
2010-12-19 23:50:53 +00:00
Cameron Zwarich
7e24173a3c
Fix PR8811 by teaching MachineVerifier about optional defs.
...
llvm-svn: 122199
2010-12-19 21:37:23 +00:00
Jakob Stoklund Olesen
bf4550e3fb
Pass a Banner argument to the machine code verifier both from
...
createMachineVerifierPass and MachineFunction::verify.
The banner is printed before the machine code dump, just like the printer pass.
llvm-svn: 122113
2010-12-18 00:06:56 +00:00
Jakob Stoklund Olesen
a043b62870
Allow missing kill flags on an untied operand of a two-address instruction when
...
the operand uses the same register as a tied operand:
%r1 = add %r1, %r1
If add were a three-address instruction, kill flags would be required on at
least one of the uses. Since it is a two-address instruction, the tied use
operand must not have a kill flag.
This change makes the kill flag on the untied use operand optional.
llvm-svn: 122082
2010-12-17 19:18:41 +00:00
Eric Christopher
bcc230a765
Only avoid the check if we're the last operand before the variable
...
operands in a variadic instruction.
llvm-svn: 119446
2010-11-17 00:55:36 +00:00
Eric Christopher
08c083148b
Make the verifier a little quieter on instructions that it's probably
...
(and likely) wrong about anyhow.
llvm-svn: 119320
2010-11-16 01:58:21 +00:00
Jakob Stoklund Olesen
2551f13c83
Be more precise about verifying missing kill flags.
...
It is legal for an instruction to have two operands using the same register,
only one a kill. This is interpreted as a kill.
llvm-svn: 117981
2010-11-01 23:59:53 +00:00
Jakob Stoklund Olesen
d7a824006e
Add kill flag verification.
...
At least X86FloatingPoint requires correct kill flags after register allocation,
and targets using register scavenging benefit. Conservative kill flags are not
enough.
llvm-svn: 117960
2010-11-01 21:51:31 +00:00
Jakob Stoklund Olesen
31fffb62d9
Add basic LiveStacks verification.
...
When an instruction refers to a spill slot with a LiveStacks entry, check that
the spill slot is live at the instruction.
llvm-svn: 117944
2010-11-01 19:49:52 +00:00
Jakob Stoklund Olesen
db84d8f4fd
Disable more of physical register live intervals verification.
...
llvm-svn: 117762
2010-10-30 01:26:11 +00:00
Jakob Stoklund Olesen
b98755472e
Print out the connected components in the verifier after complaining about their
...
multiplicity.
llvm-svn: 117630
2010-10-29 00:40:57 +00:00
Jakob Stoklund Olesen
dc5e7065a4
One day, physical register live ranges will be sensible.
...
llvm-svn: 117602
2010-10-28 20:44:22 +00:00
Jakob Stoklund Olesen
0e7a011a00
Physical registers trivially have multiple connected components all the time.
...
Only virtuals should be requires to be connected.
llvm-svn: 117422
2010-10-27 00:39:01 +00:00