[LLVMdev] GEP instruction change

Artur Pietrek pietreka at gmail.com
Fri Aug 21 02:02:28 PDT 2009


Hi All,
Since few days I observe weird change.
Consider the following C code

char array[] = "0123456789";
extern int test(char arr[], int size);

int main(void) {
  return test(array-1, sizeof(array)-1);
}

using clang frontend i get this:

%call = call i32 @test(i8* getelementptr inbounds ([11 x i8]* @array, i32 0,
i32 -1), i32 10) ; <i32> [#uses=1]

and using LLVM-GCC this:
%1 = call i32 @test(i8* getelementptr ([11 x i8]* @array, i32 1561806289,
i32 4), i32 10) nounwind ; <i32> [#uses=1]

Should the second getelementptr look like this? Is it correct or a bug?
Since that change there's a problem in MSIL backend - it simply triggers
pointer overflow assertion.

Artur
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20090821/acfb1819/attachment.html>


More information about the llvm-dev mailing list