https://llvm.org/bugs/show_bug.cgi?id=27294
Bug ID: 27294
Summary: Dead argument elimination does not respect
TCK_MustTail attribute
Product: new-bugs
Version: trunk
Hardware: All
OS: All
Status: NEW
Severity: normal
Priority: P
Component: new bugs
Assignee: [email protected]
Reporter: [email protected]
CC: [email protected]
Classification: Unclassified
The following function will have its argument eliminated, which ends up
producing malformed code.
; ModuleID = '/tmp/bug.bc'
declare fastcc void @bar(i64)
; Function Attrs: noinline
define private fastcc void @foo(i64) unnamed_addr #0 {
entry:
musttail call fastcc void @bar(i64 999)
ret void
}
define fastcc void @baz(i64) unnamed_addr {
entry:
musttail call fastcc void @foo(i64 %0)
ret void
}
attributes #0 = { noinline }
When optimized with -O1/-O2/-O3 , this produces invalid bitcode because @foo
doesn't use its argument, but this argument must remain in order for the
tail-call to @bar to remain valid.
The following error is reported:
cannot guarantee tail call due to mismatched parameter counts
musttail call fastcc void @bar(i64 999)
LLVM ERROR: Broken function found, compilation aborted!
--
You are receiving this mail because:
You are on the CC list for the bug.
_______________________________________________
llvm-bugs mailing list
[email protected]
http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs