http://llvm.org/bugs/show_bug.cgi?id=7304
Summary: Partial specialize uses wrong specialization for
callsite
Product: libraries
Version: trunk
Platform: PC
OS/Version: Linux
Status: NEW
Severity: normal
Priority: P
Component: Interprocedural Optimizations
AssignedTo: [email protected]
ReportedBy: [email protected]
CC: [email protected]
Given the test code:
declare void @callback1()
declare void @callback2()
define internal void @UseCallback(void()* %pCallback) {
call void %pCallback()
ret void
}
define void @foo()
{
call void @UseCallback(void()* @callback1)
call void @UseCallback(void()* @callback1)
call void @UseCallback(void()* @callback2)
call void @UseCallback(void()* @callback1)
call void @UseCallback(void()* @callback2)
call void @UseCallback(void()* @callback2)
ret void
}
Running "opt -partialspecialization -o test-opt.bc test.bc"
yields the following code:
declare void @callback1()
declare void @callback2()
define internal void @UseCallback(void ()* %pCallback) {
call void %pCallback()
ret void
}
define void @foo() {
call void @UseCallback1()
call void @UseCallback1()
call void @UseCallback1() ; should be @UseCallback2!
call void @UseCallback1()
call void @UseCallback1() ; should be @UseCallback2!
call void @UseCallback1() ; should be @UseCallback2!
ret void
}
define internal void @UseCallback1() {
call void @callback1()
ret void
}
define internal void @UseCallback2() {
call void @callback2()
ret void
}
--
Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.
_______________________________________________
LLVMbugs mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/llvmbugs