Index: test/CodeGen/X86/abi-isel.ll =================================================================== --- test/CodeGen/X86/abi-isel.ll +++ test/CodeGen/X86/abi-isel.ll @@ -1,8 +1,9 @@ ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py +; NOTE: Use the --no_x86_scrub_rip additional argument to keep the rip address math. ; RUN: llc < %s -mcpu=generic -mtriple=x86_64-unknown-linux-gnu -relocation-model=static -code-model=small -pre-RA-sched=list-ilp | FileCheck %s -check-prefix=LINUX-64-STATIC ; RUN: llc < %s -mcpu=generic -mtriple=i686-unknown-linux-gnu -relocation-model=static -code-model=small -pre-RA-sched=list-ilp | FileCheck %s -check-prefix=LINUX-32-STATIC -; RUN: llc < %s -mcpu=generic -mtriple=i686-unknown-linux-gnu -relocation-model=static -code-model=small -pre-RA-sched=list-ilp | FileCheck %s -check-prefix=LINUX-32-PIC +; RUN: llc < %s -mcpu=generic -mtriple=i686-unknown-linux-gnu -relocation-model=pic -code-model=small -pre-RA-sched=list-ilp | FileCheck %s -check-prefix=LINUX-32-PIC ; RUN: llc < %s -mcpu=generic -mtriple=x86_64-unknown-linux-gnu -relocation-model=pic -code-model=small -pre-RA-sched=list-ilp | FileCheck %s -check-prefix=LINUX-64-PIC ; RUN: llc < %s -mcpu=generic -mtriple=i686-apple-darwin -relocation-model=static -code-model=small -pre-RA-sched=list-ilp | FileCheck %s -check-prefix=DARWIN-32-STATIC @@ -47,8 +48,15 @@ ; ; LINUX-32-PIC-LABEL: foo00: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl src, %eax -; LINUX-32-PIC-NEXT: movl %eax, dst +; LINUX-32-PIC-NEXT: calll .L0$pb +; LINUX-32-PIC-NEXT: .L0$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp0: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp0-.L0$pb), %eax +; LINUX-32-PIC-NEXT: movl src@GOT(%eax), %ecx +; LINUX-32-PIC-NEXT: movl (%ecx), %ecx +; LINUX-32-PIC-NEXT: movl dst@GOT(%eax), %eax +; LINUX-32-PIC-NEXT: movl %ecx, (%eax) ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: foo00: @@ -130,8 +138,15 @@ ; ; LINUX-32-PIC-LABEL: fxo00: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl xsrc, %eax -; LINUX-32-PIC-NEXT: movl %eax, xdst +; LINUX-32-PIC-NEXT: calll .L1$pb +; LINUX-32-PIC-NEXT: .L1$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp1: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp1-.L1$pb), %eax +; LINUX-32-PIC-NEXT: movl xsrc@GOT(%eax), %ecx +; LINUX-32-PIC-NEXT: movl (%ecx), %ecx +; LINUX-32-PIC-NEXT: movl xdst@GOT(%eax), %eax +; LINUX-32-PIC-NEXT: movl %ecx, (%eax) ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: fxo00: @@ -211,7 +226,14 @@ ; ; LINUX-32-PIC-LABEL: foo01: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl $dst, ptr +; LINUX-32-PIC-NEXT: calll .L2$pb +; LINUX-32-PIC-NEXT: .L2$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp2: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp2-.L2$pb), %eax +; LINUX-32-PIC-NEXT: movl dst@GOT(%eax), %ecx +; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax +; LINUX-32-PIC-NEXT: movl %ecx, (%eax) ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: foo01: @@ -282,7 +304,14 @@ ; ; LINUX-32-PIC-LABEL: fxo01: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl $xdst, ptr +; LINUX-32-PIC-NEXT: calll .L3$pb +; LINUX-32-PIC-NEXT: .L3$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp3: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp3-.L3$pb), %eax +; LINUX-32-PIC-NEXT: movl xdst@GOT(%eax), %ecx +; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax +; LINUX-32-PIC-NEXT: movl %ecx, (%eax) ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: fxo01: @@ -357,9 +386,16 @@ ; ; LINUX-32-PIC-LABEL: foo02: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl src, %eax -; LINUX-32-PIC-NEXT: movl ptr, %ecx -; LINUX-32-PIC-NEXT: movl %eax, (%ecx) +; LINUX-32-PIC-NEXT: calll .L4$pb +; LINUX-32-PIC-NEXT: .L4$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp4: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp4-.L4$pb), %eax +; LINUX-32-PIC-NEXT: movl src@GOT(%eax), %ecx +; LINUX-32-PIC-NEXT: movl (%ecx), %ecx +; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax +; LINUX-32-PIC-NEXT: movl (%eax), %eax +; LINUX-32-PIC-NEXT: movl %ecx, (%eax) ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: foo02: @@ -450,9 +486,16 @@ ; ; LINUX-32-PIC-LABEL: fxo02: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl xsrc, %eax -; LINUX-32-PIC-NEXT: movl ptr, %ecx -; LINUX-32-PIC-NEXT: movl %eax, (%ecx) +; LINUX-32-PIC-NEXT: calll .L5$pb +; LINUX-32-PIC-NEXT: .L5$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp5: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp5-.L5$pb), %eax +; LINUX-32-PIC-NEXT: movl xsrc@GOT(%eax), %ecx +; LINUX-32-PIC-NEXT: movl (%ecx), %ecx +; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax +; LINUX-32-PIC-NEXT: movl (%eax), %eax +; LINUX-32-PIC-NEXT: movl %ecx, (%eax) ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: fxo02: @@ -541,8 +584,15 @@ ; ; LINUX-32-PIC-LABEL: foo03: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl dsrc, %eax -; LINUX-32-PIC-NEXT: movl %eax, ddst +; LINUX-32-PIC-NEXT: calll .L6$pb +; LINUX-32-PIC-NEXT: .L6$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp6: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp6-.L6$pb), %eax +; LINUX-32-PIC-NEXT: movl dsrc@GOT(%eax), %ecx +; LINUX-32-PIC-NEXT: movl (%ecx), %ecx +; LINUX-32-PIC-NEXT: movl ddst@GOT(%eax), %eax +; LINUX-32-PIC-NEXT: movl %ecx, (%eax) ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: foo03: @@ -611,7 +661,14 @@ ; ; LINUX-32-PIC-LABEL: foo04: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl $ddst, dptr +; LINUX-32-PIC-NEXT: calll .L7$pb +; LINUX-32-PIC-NEXT: .L7$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp7: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp7-.L7$pb), %eax +; LINUX-32-PIC-NEXT: movl ddst@GOT(%eax), %ecx +; LINUX-32-PIC-NEXT: movl dptr@GOT(%eax), %eax +; LINUX-32-PIC-NEXT: movl %ecx, (%eax) ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: foo04: @@ -680,9 +737,16 @@ ; ; LINUX-32-PIC-LABEL: foo05: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl dsrc, %eax -; LINUX-32-PIC-NEXT: movl dptr, %ecx -; LINUX-32-PIC-NEXT: movl %eax, (%ecx) +; LINUX-32-PIC-NEXT: calll .L8$pb +; LINUX-32-PIC-NEXT: .L8$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp8: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp8-.L8$pb), %eax +; LINUX-32-PIC-NEXT: movl dsrc@GOT(%eax), %ecx +; LINUX-32-PIC-NEXT: movl (%ecx), %ecx +; LINUX-32-PIC-NEXT: movl dptr@GOT(%eax), %eax +; LINUX-32-PIC-NEXT: movl (%eax), %eax +; LINUX-32-PIC-NEXT: movl %ecx, (%eax) ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: foo05: @@ -761,8 +825,13 @@ ; ; LINUX-32-PIC-LABEL: foo06: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl lsrc, %eax -; LINUX-32-PIC-NEXT: movl %eax, ldst +; LINUX-32-PIC-NEXT: calll .L9$pb +; LINUX-32-PIC-NEXT: .L9$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp9: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp9-.L9$pb), %eax +; LINUX-32-PIC-NEXT: movl lsrc@GOTOFF(%eax), %ecx +; LINUX-32-PIC-NEXT: movl %ecx, ldst@GOTOFF(%eax) ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: foo06: @@ -829,7 +898,13 @@ ; ; LINUX-32-PIC-LABEL: foo07: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl $ldst, lptr +; LINUX-32-PIC-NEXT: calll .L10$pb +; LINUX-32-PIC-NEXT: .L10$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp10: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp10-.L10$pb), %eax +; LINUX-32-PIC-NEXT: leal ldst@GOTOFF(%eax), %ecx +; LINUX-32-PIC-NEXT: movl %ecx, lptr@GOTOFF(%eax) ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: foo07: @@ -897,9 +972,14 @@ ; ; LINUX-32-PIC-LABEL: foo08: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl lsrc, %eax -; LINUX-32-PIC-NEXT: movl lptr, %ecx -; LINUX-32-PIC-NEXT: movl %eax, (%ecx) +; LINUX-32-PIC-NEXT: calll .L11$pb +; LINUX-32-PIC-NEXT: .L11$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp11: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp11-.L11$pb), %eax +; LINUX-32-PIC-NEXT: movl lsrc@GOTOFF(%eax), %ecx +; LINUX-32-PIC-NEXT: movl lptr@GOTOFF(%eax), %eax +; LINUX-32-PIC-NEXT: movl %ecx, (%eax) ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: foo08: @@ -976,8 +1056,15 @@ ; ; LINUX-32-PIC-LABEL: qux00: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl src+64, %eax -; LINUX-32-PIC-NEXT: movl %eax, dst+64 +; LINUX-32-PIC-NEXT: calll .L12$pb +; LINUX-32-PIC-NEXT: .L12$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp12: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp12-.L12$pb), %eax +; LINUX-32-PIC-NEXT: movl src@GOT(%eax), %ecx +; LINUX-32-PIC-NEXT: movl 64(%ecx), %ecx +; LINUX-32-PIC-NEXT: movl dst@GOT(%eax), %eax +; LINUX-32-PIC-NEXT: movl %ecx, 64(%eax) ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: qux00: @@ -1058,8 +1145,15 @@ ; ; LINUX-32-PIC-LABEL: qxx00: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl xsrc+64, %eax -; LINUX-32-PIC-NEXT: movl %eax, xdst+64 +; LINUX-32-PIC-NEXT: calll .L13$pb +; LINUX-32-PIC-NEXT: .L13$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp13: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp13-.L13$pb), %eax +; LINUX-32-PIC-NEXT: movl xsrc@GOT(%eax), %ecx +; LINUX-32-PIC-NEXT: movl 64(%ecx), %ecx +; LINUX-32-PIC-NEXT: movl xdst@GOT(%eax), %eax +; LINUX-32-PIC-NEXT: movl %ecx, 64(%eax) ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: qxx00: @@ -1138,7 +1232,15 @@ ; ; LINUX-32-PIC-LABEL: qux01: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl $dst+64, ptr +; LINUX-32-PIC-NEXT: calll .L14$pb +; LINUX-32-PIC-NEXT: .L14$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp14: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp14-.L14$pb), %eax +; LINUX-32-PIC-NEXT: movl dst@GOT(%eax), %ecx +; LINUX-32-PIC-NEXT: addl $64, %ecx +; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax +; LINUX-32-PIC-NEXT: movl %ecx, (%eax) ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: qux01: @@ -1215,7 +1317,15 @@ ; ; LINUX-32-PIC-LABEL: qxx01: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl $xdst+64, ptr +; LINUX-32-PIC-NEXT: calll .L15$pb +; LINUX-32-PIC-NEXT: .L15$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp15: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp15-.L15$pb), %eax +; LINUX-32-PIC-NEXT: movl xdst@GOT(%eax), %ecx +; LINUX-32-PIC-NEXT: addl $64, %ecx +; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax +; LINUX-32-PIC-NEXT: movl %ecx, (%eax) ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: qxx01: @@ -1296,9 +1406,16 @@ ; ; LINUX-32-PIC-LABEL: qux02: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl src+64, %eax -; LINUX-32-PIC-NEXT: movl ptr, %ecx -; LINUX-32-PIC-NEXT: movl %eax, 64(%ecx) +; LINUX-32-PIC-NEXT: calll .L16$pb +; LINUX-32-PIC-NEXT: .L16$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp16: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp16-.L16$pb), %eax +; LINUX-32-PIC-NEXT: movl src@GOT(%eax), %ecx +; LINUX-32-PIC-NEXT: movl 64(%ecx), %ecx +; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax +; LINUX-32-PIC-NEXT: movl (%eax), %eax +; LINUX-32-PIC-NEXT: movl %ecx, 64(%eax) ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: qux02: @@ -1390,9 +1507,16 @@ ; ; LINUX-32-PIC-LABEL: qxx02: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl xsrc+64, %eax -; LINUX-32-PIC-NEXT: movl ptr, %ecx -; LINUX-32-PIC-NEXT: movl %eax, 64(%ecx) +; LINUX-32-PIC-NEXT: calll .L17$pb +; LINUX-32-PIC-NEXT: .L17$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp17: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp17-.L17$pb), %eax +; LINUX-32-PIC-NEXT: movl xsrc@GOT(%eax), %ecx +; LINUX-32-PIC-NEXT: movl 64(%ecx), %ecx +; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax +; LINUX-32-PIC-NEXT: movl (%eax), %eax +; LINUX-32-PIC-NEXT: movl %ecx, 64(%eax) ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: qxx02: @@ -1482,8 +1606,15 @@ ; ; LINUX-32-PIC-LABEL: qux03: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl dsrc+64, %eax -; LINUX-32-PIC-NEXT: movl %eax, ddst+64 +; LINUX-32-PIC-NEXT: calll .L18$pb +; LINUX-32-PIC-NEXT: .L18$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp18: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp18-.L18$pb), %eax +; LINUX-32-PIC-NEXT: movl dsrc@GOT(%eax), %ecx +; LINUX-32-PIC-NEXT: movl 64(%ecx), %ecx +; LINUX-32-PIC-NEXT: movl ddst@GOT(%eax), %eax +; LINUX-32-PIC-NEXT: movl %ecx, 64(%eax) ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: qux03: @@ -1552,7 +1683,15 @@ ; ; LINUX-32-PIC-LABEL: qux04: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl $ddst+64, dptr +; LINUX-32-PIC-NEXT: calll .L19$pb +; LINUX-32-PIC-NEXT: .L19$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp19: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp19-.L19$pb), %eax +; LINUX-32-PIC-NEXT: movl ddst@GOT(%eax), %ecx +; LINUX-32-PIC-NEXT: addl $64, %ecx +; LINUX-32-PIC-NEXT: movl dptr@GOT(%eax), %eax +; LINUX-32-PIC-NEXT: movl %ecx, (%eax) ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: qux04: @@ -1622,9 +1761,16 @@ ; ; LINUX-32-PIC-LABEL: qux05: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl dsrc+64, %eax -; LINUX-32-PIC-NEXT: movl dptr, %ecx -; LINUX-32-PIC-NEXT: movl %eax, 64(%ecx) +; LINUX-32-PIC-NEXT: calll .L20$pb +; LINUX-32-PIC-NEXT: .L20$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp20: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp20-.L20$pb), %eax +; LINUX-32-PIC-NEXT: movl dsrc@GOT(%eax), %ecx +; LINUX-32-PIC-NEXT: movl 64(%ecx), %ecx +; LINUX-32-PIC-NEXT: movl dptr@GOT(%eax), %eax +; LINUX-32-PIC-NEXT: movl (%eax), %eax +; LINUX-32-PIC-NEXT: movl %ecx, 64(%eax) ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: qux05: @@ -1704,8 +1850,13 @@ ; ; LINUX-32-PIC-LABEL: qux06: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl lsrc+64, %eax -; LINUX-32-PIC-NEXT: movl %eax, ldst+64 +; LINUX-32-PIC-NEXT: calll .L21$pb +; LINUX-32-PIC-NEXT: .L21$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp21: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp21-.L21$pb), %eax +; LINUX-32-PIC-NEXT: movl lsrc@GOTOFF+64(%eax), %ecx +; LINUX-32-PIC-NEXT: movl %ecx, ldst@GOTOFF+64(%eax) ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: qux06: @@ -1772,7 +1923,13 @@ ; ; LINUX-32-PIC-LABEL: qux07: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl $ldst+64, lptr +; LINUX-32-PIC-NEXT: calll .L22$pb +; LINUX-32-PIC-NEXT: .L22$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp22: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp22-.L22$pb), %eax +; LINUX-32-PIC-NEXT: leal ldst@GOTOFF+64(%eax), %ecx +; LINUX-32-PIC-NEXT: movl %ecx, lptr@GOTOFF(%eax) ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: qux07: @@ -1840,9 +1997,14 @@ ; ; LINUX-32-PIC-LABEL: qux08: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl lsrc+64, %eax -; LINUX-32-PIC-NEXT: movl lptr, %ecx -; LINUX-32-PIC-NEXT: movl %eax, 64(%ecx) +; LINUX-32-PIC-NEXT: calll .L23$pb +; LINUX-32-PIC-NEXT: .L23$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp23: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp23-.L23$pb), %eax +; LINUX-32-PIC-NEXT: movl lsrc@GOTOFF+64(%eax), %ecx +; LINUX-32-PIC-NEXT: movl lptr@GOTOFF(%eax), %eax +; LINUX-32-PIC-NEXT: movl %ecx, 64(%eax) ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: qux08: @@ -1921,9 +2083,16 @@ ; ; LINUX-32-PIC-LABEL: ind00: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %eax -; LINUX-32-PIC-NEXT: movl src(,%eax,4), %ecx -; LINUX-32-PIC-NEXT: movl %ecx, dst(,%eax,4) +; LINUX-32-PIC-NEXT: calll .L24$pb +; LINUX-32-PIC-NEXT: .L24$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp24: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp24-.L24$pb), %eax +; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx +; LINUX-32-PIC-NEXT: movl src@GOT(%eax), %edx +; LINUX-32-PIC-NEXT: movl (%edx,%ecx,4), %edx +; LINUX-32-PIC-NEXT: movl dst@GOT(%eax), %eax +; LINUX-32-PIC-NEXT: movl %edx, (%eax,%ecx,4) ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: ind00: @@ -2010,9 +2179,16 @@ ; ; LINUX-32-PIC-LABEL: ixd00: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %eax -; LINUX-32-PIC-NEXT: movl xsrc(,%eax,4), %ecx -; LINUX-32-PIC-NEXT: movl %ecx, xdst(,%eax,4) +; LINUX-32-PIC-NEXT: calll .L25$pb +; LINUX-32-PIC-NEXT: .L25$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp25: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp25-.L25$pb), %eax +; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx +; LINUX-32-PIC-NEXT: movl xsrc@GOT(%eax), %edx +; LINUX-32-PIC-NEXT: movl (%edx,%ecx,4), %edx +; LINUX-32-PIC-NEXT: movl xdst@GOT(%eax), %eax +; LINUX-32-PIC-NEXT: movl %edx, (%eax,%ecx,4) ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: ixd00: @@ -2099,9 +2275,16 @@ ; ; LINUX-32-PIC-LABEL: ind01: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %eax -; LINUX-32-PIC-NEXT: leal dst(,%eax,4), %eax -; LINUX-32-PIC-NEXT: movl %eax, ptr +; LINUX-32-PIC-NEXT: calll .L26$pb +; LINUX-32-PIC-NEXT: .L26$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp26: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp26-.L26$pb), %eax +; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx +; LINUX-32-PIC-NEXT: shll $2, %ecx +; LINUX-32-PIC-NEXT: addl dst@GOT(%eax), %ecx +; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax +; LINUX-32-PIC-NEXT: movl %ecx, (%eax) ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: ind01: @@ -2186,9 +2369,16 @@ ; ; LINUX-32-PIC-LABEL: ixd01: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %eax -; LINUX-32-PIC-NEXT: leal xdst(,%eax,4), %eax -; LINUX-32-PIC-NEXT: movl %eax, ptr +; LINUX-32-PIC-NEXT: calll .L27$pb +; LINUX-32-PIC-NEXT: .L27$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp27: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp27-.L27$pb), %eax +; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx +; LINUX-32-PIC-NEXT: shll $2, %ecx +; LINUX-32-PIC-NEXT: addl xdst@GOT(%eax), %ecx +; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax +; LINUX-32-PIC-NEXT: movl %ecx, (%eax) ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: ixd01: @@ -2275,10 +2465,17 @@ ; ; LINUX-32-PIC-LABEL: ind02: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %eax -; LINUX-32-PIC-NEXT: movl src(,%eax,4), %ecx -; LINUX-32-PIC-NEXT: movl ptr, %edx -; LINUX-32-PIC-NEXT: movl %ecx, (%edx,%eax,4) +; LINUX-32-PIC-NEXT: calll .L28$pb +; LINUX-32-PIC-NEXT: .L28$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp28: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp28-.L28$pb), %eax +; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx +; LINUX-32-PIC-NEXT: movl src@GOT(%eax), %edx +; LINUX-32-PIC-NEXT: movl (%edx,%ecx,4), %edx +; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax +; LINUX-32-PIC-NEXT: movl (%eax), %eax +; LINUX-32-PIC-NEXT: movl %edx, (%eax,%ecx,4) ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: ind02: @@ -2375,10 +2572,17 @@ ; ; LINUX-32-PIC-LABEL: ixd02: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %eax -; LINUX-32-PIC-NEXT: movl xsrc(,%eax,4), %ecx -; LINUX-32-PIC-NEXT: movl ptr, %edx -; LINUX-32-PIC-NEXT: movl %ecx, (%edx,%eax,4) +; LINUX-32-PIC-NEXT: calll .L29$pb +; LINUX-32-PIC-NEXT: .L29$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp29: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp29-.L29$pb), %eax +; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx +; LINUX-32-PIC-NEXT: movl xsrc@GOT(%eax), %edx +; LINUX-32-PIC-NEXT: movl (%edx,%ecx,4), %edx +; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax +; LINUX-32-PIC-NEXT: movl (%eax), %eax +; LINUX-32-PIC-NEXT: movl %edx, (%eax,%ecx,4) ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: ixd02: @@ -2473,9 +2677,16 @@ ; ; LINUX-32-PIC-LABEL: ind03: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %eax -; LINUX-32-PIC-NEXT: movl dsrc(,%eax,4), %ecx -; LINUX-32-PIC-NEXT: movl %ecx, ddst(,%eax,4) +; LINUX-32-PIC-NEXT: calll .L30$pb +; LINUX-32-PIC-NEXT: .L30$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp30: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp30-.L30$pb), %eax +; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx +; LINUX-32-PIC-NEXT: movl dsrc@GOT(%eax), %edx +; LINUX-32-PIC-NEXT: movl (%edx,%ecx,4), %edx +; LINUX-32-PIC-NEXT: movl ddst@GOT(%eax), %eax +; LINUX-32-PIC-NEXT: movl %edx, (%eax,%ecx,4) ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: ind03: @@ -2558,9 +2769,16 @@ ; ; LINUX-32-PIC-LABEL: ind04: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %eax -; LINUX-32-PIC-NEXT: leal ddst(,%eax,4), %eax -; LINUX-32-PIC-NEXT: movl %eax, dptr +; LINUX-32-PIC-NEXT: calll .L31$pb +; LINUX-32-PIC-NEXT: .L31$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp31: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp31-.L31$pb), %eax +; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx +; LINUX-32-PIC-NEXT: shll $2, %ecx +; LINUX-32-PIC-NEXT: addl ddst@GOT(%eax), %ecx +; LINUX-32-PIC-NEXT: movl dptr@GOT(%eax), %eax +; LINUX-32-PIC-NEXT: movl %ecx, (%eax) ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: ind04: @@ -2640,10 +2858,17 @@ ; ; LINUX-32-PIC-LABEL: ind05: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %eax -; LINUX-32-PIC-NEXT: movl dsrc(,%eax,4), %ecx -; LINUX-32-PIC-NEXT: movl dptr, %edx -; LINUX-32-PIC-NEXT: movl %ecx, (%edx,%eax,4) +; LINUX-32-PIC-NEXT: calll .L32$pb +; LINUX-32-PIC-NEXT: .L32$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp32: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp32-.L32$pb), %eax +; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx +; LINUX-32-PIC-NEXT: movl dsrc@GOT(%eax), %edx +; LINUX-32-PIC-NEXT: movl (%edx,%ecx,4), %edx +; LINUX-32-PIC-NEXT: movl dptr@GOT(%eax), %eax +; LINUX-32-PIC-NEXT: movl (%eax), %eax +; LINUX-32-PIC-NEXT: movl %edx, (%eax,%ecx,4) ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: ind05: @@ -2731,9 +2956,14 @@ ; ; LINUX-32-PIC-LABEL: ind06: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %eax -; LINUX-32-PIC-NEXT: movl lsrc(,%eax,4), %ecx -; LINUX-32-PIC-NEXT: movl %ecx, ldst(,%eax,4) +; LINUX-32-PIC-NEXT: calll .L33$pb +; LINUX-32-PIC-NEXT: .L33$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp33: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp33-.L33$pb), %eax +; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx +; LINUX-32-PIC-NEXT: movl lsrc@GOTOFF(%eax,%ecx,4), %edx +; LINUX-32-PIC-NEXT: movl %edx, ldst@GOTOFF(%eax,%ecx,4) ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: ind06: @@ -2816,9 +3046,14 @@ ; ; LINUX-32-PIC-LABEL: ind07: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %eax -; LINUX-32-PIC-NEXT: leal ldst(,%eax,4), %eax -; LINUX-32-PIC-NEXT: movl %eax, lptr +; LINUX-32-PIC-NEXT: calll .L34$pb +; LINUX-32-PIC-NEXT: .L34$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp34: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp34-.L34$pb), %eax +; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx +; LINUX-32-PIC-NEXT: leal ldst@GOTOFF(%eax,%ecx,4), %ecx +; LINUX-32-PIC-NEXT: movl %ecx, lptr@GOTOFF(%eax) ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: ind07: @@ -2897,10 +3132,15 @@ ; ; LINUX-32-PIC-LABEL: ind08: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %eax -; LINUX-32-PIC-NEXT: movl lsrc(,%eax,4), %ecx -; LINUX-32-PIC-NEXT: movl lptr, %edx -; LINUX-32-PIC-NEXT: movl %ecx, (%edx,%eax,4) +; LINUX-32-PIC-NEXT: calll .L35$pb +; LINUX-32-PIC-NEXT: .L35$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp35: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp35-.L35$pb), %eax +; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx +; LINUX-32-PIC-NEXT: movl lsrc@GOTOFF(%eax,%ecx,4), %edx +; LINUX-32-PIC-NEXT: movl lptr@GOTOFF(%eax), %eax +; LINUX-32-PIC-NEXT: movl %edx, (%eax,%ecx,4) ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: ind08: @@ -2987,9 +3227,16 @@ ; ; LINUX-32-PIC-LABEL: off00: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %eax -; LINUX-32-PIC-NEXT: movl src+64(,%eax,4), %ecx -; LINUX-32-PIC-NEXT: movl %ecx, dst+64(,%eax,4) +; LINUX-32-PIC-NEXT: calll .L36$pb +; LINUX-32-PIC-NEXT: .L36$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp36: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp36-.L36$pb), %eax +; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx +; LINUX-32-PIC-NEXT: movl src@GOT(%eax), %edx +; LINUX-32-PIC-NEXT: movl 64(%edx,%ecx,4), %edx +; LINUX-32-PIC-NEXT: movl dst@GOT(%eax), %eax +; LINUX-32-PIC-NEXT: movl %edx, 64(%eax,%ecx,4) ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: off00: @@ -3077,9 +3324,16 @@ ; ; LINUX-32-PIC-LABEL: oxf00: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %eax -; LINUX-32-PIC-NEXT: movl xsrc+64(,%eax,4), %ecx -; LINUX-32-PIC-NEXT: movl %ecx, xdst+64(,%eax,4) +; LINUX-32-PIC-NEXT: calll .L37$pb +; LINUX-32-PIC-NEXT: .L37$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp37: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp37-.L37$pb), %eax +; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx +; LINUX-32-PIC-NEXT: movl xsrc@GOT(%eax), %edx +; LINUX-32-PIC-NEXT: movl 64(%edx,%ecx,4), %edx +; LINUX-32-PIC-NEXT: movl xdst@GOT(%eax), %eax +; LINUX-32-PIC-NEXT: movl %edx, 64(%eax,%ecx,4) ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: oxf00: @@ -3167,9 +3421,16 @@ ; ; LINUX-32-PIC-LABEL: off01: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %eax -; LINUX-32-PIC-NEXT: leal dst+64(,%eax,4), %eax -; LINUX-32-PIC-NEXT: movl %eax, ptr +; LINUX-32-PIC-NEXT: calll .L38$pb +; LINUX-32-PIC-NEXT: .L38$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp38: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp38-.L38$pb), %eax +; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx +; LINUX-32-PIC-NEXT: movl dst@GOT(%eax), %edx +; LINUX-32-PIC-NEXT: leal 64(%edx,%ecx,4), %ecx +; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax +; LINUX-32-PIC-NEXT: movl %ecx, (%eax) ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: off01: @@ -3255,9 +3516,16 @@ ; ; LINUX-32-PIC-LABEL: oxf01: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %eax -; LINUX-32-PIC-NEXT: leal xdst+64(,%eax,4), %eax -; LINUX-32-PIC-NEXT: movl %eax, ptr +; LINUX-32-PIC-NEXT: calll .L39$pb +; LINUX-32-PIC-NEXT: .L39$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp39: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp39-.L39$pb), %eax +; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx +; LINUX-32-PIC-NEXT: movl xdst@GOT(%eax), %edx +; LINUX-32-PIC-NEXT: leal 64(%edx,%ecx,4), %ecx +; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax +; LINUX-32-PIC-NEXT: movl %ecx, (%eax) ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: oxf01: @@ -3345,10 +3613,17 @@ ; ; LINUX-32-PIC-LABEL: off02: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %eax -; LINUX-32-PIC-NEXT: movl src+64(,%eax,4), %ecx -; LINUX-32-PIC-NEXT: movl ptr, %edx -; LINUX-32-PIC-NEXT: movl %ecx, 64(%edx,%eax,4) +; LINUX-32-PIC-NEXT: calll .L40$pb +; LINUX-32-PIC-NEXT: .L40$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp40: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp40-.L40$pb), %eax +; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx +; LINUX-32-PIC-NEXT: movl src@GOT(%eax), %edx +; LINUX-32-PIC-NEXT: movl 64(%edx,%ecx,4), %edx +; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax +; LINUX-32-PIC-NEXT: movl (%eax), %eax +; LINUX-32-PIC-NEXT: movl %edx, 64(%eax,%ecx,4) ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: off02: @@ -3446,10 +3721,17 @@ ; ; LINUX-32-PIC-LABEL: oxf02: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %eax -; LINUX-32-PIC-NEXT: movl xsrc+64(,%eax,4), %ecx -; LINUX-32-PIC-NEXT: movl ptr, %edx -; LINUX-32-PIC-NEXT: movl %ecx, 64(%edx,%eax,4) +; LINUX-32-PIC-NEXT: calll .L41$pb +; LINUX-32-PIC-NEXT: .L41$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp41: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp41-.L41$pb), %eax +; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx +; LINUX-32-PIC-NEXT: movl xsrc@GOT(%eax), %edx +; LINUX-32-PIC-NEXT: movl 64(%edx,%ecx,4), %edx +; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax +; LINUX-32-PIC-NEXT: movl (%eax), %eax +; LINUX-32-PIC-NEXT: movl %edx, 64(%eax,%ecx,4) ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: oxf02: @@ -3545,9 +3827,16 @@ ; ; LINUX-32-PIC-LABEL: off03: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %eax -; LINUX-32-PIC-NEXT: movl dsrc+64(,%eax,4), %ecx -; LINUX-32-PIC-NEXT: movl %ecx, ddst+64(,%eax,4) +; LINUX-32-PIC-NEXT: calll .L42$pb +; LINUX-32-PIC-NEXT: .L42$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp42: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp42-.L42$pb), %eax +; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx +; LINUX-32-PIC-NEXT: movl dsrc@GOT(%eax), %edx +; LINUX-32-PIC-NEXT: movl 64(%edx,%ecx,4), %edx +; LINUX-32-PIC-NEXT: movl ddst@GOT(%eax), %eax +; LINUX-32-PIC-NEXT: movl %edx, 64(%eax,%ecx,4) ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: off03: @@ -3631,9 +3920,16 @@ ; ; LINUX-32-PIC-LABEL: off04: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %eax -; LINUX-32-PIC-NEXT: leal ddst+64(,%eax,4), %eax -; LINUX-32-PIC-NEXT: movl %eax, dptr +; LINUX-32-PIC-NEXT: calll .L43$pb +; LINUX-32-PIC-NEXT: .L43$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp43: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp43-.L43$pb), %eax +; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx +; LINUX-32-PIC-NEXT: movl ddst@GOT(%eax), %edx +; LINUX-32-PIC-NEXT: leal 64(%edx,%ecx,4), %ecx +; LINUX-32-PIC-NEXT: movl dptr@GOT(%eax), %eax +; LINUX-32-PIC-NEXT: movl %ecx, (%eax) ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: off04: @@ -3714,10 +4010,17 @@ ; ; LINUX-32-PIC-LABEL: off05: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %eax -; LINUX-32-PIC-NEXT: movl dsrc+64(,%eax,4), %ecx -; LINUX-32-PIC-NEXT: movl dptr, %edx -; LINUX-32-PIC-NEXT: movl %ecx, 64(%edx,%eax,4) +; LINUX-32-PIC-NEXT: calll .L44$pb +; LINUX-32-PIC-NEXT: .L44$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp44: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp44-.L44$pb), %eax +; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx +; LINUX-32-PIC-NEXT: movl dsrc@GOT(%eax), %edx +; LINUX-32-PIC-NEXT: movl 64(%edx,%ecx,4), %edx +; LINUX-32-PIC-NEXT: movl dptr@GOT(%eax), %eax +; LINUX-32-PIC-NEXT: movl (%eax), %eax +; LINUX-32-PIC-NEXT: movl %edx, 64(%eax,%ecx,4) ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: off05: @@ -3806,9 +4109,14 @@ ; ; LINUX-32-PIC-LABEL: off06: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %eax -; LINUX-32-PIC-NEXT: movl lsrc+64(,%eax,4), %ecx -; LINUX-32-PIC-NEXT: movl %ecx, ldst+64(,%eax,4) +; LINUX-32-PIC-NEXT: calll .L45$pb +; LINUX-32-PIC-NEXT: .L45$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp45: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp45-.L45$pb), %eax +; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx +; LINUX-32-PIC-NEXT: movl lsrc@GOTOFF+64(%eax,%ecx,4), %edx +; LINUX-32-PIC-NEXT: movl %edx, ldst@GOTOFF+64(%eax,%ecx,4) ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: off06: @@ -3892,9 +4200,14 @@ ; ; LINUX-32-PIC-LABEL: off07: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %eax -; LINUX-32-PIC-NEXT: leal ldst+64(,%eax,4), %eax -; LINUX-32-PIC-NEXT: movl %eax, lptr +; LINUX-32-PIC-NEXT: calll .L46$pb +; LINUX-32-PIC-NEXT: .L46$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp46: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp46-.L46$pb), %eax +; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx +; LINUX-32-PIC-NEXT: leal ldst@GOTOFF+64(%eax,%ecx,4), %ecx +; LINUX-32-PIC-NEXT: movl %ecx, lptr@GOTOFF(%eax) ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: off07: @@ -3974,10 +4287,15 @@ ; ; LINUX-32-PIC-LABEL: off08: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %eax -; LINUX-32-PIC-NEXT: movl lsrc+64(,%eax,4), %ecx -; LINUX-32-PIC-NEXT: movl lptr, %edx -; LINUX-32-PIC-NEXT: movl %ecx, 64(%edx,%eax,4) +; LINUX-32-PIC-NEXT: calll .L47$pb +; LINUX-32-PIC-NEXT: .L47$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp47: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp47-.L47$pb), %eax +; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx +; LINUX-32-PIC-NEXT: movl lsrc@GOTOFF+64(%eax,%ecx,4), %edx +; LINUX-32-PIC-NEXT: movl lptr@GOTOFF(%eax), %eax +; LINUX-32-PIC-NEXT: movl %edx, 64(%eax,%ecx,4) ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: off08: @@ -4064,8 +4382,15 @@ ; ; LINUX-32-PIC-LABEL: moo00: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl src+262144, %eax -; LINUX-32-PIC-NEXT: movl %eax, dst+262144 +; LINUX-32-PIC-NEXT: calll .L48$pb +; LINUX-32-PIC-NEXT: .L48$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp48: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp48-.L48$pb), %eax +; LINUX-32-PIC-NEXT: movl src@GOT(%eax), %ecx +; LINUX-32-PIC-NEXT: movl 262144(%ecx), %ecx +; LINUX-32-PIC-NEXT: movl dst@GOT(%eax), %eax +; LINUX-32-PIC-NEXT: movl %ecx, 262144(%eax) ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: moo00: @@ -4144,7 +4469,15 @@ ; ; LINUX-32-PIC-LABEL: moo01: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl $dst+262144, ptr +; LINUX-32-PIC-NEXT: calll .L49$pb +; LINUX-32-PIC-NEXT: .L49$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp49: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp49-.L49$pb), %eax +; LINUX-32-PIC-NEXT: movl $262144, %ecx # imm = 0x40000 +; LINUX-32-PIC-NEXT: addl dst@GOT(%eax), %ecx +; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax +; LINUX-32-PIC-NEXT: movl %ecx, (%eax) ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: moo01: @@ -4225,9 +4558,16 @@ ; ; LINUX-32-PIC-LABEL: moo02: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl src+262144, %eax -; LINUX-32-PIC-NEXT: movl ptr, %ecx -; LINUX-32-PIC-NEXT: movl %eax, 262144(%ecx) +; LINUX-32-PIC-NEXT: calll .L50$pb +; LINUX-32-PIC-NEXT: .L50$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp50: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp50-.L50$pb), %eax +; LINUX-32-PIC-NEXT: movl src@GOT(%eax), %ecx +; LINUX-32-PIC-NEXT: movl 262144(%ecx), %ecx +; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax +; LINUX-32-PIC-NEXT: movl (%eax), %eax +; LINUX-32-PIC-NEXT: movl %ecx, 262144(%eax) ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: moo02: @@ -4317,8 +4657,15 @@ ; ; LINUX-32-PIC-LABEL: moo03: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl dsrc+262144, %eax -; LINUX-32-PIC-NEXT: movl %eax, ddst+262144 +; LINUX-32-PIC-NEXT: calll .L51$pb +; LINUX-32-PIC-NEXT: .L51$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp51: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp51-.L51$pb), %eax +; LINUX-32-PIC-NEXT: movl dsrc@GOT(%eax), %ecx +; LINUX-32-PIC-NEXT: movl 262144(%ecx), %ecx +; LINUX-32-PIC-NEXT: movl ddst@GOT(%eax), %eax +; LINUX-32-PIC-NEXT: movl %ecx, 262144(%eax) ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: moo03: @@ -4387,7 +4734,15 @@ ; ; LINUX-32-PIC-LABEL: moo04: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl $ddst+262144, dptr +; LINUX-32-PIC-NEXT: calll .L52$pb +; LINUX-32-PIC-NEXT: .L52$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp52: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp52-.L52$pb), %eax +; LINUX-32-PIC-NEXT: movl $262144, %ecx # imm = 0x40000 +; LINUX-32-PIC-NEXT: addl ddst@GOT(%eax), %ecx +; LINUX-32-PIC-NEXT: movl dptr@GOT(%eax), %eax +; LINUX-32-PIC-NEXT: movl %ecx, (%eax) ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: moo04: @@ -4457,9 +4812,16 @@ ; ; LINUX-32-PIC-LABEL: moo05: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl dsrc+262144, %eax -; LINUX-32-PIC-NEXT: movl dptr, %ecx -; LINUX-32-PIC-NEXT: movl %eax, 262144(%ecx) +; LINUX-32-PIC-NEXT: calll .L53$pb +; LINUX-32-PIC-NEXT: .L53$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp53: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp53-.L53$pb), %eax +; LINUX-32-PIC-NEXT: movl dsrc@GOT(%eax), %ecx +; LINUX-32-PIC-NEXT: movl 262144(%ecx), %ecx +; LINUX-32-PIC-NEXT: movl dptr@GOT(%eax), %eax +; LINUX-32-PIC-NEXT: movl (%eax), %eax +; LINUX-32-PIC-NEXT: movl %ecx, 262144(%eax) ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: moo05: @@ -4539,8 +4901,13 @@ ; ; LINUX-32-PIC-LABEL: moo06: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl lsrc+262144, %eax -; LINUX-32-PIC-NEXT: movl %eax, ldst+262144 +; LINUX-32-PIC-NEXT: calll .L54$pb +; LINUX-32-PIC-NEXT: .L54$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp54: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp54-.L54$pb), %eax +; LINUX-32-PIC-NEXT: movl lsrc@GOTOFF+262144(%eax), %ecx +; LINUX-32-PIC-NEXT: movl %ecx, ldst@GOTOFF+262144(%eax) ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: moo06: @@ -4607,7 +4974,13 @@ ; ; LINUX-32-PIC-LABEL: moo07: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl $ldst+262144, lptr +; LINUX-32-PIC-NEXT: calll .L55$pb +; LINUX-32-PIC-NEXT: .L55$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp55: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp55-.L55$pb), %eax +; LINUX-32-PIC-NEXT: leal ldst@GOTOFF+262144(%eax), %ecx +; LINUX-32-PIC-NEXT: movl %ecx, lptr@GOTOFF(%eax) ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: moo07: @@ -4675,9 +5048,14 @@ ; ; LINUX-32-PIC-LABEL: moo08: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl lsrc+262144, %eax -; LINUX-32-PIC-NEXT: movl lptr, %ecx -; LINUX-32-PIC-NEXT: movl %eax, 262144(%ecx) +; LINUX-32-PIC-NEXT: calll .L56$pb +; LINUX-32-PIC-NEXT: .L56$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp56: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp56-.L56$pb), %eax +; LINUX-32-PIC-NEXT: movl lsrc@GOTOFF+262144(%eax), %ecx +; LINUX-32-PIC-NEXT: movl lptr@GOTOFF(%eax), %eax +; LINUX-32-PIC-NEXT: movl %ecx, 262144(%eax) ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: moo08: @@ -4756,9 +5134,16 @@ ; ; LINUX-32-PIC-LABEL: big00: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %eax -; LINUX-32-PIC-NEXT: movl src+262144(,%eax,4), %ecx -; LINUX-32-PIC-NEXT: movl %ecx, dst+262144(,%eax,4) +; LINUX-32-PIC-NEXT: calll .L57$pb +; LINUX-32-PIC-NEXT: .L57$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp57: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp57-.L57$pb), %eax +; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx +; LINUX-32-PIC-NEXT: movl src@GOT(%eax), %edx +; LINUX-32-PIC-NEXT: movl 262144(%edx,%ecx,4), %edx +; LINUX-32-PIC-NEXT: movl dst@GOT(%eax), %eax +; LINUX-32-PIC-NEXT: movl %edx, 262144(%eax,%ecx,4) ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: big00: @@ -4846,9 +5231,16 @@ ; ; LINUX-32-PIC-LABEL: big01: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %eax -; LINUX-32-PIC-NEXT: leal dst+262144(,%eax,4), %eax -; LINUX-32-PIC-NEXT: movl %eax, ptr +; LINUX-32-PIC-NEXT: calll .L58$pb +; LINUX-32-PIC-NEXT: .L58$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp58: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp58-.L58$pb), %eax +; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx +; LINUX-32-PIC-NEXT: movl dst@GOT(%eax), %edx +; LINUX-32-PIC-NEXT: leal 262144(%edx,%ecx,4), %ecx +; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax +; LINUX-32-PIC-NEXT: movl %ecx, (%eax) ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: big01: @@ -4936,10 +5328,17 @@ ; ; LINUX-32-PIC-LABEL: big02: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %eax -; LINUX-32-PIC-NEXT: movl src+262144(,%eax,4), %ecx -; LINUX-32-PIC-NEXT: movl ptr, %edx -; LINUX-32-PIC-NEXT: movl %ecx, 262144(%edx,%eax,4) +; LINUX-32-PIC-NEXT: calll .L59$pb +; LINUX-32-PIC-NEXT: .L59$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp59: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp59-.L59$pb), %eax +; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx +; LINUX-32-PIC-NEXT: movl src@GOT(%eax), %edx +; LINUX-32-PIC-NEXT: movl 262144(%edx,%ecx,4), %edx +; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax +; LINUX-32-PIC-NEXT: movl (%eax), %eax +; LINUX-32-PIC-NEXT: movl %edx, 262144(%eax,%ecx,4) ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: big02: @@ -5035,9 +5434,16 @@ ; ; LINUX-32-PIC-LABEL: big03: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %eax -; LINUX-32-PIC-NEXT: movl dsrc+262144(,%eax,4), %ecx -; LINUX-32-PIC-NEXT: movl %ecx, ddst+262144(,%eax,4) +; LINUX-32-PIC-NEXT: calll .L60$pb +; LINUX-32-PIC-NEXT: .L60$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp60: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp60-.L60$pb), %eax +; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx +; LINUX-32-PIC-NEXT: movl dsrc@GOT(%eax), %edx +; LINUX-32-PIC-NEXT: movl 262144(%edx,%ecx,4), %edx +; LINUX-32-PIC-NEXT: movl ddst@GOT(%eax), %eax +; LINUX-32-PIC-NEXT: movl %edx, 262144(%eax,%ecx,4) ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: big03: @@ -5121,9 +5527,16 @@ ; ; LINUX-32-PIC-LABEL: big04: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %eax -; LINUX-32-PIC-NEXT: leal ddst+262144(,%eax,4), %eax -; LINUX-32-PIC-NEXT: movl %eax, dptr +; LINUX-32-PIC-NEXT: calll .L61$pb +; LINUX-32-PIC-NEXT: .L61$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp61: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp61-.L61$pb), %eax +; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx +; LINUX-32-PIC-NEXT: movl ddst@GOT(%eax), %edx +; LINUX-32-PIC-NEXT: leal 262144(%edx,%ecx,4), %ecx +; LINUX-32-PIC-NEXT: movl dptr@GOT(%eax), %eax +; LINUX-32-PIC-NEXT: movl %ecx, (%eax) ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: big04: @@ -5204,10 +5617,17 @@ ; ; LINUX-32-PIC-LABEL: big05: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %eax -; LINUX-32-PIC-NEXT: movl dsrc+262144(,%eax,4), %ecx -; LINUX-32-PIC-NEXT: movl dptr, %edx -; LINUX-32-PIC-NEXT: movl %ecx, 262144(%edx,%eax,4) +; LINUX-32-PIC-NEXT: calll .L62$pb +; LINUX-32-PIC-NEXT: .L62$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp62: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp62-.L62$pb), %eax +; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx +; LINUX-32-PIC-NEXT: movl dsrc@GOT(%eax), %edx +; LINUX-32-PIC-NEXT: movl 262144(%edx,%ecx,4), %edx +; LINUX-32-PIC-NEXT: movl dptr@GOT(%eax), %eax +; LINUX-32-PIC-NEXT: movl (%eax), %eax +; LINUX-32-PIC-NEXT: movl %edx, 262144(%eax,%ecx,4) ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: big05: @@ -5296,9 +5716,14 @@ ; ; LINUX-32-PIC-LABEL: big06: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %eax -; LINUX-32-PIC-NEXT: movl lsrc+262144(,%eax,4), %ecx -; LINUX-32-PIC-NEXT: movl %ecx, ldst+262144(,%eax,4) +; LINUX-32-PIC-NEXT: calll .L63$pb +; LINUX-32-PIC-NEXT: .L63$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp63: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp63-.L63$pb), %eax +; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx +; LINUX-32-PIC-NEXT: movl lsrc@GOTOFF+262144(%eax,%ecx,4), %edx +; LINUX-32-PIC-NEXT: movl %edx, ldst@GOTOFF+262144(%eax,%ecx,4) ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: big06: @@ -5382,9 +5807,14 @@ ; ; LINUX-32-PIC-LABEL: big07: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %eax -; LINUX-32-PIC-NEXT: leal ldst+262144(,%eax,4), %eax -; LINUX-32-PIC-NEXT: movl %eax, lptr +; LINUX-32-PIC-NEXT: calll .L64$pb +; LINUX-32-PIC-NEXT: .L64$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp64: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp64-.L64$pb), %eax +; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx +; LINUX-32-PIC-NEXT: leal ldst@GOTOFF+262144(%eax,%ecx,4), %ecx +; LINUX-32-PIC-NEXT: movl %ecx, lptr@GOTOFF(%eax) ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: big07: @@ -5464,10 +5894,15 @@ ; ; LINUX-32-PIC-LABEL: big08: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %eax -; LINUX-32-PIC-NEXT: movl lsrc+262144(,%eax,4), %ecx -; LINUX-32-PIC-NEXT: movl lptr, %edx -; LINUX-32-PIC-NEXT: movl %ecx, 262144(%edx,%eax,4) +; LINUX-32-PIC-NEXT: calll .L65$pb +; LINUX-32-PIC-NEXT: .L65$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp65: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp65-.L65$pb), %eax +; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx +; LINUX-32-PIC-NEXT: movl lsrc@GOTOFF+262144(%eax,%ecx,4), %edx +; LINUX-32-PIC-NEXT: movl lptr@GOTOFF(%eax), %eax +; LINUX-32-PIC-NEXT: movl %edx, 262144(%eax,%ecx,4) ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: big08: @@ -5552,7 +5987,12 @@ ; ; LINUX-32-PIC-LABEL: bar00: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl $src, %eax +; LINUX-32-PIC-NEXT: calll .L66$pb +; LINUX-32-PIC-NEXT: .L66$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp66: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp66-.L66$pb), %eax +; LINUX-32-PIC-NEXT: movl src@GOT(%eax), %eax ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: bar00: @@ -5610,7 +6050,12 @@ ; ; LINUX-32-PIC-LABEL: bxr00: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl $xsrc, %eax +; LINUX-32-PIC-NEXT: calll .L67$pb +; LINUX-32-PIC-NEXT: .L67$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp67: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp67-.L67$pb), %eax +; LINUX-32-PIC-NEXT: movl xsrc@GOT(%eax), %eax ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: bxr00: @@ -5668,7 +6113,12 @@ ; ; LINUX-32-PIC-LABEL: bar01: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl $dst, %eax +; LINUX-32-PIC-NEXT: calll .L68$pb +; LINUX-32-PIC-NEXT: .L68$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp68: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp68-.L68$pb), %eax +; LINUX-32-PIC-NEXT: movl dst@GOT(%eax), %eax ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: bar01: @@ -5726,7 +6176,12 @@ ; ; LINUX-32-PIC-LABEL: bxr01: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl $xdst, %eax +; LINUX-32-PIC-NEXT: calll .L69$pb +; LINUX-32-PIC-NEXT: .L69$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp69: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp69-.L69$pb), %eax +; LINUX-32-PIC-NEXT: movl xdst@GOT(%eax), %eax ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: bxr01: @@ -5784,7 +6239,12 @@ ; ; LINUX-32-PIC-LABEL: bar02: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl $ptr, %eax +; LINUX-32-PIC-NEXT: calll .L70$pb +; LINUX-32-PIC-NEXT: .L70$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp70: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp70-.L70$pb), %eax +; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: bar02: @@ -5842,7 +6302,12 @@ ; ; LINUX-32-PIC-LABEL: bar03: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl $dsrc, %eax +; LINUX-32-PIC-NEXT: calll .L71$pb +; LINUX-32-PIC-NEXT: .L71$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp71: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp71-.L71$pb), %eax +; LINUX-32-PIC-NEXT: movl dsrc@GOT(%eax), %eax ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: bar03: @@ -5900,7 +6365,12 @@ ; ; LINUX-32-PIC-LABEL: bar04: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl $ddst, %eax +; LINUX-32-PIC-NEXT: calll .L72$pb +; LINUX-32-PIC-NEXT: .L72$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp72: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp72-.L72$pb), %eax +; LINUX-32-PIC-NEXT: movl ddst@GOT(%eax), %eax ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: bar04: @@ -5958,7 +6428,12 @@ ; ; LINUX-32-PIC-LABEL: bar05: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl $dptr, %eax +; LINUX-32-PIC-NEXT: calll .L73$pb +; LINUX-32-PIC-NEXT: .L73$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp73: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp73-.L73$pb), %eax +; LINUX-32-PIC-NEXT: movl dptr@GOT(%eax), %eax ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: bar05: @@ -6016,7 +6491,12 @@ ; ; LINUX-32-PIC-LABEL: bar06: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl $lsrc, %eax +; LINUX-32-PIC-NEXT: calll .L74$pb +; LINUX-32-PIC-NEXT: .L74$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp74: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp74-.L74$pb), %eax +; LINUX-32-PIC-NEXT: leal lsrc@GOTOFF(%eax), %eax ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: bar06: @@ -6074,7 +6554,12 @@ ; ; LINUX-32-PIC-LABEL: bar07: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl $ldst, %eax +; LINUX-32-PIC-NEXT: calll .L75$pb +; LINUX-32-PIC-NEXT: .L75$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp75: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp75-.L75$pb), %eax +; LINUX-32-PIC-NEXT: leal ldst@GOTOFF(%eax), %eax ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: bar07: @@ -6132,7 +6617,12 @@ ; ; LINUX-32-PIC-LABEL: bar08: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl $lptr, %eax +; LINUX-32-PIC-NEXT: calll .L76$pb +; LINUX-32-PIC-NEXT: .L76$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp76: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp76-.L76$pb), %eax +; LINUX-32-PIC-NEXT: leal lptr@GOTOFF(%eax), %eax ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: bar08: @@ -6190,7 +6680,12 @@ ; ; LINUX-32-PIC-LABEL: har00: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl $src, %eax +; LINUX-32-PIC-NEXT: calll .L77$pb +; LINUX-32-PIC-NEXT: .L77$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp77: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp77-.L77$pb), %eax +; LINUX-32-PIC-NEXT: movl src@GOT(%eax), %eax ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: har00: @@ -6248,7 +6743,12 @@ ; ; LINUX-32-PIC-LABEL: hxr00: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl $xsrc, %eax +; LINUX-32-PIC-NEXT: calll .L78$pb +; LINUX-32-PIC-NEXT: .L78$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp78: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp78-.L78$pb), %eax +; LINUX-32-PIC-NEXT: movl xsrc@GOT(%eax), %eax ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: hxr00: @@ -6306,7 +6806,12 @@ ; ; LINUX-32-PIC-LABEL: har01: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl $dst, %eax +; LINUX-32-PIC-NEXT: calll .L79$pb +; LINUX-32-PIC-NEXT: .L79$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp79: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp79-.L79$pb), %eax +; LINUX-32-PIC-NEXT: movl dst@GOT(%eax), %eax ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: har01: @@ -6364,7 +6869,12 @@ ; ; LINUX-32-PIC-LABEL: hxr01: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl $xdst, %eax +; LINUX-32-PIC-NEXT: calll .L80$pb +; LINUX-32-PIC-NEXT: .L80$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp80: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp80-.L80$pb), %eax +; LINUX-32-PIC-NEXT: movl xdst@GOT(%eax), %eax ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: hxr01: @@ -6422,7 +6932,13 @@ ; ; LINUX-32-PIC-LABEL: har02: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl ptr, %eax +; LINUX-32-PIC-NEXT: calll .L81$pb +; LINUX-32-PIC-NEXT: .L81$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp81: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp81-.L81$pb), %eax +; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax +; LINUX-32-PIC-NEXT: movl (%eax), %eax ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: har02: @@ -6488,7 +7004,12 @@ ; ; LINUX-32-PIC-LABEL: har03: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl $dsrc, %eax +; LINUX-32-PIC-NEXT: calll .L82$pb +; LINUX-32-PIC-NEXT: .L82$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp82: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp82-.L82$pb), %eax +; LINUX-32-PIC-NEXT: movl dsrc@GOT(%eax), %eax ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: har03: @@ -6546,7 +7067,12 @@ ; ; LINUX-32-PIC-LABEL: har04: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl $ddst, %eax +; LINUX-32-PIC-NEXT: calll .L83$pb +; LINUX-32-PIC-NEXT: .L83$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp83: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp83-.L83$pb), %eax +; LINUX-32-PIC-NEXT: movl ddst@GOT(%eax), %eax ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: har04: @@ -6604,7 +7130,13 @@ ; ; LINUX-32-PIC-LABEL: har05: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl dptr, %eax +; LINUX-32-PIC-NEXT: calll .L84$pb +; LINUX-32-PIC-NEXT: .L84$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp84: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp84-.L84$pb), %eax +; LINUX-32-PIC-NEXT: movl dptr@GOT(%eax), %eax +; LINUX-32-PIC-NEXT: movl (%eax), %eax ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: har05: @@ -6665,7 +7197,12 @@ ; ; LINUX-32-PIC-LABEL: har06: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl $lsrc, %eax +; LINUX-32-PIC-NEXT: calll .L85$pb +; LINUX-32-PIC-NEXT: .L85$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp85: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp85-.L85$pb), %eax +; LINUX-32-PIC-NEXT: leal lsrc@GOTOFF(%eax), %eax ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: har06: @@ -6723,7 +7260,12 @@ ; ; LINUX-32-PIC-LABEL: har07: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl $ldst, %eax +; LINUX-32-PIC-NEXT: calll .L86$pb +; LINUX-32-PIC-NEXT: .L86$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp86: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp86-.L86$pb), %eax +; LINUX-32-PIC-NEXT: leal ldst@GOTOFF(%eax), %eax ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: har07: @@ -6781,7 +7323,12 @@ ; ; LINUX-32-PIC-LABEL: har08: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl lptr, %eax +; LINUX-32-PIC-NEXT: calll .L87$pb +; LINUX-32-PIC-NEXT: .L87$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp87: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp87-.L87$pb), %eax +; LINUX-32-PIC-NEXT: movl lptr@GOTOFF(%eax), %eax ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: har08: @@ -6841,7 +7388,13 @@ ; ; LINUX-32-PIC-LABEL: bat00: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl $src+64, %eax +; LINUX-32-PIC-NEXT: calll .L88$pb +; LINUX-32-PIC-NEXT: .L88$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp88: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp88-.L88$pb), %eax +; LINUX-32-PIC-NEXT: movl src@GOT(%eax), %eax +; LINUX-32-PIC-NEXT: addl $64, %eax ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: bat00: @@ -6905,7 +7458,13 @@ ; ; LINUX-32-PIC-LABEL: bxt00: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl $xsrc+64, %eax +; LINUX-32-PIC-NEXT: calll .L89$pb +; LINUX-32-PIC-NEXT: .L89$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp89: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp89-.L89$pb), %eax +; LINUX-32-PIC-NEXT: movl xsrc@GOT(%eax), %eax +; LINUX-32-PIC-NEXT: addl $64, %eax ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: bxt00: @@ -6969,7 +7528,13 @@ ; ; LINUX-32-PIC-LABEL: bat01: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl $dst+64, %eax +; LINUX-32-PIC-NEXT: calll .L90$pb +; LINUX-32-PIC-NEXT: .L90$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp90: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp90-.L90$pb), %eax +; LINUX-32-PIC-NEXT: movl dst@GOT(%eax), %eax +; LINUX-32-PIC-NEXT: addl $64, %eax ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: bat01: @@ -7033,7 +7598,13 @@ ; ; LINUX-32-PIC-LABEL: bxt01: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl $xdst+64, %eax +; LINUX-32-PIC-NEXT: calll .L91$pb +; LINUX-32-PIC-NEXT: .L91$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp91: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp91-.L91$pb), %eax +; LINUX-32-PIC-NEXT: movl xdst@GOT(%eax), %eax +; LINUX-32-PIC-NEXT: addl $64, %eax ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: bxt01: @@ -7099,7 +7670,13 @@ ; ; LINUX-32-PIC-LABEL: bat02: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl ptr, %eax +; LINUX-32-PIC-NEXT: calll .L92$pb +; LINUX-32-PIC-NEXT: .L92$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp92: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp92-.L92$pb), %eax +; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax +; LINUX-32-PIC-NEXT: movl (%eax), %eax ; LINUX-32-PIC-NEXT: addl $64, %eax ; LINUX-32-PIC-NEXT: retl ; @@ -7174,7 +7751,13 @@ ; ; LINUX-32-PIC-LABEL: bat03: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl $dsrc+64, %eax +; LINUX-32-PIC-NEXT: calll .L93$pb +; LINUX-32-PIC-NEXT: .L93$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp93: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp93-.L93$pb), %eax +; LINUX-32-PIC-NEXT: movl dsrc@GOT(%eax), %eax +; LINUX-32-PIC-NEXT: addl $64, %eax ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: bat03: @@ -7233,7 +7816,13 @@ ; ; LINUX-32-PIC-LABEL: bat04: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl $ddst+64, %eax +; LINUX-32-PIC-NEXT: calll .L94$pb +; LINUX-32-PIC-NEXT: .L94$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp94: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp94-.L94$pb), %eax +; LINUX-32-PIC-NEXT: movl ddst@GOT(%eax), %eax +; LINUX-32-PIC-NEXT: addl $64, %eax ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: bat04: @@ -7294,7 +7883,13 @@ ; ; LINUX-32-PIC-LABEL: bat05: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl dptr, %eax +; LINUX-32-PIC-NEXT: calll .L95$pb +; LINUX-32-PIC-NEXT: .L95$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp95: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp95-.L95$pb), %eax +; LINUX-32-PIC-NEXT: movl dptr@GOT(%eax), %eax +; LINUX-32-PIC-NEXT: movl (%eax), %eax ; LINUX-32-PIC-NEXT: addl $64, %eax ; LINUX-32-PIC-NEXT: retl ; @@ -7364,7 +7959,12 @@ ; ; LINUX-32-PIC-LABEL: bat06: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl $lsrc+64, %eax +; LINUX-32-PIC-NEXT: calll .L96$pb +; LINUX-32-PIC-NEXT: .L96$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp96: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp96-.L96$pb), %eax +; LINUX-32-PIC-NEXT: leal lsrc@GOTOFF+64(%eax), %eax ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: bat06: @@ -7422,7 +8022,12 @@ ; ; LINUX-32-PIC-LABEL: bat07: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl $ldst+64, %eax +; LINUX-32-PIC-NEXT: calll .L97$pb +; LINUX-32-PIC-NEXT: .L97$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp97: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp97-.L97$pb), %eax +; LINUX-32-PIC-NEXT: leal ldst@GOTOFF+64(%eax), %eax ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: bat07: @@ -7482,7 +8087,12 @@ ; ; LINUX-32-PIC-LABEL: bat08: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl lptr, %eax +; LINUX-32-PIC-NEXT: calll .L98$pb +; LINUX-32-PIC-NEXT: .L98$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp98: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp98-.L98$pb), %eax +; LINUX-32-PIC-NEXT: movl lptr@GOTOFF(%eax), %eax ; LINUX-32-PIC-NEXT: addl $64, %eax ; LINUX-32-PIC-NEXT: retl ; @@ -7551,7 +8161,13 @@ ; ; LINUX-32-PIC-LABEL: bam00: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl $src+262144, %eax +; LINUX-32-PIC-NEXT: calll .L99$pb +; LINUX-32-PIC-NEXT: .L99$pb: +; LINUX-32-PIC-NEXT: popl %ecx +; LINUX-32-PIC-NEXT: .Ltmp99: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp99-.L99$pb), %ecx +; LINUX-32-PIC-NEXT: movl $262144, %eax # imm = 0x40000 +; LINUX-32-PIC-NEXT: addl src@GOT(%ecx), %eax ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: bam00: @@ -7615,7 +8231,13 @@ ; ; LINUX-32-PIC-LABEL: bam01: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl $dst+262144, %eax +; LINUX-32-PIC-NEXT: calll .L100$pb +; LINUX-32-PIC-NEXT: .L100$pb: +; LINUX-32-PIC-NEXT: popl %ecx +; LINUX-32-PIC-NEXT: .Ltmp100: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp100-.L100$pb), %ecx +; LINUX-32-PIC-NEXT: movl $262144, %eax # imm = 0x40000 +; LINUX-32-PIC-NEXT: addl dst@GOT(%ecx), %eax ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: bam01: @@ -7679,7 +8301,13 @@ ; ; LINUX-32-PIC-LABEL: bxm01: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl $xdst+262144, %eax +; LINUX-32-PIC-NEXT: calll .L101$pb +; LINUX-32-PIC-NEXT: .L101$pb: +; LINUX-32-PIC-NEXT: popl %ecx +; LINUX-32-PIC-NEXT: .Ltmp101: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp101-.L101$pb), %ecx +; LINUX-32-PIC-NEXT: movl $262144, %eax # imm = 0x40000 +; LINUX-32-PIC-NEXT: addl xdst@GOT(%ecx), %eax ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: bxm01: @@ -7745,13 +8373,19 @@ ; ; LINUX-32-PIC-LABEL: bam02: ; LINUX-32-PIC: # %bb.0: # %entry +; LINUX-32-PIC-NEXT: calll .L102$pb +; LINUX-32-PIC-NEXT: .L102$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp102: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp102-.L102$pb), %eax +; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %ecx ; LINUX-32-PIC-NEXT: movl $262144, %eax # imm = 0x40000 -; LINUX-32-PIC-NEXT: addl ptr, %eax +; LINUX-32-PIC-NEXT: addl (%ecx), %eax ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: bam02: ; LINUX-64-PIC: # %bb.0: # %entry -; LINUX-64-PIC-NEXT: movq ptr@{{.*}}(%rip), %rcx +; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx ; LINUX-64-PIC-NEXT: movl $262144, %eax # imm = 0x40000 ; LINUX-64-PIC-NEXT: addq (%rcx), %rax ; LINUX-64-PIC-NEXT: retq @@ -7781,21 +8415,21 @@ ; ; DARWIN-64-STATIC-LABEL: bam02: ; DARWIN-64-STATIC: ## %bb.0: ## %entry -; DARWIN-64-STATIC-NEXT: movq _ptr@{{.*}}(%rip), %rcx +; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx ; DARWIN-64-STATIC-NEXT: movl $262144, %eax ## imm = 0x40000 ; DARWIN-64-STATIC-NEXT: addq (%rcx), %rax ; DARWIN-64-STATIC-NEXT: retq ; ; DARWIN-64-DYNAMIC-LABEL: bam02: ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry -; DARWIN-64-DYNAMIC-NEXT: movq _ptr@{{.*}}(%rip), %rcx +; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx ; DARWIN-64-DYNAMIC-NEXT: movl $262144, %eax ## imm = 0x40000 ; DARWIN-64-DYNAMIC-NEXT: addq (%rcx), %rax ; DARWIN-64-DYNAMIC-NEXT: retq ; ; DARWIN-64-PIC-LABEL: bam02: ; DARWIN-64-PIC: ## %bb.0: ## %entry -; DARWIN-64-PIC-NEXT: movq _ptr@{{.*}}(%rip), %rcx +; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx ; DARWIN-64-PIC-NEXT: movl $262144, %eax ## imm = 0x40000 ; DARWIN-64-PIC-NEXT: addq (%rcx), %rax ; DARWIN-64-PIC-NEXT: retq @@ -7820,7 +8454,13 @@ ; ; LINUX-32-PIC-LABEL: bam03: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl $dsrc+262144, %eax +; LINUX-32-PIC-NEXT: calll .L103$pb +; LINUX-32-PIC-NEXT: .L103$pb: +; LINUX-32-PIC-NEXT: popl %ecx +; LINUX-32-PIC-NEXT: .Ltmp103: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp103-.L103$pb), %ecx +; LINUX-32-PIC-NEXT: movl $262144, %eax # imm = 0x40000 +; LINUX-32-PIC-NEXT: addl dsrc@GOT(%ecx), %eax ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: bam03: @@ -7879,7 +8519,13 @@ ; ; LINUX-32-PIC-LABEL: bam04: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl $ddst+262144, %eax +; LINUX-32-PIC-NEXT: calll .L104$pb +; LINUX-32-PIC-NEXT: .L104$pb: +; LINUX-32-PIC-NEXT: popl %ecx +; LINUX-32-PIC-NEXT: .Ltmp104: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp104-.L104$pb), %ecx +; LINUX-32-PIC-NEXT: movl $262144, %eax # imm = 0x40000 +; LINUX-32-PIC-NEXT: addl ddst@GOT(%ecx), %eax ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: bam04: @@ -7940,13 +8586,19 @@ ; ; LINUX-32-PIC-LABEL: bam05: ; LINUX-32-PIC: # %bb.0: # %entry +; LINUX-32-PIC-NEXT: calll .L105$pb +; LINUX-32-PIC-NEXT: .L105$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp105: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp105-.L105$pb), %eax +; LINUX-32-PIC-NEXT: movl dptr@GOT(%eax), %ecx ; LINUX-32-PIC-NEXT: movl $262144, %eax # imm = 0x40000 -; LINUX-32-PIC-NEXT: addl dptr, %eax +; LINUX-32-PIC-NEXT: addl (%ecx), %eax ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: bam05: ; LINUX-64-PIC: # %bb.0: # %entry -; LINUX-64-PIC-NEXT: movq dptr@{{.*}}(%rip), %rcx +; LINUX-64-PIC-NEXT: movq dptr@GOTPCREL(%rip), %rcx ; LINUX-64-PIC-NEXT: movl $262144, %eax # imm = 0x40000 ; LINUX-64-PIC-NEXT: addq (%rcx), %rax ; LINUX-64-PIC-NEXT: retq @@ -8010,7 +8662,12 @@ ; ; LINUX-32-PIC-LABEL: bam06: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl $lsrc+262144, %eax +; LINUX-32-PIC-NEXT: calll .L106$pb +; LINUX-32-PIC-NEXT: .L106$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp106: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp106-.L106$pb), %eax +; LINUX-32-PIC-NEXT: leal lsrc@GOTOFF+262144(%eax), %eax ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: bam06: @@ -8068,7 +8725,12 @@ ; ; LINUX-32-PIC-LABEL: bam07: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl $ldst+262144, %eax +; LINUX-32-PIC-NEXT: calll .L107$pb +; LINUX-32-PIC-NEXT: .L107$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp107: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp107-.L107$pb), %eax +; LINUX-32-PIC-NEXT: leal ldst@GOTOFF+262144(%eax), %eax ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: bam07: @@ -8128,8 +8790,13 @@ ; ; LINUX-32-PIC-LABEL: bam08: ; LINUX-32-PIC: # %bb.0: # %entry +; LINUX-32-PIC-NEXT: calll .L108$pb +; LINUX-32-PIC-NEXT: .L108$pb: +; LINUX-32-PIC-NEXT: popl %ecx +; LINUX-32-PIC-NEXT: .Ltmp108: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp108-.L108$pb), %ecx ; LINUX-32-PIC-NEXT: movl $262144, %eax # imm = 0x40000 -; LINUX-32-PIC-NEXT: addl lptr, %eax +; LINUX-32-PIC-NEXT: addl lptr@GOTOFF(%ecx), %eax ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: bam08: @@ -8198,8 +8865,14 @@ ; ; LINUX-32-PIC-LABEL: cat00: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %eax -; LINUX-32-PIC-NEXT: leal src+64(,%eax,4), %eax +; LINUX-32-PIC-NEXT: calll .L109$pb +; LINUX-32-PIC-NEXT: .L109$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp109: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp109-.L109$pb), %eax +; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx +; LINUX-32-PIC-NEXT: movl src@GOT(%eax), %eax +; LINUX-32-PIC-NEXT: leal 64(%eax,%ecx,4), %eax ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: cat00: @@ -8270,8 +8943,14 @@ ; ; LINUX-32-PIC-LABEL: cxt00: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %eax -; LINUX-32-PIC-NEXT: leal xsrc+64(,%eax,4), %eax +; LINUX-32-PIC-NEXT: calll .L110$pb +; LINUX-32-PIC-NEXT: .L110$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp110: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp110-.L110$pb), %eax +; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx +; LINUX-32-PIC-NEXT: movl xsrc@GOT(%eax), %eax +; LINUX-32-PIC-NEXT: leal 64(%eax,%ecx,4), %eax ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: cxt00: @@ -8342,8 +9021,14 @@ ; ; LINUX-32-PIC-LABEL: cat01: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %eax -; LINUX-32-PIC-NEXT: leal dst+64(,%eax,4), %eax +; LINUX-32-PIC-NEXT: calll .L111$pb +; LINUX-32-PIC-NEXT: .L111$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp111: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp111-.L111$pb), %eax +; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx +; LINUX-32-PIC-NEXT: movl dst@GOT(%eax), %eax +; LINUX-32-PIC-NEXT: leal 64(%eax,%ecx,4), %eax ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: cat01: @@ -8414,8 +9099,14 @@ ; ; LINUX-32-PIC-LABEL: cxt01: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %eax -; LINUX-32-PIC-NEXT: leal xdst+64(,%eax,4), %eax +; LINUX-32-PIC-NEXT: calll .L112$pb +; LINUX-32-PIC-NEXT: .L112$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp112: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp112-.L112$pb), %eax +; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx +; LINUX-32-PIC-NEXT: movl xdst@GOT(%eax), %eax +; LINUX-32-PIC-NEXT: leal 64(%eax,%ecx,4), %eax ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: cxt01: @@ -8488,9 +9179,15 @@ ; ; LINUX-32-PIC-LABEL: cat02: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %eax -; LINUX-32-PIC-NEXT: movl ptr, %ecx -; LINUX-32-PIC-NEXT: leal 64(%ecx,%eax,4), %eax +; LINUX-32-PIC-NEXT: calll .L113$pb +; LINUX-32-PIC-NEXT: .L113$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp113: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp113-.L113$pb), %eax +; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax +; LINUX-32-PIC-NEXT: movl (%eax), %eax +; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx +; LINUX-32-PIC-NEXT: leal 64(%eax,%ecx,4), %eax ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: cat02: @@ -8569,8 +9266,14 @@ ; ; LINUX-32-PIC-LABEL: cat03: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %eax -; LINUX-32-PIC-NEXT: leal dsrc+64(,%eax,4), %eax +; LINUX-32-PIC-NEXT: calll .L114$pb +; LINUX-32-PIC-NEXT: .L114$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp114: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp114-.L114$pb), %eax +; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx +; LINUX-32-PIC-NEXT: movl dsrc@GOT(%eax), %eax +; LINUX-32-PIC-NEXT: leal 64(%eax,%ecx,4), %eax ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: cat03: @@ -8639,8 +9342,14 @@ ; ; LINUX-32-PIC-LABEL: cat04: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %eax -; LINUX-32-PIC-NEXT: leal ddst+64(,%eax,4), %eax +; LINUX-32-PIC-NEXT: calll .L115$pb +; LINUX-32-PIC-NEXT: .L115$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp115: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp115-.L115$pb), %eax +; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx +; LINUX-32-PIC-NEXT: movl ddst@GOT(%eax), %eax +; LINUX-32-PIC-NEXT: leal 64(%eax,%ecx,4), %eax ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: cat04: @@ -8711,9 +9420,15 @@ ; ; LINUX-32-PIC-LABEL: cat05: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %eax -; LINUX-32-PIC-NEXT: movl dptr, %ecx -; LINUX-32-PIC-NEXT: leal 64(%ecx,%eax,4), %eax +; LINUX-32-PIC-NEXT: calll .L116$pb +; LINUX-32-PIC-NEXT: .L116$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp116: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp116-.L116$pb), %eax +; LINUX-32-PIC-NEXT: movl dptr@GOT(%eax), %eax +; LINUX-32-PIC-NEXT: movl (%eax), %eax +; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx +; LINUX-32-PIC-NEXT: leal 64(%eax,%ecx,4), %eax ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: cat05: @@ -8787,8 +9502,13 @@ ; ; LINUX-32-PIC-LABEL: cat06: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %eax -; LINUX-32-PIC-NEXT: leal lsrc+64(,%eax,4), %eax +; LINUX-32-PIC-NEXT: calll .L117$pb +; LINUX-32-PIC-NEXT: .L117$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp117: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp117-.L117$pb), %eax +; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx +; LINUX-32-PIC-NEXT: leal lsrc@GOTOFF+64(%eax,%ecx,4), %eax ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: cat06: @@ -8857,8 +9577,13 @@ ; ; LINUX-32-PIC-LABEL: cat07: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %eax -; LINUX-32-PIC-NEXT: leal ldst+64(,%eax,4), %eax +; LINUX-32-PIC-NEXT: calll .L118$pb +; LINUX-32-PIC-NEXT: .L118$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp118: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp118-.L118$pb), %eax +; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx +; LINUX-32-PIC-NEXT: leal ldst@GOTOFF+64(%eax,%ecx,4), %eax ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: cat07: @@ -8929,9 +9654,14 @@ ; ; LINUX-32-PIC-LABEL: cat08: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %eax -; LINUX-32-PIC-NEXT: movl lptr, %ecx -; LINUX-32-PIC-NEXT: leal 64(%ecx,%eax,4), %eax +; LINUX-32-PIC-NEXT: calll .L119$pb +; LINUX-32-PIC-NEXT: .L119$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp119: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp119-.L119$pb), %eax +; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx +; LINUX-32-PIC-NEXT: movl lptr@GOTOFF(%eax), %eax +; LINUX-32-PIC-NEXT: leal 64(%eax,%ecx,4), %eax ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: cat08: @@ -9004,8 +9734,14 @@ ; ; LINUX-32-PIC-LABEL: cam00: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %eax -; LINUX-32-PIC-NEXT: leal src+262144(,%eax,4), %eax +; LINUX-32-PIC-NEXT: calll .L120$pb +; LINUX-32-PIC-NEXT: .L120$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp120: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp120-.L120$pb), %eax +; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx +; LINUX-32-PIC-NEXT: movl src@GOT(%eax), %eax +; LINUX-32-PIC-NEXT: leal 262144(%eax,%ecx,4), %eax ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: cam00: @@ -9076,8 +9812,14 @@ ; ; LINUX-32-PIC-LABEL: cxm00: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %eax -; LINUX-32-PIC-NEXT: leal xsrc+262144(,%eax,4), %eax +; LINUX-32-PIC-NEXT: calll .L121$pb +; LINUX-32-PIC-NEXT: .L121$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp121: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp121-.L121$pb), %eax +; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx +; LINUX-32-PIC-NEXT: movl xsrc@GOT(%eax), %eax +; LINUX-32-PIC-NEXT: leal 262144(%eax,%ecx,4), %eax ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: cxm00: @@ -9148,8 +9890,14 @@ ; ; LINUX-32-PIC-LABEL: cam01: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %eax -; LINUX-32-PIC-NEXT: leal dst+262144(,%eax,4), %eax +; LINUX-32-PIC-NEXT: calll .L122$pb +; LINUX-32-PIC-NEXT: .L122$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp122: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp122-.L122$pb), %eax +; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx +; LINUX-32-PIC-NEXT: movl dst@GOT(%eax), %eax +; LINUX-32-PIC-NEXT: leal 262144(%eax,%ecx,4), %eax ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: cam01: @@ -9220,8 +9968,14 @@ ; ; LINUX-32-PIC-LABEL: cxm01: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %eax -; LINUX-32-PIC-NEXT: leal xdst+262144(,%eax,4), %eax +; LINUX-32-PIC-NEXT: calll .L123$pb +; LINUX-32-PIC-NEXT: .L123$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp123: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp123-.L123$pb), %eax +; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx +; LINUX-32-PIC-NEXT: movl xdst@GOT(%eax), %eax +; LINUX-32-PIC-NEXT: leal 262144(%eax,%ecx,4), %eax ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: cxm01: @@ -9294,9 +10048,15 @@ ; ; LINUX-32-PIC-LABEL: cam02: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %eax -; LINUX-32-PIC-NEXT: movl ptr, %ecx -; LINUX-32-PIC-NEXT: leal 262144(%ecx,%eax,4), %eax +; LINUX-32-PIC-NEXT: calll .L124$pb +; LINUX-32-PIC-NEXT: .L124$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp124: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp124-.L124$pb), %eax +; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax +; LINUX-32-PIC-NEXT: movl (%eax), %eax +; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx +; LINUX-32-PIC-NEXT: leal 262144(%eax,%ecx,4), %eax ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: cam02: @@ -9375,8 +10135,14 @@ ; ; LINUX-32-PIC-LABEL: cam03: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %eax -; LINUX-32-PIC-NEXT: leal dsrc+262144(,%eax,4), %eax +; LINUX-32-PIC-NEXT: calll .L125$pb +; LINUX-32-PIC-NEXT: .L125$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp125: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp125-.L125$pb), %eax +; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx +; LINUX-32-PIC-NEXT: movl dsrc@GOT(%eax), %eax +; LINUX-32-PIC-NEXT: leal 262144(%eax,%ecx,4), %eax ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: cam03: @@ -9445,8 +10211,14 @@ ; ; LINUX-32-PIC-LABEL: cam04: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %eax -; LINUX-32-PIC-NEXT: leal ddst+262144(,%eax,4), %eax +; LINUX-32-PIC-NEXT: calll .L126$pb +; LINUX-32-PIC-NEXT: .L126$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp126: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp126-.L126$pb), %eax +; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx +; LINUX-32-PIC-NEXT: movl ddst@GOT(%eax), %eax +; LINUX-32-PIC-NEXT: leal 262144(%eax,%ecx,4), %eax ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: cam04: @@ -9517,9 +10289,15 @@ ; ; LINUX-32-PIC-LABEL: cam05: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %eax -; LINUX-32-PIC-NEXT: movl dptr, %ecx -; LINUX-32-PIC-NEXT: leal 262144(%ecx,%eax,4), %eax +; LINUX-32-PIC-NEXT: calll .L127$pb +; LINUX-32-PIC-NEXT: .L127$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp127: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp127-.L127$pb), %eax +; LINUX-32-PIC-NEXT: movl dptr@GOT(%eax), %eax +; LINUX-32-PIC-NEXT: movl (%eax), %eax +; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx +; LINUX-32-PIC-NEXT: leal 262144(%eax,%ecx,4), %eax ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: cam05: @@ -9593,8 +10371,13 @@ ; ; LINUX-32-PIC-LABEL: cam06: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %eax -; LINUX-32-PIC-NEXT: leal lsrc+262144(,%eax,4), %eax +; LINUX-32-PIC-NEXT: calll .L128$pb +; LINUX-32-PIC-NEXT: .L128$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp128: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp128-.L128$pb), %eax +; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx +; LINUX-32-PIC-NEXT: leal lsrc@GOTOFF+262144(%eax,%ecx,4), %eax ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: cam06: @@ -9663,8 +10446,13 @@ ; ; LINUX-32-PIC-LABEL: cam07: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %eax -; LINUX-32-PIC-NEXT: leal ldst+262144(,%eax,4), %eax +; LINUX-32-PIC-NEXT: calll .L129$pb +; LINUX-32-PIC-NEXT: .L129$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp129: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp129-.L129$pb), %eax +; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx +; LINUX-32-PIC-NEXT: leal ldst@GOTOFF+262144(%eax,%ecx,4), %eax ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: cam07: @@ -9735,9 +10523,14 @@ ; ; LINUX-32-PIC-LABEL: cam08: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %eax -; LINUX-32-PIC-NEXT: movl lptr, %ecx -; LINUX-32-PIC-NEXT: leal 262144(%ecx,%eax,4), %eax +; LINUX-32-PIC-NEXT: calll .L130$pb +; LINUX-32-PIC-NEXT: .L130$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp130: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp130-.L130$pb), %eax +; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx +; LINUX-32-PIC-NEXT: movl lptr@GOTOFF(%eax), %eax +; LINUX-32-PIC-NEXT: leal 262144(%eax,%ecx,4), %eax ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: cam08: @@ -9825,15 +10618,22 @@ ; ; LINUX-32-PIC-LABEL: lcallee: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: subl $12, %esp -; LINUX-32-PIC-NEXT: calll x -; LINUX-32-PIC-NEXT: calll x -; LINUX-32-PIC-NEXT: calll x -; LINUX-32-PIC-NEXT: calll x -; LINUX-32-PIC-NEXT: calll x -; LINUX-32-PIC-NEXT: calll x -; LINUX-32-PIC-NEXT: calll x -; LINUX-32-PIC-NEXT: addl $12, %esp +; LINUX-32-PIC-NEXT: pushl %ebx +; LINUX-32-PIC-NEXT: subl $8, %esp +; LINUX-32-PIC-NEXT: calll .L131$pb +; LINUX-32-PIC-NEXT: .L131$pb: +; LINUX-32-PIC-NEXT: popl %ebx +; LINUX-32-PIC-NEXT: .Ltmp131: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp131-.L131$pb), %ebx +; LINUX-32-PIC-NEXT: calll x@PLT +; LINUX-32-PIC-NEXT: calll x@PLT +; LINUX-32-PIC-NEXT: calll x@PLT +; LINUX-32-PIC-NEXT: calll x@PLT +; LINUX-32-PIC-NEXT: calll x@PLT +; LINUX-32-PIC-NEXT: calll x@PLT +; LINUX-32-PIC-NEXT: calll x@PLT +; LINUX-32-PIC-NEXT: addl $8, %esp +; LINUX-32-PIC-NEXT: popl %ebx ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: lcallee: @@ -9969,15 +10769,22 @@ ; ; LINUX-32-PIC-LABEL: dcallee: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: subl $12, %esp -; LINUX-32-PIC-NEXT: calll y -; LINUX-32-PIC-NEXT: calll y -; LINUX-32-PIC-NEXT: calll y -; LINUX-32-PIC-NEXT: calll y -; LINUX-32-PIC-NEXT: calll y -; LINUX-32-PIC-NEXT: calll y -; LINUX-32-PIC-NEXT: calll y -; LINUX-32-PIC-NEXT: addl $12, %esp +; LINUX-32-PIC-NEXT: pushl %ebx +; LINUX-32-PIC-NEXT: subl $8, %esp +; LINUX-32-PIC-NEXT: calll .L132$pb +; LINUX-32-PIC-NEXT: .L132$pb: +; LINUX-32-PIC-NEXT: popl %ebx +; LINUX-32-PIC-NEXT: .Ltmp132: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp132-.L132$pb), %ebx +; LINUX-32-PIC-NEXT: calll y@PLT +; LINUX-32-PIC-NEXT: calll y@PLT +; LINUX-32-PIC-NEXT: calll y@PLT +; LINUX-32-PIC-NEXT: calll y@PLT +; LINUX-32-PIC-NEXT: calll y@PLT +; LINUX-32-PIC-NEXT: calll y@PLT +; LINUX-32-PIC-NEXT: calll y@PLT +; LINUX-32-PIC-NEXT: addl $8, %esp +; LINUX-32-PIC-NEXT: popl %ebx ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: dcallee: @@ -10097,7 +10904,12 @@ ; ; LINUX-32-PIC-LABEL: address: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl $callee, %eax +; LINUX-32-PIC-NEXT: calll .L133$pb +; LINUX-32-PIC-NEXT: .L133$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp133: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp133-.L133$pb), %eax +; LINUX-32-PIC-NEXT: movl callee@GOT(%eax), %eax ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: address: @@ -10157,7 +10969,12 @@ ; ; LINUX-32-PIC-LABEL: laddress: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl $lcallee, %eax +; LINUX-32-PIC-NEXT: calll .L134$pb +; LINUX-32-PIC-NEXT: .L134$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp134: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp134-.L134$pb), %eax +; LINUX-32-PIC-NEXT: movl lcallee@GOT(%eax), %eax ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: laddress: @@ -10215,7 +11032,12 @@ ; ; LINUX-32-PIC-LABEL: daddress: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: movl $dcallee, %eax +; LINUX-32-PIC-NEXT: calll .L135$pb +; LINUX-32-PIC-NEXT: .L135$pb: +; LINUX-32-PIC-NEXT: popl %eax +; LINUX-32-PIC-NEXT: .Ltmp135: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp135-.L135$pb), %eax +; LINUX-32-PIC-NEXT: leal dcallee@GOTOFF(%eax), %eax ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: daddress: @@ -10279,10 +11101,17 @@ ; ; LINUX-32-PIC-LABEL: caller: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: subl $12, %esp -; LINUX-32-PIC-NEXT: calll callee -; LINUX-32-PIC-NEXT: calll callee -; LINUX-32-PIC-NEXT: addl $12, %esp +; LINUX-32-PIC-NEXT: pushl %ebx +; LINUX-32-PIC-NEXT: subl $8, %esp +; LINUX-32-PIC-NEXT: calll .L136$pb +; LINUX-32-PIC-NEXT: .L136$pb: +; LINUX-32-PIC-NEXT: popl %ebx +; LINUX-32-PIC-NEXT: .Ltmp136: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp136-.L136$pb), %ebx +; LINUX-32-PIC-NEXT: calll callee@PLT +; LINUX-32-PIC-NEXT: calll callee@PLT +; LINUX-32-PIC-NEXT: addl $8, %esp +; LINUX-32-PIC-NEXT: popl %ebx ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: caller: @@ -10366,10 +11195,17 @@ ; ; LINUX-32-PIC-LABEL: dcaller: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: subl $12, %esp +; LINUX-32-PIC-NEXT: pushl %ebx +; LINUX-32-PIC-NEXT: subl $8, %esp +; LINUX-32-PIC-NEXT: calll .L137$pb +; LINUX-32-PIC-NEXT: .L137$pb: +; LINUX-32-PIC-NEXT: popl %ebx +; LINUX-32-PIC-NEXT: .Ltmp137: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp137-.L137$pb), %ebx ; LINUX-32-PIC-NEXT: calll dcallee ; LINUX-32-PIC-NEXT: calll dcallee -; LINUX-32-PIC-NEXT: addl $12, %esp +; LINUX-32-PIC-NEXT: addl $8, %esp +; LINUX-32-PIC-NEXT: popl %ebx ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: dcaller: @@ -10453,10 +11289,17 @@ ; ; LINUX-32-PIC-LABEL: lcaller: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: subl $12, %esp -; LINUX-32-PIC-NEXT: calll lcallee -; LINUX-32-PIC-NEXT: calll lcallee -; LINUX-32-PIC-NEXT: addl $12, %esp +; LINUX-32-PIC-NEXT: pushl %ebx +; LINUX-32-PIC-NEXT: subl $8, %esp +; LINUX-32-PIC-NEXT: calll .L138$pb +; LINUX-32-PIC-NEXT: .L138$pb: +; LINUX-32-PIC-NEXT: popl %ebx +; LINUX-32-PIC-NEXT: .Ltmp138: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp138-.L138$pb), %ebx +; LINUX-32-PIC-NEXT: calll lcallee@PLT +; LINUX-32-PIC-NEXT: calll lcallee@PLT +; LINUX-32-PIC-NEXT: addl $8, %esp +; LINUX-32-PIC-NEXT: popl %ebx ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: lcaller: @@ -10538,9 +11381,16 @@ ; ; LINUX-32-PIC-LABEL: tailcaller: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: subl $12, %esp -; LINUX-32-PIC-NEXT: calll callee -; LINUX-32-PIC-NEXT: addl $12, %esp +; LINUX-32-PIC-NEXT: pushl %ebx +; LINUX-32-PIC-NEXT: subl $8, %esp +; LINUX-32-PIC-NEXT: calll .L139$pb +; LINUX-32-PIC-NEXT: .L139$pb: +; LINUX-32-PIC-NEXT: popl %ebx +; LINUX-32-PIC-NEXT: .Ltmp139: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp139-.L139$pb), %ebx +; LINUX-32-PIC-NEXT: calll callee@PLT +; LINUX-32-PIC-NEXT: addl $8, %esp +; LINUX-32-PIC-NEXT: popl %ebx ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: tailcaller: @@ -10614,9 +11464,16 @@ ; ; LINUX-32-PIC-LABEL: dtailcaller: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: subl $12, %esp +; LINUX-32-PIC-NEXT: pushl %ebx +; LINUX-32-PIC-NEXT: subl $8, %esp +; LINUX-32-PIC-NEXT: calll .L140$pb +; LINUX-32-PIC-NEXT: .L140$pb: +; LINUX-32-PIC-NEXT: popl %ebx +; LINUX-32-PIC-NEXT: .Ltmp140: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp140-.L140$pb), %ebx ; LINUX-32-PIC-NEXT: calll dcallee -; LINUX-32-PIC-NEXT: addl $12, %esp +; LINUX-32-PIC-NEXT: addl $8, %esp +; LINUX-32-PIC-NEXT: popl %ebx ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: dtailcaller: @@ -10690,9 +11547,16 @@ ; ; LINUX-32-PIC-LABEL: ltailcaller: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: subl $12, %esp -; LINUX-32-PIC-NEXT: calll lcallee -; LINUX-32-PIC-NEXT: addl $12, %esp +; LINUX-32-PIC-NEXT: pushl %ebx +; LINUX-32-PIC-NEXT: subl $8, %esp +; LINUX-32-PIC-NEXT: calll .L141$pb +; LINUX-32-PIC-NEXT: .L141$pb: +; LINUX-32-PIC-NEXT: popl %ebx +; LINUX-32-PIC-NEXT: .Ltmp141: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp141-.L141$pb), %ebx +; LINUX-32-PIC-NEXT: calll lcallee@PLT +; LINUX-32-PIC-NEXT: addl $8, %esp +; LINUX-32-PIC-NEXT: popl %ebx ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: ltailcaller: @@ -10768,10 +11632,20 @@ ; ; LINUX-32-PIC-LABEL: icaller: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: subl $12, %esp -; LINUX-32-PIC-NEXT: calll *ifunc -; LINUX-32-PIC-NEXT: calll *ifunc -; LINUX-32-PIC-NEXT: addl $12, %esp +; LINUX-32-PIC-NEXT: pushl %ebx +; LINUX-32-PIC-NEXT: pushl %esi +; LINUX-32-PIC-NEXT: pushl %eax +; LINUX-32-PIC-NEXT: calll .L142$pb +; LINUX-32-PIC-NEXT: .L142$pb: +; LINUX-32-PIC-NEXT: popl %ebx +; LINUX-32-PIC-NEXT: .Ltmp142: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp142-.L142$pb), %ebx +; LINUX-32-PIC-NEXT: movl ifunc@GOT(%ebx), %esi +; LINUX-32-PIC-NEXT: calll *(%esi) +; LINUX-32-PIC-NEXT: calll *(%esi) +; LINUX-32-PIC-NEXT: addl $4, %esp +; LINUX-32-PIC-NEXT: popl %esi +; LINUX-32-PIC-NEXT: popl %ebx ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: icaller: @@ -10870,10 +11744,20 @@ ; ; LINUX-32-PIC-LABEL: dicaller: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: subl $12, %esp -; LINUX-32-PIC-NEXT: calll *difunc -; LINUX-32-PIC-NEXT: calll *difunc -; LINUX-32-PIC-NEXT: addl $12, %esp +; LINUX-32-PIC-NEXT: pushl %ebx +; LINUX-32-PIC-NEXT: pushl %esi +; LINUX-32-PIC-NEXT: pushl %eax +; LINUX-32-PIC-NEXT: calll .L143$pb +; LINUX-32-PIC-NEXT: .L143$pb: +; LINUX-32-PIC-NEXT: popl %ebx +; LINUX-32-PIC-NEXT: .Ltmp143: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp143-.L143$pb), %ebx +; LINUX-32-PIC-NEXT: movl difunc@GOT(%ebx), %esi +; LINUX-32-PIC-NEXT: calll *(%esi) +; LINUX-32-PIC-NEXT: calll *(%esi) +; LINUX-32-PIC-NEXT: addl $4, %esp +; LINUX-32-PIC-NEXT: popl %esi +; LINUX-32-PIC-NEXT: popl %ebx ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: dicaller: @@ -10965,10 +11849,17 @@ ; ; LINUX-32-PIC-LABEL: licaller: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: subl $12, %esp -; LINUX-32-PIC-NEXT: calll *lifunc -; LINUX-32-PIC-NEXT: calll *lifunc -; LINUX-32-PIC-NEXT: addl $12, %esp +; LINUX-32-PIC-NEXT: pushl %ebx +; LINUX-32-PIC-NEXT: subl $8, %esp +; LINUX-32-PIC-NEXT: calll .L144$pb +; LINUX-32-PIC-NEXT: .L144$pb: +; LINUX-32-PIC-NEXT: popl %ebx +; LINUX-32-PIC-NEXT: .Ltmp144: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp144-.L144$pb), %ebx +; LINUX-32-PIC-NEXT: calll *lifunc@GOTOFF(%ebx) +; LINUX-32-PIC-NEXT: calll *lifunc@GOTOFF(%ebx) +; LINUX-32-PIC-NEXT: addl $8, %esp +; LINUX-32-PIC-NEXT: popl %ebx ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: licaller: @@ -11059,10 +11950,20 @@ ; ; LINUX-32-PIC-LABEL: itailcaller: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: subl $12, %esp -; LINUX-32-PIC-NEXT: calll *ifunc -; LINUX-32-PIC-NEXT: calll *ifunc -; LINUX-32-PIC-NEXT: addl $12, %esp +; LINUX-32-PIC-NEXT: pushl %ebx +; LINUX-32-PIC-NEXT: pushl %esi +; LINUX-32-PIC-NEXT: pushl %eax +; LINUX-32-PIC-NEXT: calll .L145$pb +; LINUX-32-PIC-NEXT: .L145$pb: +; LINUX-32-PIC-NEXT: popl %ebx +; LINUX-32-PIC-NEXT: .Ltmp145: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp145-.L145$pb), %ebx +; LINUX-32-PIC-NEXT: movl ifunc@GOT(%ebx), %esi +; LINUX-32-PIC-NEXT: calll *(%esi) +; LINUX-32-PIC-NEXT: calll *(%esi) +; LINUX-32-PIC-NEXT: addl $4, %esp +; LINUX-32-PIC-NEXT: popl %esi +; LINUX-32-PIC-NEXT: popl %ebx ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: itailcaller: @@ -11159,9 +12060,17 @@ ; ; LINUX-32-PIC-LABEL: ditailcaller: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: subl $12, %esp -; LINUX-32-PIC-NEXT: calll *difunc -; LINUX-32-PIC-NEXT: addl $12, %esp +; LINUX-32-PIC-NEXT: pushl %ebx +; LINUX-32-PIC-NEXT: subl $8, %esp +; LINUX-32-PIC-NEXT: calll .L146$pb +; LINUX-32-PIC-NEXT: .L146$pb: +; LINUX-32-PIC-NEXT: popl %ebx +; LINUX-32-PIC-NEXT: .Ltmp146: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp146-.L146$pb), %ebx +; LINUX-32-PIC-NEXT: movl difunc@GOT(%ebx), %eax +; LINUX-32-PIC-NEXT: calll *(%eax) +; LINUX-32-PIC-NEXT: addl $8, %esp +; LINUX-32-PIC-NEXT: popl %ebx ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: ditailcaller: @@ -11240,9 +12149,16 @@ ; ; LINUX-32-PIC-LABEL: litailcaller: ; LINUX-32-PIC: # %bb.0: # %entry -; LINUX-32-PIC-NEXT: subl $12, %esp -; LINUX-32-PIC-NEXT: calll *lifunc -; LINUX-32-PIC-NEXT: addl $12, %esp +; LINUX-32-PIC-NEXT: pushl %ebx +; LINUX-32-PIC-NEXT: subl $8, %esp +; LINUX-32-PIC-NEXT: calll .L147$pb +; LINUX-32-PIC-NEXT: .L147$pb: +; LINUX-32-PIC-NEXT: popl %ebx +; LINUX-32-PIC-NEXT: .Ltmp147: +; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp147-.L147$pb), %ebx +; LINUX-32-PIC-NEXT: calll *lifunc@GOTOFF(%ebx) +; LINUX-32-PIC-NEXT: addl $8, %esp +; LINUX-32-PIC-NEXT: popl %ebx ; LINUX-32-PIC-NEXT: retl ; ; LINUX-64-PIC-LABEL: litailcaller: