[LLVMdev] Duplicate assignment in LLVM?
Reid Spencer
reid at x10sys.com
Wed Jul 7 07:43:01 PDT 2004
Volodya,
I think you may need to update your CFE and rebuild. I compiled the test
using my local build and I didn't get the results you see below. I'm
also very surprised to see this output. The first %tmp.11 should have
been %tmp.1 .. not sure how it got corrupted. In any event, the
attachment is obviously generated by code that runs quite differently
because the virtual register names used are quite different from what
you have below. If you updated last week sometime, is it possible you
got caught between some of Chris' "determinism" changes?
Anyway, try an update and let us know how it goes.
Thanks,
Reid.
On Wed, 2004-07-07 at 03:07, Vladimir Prus wrote:
> Hello,
> when I'm compiling
>
> test/Programs/SingleSource/UnitTests/2003-05-26-Shorts.c
>
> I get LLVM assembler which looks like:
>
> int %main(int %argc, sbyte** %argv) {
> entry:
> call void %__main( )
> %tmp.11 = call ulong %getL( ) ; <ulong> [#uses=16]
> %tmp.3 = cast ulong %tmp.11 to long ; <long> [#uses=
> %tmp.5 = cast ulong %tmp.11 to uint ; <uint> [#uses=
> %tmp.7 = cast ulong %tmp.11 to int ; <int> [#uses=7
> %tmp.9 = cast ulong %tmp.11 to ushort ; <ushort> [#use
> %tmp.11 = cast ulong %tmp.11 to short
>
> Am I missing something, or there's duplicate assignment to %tmp.11?
>
> - Volodya
>
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu
> http://mail.cs.uiuc.edu/mailman/listinfo/llvmdev
-------------- next part --------------
%.str_1 = internal constant [42 x sbyte] c" ui = %u (0x%x)\09\09UL-ui = %lld (0x%llx)\0A\00" ; <[42 x sbyte]*> [#uses=1]
%.str_2 = internal constant [44 x sbyte] c"ui*ui = %u (0x%x)\09 UL/ui = %lld (0x%llx)\0A\0A\00" ; <[44 x sbyte]*> [#uses=1]
%.str_3 = internal constant [39 x sbyte] c" i = %d (0x%x)\09L-i = %lld (0x%llx)\0A\00" ; <[39 x sbyte]*> [#uses=1]
%.str_4 = internal constant [41 x sbyte] c" i* i = %d (0x%x)\09L/ i = %lld (0x%llx)\0A\0A\00" ; <[41 x sbyte]*> [#uses=1]
%.str_5 = internal constant [42 x sbyte] c"us = %u (0x%x)\09\09UL-us = %lld (0x%llx)\0A\00" ; <[42 x sbyte]*> [#uses=1]
%.str_6 = internal constant [44 x sbyte] c"us*us = %u (0x%x)\09 UL/us = %lld (0x%llx)\0A\0A\00" ; <[44 x sbyte]*> [#uses=1]
%.str_7 = internal constant [39 x sbyte] c" s = %d (0x%x)\09L-s = %lld (0x%llx)\0A\00" ; <[39 x sbyte]*> [#uses=1]
%.str_8 = internal constant [41 x sbyte] c" s* s = %d (0x%x)\09L/ s = %lld (0x%llx)\0A\0A\00" ; <[41 x sbyte]*> [#uses=1]
%.str_9 = internal constant [42 x sbyte] c"ub = %u (0x%x)\09\09UL-ub = %lld (0x%llx)\0A\00" ; <[42 x sbyte]*> [#uses=1]
%.str_10 = internal constant [43 x sbyte] c"ub*ub = %u (0x%x)\09\09UL/ub = %lld (0x%llx)\0A\0A\00" ; <[43 x sbyte]*> [#uses=1]
%.str_11 = internal constant [40 x sbyte] c" b = %d (0x%x)\09\09L-b = %lld (0x%llx)\0A\00" ; <[40 x sbyte]*> [#uses=1]
%.str_12 = internal constant [42 x sbyte] c" b* b = %d (0x%x)\09\09\09L/b = %lld (0x%llx)\0A\0A\00" ; <[42 x sbyte]*> [#uses=1]
%.str_13 = internal constant [2 x sbyte] c"\0A\00" ; <[2 x sbyte]*> [#uses=1]
%.str_14 = internal constant [41 x sbyte] c"uiprod = %u (0x%x)\09 uidiv = %u (0x%x)\0A\0A\00" ; <[41 x sbyte]*> [#uses=1]
%.str_15 = internal constant [41 x sbyte] c"usprod = %u (0x%x)\09 usdiv = %u (0x%x)\0A\0A\00" ; <[41 x sbyte]*> [#uses=1]
%.str_16 = internal constant [41 x sbyte] c"ubprod = %u (0x%x)\09 ubdiv = %u (0x%x)\0A\0A\00" ; <[41 x sbyte]*> [#uses=1]
%.str_17 = internal constant [41 x sbyte] c" iprod = %u (0x%x)\09 idiv = %u (0x%x)\0A\0A\00" ; <[41 x sbyte]*> [#uses=1]
%.str_18 = internal constant [41 x sbyte] c" sprod = %u (0x%x)\09 sdiv = %u (0x%x)\0A\0A\00" ; <[41 x sbyte]*> [#uses=1]
%.str_19 = internal constant [41 x sbyte] c" bprod = %u (0x%x)\09 bdiv = %u (0x%x)\0A\0A\00" ; <[41 x sbyte]*> [#uses=1]
implementation ; Functions:
declare int %printf(sbyte*, ...)
ulong %getL() {
entry:
ret ulong 12659530247033960611
}
int %main(int %argc, sbyte** %argv) {
entry:
call void %__main( )
%tmp.16 = call int (sbyte*, ...)* %printf( sbyte* getelementptr ([42 x sbyte]* %.str_1, long 0, long 0), uint 3318069411, uint 3318069411, ulong 12659530243715891200, ulong 12659530243715891200 ) ; <int> [#uses=0]
%tmp.28 = call int (sbyte*, ...)* %printf( sbyte* getelementptr ([44 x sbyte]* %.str_2, long 0, long 0), uint 2382936009, uint 2382936009, ulong 3815330145, ulong 3815330145 ) ; <int> [#uses=0]
%tmp.44 = call int (sbyte*, ...)* %printf( sbyte* getelementptr ([39 x sbyte]* %.str_3, long 0, long 0), int -976897885, int -976897885, long -5787213825698693120, long -5787213825698693120 ) ; <int> [#uses=0]
%tmp.56 = call int (sbyte*, ...)* %printf( sbyte* getelementptr ([41 x sbyte]* %.str_4, long 0, long 0), int -1912031287, int -1912031287, long 5924072429, long 5924072429 ) ; <int> [#uses=0]
%tmp.72 = call int (sbyte*, ...)* %printf( sbyte* getelementptr ([42 x sbyte]* %.str_5, long 0, long 0), int 47267, int 47267, ulong 12659530247033913344, ulong 12659530247033913344 ) ; <int> [#uses=0]
%tmp.86 = call int (sbyte*, ...)* %printf( sbyte* getelementptr ([44 x sbyte]* %.str_6, long 0, long 0), int -2060798007, int -2060798007, ulong 267830203885035, ulong 267830203885035 ) ; <int> [#uses=0]
%tmp.106 = call int (sbyte*, ...)* %printf( sbyte* getelementptr ([39 x sbyte]* %.str_7, long 0, long 0), int -18269, int -18269, long -5787213826675572736, long -5787213826675572736 ) ; <int> [#uses=0]
%tmp.120 = call int (sbyte*, ...)* %printf( sbyte* getelementptr ([41 x sbyte]* %.str_8, long 0, long 0), int 333756361, int 333756361, long 316777810864064, long 316777810864064 ) ; <int> [#uses=0]
%tmp.140 = call int (sbyte*, ...)* %printf( sbyte* getelementptr ([42 x sbyte]* %.str_9, long 0, long 0), int 163, int 163, ulong 12659530247033960448, ulong 12659530247033960448 ) ; <int> [#uses=0]
%tmp.154 = call int (sbyte*, ...)* %printf( sbyte* getelementptr ([43 x sbyte]* %.str_10, long 0, long 0), int 26569, int 26569, ulong 77665829736404666, ulong 77665829736404666 ) ; <int> [#uses=0]
%tmp.174 = call int (sbyte*, ...)* %printf( sbyte* getelementptr ([40 x sbyte]* %.str_11, long 0, long 0), int -93, int -93, long -5787213826675590912, long -5787213826675590912 ) ; <int> [#uses=0]
%tmp.188 = call int (sbyte*, ...)* %printf( sbyte* getelementptr ([42 x sbyte]* %.str_12, long 0, long 0), int 8649, int 8649, long 62228105663178397, long 62228105663178397 ) ; <int> [#uses=0]
%tmp.350 = call int (sbyte*, ...)* %printf( sbyte* getelementptr ([2 x sbyte]* %.str_13, long 0, long 0) ) ; <int> [#uses=0]
%tmp.352 = call int (sbyte*, ...)* %printf( sbyte* getelementptr ([41 x sbyte]* %.str_14, long 0, long 0), uint 41764483, uint 41764483, uint 3782248129, uint 3782248129 ) ; <int> [#uses=0]
%tmp.358 = call int (sbyte*, ...)* %printf( sbyte* getelementptr ([41 x sbyte]* %.str_15, long 0, long 0), int 18051, int 18051, int 50617, int 50617 ) ; <int> [#uses=0]
%tmp.368 = call int (sbyte*, ...)* %printf( sbyte* getelementptr ([41 x sbyte]* %.str_16, long 0, long 0), int 131, int 131, int 36, int 36 ) ; <int> [#uses=0]
%tmp.378 = call int (sbyte*, ...)* %printf( sbyte* getelementptr ([41 x sbyte]* %.str_17, long 0, long 0), int 41764483, int 41764483, int -1918011031, int -1918011031 ) ; <int> [#uses=0]
%tmp.384 = call int (sbyte*, ...)* %printf( sbyte* getelementptr ([41 x sbyte]* %.str_18, long 0, long 0), int 18051, int 18051, int 4096, int 4096 ) ; <int> [#uses=0]
%tmp.394 = call int (sbyte*, ...)* %printf( sbyte* getelementptr ([41 x sbyte]* %.str_19, long 0, long 0), int -125, int -125, int 73, int 73 ) ; <int> [#uses=0]
ret int 0
}
declare void %__main()
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 189 bytes
Desc: This is a digitally signed message part
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20040707/37e0259d/attachment.sig>
More information about the llvm-dev
mailing list