diff options
author | Jakob Stoklund Olesen <stoklund@2pi.dk> | 2011-04-04 21:00:03 +0000 |
---|---|---|
committer | Jakob Stoklund Olesen <stoklund@2pi.dk> | 2011-04-04 21:00:03 +0000 |
commit | 2e85396509ee061f91f269f8ef3d42c6d2db0664 (patch) | |
tree | ed8033cef04743abee55ff5839444e79f60d7ad8 /clang/lib/Frontend/CreateInvocationFromCommandLine.cpp | |
parent | 8de5ca72e364dfe5fa55c850aa7869d6948b767e (diff) | |
download | llvm-2e85396509ee061f91f269f8ef3d42c6d2db0664.zip llvm-2e85396509ee061f91f269f8ef3d42c6d2db0664.tar.gz llvm-2e85396509ee061f91f269f8ef3d42c6d2db0664.tar.bz2 |
Allow coalescing with reserved physregs in certain cases:
When a virtual register has a single value that is defined as a copy of a
reserved register, permit that copy to be joined. These virtual register are
usually copies of the stack pointer:
%vreg75<def> = COPY %ESP; GR32:%vreg75
MOV32mr %vreg75, 1, %noreg, 0, %noreg, %vreg74<kill>
MOV32mi %vreg75, 1, %noreg, 8, %noreg, 0
MOV32mi %vreg75<kill>, 1, %noreg, 4, %noreg, 0
CALLpcrel32 ...
Coalescing these virtual registers early decreases register pressure.
Previously, they were coalesced by RALinScan::attemptTrivialCoalescing after
register allocation was completed.
The lower register pressure causes the mcinst-lowering-cmp0.ll test case to fail
because it depends on linear scan spilling a particular register.
I am deleting 2008-08-05-SpillerBug.ll because it is counting the number of
instructions emitted, and its revision history shows the 'correct' count being
edited many times.
llvm-svn: 128845
Diffstat (limited to 'clang/lib/Frontend/CreateInvocationFromCommandLine.cpp')
0 files changed, 0 insertions, 0 deletions