[Open64-devel] RE: [Ipf-orc-support] A bug in Alias Analysis
Brought to you by:
ributzka,
suneeljain
From: Jin L. <ji...@cs...> - 2002-12-14 21:12:09
|
I think the type in the whirl node with alias_id 11 is correct while the types in the whril node with alias id 9 and 14 is incorrect. The reason is the type of *Chunk is unsigned int whose size is 4. For the whirl node with alias id 9 and 14, the type they used is the unsigned long whose size is 8. From the following example, we could see it very clearly. Perhaps there is something wrong related to FE part in ORC. Jin ************** #include <stdio.h> typedef void *addrtype; typedef unsigned int numtype; typedef unsigned int indextype; typedef struct Ory { addrtype *ChunkAddr; numtype *NextChunk; indextype NextFree; } OryType; OryType *Theory = NULL; /* Chunk[0] */ #define Chunk_Addr(ChunkNum)\ ((Theory->ChunkAddr[ChunkNum])) /* Chunk[1] */ #define Next_Chunk(ChunkNum)\ ((Theory->NextChunk[ChunkNum])) main(){ numtype *Chunk; Chunk = malloc(sizeof(numtype)); *Chunk = 10; printf("%d\n", *Chunk); Next_Chunk(*Chunk) = Theory->NextFree; Theory->NextFree = *Chunk; Chunk_Addr(*Chunk) = NULL; printf("%d\n", *Chunk); } ****************** On Thu, 12 Dec 2002, Chan, Sun C wrote: > The type in the whirl node with alias_id 11 is wrong. It has type #8, predef_U4 vs the others are of type #9, .prefef_U8. By default, orc1.1 assumes different types don't alias. This said, what the alias manager thinks is different from what I expect. I don't understand that part. When I get time to look at it and sort that out, I'll post them. > > Sun > > -----Original Message----- > From: Jin Lin [mailto:ji...@cs...] > Sent: Tuesday, December 10, 2002 11:06 AM > To: ipf...@li... > Subject: [Ipf-orc-support] A bug in Alias Analysis > > > > Procedure: MemFreeChunkNum > File: mem01.c > Benchmark: vortex > Compiler option: orcc -O3 > > Source code: > Next_Chunk(*Chunk) = Theory->NextFree; > Theory->NextFree = *Chunk; > > Chunk_Addr(*Chunk) = NullPtr; > > Whirl tree: > 975 LOC 1 249 Next_Chunk(*Chunk) = Theory->NextFree; > 976 U8U8LDID 0 <1,94,Theory> T<70,anon_ptr.,8> [alias_id: 6,fixed] > 977 I4INTCONST 72 (0x48) > 978 U8ADD > 979 U4U4ILOAD 0 T<68,Ory,8> T<70,anon_ptr.,8> <field_id:10> [alias_id: 7] > 980 U8U8LDID 0 <1,94,Theory> T<70,anon_ptr.,8> [alias_id: 6,fixed] > 981 I4INTCONST 8 (0x8) > 982 U8ADD > 983 U8U8ILOAD 0 T<68,Ory,8> T<70,anon_ptr.,8> <field_id:2> [alias_id: 8] > 984 U8U8LDID 0 <2,1,Chunk> T<35,anon_ptr.,8> [alias_id: 3,fixed] > 985 U8U4ILOAD 0 T<9,.predef_U8,8> T<35,anon_ptr.,8> [alias_id: 9] > 986 I4INTCONST 4 (0x4) > 987 U8MPY > 988 U8ADD > 989 U4ISTORE 0 T<35,anon_ptr.,8> [alias_id: 10] {freq: 0, ln: 249, col: 0} > 990 LOC 1 250 Theory->NextFree = *Chunk; > 991 U8U8LDID 0 <2,1,Chunk> T<35,anon_ptr.,8> [alias_id: 3,fixed] > 992 U4U4ILOAD 0 T<8,.predef_U4,4> T<35,anon_ptr.,8> [alias_id: 11] > 993 U8U8LDID 0 <1,94,Theory> T<70,anon_ptr.,8> [alias_id: 6,fixed] > 994 I4INTCONST 72 (0x48) > 995 U8ADD > 996 U4ISTORE 0 T<70,anon_ptr.,8> <field_id:10> [alias_id: 12] {freq: 0, ln: 250, col: 0} > 997 LOC 1 251 > 998 LOC 1 252 Chunk_Addr(*Chunk) = NullPtr; > 999 I4INTCONST 0 (0x0) > 1000 U8U8LDID 0 <1,94,Theory> T<70,anon_ptr.,8> [alias_id: 6,fixed] > 1001 U8U8ILOAD 0 T<68,Ory,8> T<70,anon_ptr.,8> <field_id:1> [alias_id: 13] > 1002 U8U8LDID 0 <2,1,Chunk> T<35,anon_ptr.,8> [alias_id: 3,fixed] > 1003 U8U4ILOAD 0 T<9,.predef_U8,8> T<35,anon_ptr.,8> [alias_id: 14] > 1004 I4INTCONST 8 (0x8) > 1005 U8MPY > 1006 U8ADD > 1007 U8ISTORE 0 T<69,anon_ptr.,8> [alias_id: 15] {freq: 0, ln: 252, col: 0} > 1008 LOC 1 253 *Chunk = 0; > 1009 I4INTCONST 0 (0x0) > 1010 U8U8LDID 0 <2,1,Chunk> T<35,anon_ptr.,8> [alias_id: 3,fixed] > 1011 U4ISTORE 0 T<35,anon_ptr.,8> [alias_id: 16] {freq: 0, ln: 253, col: 0} > > The alias id of the first occurrence *Chunk: 9 > The alias id of the second occurrence *Chunk: 11 > The alias id of the third occurrence *Chunk: 14 > > ALIAS ARC DUMP: > aliased_with<9,{2 4 9 }> > aliased_with<11,{2 4 5 7 9 10 11 }> > aliased_with<14,{2 4 9 11 14 }> > > We could see that the alias id 11 is aliased with alias id 10 while there > is no alias relation between the alias id 10 and alias id 14. I think it > is one bug in alias analysis of ORC. > > Is there anyone shedding me a light on how to fix it? > > Thanks, > > Jin > > > > ------------------------------------------------------- > This sf.net email is sponsored by: > With Great Power, Comes Great Responsibility > Learn to use your power at OSDN's High Performance Computing Channel > http://hpc.devchannel.org/ > _______________________________________________ > ipf-orc-support mailing list > ipf...@li... > https://lists.sourceforge.net/lists/listinfo/ipf-orc-support > > > ------------------------------------------------------- > This sf.net email is sponsored by: > With Great Power, Comes Great Responsibility > Learn to use your power at OSDN's High Performance Computing Channel > http://hpc.devchannel.org/ > _______________________________________________ > ipf-orc-support mailing list > ipf...@li... > https://lists.sourceforge.net/lists/listinfo/ipf-orc-support > |