[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
Re: [omr-dev] Codegen question
|
Well I tried creating new shadow symbol for each load/store but that
didn't make a difference and broke another test.
On 23 June 2018 at 16:45, Dibyendu Majumdar <mobile@xxxxxxxxxxxxxxx> wrote:
> I think (I am not sure) that the problem might be related to the same
> array show being used to reference two different symbols?
>
> I am using :
> TR::SymbolReference *symRef =
> injector->symRefTab()->findOrCreateArrayShadowSymbolRef(type, base);
>
> On 23 June 2018 at 16:22, Dibyendu Majumdar <mobile@xxxxxxxxxxxxxxx> wrote:
>> Hi,
>>
>> I am trying to debug what appears to be incorrect code gen.
>>
>> The code being compiled is something very simple:
>>
>> int not(int v) {return ~v; }
>>
>> The output from trace log is:
>>
>> 0x00007FF406D70034 00000000 [0x000001BBE7664110]
>> ProcEntry ; PROCENTRY
>> 0x00007FF406D70034 00000000 [0x000001BBE7666870] 48 83 ec 10
>> sub rsp, 0x00000010 ; SUB8RegImms
>> 0x00007FF406D70038 00000004 [0x000001BBE76667F0]
>> vfpSave ; AdjustFramePtr
>> 0x00007FF406D70038 00000004 [0x000001BBE7664670]
>> assocRegs ; ASSOCREGS
>> 0x00007FF406D70038 00000004 [0x000001BBE7664430]
>> Label L0016: ; LABEL
>> 0x00007FF406D70038 00000004 [0x000001BBE7665DD0] 48 8b c1
>> mov rax, rcx ; MOV8RegReg
>> ========================================
>> 0x00007FF406D7003B 00000007 [0x000001BBE76646E0]
>> Fence Relative [ 0x000001BBE75E63E0 ] ; FENCE BBStart
>> <block_2> (frequency 10000)
>> 0x00007FF406D7003B 00000007 [0x000001BBE7664AC0] 89 44 24 08
>> mov dword ptr [rsp+0x8], eax ; S4MemReg, SymRef
>> <array-shadow>[#480 Auto +8] [flags 0x6001000e 0x0 ]
>> 0x00007FF406D7003F 0000000b [0x000001BBE7664E20] f7 d0
>> not eax ; NOT4Reg
>> 0x00007FF406D70041 0000000d [0x000001BBE7664F30] 89 04 24
>> mov dword ptr [rsp], eax ; S4MemReg, SymRef
>> <array-shadow>[#480 Auto] [flags 0x6001000e 0x0 ]
>> 0x00007FF406D70044 00000010 [0x000001BBE7665440]
>> assocRegs ; ASSOCREGS
>> 0x00007FF406D70044 00000010 [0x000001BBE76668F0] 48 83 c4 10
>> add rsp, 0x00000010 ; ADD8RegImms
>> 0x00007FF406D70048 00000014 [0x000001BBE7665220] c3
>> ret
>>
>>
>> I do not understand above - I am expecting that the parameter being
>> passed will be accessed via register RDI/EDI (first arg). But I don't
>> see that ... and this code when executed doesn't give the right
>> results.
>>
>> The IL is:
>>
>> n2n BBStart <block_2>
>> [0x000001BBE75C3900] bci=[-1,0,-] rc=0 vc=0
>> vn=- li=- udi=- nc=0
>> n9n istorei <array-shadow>[#480 Shadow] [flags 0x80000603 0x0
>> ] [0x000001BBE75C3AC0] bci=[-1,0,-] rc=0 vc=0
>> vn=- li=- udi=- nc=2
>> n8n aladd
>> [0x000001BBE75C3A80] bci=[-1,0,-] rc=1 vc=0
>> vn=- li=- udi=- nc=2
>> n5n loadaddr <temp slot 3>[#592 Auto] [flags 0x6001000e
>> 0x0 ] [0x000001BBE75C39C0] bci=[-1,0,-] rc=1 vc=0
>> vn=- li=- udi=- nc=0
>> n7n lconst 0
>> [0x000001BBE75C3A40] bci=[-1,0,-] rc=1 vc=0
>> vn=- li=- udi=- nc=0
>> n6n iload Parm 0<parm 0 I>[#590 Parm] [flags 0x40000103 0x0
>> ] [0x000001BBE75C3A00] bci=[-1,0,-] rc=1 vc=0
>> vn=- li=- udi=- nc=0
>> n19n istorei <array-shadow>[#480 Shadow] [flags 0x80000603 0x0
>> ] [0x000001BBE75C3D40] bci=[-1,0,-] rc=0 vc=0
>> vn=- li=- udi=- nc=2
>> n18n aladd
>> [0x000001BBE75C3D00] bci=[-1,0,-] rc=1 vc=0
>> vn=- li=- udi=- nc=2
>> n17n loadaddr <temp slot 2>[#591 Auto] [flags 0x6001000e
>> 0x0 ] [0x000001BBE75C3CC0] bci=[-1,0,-] rc=1 vc=0
>> vn=- li=- udi=- nc=0
>> n16n lconst 0
>> [0x000001BBE75C3C80] bci=[-1,0,-] rc=1 vc=0
>> vn=- li=- udi=- nc=0
>> n15n ixor
>> [0x000001BBE75C3C40] bci=[-1,0,-] rc=1 vc=0
>> vn=- li=- udi=- nc=2
>> n13n iloadi <array-shadow>[#480 Shadow] [flags 0x80000603
>> 0x0 ] [0x000001BBE75C3BC0] bci=[-1,0,-] rc=1 vc=0
>> vn=- li=- udi=- nc=1
>> n12n aladd
>> [0x000001BBE75C3B80] bci=[-1,0,-] rc=1 vc=0
>> vn=- li=- udi=- nc=2
>> n10n loadaddr <temp slot 3>[#592 Auto] [flags
>> 0x6001000e 0x0 ] [0x000001BBE75C3B00] bci=[-1,0,-]
>> rc=1 vc=0 vn=- li=- udi=- nc=0
>> n11n lconst 0
>> [0x000001BBE75C3B40] bci=[-1,0,-] rc=1 vc=0
>> vn=- li=- udi=- nc=0
>> n14n iconst -1
>> [0x000001BBE75C3C00] bci=[-1,0,-] rc=1 vc=0
>> vn=- li=- udi=- nc=0
>> n20n goto --> block_3 BBStart at n4n
>> [0x000001BBE75C3D80] bci=[-1,0,-] rc=0 vc=0
>> vn=- li=- udi=- nc=0
>> n1n BBEnd </block_2> =====
>> [0x000001BBE75C38C0] bci=[-1,0,-] rc=0 vc=0
>> vn=- li=- udi=- nc=0
>>
>> n4n BBStart <block_3>
>> [0x000001BBE75C3980] bci=[-1,0,-] rc=0 vc=0
>> vn=- li=- udi=- nc=0
>> n25n ireturn
>> [0x000001BBE75C3EC0] bci=[-1,0,-] rc=0 vc=0
>> vn=- li=- udi=- nc=1
>> n24n iloadi <array-shadow>[#480 Shadow] [flags 0x80000603 0x0
>> ] [0x000001BBE75C3E80] bci=[-1,0,-] rc=1 vc=0
>> vn=- li=- udi=- nc=1
>> n23n aladd
>> [0x000001BBE75C3E40] bci=[-1,0,-] rc=1 vc=0
>> vn=- li=- udi=- nc=2
>> n22n loadaddr <temp slot 2>[#591 Auto] [flags 0x6001000e
>> 0x0 ] [0x000001BBE75C3E00] bci=[-1,0,-] rc=1 vc=0
>> vn=- li=- udi=- nc=0
>> n21n lconst 0
>> [0x000001BBE75C3DC0] bci=[-1,0,-] rc=1 vc=0
>> vn=- li=- udi=- nc=0
>> n3n BBEnd </block_3>
>> [0x000001BBE75C3940] bci=[-1,0,-] rc=0 vc=0
>> vn=- li=- udi=- nc=0
>>
>>
>> I must be doing something wrong but I can't see what...
>>
>> Regards
>> Dibyendu