[LLVMbugs] [Bug 19224] New: Kill flags missing on function argument copies
bugzilla-daemon at llvm.org
bugzilla-daemon at llvm.org
Fri Mar 21 14:53:00 PDT 2014
http://llvm.org/bugs/show_bug.cgi?id=19224
Bug ID: 19224
Summary: Kill flags missing on function argument copies
Product: new-bugs
Version: unspecified
Hardware: PC
OS: Linux
Status: NEW
Severity: normal
Priority: P
Component: new bugs
Assignee: unassignedbugs at nondot.org
Reporter: kmod at dropbox.com
CC: llvmbugs at cs.uiuc.edu
Classification: Unclassified
Created attachment 12267
--> http://llvm.org/bugs/attachment.cgi?id=12267&action=edit
test case; run with "llc -o /dev/null -print-machineinstrs"
It seems like the liveness analyzer removes kill flags from all register uses,
expecting them to be added back later, but they don't get re-added to registers
that start off as physical registers due to ABI constraints, such as function
arguments.
I'm not sure what the scope of this is, but it means that the later analyses
will be overly-conservative about the set of live-ins and live-outs, since they
may not consider the function arguments dead even when they are.
For example, with this IR:
declare void @foo(i64)
define void @test(i64 %a) {
call void @foo(i64 1)
call void @foo(i64 %a)
ret void
}
The following machine instructions are generated:
BB#0: derived from LLVM BB %0
Live Ins: %RDI %RBX
PUSH64r %RBX<kill>, %RSP<imp-def>, %RSP<imp-use>; flags: FrameSetup
PROLOG_LABEL <MCSym=.Ltmp0>
PROLOG_LABEL <MCSym=.Ltmp1>
%RBX<def> = MOV64rr %RDI
%EDI<def,dead> = MOV32ri64 1, %RDI<imp-def>
CALL64pcrel32 <ga:@foo>, <regmask>, %RSP<imp-use>, %RDI<imp-use>,
%RSP<imp-def>
%RDI<def> = MOV64rr %RBX<kill>
CALL64pcrel32 <ga:@foo>, <regmask>, %RSP<imp-use>, %RDI<imp-use>,
%RSP<imp-def>
%RBX<def> = POP64r %RSP<imp-def>, %RSP<imp-use>
RETQ
Notice that there is no kill flag on the "%RBX<def> = MOV64rr %RDI"
instruction.
I may be misunderstanding whether or not the kill flag is warranted here, but
in that case I think other parts of the code do as well.
--
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20140321/5a0fe10b/attachment.html>
More information about the llvm-bugs
mailing list