llvm-upgrade cannot upgrade the following program: ; ModuleID = 'b.c' target datalayout = "e-p:32:32" target endian = little target pointersize = 32 target triple = "i686-pc-linux-gnu" implementation ; Functions: void %main() { entry: %tmp = alloca uint, align 4 ; <uint*> [#uses=1] %tmp = alloca int, align 4 ; <int*> [#uses=1] "alloca point" = cast int 0 to int ; <int> [#uses=0] store uint 1, uint* %tmp store int 2, int* %tmp br label %return return: ; preds = %entry ret void } It fails with: Redefinition of value named 'tmp' in the 'i32 *' type plane (The above program was produced by compiling the following with the llvm-gcc4- 1.9-x86-FC5 binary: void main() { { unsigned int tmp = 1; } { int tmp = 2; } }
That's a bit scarey. I'll look into this right away.
Fixed with this patch: http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20070122/043382.html Test case placed here: http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20070122/043381.html
Wow, fixed within two hours of reporting! that's a great turnaround time... :-)