Hi,
    I have found the cause:

    Okay let me sum it up:
    at first the code looks like this
    call xxx: .cfa 92
    float ops
    add sp 12 .cfa 80

    And then split2 splits the float ops,then it looks like this
    call xxx: .cfa 92
    push edx
    float ops2
    add sp 4
    ...
    add sp 12 .cfa 80

    Note that the split code has a sp ops but no cfa notes.
    And then cfa feels that's ugly,it changes the code to
    call xxx : .cfa 92
    push edx
    float ops2
    ...
    add sp 16 .cfa 80

    And then jump2 finds another branch also has an "add sp 16 .cfa 80",so the 
combination has occurred:
    call xxx :.cfa 92
    push edx
    float ops2
    ...
    label jump_from_other_branch ( (hasRelativeWidth || hasRelativeHeight) == 
true )
    add sp 16 .cfa 80


    then dwarf2cfi.c will first find the "add sp 16 .cfa 80" row has cfa 92 
coming first,and then cfa 96.

Anybody has any comment to fix it?
--
Regards
lin zuojian

Reply via email to