summaryrefslogtreecommitdiff
path: root/lib/Analysis/Analysis.cpp
diff options
context:
space:
mode:
authorJakob Stoklund Olesen <stoklund@2pi.dk>2011-08-19 00:30:17 +0000
committerJakob Stoklund Olesen <stoklund@2pi.dk>2011-08-19 00:30:17 +0000
commit201f2463a72f88121a3a31e7386029e99d2d75da (patch)
tree2de06ff5539d75a45c417bbcc27c888dcaf8bdae /lib/Analysis/Analysis.cpp
parente6d5e88c1230eae7056a5cd6238e86c00cdff72f (diff)
downloadllvm-201f2463a72f88121a3a31e7386029e99d2d75da.tar.gz
llvm-201f2463a72f88121a3a31e7386029e99d2d75da.tar.bz2
llvm-201f2463a72f88121a3a31e7386029e99d2d75da.tar.xz
Don't treat a partial <def,undef> operand as a read.
Normally, a partial register def is treated as reading the super-register unless it also defines the full register like this: %vreg110:sub_32bit<def> = COPY %vreg77:sub_32bit, %vreg110<imp-def> This patch also uses the <undef> flag on partial defs to recognize non-reading operands: %vreg110:sub_32bit<def,undef> = COPY %vreg77:sub_32bit This fixes a subtle bug in RegisterCoalescer where LIS->shrinkToUses would treat a coalesced copy as still reading the register, extending the live range artificially. My test case only works when I disable DCE so a dead copy is left for RegisterCoalescer, so I am not including it. <rdar://problem/9967101> git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138018 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Analysis/Analysis.cpp')
0 files changed, 0 insertions, 0 deletions