[LLVMbugs] [Bug 1602] New: Mid-level optimizer doesn't "devirtualize" simple reference
bugzilla-daemon at cs.uiuc.edu
bugzilla-daemon at cs.uiuc.edu
Wed Aug 8 21:03:19 PDT 2007
http://llvm.org/bugs/show_bug.cgi?id=1602
Summary: Mid-level optimizer doesn't "devirtualize" simple
reference
Product: libraries
Version: trunk
Platform: PC
OS/Version: All
Status: NEW
Keywords: code-quality, regression
Severity: enhancement
Priority: P2
Component: Scalar Optimizations
AssignedTo: unassignedbugs at nondot.org
ReportedBy: sabre at nondot.org
CC: llvmbugs at cs.uiuc.edu
On this simple C++ ptr-to-method example, the optimizer gets confused by the
ptrtoint inttoptr stuff:
struct S { virtual void f(); };
typedef void (S::*P)(void);
const P p = &S::f;
void g(S s) {
(s.*p)();
}
This generates atrocious code like:
define void @_Z1g1S(%struct.S* %s) {
entry:
br i1 icmp eq (i32 and (i32 ptrtoint (void (%struct.S*)* inttoptr (i64
1 to void (%struct.S*)*) to i32), i32 1), i32 0), label %cond_next, label
%cond_true
This is optimized away at the codegen level, but the mid-level optimizer should
also eliminate this stuff.
-Chris
--
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.
More information about the llvm-bugs
mailing list