[LLVMbugs] [Bug 84] C front-end doesn't emit getelementptr for address of array element
bugzilla-daemon at zion.cs.uiuc.edu
bugzilla-daemon at zion.cs.uiuc.edu
Sat Nov 8 15:01:29 PST 2003
http://llvm.cs.uiuc.edu/bugs/show_bug.cgi?id=84
sabre at nondot.org changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|RESOLVED |REOPENED
Resolution|FIXED |
------- Additional Comments From sabre at nondot.org 2003-11-08 17:01 -------
Here's another horrible case, this one found in the pool allocator:
struct foo {
int array[100];
void *getAddr(unsigned i);
};
void *foo::getAddr(unsigned i) {
return &array[i];
}
This becomes:
sbyte* %_ZN3foo7getAddrEj(%struct.foo* %this.1, uint %i.1) {
entry: ; No predecessors!
%tmp.4 = shl uint %i.1, ubyte 2 ; <uint> [#uses=1]
%tmp.5 = cast uint %tmp.4 to int* ; <int*> [#uses=1]
%tmp.6 = cast %struct.foo* %this.1 to long ; <long> [#uses=1]
%tmp.7 = cast int* %tmp.5 to long ; <long> [#uses=1]
%tmp.8 = add long %tmp.7, %tmp.6 ; <long> [#uses=1]
%tmp.9 = cast long %tmp.8 to sbyte* ; <sbyte*> [#uses=1]
ret sbyte* %tmp.9
}
Testcase here: test/Regression/C++Frontend/2003-11-08-ArrayAddress.cpp.tr
Ugh.
-Chris
------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.
More information about the llvm-bugs
mailing list