LEB0 and LEB1 are duplicated in the attached ivms assembly file from libgcc2. Note the first occurrence of each is at the prologue end, which makes no sense to me.

FYI: I'm emitting the LPE labels at NOTE_INSN_FUNCTION_BEG and the LEB labels at NOTE_INSN_EPILOGUE_BEG. I can send you the full patch if you like.

I deleted the .debug* sections to reduce the size of the file.
        .file   "libgcc2.c"
        .pred.safe_across_calls p1-p5,p16-p63
        .section        .debug_abbrev,"",@progbits
.Ldebug_abbrev0:
        .section        .debug_info,"",@progbits
.Ldebug_info0:
        .section        .debug_line,"",@progbits
.Ldebug_line0:
        .text
.Ltext0:
        .align 16
        .align 64
        .global __addvdi3#
        .type   __addvdi3#, @function
        .hidden __addvdi3#
        .proc __addvdi3#
__addvdi3:
[.LFB0:]
        .file 1 "../../../gcc-head-src/libgcc/../gcc/libgcc2.c"
        .loc 1 82 0
        .prologue 12, 34
[.LPE0:]
[.LEB0:]
        .mmb
        .save ar.pfs, r35
        alloc r35 = ar.pfs, 2, 3, 0, 0
        .loc 1 83 0
        add r8 = r33, r32
        .loc 1 85 0
        nop 0
        .mib
        cmp.gt p6, p7 = r0, r33
        .loc 1 82 0
        .save rp, r34
        mov r34 = b0
        .body
        .loc 1 85 0
        (p6) br.cond.dpnt .L2
        ;;
        .mmi
        cmp.gt p6, p7 = r32, r8
        ;;
        (p6) addl r14 = 1, r0
        (p7) mov r14 = r0
        ;;
        .mmi
        nop 0
        cmp4.eq p6, p7 = 0, r14
        .loc 1 86 0
        nop 0
        ;;
        .mib
        (p7) mov r25 = r0
        nop 0
        .pred.safe_across_calls p1-p63
        (p7) br.call.spnt.many b0 = abort#
        .pred.safe_across_calls p1-p5,p16-p63
        .loc 1 89 0
        ;;
        .mii
        nop 0
        mov ar.pfs = r35
        nop 0
        ;;
        .mib
        nop 0
        mov b0 = r34
        br.ret.sptk.many b0
.L2:
        .loc 1 85 0
        .mmi
        cmp.lt p6, p7 = r32, r8
        ;;
        (p6) addl r14 = 1, r0
        (p7) mov r14 = r0
        ;;
        .mmi
        nop 0
        cmp4.eq p6, p7 = 0, r14
        .loc 1 86 0
        nop 0
        ;;
        .mib
        (p7) mov r25 = r0
        nop 0
        .pred.safe_across_calls p1-p63
        (p7) br.call.spnt.many b0 = abort#
        .pred.safe_across_calls p1-p5,p16-p63
        .loc 1 89 0
        ;;
        .mii
        nop 0
[.LEB0:]
        mov ar.pfs = r35
        nop 0
        ;;
        .mib
        nop 0
        mov b0 = r34
        br.ret.sptk.many b0
.LFE0:
        .endp __addvdi3#
        .align 16
        .align 64
        .global __addvsi3#
        .type   __addvsi3#, @function
        .hidden __addvsi3#
        .proc __addvsi3#
__addvsi3:
[.LFB1:]
        .loc 1 93 0
        .prologue 12, 34
[.LPE1:]
[.LEB1:]
        .mmb
        .save ar.pfs, r35
        alloc r35 = ar.pfs, 2, 3, 0, 0
        .loc 1 96 0
        cmp4.gt p6, p7 = r0, r33
        .loc 1 94 0
        nop 0
        .mib
        add r33 = r33, r32
        .loc 1 93 0
        .save rp, r34
        mov r34 = b0
        .body
        .loc 1 96 0
        (p6) br.cond.dpnt .L8
        ;;
        .mmi
        cmp4.gt p6, p7 = r32, r33
        ;;
        (p6) addl r14 = 1, r0
        (p7) mov r14 = r0
        ;;
        .mmi
        nop 0
        cmp4.eq p6, p7 = 0, r14
        .loc 1 97 0
        nop 0
        ;;
        .mib
        (p7) mov r25 = r0
        nop 0
        .pred.safe_across_calls p1-p63
        (p7) br.call.spnt.many b0 = abort#
        .pred.safe_across_calls p1-p5,p16-p63
        .loc 1 100 0
        ;;
        .mii
        nop 0
        mov ar.pfs = r35
        sxt4 r8 = r33
        ;;
        .mib
        nop 0
        mov b0 = r34
        br.ret.sptk.many b0
.L8:
        .loc 1 96 0
        .mmi
        cmp4.lt p6, p7 = r32, r33
        ;;
        (p6) addl r14 = 1, r0
        (p7) mov r14 = r0
        ;;
        .mmi
        nop 0
        cmp4.eq p6, p7 = 0, r14
        .loc 1 97 0
        nop 0
        ;;
        .mib
        (p7) mov r25 = r0
        nop 0
        .pred.safe_across_calls p1-p63
        (p7) br.call.spnt.many b0 = abort#
        .pred.safe_across_calls p1-p5,p16-p63
        .loc 1 100 0
        ;;
        .mii
        nop 0
[.LEB1:]
        mov ar.pfs = r35
        sxt4 r8 = r33
        ;;
        .mib
        nop 0
        mov b0 = r34
        br.ret.sptk.many b0
.LFE1:
        .endp __addvsi3#
.Letext0:
        .file 2 "../../../gcc-head-src/libgcc/../gcc/libgcc2.h"

Reply via email to