Polish atomic pointers
[oota-llvm.git] / test / CodeGen / X86 / abi-isel.ll
index 3f1d0b69a9f014df2e3607e869adae8b1d82efa7..f363b64386f5175a6ce2e04f80204692408201f3 100644 (file)
@@ -1,16 +1,16 @@
-; RUN: llvm-as < %s | llc -asm-verbose=0 -mtriple=i686-unknown-linux-gnu -march=x86 -relocation-model=static -code-model=small | FileCheck %s -check-prefix=LINUX-32-STATIC
-; RUN: llvm-as < %s | llc -asm-verbose=0 -mtriple=i686-unknown-linux-gnu -march=x86 -relocation-model=static -code-model=small | FileCheck %s -check-prefix=LINUX-32-PIC
+; RUN: llc < %s -asm-verbose=0 -mcpu=generic -mtriple=i686-unknown-linux-gnu -march=x86 -relocation-model=static -code-model=small -pre-RA-sched=list-ilp | FileCheck %s -check-prefix=LINUX-32-STATIC
+; RUN: llc < %s -asm-verbose=0 -mcpu=generic -mtriple=i686-unknown-linux-gnu -march=x86 -relocation-model=static -code-model=small -pre-RA-sched=list-ilp | FileCheck %s -check-prefix=LINUX-32-PIC
 
-; RUN: llvm-as < %s | llc -asm-verbose=0 -mtriple=x86_64-unknown-linux-gnu -march=x86-64 -relocation-model=static -code-model=small | FileCheck %s -check-prefix=LINUX-64-STATIC
-; RUN: llvm-as < %s | llc -asm-verbose=0 -mtriple=x86_64-unknown-linux-gnu -march=x86-64 -relocation-model=pic -code-model=small | FileCheck %s -check-prefix=LINUX-64-PIC
+; RUN: llc < %s -asm-verbose=0 -mcpu=generic -mtriple=x86_64-unknown-linux-gnu -march=x86-64 -relocation-model=static -code-model=small -pre-RA-sched=list-ilp | FileCheck %s -check-prefix=LINUX-64-STATIC
+; RUN: llc < %s -asm-verbose=0 -mcpu=generic -mtriple=x86_64-unknown-linux-gnu -march=x86-64 -relocation-model=pic -code-model=small -pre-RA-sched=list-ilp | FileCheck %s -check-prefix=LINUX-64-PIC
 
-; RUN: llvm-as < %s | llc -asm-verbose=0 -mtriple=i686-apple-darwin -march=x86 -relocation-model=static -code-model=small | FileCheck %s -check-prefix=DARWIN-32-STATIC
-; RUN: llvm-as < %s | llc -asm-verbose=0 -mtriple=i686-apple-darwin -march=x86 -relocation-model=dynamic-no-pic -code-model=small | FileCheck %s -check-prefix=DARWIN-32-DYNAMIC
-; RUN: llvm-as < %s | llc -asm-verbose=0 -mtriple=i686-apple-darwin -march=x86 -relocation-model=pic -code-model=small | FileCheck %s -check-prefix=DARWIN-32-PIC
+; RUN: llc < %s -asm-verbose=0 -mcpu=generic -mtriple=i686-apple-darwin -march=x86 -relocation-model=static -code-model=small -pre-RA-sched=list-ilp | FileCheck %s -check-prefix=DARWIN-32-STATIC
+; RUN: llc < %s -asm-verbose=0 -mcpu=generic -mtriple=i686-apple-darwin -march=x86 -relocation-model=dynamic-no-pic -code-model=small -pre-RA-sched=list-ilp | FileCheck %s -check-prefix=DARWIN-32-DYNAMIC
+; RUN: llc < %s -asm-verbose=0 -mcpu=generic -mtriple=i686-apple-darwin -march=x86 -relocation-model=pic -code-model=small -pre-RA-sched=list-ilp | FileCheck %s -check-prefix=DARWIN-32-PIC
 
-; RUN: llvm-as < %s | llc -asm-verbose=0 -mtriple=x86_64-apple-darwin -march=x86-64 -relocation-model=static -code-model=small | FileCheck %s -check-prefix=DARWIN-64-STATIC
-; RUN: llvm-as < %s | llc -asm-verbose=0 -mtriple=x86_64-apple-darwin -march=x86-64 -relocation-model=dynamic-no-pic -code-model=small | FileCheck %s -check-prefix=DARWIN-64-DYNAMIC
-; RUN: llvm-as < %s | llc -asm-verbose=0 -mtriple=x86_64-apple-darwin -march=x86-64 -relocation-model=pic -code-model=small | FileCheck %s -check-prefix=DARWIN-64-PIC
+; RUN: llc < %s -asm-verbose=0 -mcpu=generic -mtriple=x86_64-apple-darwin -march=x86-64 -relocation-model=static -code-model=small -pre-RA-sched=list-ilp | FileCheck %s -check-prefix=DARWIN-64-STATIC
+; RUN: llc < %s -asm-verbose=0 -mcpu=generic -mtriple=x86_64-apple-darwin -march=x86-64 -relocation-model=dynamic-no-pic -code-model=small -pre-RA-sched=list-ilp | FileCheck %s -check-prefix=DARWIN-64-DYNAMIC
+; RUN: llc < %s -asm-verbose=0 -mcpu=generic -mtriple=x86_64-apple-darwin -march=x86-64 -relocation-model=pic -code-model=small -pre-RA-sched=list-ilp | FileCheck %s -check-prefix=DARWIN-64-PIC
 
 @src = external global [131072 x i32]
 @dst = external global [131072 x i32]
 
 define void @foo00() nounwind {
 entry:
-       %0 = load i32* getelementptr ([131072 x i32]* @src, i32 0, i64 0), align 4
-       store i32 %0, i32* getelementptr ([131072 x i32]* @dst, i32 0, i64 0), align 4
+       %0 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @src, i32 0, i64 0), align 4
+       store i32 %0, i32* getelementptr ([131072 x i32], [131072 x i32]* @dst, i32 0, i64 0), align 4
        ret void
 
-; LINUX-64-STATIC: foo00:
-; LINUX-64-STATIC: movl        src(%rip), %eax
-; LINUX-64-STATIC: movl        %eax, dst
+; LINUX-64-STATIC-LABEL: foo00:
+; LINUX-64-STATIC: movl        src(%rip), [[EAX:%e.x]]
+; LINUX-64-STATIC: movl        [[EAX]], dst
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: foo00:
-; LINUX-32-STATIC:     movl    src, %eax
-; LINUX-32-STATIC-NEXT:        movl    %eax, dst
+; LINUX-32-STATIC-LABEL: foo00:
+; LINUX-32-STATIC:     movl    src, [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT:        movl    [[EAX]], dst
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: foo00:
-; LINUX-32-PIC:        movl    src, %eax
-; LINUX-32-PIC-NEXT:   movl    %eax, dst
+; LINUX-32-PIC-LABEL: foo00:
+; LINUX-32-PIC:        movl    src, [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT:   movl    [[EAX]], dst
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: foo00:
-; LINUX-64-PIC:        movq    src@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT:   movl    (%rax), %eax
-; LINUX-64-PIC-NEXT:   movq    dst@GOTPCREL(%rip), %rcx
-; LINUX-64-PIC-NEXT:   movl    %eax, (%rcx)
+; LINUX-64-PIC-LABEL: foo00:
+; LINUX-64-PIC:        movq    src@GOTPCREL(%rip), [[RAX:%r..]]
+; LINUX-64-PIC-NEXT:   movl    ([[RAX]]), [[EAX:%e..]]
+; LINUX-64-PIC-NEXT:   movq    dst@GOTPCREL(%rip), [[RCX:%r..]]
+; LINUX-64-PIC-NEXT:   movl    [[EAX]], ([[RCX]])
 ; LINUX-64-PIC-NEXT:   ret
 
 ; DARWIN-32-STATIC: _foo00:
-; DARWIN-32-STATIC:    movl    _src, %eax
-; DARWIN-32-STATIC-NEXT:       movl    %eax, _dst
+; DARWIN-32-STATIC:    movl    _src, [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       movl    [[EAX]], _dst
 ; DARWIN-32-STATIC-NEXT:       ret
 
 ; DARWIN-32-DYNAMIC: _foo00:
-; DARWIN-32-DYNAMIC:   movl    L_src$non_lazy_ptr, %eax
-; DARWIN-32-DYNAMIC-NEXT:      movl    (%eax), %eax
-; DARWIN-32-DYNAMIC-NEXT:      movl    L_dst$non_lazy_ptr, %ecx
-; DARWIN-32-DYNAMIC-NEXT:      movl    %eax, (%ecx)
+; DARWIN-32-DYNAMIC:   movl    L_src$non_lazy_ptr, [[EAX:%e..]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    ([[EAX]]), [[EAX:%e..]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    L_dst$non_lazy_ptr, [[ECX:%e..]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    [[EAX]], ([[ECX]])
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _foo00:
-; DARWIN-32-PIC:       call    "L1$pb"
-; DARWIN-32-PIC-NEXT: "L1$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  movl    L_src$non_lazy_ptr-"L1$pb"(%eax), %ecx
-; DARWIN-32-PIC-NEXT:  movl    (%ecx), %ecx
-; DARWIN-32-PIC-NEXT:  movl    L_dst$non_lazy_ptr-"L1$pb"(%eax), %eax
-; DARWIN-32-PIC-NEXT:  movl    %ecx, (%eax)
+; DARWIN-32-PIC:       calll   L0$pb
+; DARWIN-32-PIC-NEXT: L0$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e..]]
+; DARWIN-32-PIC-NEXT:  movl    L_src$non_lazy_ptr-L0$pb([[EAX]]), [[ECX:%e..]]
+; DARWIN-32-PIC-NEXT:  movl    ([[ECX]]), [[ECX:%e..]]
+; DARWIN-32-PIC-NEXT:  movl    L_dst$non_lazy_ptr-L0$pb([[EAX]]), [[EAX:%e..]]
+; DARWIN-32-PIC-NEXT:  movl    [[ECX]], ([[EAX]])
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _foo00:
-; DARWIN-64-STATIC:    movq    _src@GOTPCREL(%rip), %rax
-; DARWIN-64-STATIC-NEXT:       movl    (%rax), %eax
-; DARWIN-64-STATIC-NEXT:       movq    _dst@GOTPCREL(%rip), %rcx
-; DARWIN-64-STATIC-NEXT:       movl    %eax, (%rcx)
+; DARWIN-64-STATIC:    movq    _src@GOTPCREL(%rip), [[RAX:%r..]]
+; DARWIN-64-STATIC-NEXT:       movl    ([[RAX]]), [[EAX:%e..]]
+; DARWIN-64-STATIC-NEXT:       movq    _dst@GOTPCREL(%rip), [[RCX:%r..]]
+; DARWIN-64-STATIC-NEXT:       movl    [[EAX]], ([[RCX]])
 ; DARWIN-64-STATIC-NEXT:       ret
 
 ; DARWIN-64-DYNAMIC: _foo00:
-; DARWIN-64-DYNAMIC:   movq    _src@GOTPCREL(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT:      movl    (%rax), %eax
-; DARWIN-64-DYNAMIC-NEXT:      movq    _dst@GOTPCREL(%rip), %rcx
-; DARWIN-64-DYNAMIC-NEXT:      movl    %eax, (%rcx)
+; DARWIN-64-DYNAMIC:   movq    _src@GOTPCREL(%rip), [[RAX:%r..]]
+; DARWIN-64-DYNAMIC-NEXT:      movl    ([[RAX]]), [[EAX:%e..]]
+; DARWIN-64-DYNAMIC-NEXT:      movq    _dst@GOTPCREL(%rip), [[RCX:%r..]]
+; DARWIN-64-DYNAMIC-NEXT:      movl    [[EAX]], ([[RCX]])
 ; DARWIN-64-DYNAMIC-NEXT:      ret
 
 ; DARWIN-64-PIC: _foo00:
-; DARWIN-64-PIC:       movq    _src@GOTPCREL(%rip), %rax
-; DARWIN-64-PIC-NEXT:  movl    (%rax), %eax
-; DARWIN-64-PIC-NEXT:  movq    _dst@GOTPCREL(%rip), %rcx
-; DARWIN-64-PIC-NEXT:  movl    %eax, (%rcx)
+; DARWIN-64-PIC:       movq    _src@GOTPCREL(%rip), [[RAX:%r..]]
+; DARWIN-64-PIC-NEXT:  movl    ([[RAX]]), [[EAX:%e..]]
+; DARWIN-64-PIC-NEXT:  movq    _dst@GOTPCREL(%rip), [[RCX:%r..]]
+; DARWIN-64-PIC-NEXT:  movl    [[EAX]], ([[RCX]])
 ; DARWIN-64-PIC-NEXT:  ret
 }
 
 define void @fxo00() nounwind {
 entry:
-       %0 = load i32* getelementptr ([32 x i32]* @xsrc, i32 0, i64 0), align 4
-       store i32 %0, i32* getelementptr ([32 x i32]* @xdst, i32 0, i64 0), align 4
+       %0 = load i32, i32* getelementptr ([32 x i32], [32 x i32]* @xsrc, i32 0, i64 0), align 4
+       store i32 %0, i32* getelementptr ([32 x i32], [32 x i32]* @xdst, i32 0, i64 0), align 4
        ret void
 
-; LINUX-64-STATIC: fxo00:
-; LINUX-64-STATIC: movl        xsrc(%rip), %eax
-; LINUX-64-STATIC: movl        %eax, xdst
+; LINUX-64-STATIC-LABEL: fxo00:
+; LINUX-64-STATIC: movl        xsrc(%rip), [[EAX:%e.x]]
+; LINUX-64-STATIC: movl        [[EAX]], xdst
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: fxo00:
-; LINUX-32-STATIC:     movl    xsrc, %eax
-; LINUX-32-STATIC-NEXT:        movl    %eax, xdst
+; LINUX-32-STATIC-LABEL: fxo00:
+; LINUX-32-STATIC:     movl    xsrc, [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT:        movl    [[EAX]], xdst
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: fxo00:
-; LINUX-32-PIC:        movl    xsrc, %eax
-; LINUX-32-PIC-NEXT:   movl    %eax, xdst
+; LINUX-32-PIC-LABEL: fxo00:
+; LINUX-32-PIC:        movl    xsrc, [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT:   movl    [[EAX]], xdst
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: fxo00:
-; LINUX-64-PIC:        movq    xsrc@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT:   movl    (%rax), %eax
-; LINUX-64-PIC-NEXT:   movq    xdst@GOTPCREL(%rip), %rcx
-; LINUX-64-PIC-NEXT:   movl    %eax, (%rcx)
+; LINUX-64-PIC-LABEL: fxo00:
+; LINUX-64-PIC:        movq    xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT:   movl    ([[RAX]]), [[EAX:%e.x]]
+; LINUX-64-PIC-NEXT:   movq    xdst@GOTPCREL(%rip), [[RCX:%r.x]]
+; LINUX-64-PIC-NEXT:   movl    [[EAX]], ([[RCX]])
 ; LINUX-64-PIC-NEXT:   ret
 
 ; DARWIN-32-STATIC: _fxo00:
-; DARWIN-32-STATIC:    movl    _xsrc, %eax
-; DARWIN-32-STATIC-NEXT:       movl    %eax, _xdst
+; DARWIN-32-STATIC:    movl    _xsrc, [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       movl    [[EAX]], _xdst
 ; DARWIN-32-STATIC-NEXT:       ret
 
 ; DARWIN-32-DYNAMIC: _fxo00:
-; DARWIN-32-DYNAMIC:   movl    L_xsrc$non_lazy_ptr, %eax
-; DARWIN-32-DYNAMIC-NEXT:      movl    (%eax), %eax
-; DARWIN-32-DYNAMIC-NEXT:      movl    L_xdst$non_lazy_ptr, %ecx
-; DARWIN-32-DYNAMIC-NEXT:      movl    %eax, (%ecx)
+; DARWIN-32-DYNAMIC:   movl    L_xsrc$non_lazy_ptr, [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    ([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    L_xdst$non_lazy_ptr, [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    [[EAX]], ([[ECX]])
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _fxo00:
-; DARWIN-32-PIC:       call    "L2$pb"
-; DARWIN-32-PIC-NEXT: "L2$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  movl    L_xsrc$non_lazy_ptr-"L2$pb"(%eax), %ecx
-; DARWIN-32-PIC-NEXT:  movl    (%ecx), %ecx
-; DARWIN-32-PIC-NEXT:  movl    L_xdst$non_lazy_ptr-"L2$pb"(%eax), %eax
-; DARWIN-32-PIC-NEXT:  movl    %ecx, (%eax)
+; DARWIN-32-PIC:       calll   L1$pb
+; DARWIN-32-PIC-NEXT: L1$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    L_xsrc$non_lazy_ptr-L1$pb([[EAX]]), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    ([[ECX]]), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    L_xdst$non_lazy_ptr-L1$pb([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    [[ECX]], ([[EAX]])
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _fxo00:
-; DARWIN-64-STATIC:    movq    _xsrc@GOTPCREL(%rip), %rax
-; DARWIN-64-STATIC-NEXT:       movl    (%rax), %eax
-; DARWIN-64-STATIC-NEXT:       movq    _xdst@GOTPCREL(%rip), %rcx
-; DARWIN-64-STATIC-NEXT:       movl    %eax, (%rcx)
+; DARWIN-64-STATIC:    movq    _xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movl    ([[RAX]]), [[EAX:%e.x]]
+; DARWIN-64-STATIC-NEXT:       movq    _xdst@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movl    [[EAX]], ([[RCX]])
 ; DARWIN-64-STATIC-NEXT:       ret
 
 ; DARWIN-64-DYNAMIC: _fxo00:
-; DARWIN-64-DYNAMIC:   movq    _xsrc@GOTPCREL(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT:      movl    (%rax), %eax
-; DARWIN-64-DYNAMIC-NEXT:      movq    _xdst@GOTPCREL(%rip), %rcx
-; DARWIN-64-DYNAMIC-NEXT:      movl    %eax, (%rcx)
+; DARWIN-64-DYNAMIC:   movq    _xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movl    ([[RAX]]), [[EAX:%e.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movq    _xdst@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movl    [[EAX]], ([[RCX]])
 ; DARWIN-64-DYNAMIC-NEXT:      ret
 
 ; DARWIN-64-PIC: _fxo00:
-; DARWIN-64-PIC:       movq    _xsrc@GOTPCREL(%rip), %rax
-; DARWIN-64-PIC-NEXT:  movl    (%rax), %eax
-; DARWIN-64-PIC-NEXT:  movq    _xdst@GOTPCREL(%rip), %rcx
-; DARWIN-64-PIC-NEXT:  movl    %eax, (%rcx)
+; DARWIN-64-PIC:       movq    _xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movl    ([[RAX]]), [[EAX:%e.x]]
+; DARWIN-64-PIC-NEXT:  movq    _xdst@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movl    [[EAX]], ([[RCX]])
 ; DARWIN-64-PIC-NEXT:  ret
 }
 
 define void @foo01() nounwind {
 entry:
-       store i32* getelementptr ([131072 x i32]* @dst, i32 0, i32 0), i32** @ptr, align 8
+       store i32* getelementptr ([131072 x i32], [131072 x i32]* @dst, i32 0, i32 0), i32** @ptr, align 8
        ret void
-; LINUX-64-STATIC: foo01:
+; LINUX-64-STATIC-LABEL: foo01:
 ; LINUX-64-STATIC: movq        $dst, ptr
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: foo01:
+; LINUX-32-STATIC-LABEL: foo01:
 ; LINUX-32-STATIC:     movl    $dst, ptr
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: foo01:
+; LINUX-32-PIC-LABEL: foo01:
 ; LINUX-32-PIC:        movl    $dst, ptr
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: foo01:
-; LINUX-64-PIC:        movq    dst@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT:   movq    ptr@GOTPCREL(%rip), %rcx
-; LINUX-64-PIC-NEXT:   movq    %rax, (%rcx)
+; LINUX-64-PIC-LABEL: foo01:
+; LINUX-64-PIC:        movq    dst@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT:   movq    ptr@GOTPCREL(%rip), [[RCX:%r.x]]
+; LINUX-64-PIC-NEXT:   movq    [[RAX]], ([[RCX]])
 ; LINUX-64-PIC-NEXT:   ret
 
 ; DARWIN-32-STATIC: _foo01:
@@ -202,59 +202,59 @@ entry:
 ; DARWIN-32-STATIC-NEXT:       ret
 
 ; DARWIN-32-DYNAMIC: _foo01:
-; DARWIN-32-DYNAMIC:   movl    L_dst$non_lazy_ptr, %eax
-; DARWIN-32-DYNAMIC-NEXT:      movl    L_ptr$non_lazy_ptr, %ecx
-; DARWIN-32-DYNAMIC-NEXT:      movl    %eax, (%ecx)
+; DARWIN-32-DYNAMIC:   movl    L_dst$non_lazy_ptr, [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    L_ptr$non_lazy_ptr, [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    [[EAX]], ([[ECX]])
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _foo01:
-; DARWIN-32-PIC:       call    "L3$pb"
-; DARWIN-32-PIC-NEXT: "L3$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  movl    L_dst$non_lazy_ptr-"L3$pb"(%eax), %ecx
-; DARWIN-32-PIC-NEXT:  movl    L_ptr$non_lazy_ptr-"L3$pb"(%eax), %eax
-; DARWIN-32-PIC-NEXT:  movl    %ecx, (%eax)
+; DARWIN-32-PIC:       calll   L2$pb
+; DARWIN-32-PIC-NEXT: L2$pb:
+; DARWIN-32-PIC-NEXT:  popl
+; DARWIN-32-PIC-NEXT:  movl    L_dst$non_lazy_ptr-L2$pb(
+; DARWIN-32-PIC-NEXT:  movl    L_ptr$non_lazy_ptr-L2$pb(
+; DARWIN-32-PIC-NEXT:  movl
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _foo01:
-; DARWIN-64-STATIC:    movq    _dst@GOTPCREL(%rip), %rax
-; DARWIN-64-STATIC-NEXT:       movq    _ptr@GOTPCREL(%rip), %rcx
-; DARWIN-64-STATIC-NEXT:       movq    %rax, (%rcx)
+; DARWIN-64-STATIC:    movq    _dst@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movq    _ptr@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movq    [[RAX]], ([[RCX]])
 ; DARWIN-64-STATIC-NEXT:       ret
 
 ; DARWIN-64-DYNAMIC: _foo01:
-; DARWIN-64-DYNAMIC:   movq    _dst@GOTPCREL(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT:      movq    _ptr@GOTPCREL(%rip), %rcx
-; DARWIN-64-DYNAMIC-NEXT:      movq    %rax, (%rcx)
+; DARWIN-64-DYNAMIC:   movq    _dst@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movq    _ptr@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movq    [[RAX]], ([[RCX]])
 ; DARWIN-64-DYNAMIC-NEXT:      ret
 
 ; DARWIN-64-PIC: _foo01:
-; DARWIN-64-PIC:       movq    _dst@GOTPCREL(%rip), %rax
-; DARWIN-64-PIC-NEXT:  movq    _ptr@GOTPCREL(%rip), %rcx
-; DARWIN-64-PIC-NEXT:  movq    %rax, (%rcx)
+; DARWIN-64-PIC:       movq    _dst@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movq    _ptr@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movq    [[RAX]], ([[RCX]])
 ; DARWIN-64-PIC-NEXT:  ret
 }
 
 define void @fxo01() nounwind {
 entry:
-       store i32* getelementptr ([32 x i32]* @xdst, i32 0, i32 0), i32** @ptr, align 8
+       store i32* getelementptr ([32 x i32], [32 x i32]* @xdst, i32 0, i32 0), i32** @ptr, align 8
        ret void
-; LINUX-64-STATIC: fxo01:
+; LINUX-64-STATIC-LABEL: fxo01:
 ; LINUX-64-STATIC: movq        $xdst, ptr
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: fxo01:
+; LINUX-32-STATIC-LABEL: fxo01:
 ; LINUX-32-STATIC:     movl    $xdst, ptr
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: fxo01:
+; LINUX-32-PIC-LABEL: fxo01:
 ; LINUX-32-PIC:        movl    $xdst, ptr
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: fxo01:
-; LINUX-64-PIC:        movq    xdst@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT:   movq    ptr@GOTPCREL(%rip), %rcx
-; LINUX-64-PIC-NEXT:   movq    %rax, (%rcx)
+; LINUX-64-PIC-LABEL: fxo01:
+; LINUX-64-PIC:        movq    xdst@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT:   movq    ptr@GOTPCREL(%rip), [[RCX:%r.x]]
+; LINUX-64-PIC-NEXT:   movq    [[RAX]], ([[RCX]])
 ; LINUX-64-PIC-NEXT:   ret
 
 ; DARWIN-32-STATIC: _fxo01:
@@ -262,284 +262,284 @@ entry:
 ; DARWIN-32-STATIC-NEXT:       ret
 
 ; DARWIN-32-DYNAMIC: _fxo01:
-; DARWIN-32-DYNAMIC:   movl    L_xdst$non_lazy_ptr, %eax
-; DARWIN-32-DYNAMIC-NEXT:      movl    L_ptr$non_lazy_ptr, %ecx
-; DARWIN-32-DYNAMIC-NEXT:      movl    %eax, (%ecx)
+; DARWIN-32-DYNAMIC:   movl    L_xdst$non_lazy_ptr, [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    L_ptr$non_lazy_ptr, [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    [[EAX]], ([[ECX]])
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _fxo01:
-; DARWIN-32-PIC:       call    "L4$pb"
-; DARWIN-32-PIC-NEXT: "L4$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  movl    L_xdst$non_lazy_ptr-"L4$pb"(%eax), %ecx
-; DARWIN-32-PIC-NEXT:  movl    L_ptr$non_lazy_ptr-"L4$pb"(%eax), %eax
-; DARWIN-32-PIC-NEXT:  movl    %ecx, (%eax)
+; DARWIN-32-PIC:       calll   L3$pb
+; DARWIN-32-PIC-NEXT: L3$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[R0:%e..]]
+; DARWIN-32-PIC-NEXT:  movl    L_xdst$non_lazy_ptr-L3$pb([[R0]]), [[R1:%e..]]
+; DARWIN-32-PIC-NEXT:  movl    L_ptr$non_lazy_ptr-L3$pb([[R0]]), [[R2:%e..]]
+; DARWIN-32-PIC-NEXT:  movl    [[R1:%e..]], ([[R2]])
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _fxo01:
-; DARWIN-64-STATIC:    movq    _xdst@GOTPCREL(%rip), %rax
-; DARWIN-64-STATIC-NEXT:       movq    _ptr@GOTPCREL(%rip), %rcx
-; DARWIN-64-STATIC-NEXT:       movq    %rax, (%rcx)
+; DARWIN-64-STATIC:    movq    _xdst@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movq    _ptr@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movq    [[RAX]], ([[RCX]])
 ; DARWIN-64-STATIC-NEXT:       ret
 
 ; DARWIN-64-DYNAMIC: _fxo01:
-; DARWIN-64-DYNAMIC:   movq    _xdst@GOTPCREL(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT:      movq    _ptr@GOTPCREL(%rip), %rcx
-; DARWIN-64-DYNAMIC-NEXT:      movq    %rax, (%rcx)
+; DARWIN-64-DYNAMIC:   movq    _xdst@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movq    _ptr@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movq    [[RAX]], ([[RCX]])
 ; DARWIN-64-DYNAMIC-NEXT:      ret
 
 ; DARWIN-64-PIC: _fxo01:
-; DARWIN-64-PIC:       movq    _xdst@GOTPCREL(%rip), %rax
-; DARWIN-64-PIC-NEXT:  movq    _ptr@GOTPCREL(%rip), %rcx
-; DARWIN-64-PIC-NEXT:  movq    %rax, (%rcx)
+; DARWIN-64-PIC:       movq    _xdst@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movq    _ptr@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movq    [[RAX]], ([[RCX]])
 ; DARWIN-64-PIC-NEXT:  ret
 }
 
 define void @foo02() nounwind {
 entry:
-       %0 = load i32** @ptr, align 8
-       %1 = load i32* getelementptr ([131072 x i32]* @src, i32 0, i64 0), align 4
+       %0 = load i32*, i32** @ptr, align 8
+       %1 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @src, i32 0, i64 0), align 4
        store i32 %1, i32* %0, align 4
        ret void
-; LINUX-64-STATIC: foo02:
+; LINUX-64-STATIC-LABEL: foo02:
 ; LINUX-64-STATIC: movl    src(%rip), %
 ; LINUX-64-STATIC: movq    ptr(%rip), %
 ; LINUX-64-STATIC: movl
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: foo02:
-; LINUX-32-STATIC:     movl    src, %eax
-; LINUX-32-STATIC-NEXT:        movl    ptr, %ecx
-; LINUX-32-STATIC-NEXT:        movl    %eax, (%ecx)
+; LINUX-32-STATIC-LABEL: foo02:
+; LINUX-32-STATIC:     movl    src, [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT:        movl    ptr, [[ECX:%e.x]]
+; LINUX-32-STATIC-NEXT:        movl    [[EAX]], ([[ECX]])
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: foo02:
-; LINUX-32-PIC:        movl    src, %eax
-; LINUX-32-PIC-NEXT:   movl    ptr, %ecx
-; LINUX-32-PIC-NEXT:   movl    %eax, (%ecx)
+; LINUX-32-PIC-LABEL: foo02:
+; LINUX-32-PIC:        movl    src, [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT:   movl    ptr, [[ECX:%e.x]]
+; LINUX-32-PIC-NEXT:   movl    [[EAX]], ([[ECX]])
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: foo02:
-; LINUX-64-PIC:        movq    src@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT:   movl    (%rax), %eax
-; LINUX-64-PIC-NEXT:   movq    ptr@GOTPCREL(%rip), %rcx
-; LINUX-64-PIC-NEXT:   movq    (%rcx), %rcx
-; LINUX-64-PIC-NEXT:   movl    %eax, (%rcx)
+; LINUX-64-PIC-LABEL: foo02:
+; LINUX-64-PIC:        movq    src@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT:   movl    ([[RAX]]), [[EAX:%e.x]]
+; LINUX-64-PIC-NEXT:   movq    ptr@GOTPCREL(%rip), [[RCX:%r.x]]
+; LINUX-64-PIC-NEXT:   movq    ([[RCX]]), [[RCX:%r.x]]
+; LINUX-64-PIC-NEXT:   movl    [[EAX]], ([[RCX]])
 ; LINUX-64-PIC-NEXT:   ret
 
 ; DARWIN-32-STATIC: _foo02:
-; DARWIN-32-STATIC:    movl    _src, %eax
-; DARWIN-32-STATIC-NEXT:       movl    _ptr, %ecx
-; DARWIN-32-STATIC-NEXT:       movl    %eax, (%ecx)
+; DARWIN-32-STATIC:    movl    _src, [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       movl    _ptr, [[ECX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       movl    [[EAX]], ([[ECX]])
 ; DARWIN-32-STATIC-NEXT:       ret
 
 ; DARWIN-32-DYNAMIC: _foo02:
-; DARWIN-32-DYNAMIC:   movl    L_src$non_lazy_ptr, %eax
-; DARWIN-32-DYNAMIC-NEXT:      movl    (%eax), %eax
-; DARWIN-32-DYNAMIC-NEXT:      movl    L_ptr$non_lazy_ptr, %ecx
-; DARWIN-32-DYNAMIC-NEXT:      movl    (%ecx), %ecx
-; DARWIN-32-DYNAMIC-NEXT:      movl    %eax, (%ecx)
+; DARWIN-32-DYNAMIC:   movl    L_src$non_lazy_ptr, [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    ([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    L_ptr$non_lazy_ptr, [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    ([[ECX]]), [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    [[EAX]], ([[ECX]])
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _foo02:
-; DARWIN-32-PIC:       call    "L5$pb"
-; DARWIN-32-PIC-NEXT: "L5$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  movl    L_src$non_lazy_ptr-"L5$pb"(%eax), %ecx
-; DARWIN-32-PIC-NEXT:  movl    (%ecx), %ecx
-; DARWIN-32-PIC-NEXT:  movl    L_ptr$non_lazy_ptr-"L5$pb"(%eax), %eax
-; DARWIN-32-PIC-NEXT:  movl    (%eax), %eax
-; DARWIN-32-PIC-NEXT:  movl    %ecx, (%eax)
+; DARWIN-32-PIC:       calll   L4$pb
+; DARWIN-32-PIC-NEXT: L4$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[R0:%e..]]
+; DARWIN-32-PIC-NEXT:  movl    L_src$non_lazy_ptr-L4$pb([[R0]]), [[R1:%e..]]
+; DARWIN-32-PIC-NEXT:  movl    ([[R1]]), [[R2:%e..]]
+; DARWIN-32-PIC-NEXT:  movl    L_ptr$non_lazy_ptr-L4$pb([[R0]]), [[R3:%e..]]
+; DARWIN-32-PIC-NEXT:  movl    ([[R3]]), [[R4:%e..]]
+; DARWIN-32-PIC-NEXT:  movl    [[R2]], ([[R4]])
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _foo02:
-; DARWIN-64-STATIC:    movq    _src@GOTPCREL(%rip), %rax
-; DARWIN-64-STATIC-NEXT:       movl    (%rax), %eax
-; DARWIN-64-STATIC-NEXT:       movq    _ptr@GOTPCREL(%rip), %rcx
-; DARWIN-64-STATIC-NEXT:       movq    (%rcx), %rcx
-; DARWIN-64-STATIC-NEXT:       movl    %eax, (%rcx)
+; DARWIN-64-STATIC:    movq    _src@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movl    ([[RAX]]), [[EAX:%e.x]]
+; DARWIN-64-STATIC-NEXT:       movq    _ptr@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movq    ([[RCX]]), [[RCX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movl    [[EAX]], ([[RCX]])
 ; DARWIN-64-STATIC-NEXT:       ret
 
 ; DARWIN-64-DYNAMIC: _foo02:
-; DARWIN-64-DYNAMIC:   movq    _src@GOTPCREL(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT:      movl    (%rax), %eax
-; DARWIN-64-DYNAMIC-NEXT:      movq    _ptr@GOTPCREL(%rip), %rcx
-; DARWIN-64-DYNAMIC-NEXT:      movq    (%rcx), %rcx
-; DARWIN-64-DYNAMIC-NEXT:      movl    %eax, (%rcx)
+; DARWIN-64-DYNAMIC:   movq    _src@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movl    ([[RAX]]), [[EAX:%e.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movq    _ptr@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movq    ([[RCX]]), [[RCX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movl    [[EAX]], ([[RCX]])
 ; DARWIN-64-DYNAMIC-NEXT:      ret
 
 ; DARWIN-64-PIC: _foo02:
-; DARWIN-64-PIC:       movq    _src@GOTPCREL(%rip), %rax
-; DARWIN-64-PIC-NEXT:  movl    (%rax), %eax
-; DARWIN-64-PIC-NEXT:  movq    _ptr@GOTPCREL(%rip), %rcx
-; DARWIN-64-PIC-NEXT:  movq    (%rcx), %rcx
-; DARWIN-64-PIC-NEXT:  movl    %eax, (%rcx)
+; DARWIN-64-PIC:       movq    _src@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movl    ([[RAX]]), [[EAX:%e.x]]
+; DARWIN-64-PIC-NEXT:  movq    _ptr@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movq    ([[RCX]]), [[RCX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movl    [[EAX]], ([[RCX]])
 ; DARWIN-64-PIC-NEXT:  ret
 }
 
 define void @fxo02() nounwind {
 entry:
-       %0 = load i32** @ptr, align 8
-       %1 = load i32* getelementptr ([32 x i32]* @xsrc, i32 0, i64 0), align 4
+       %0 = load i32*, i32** @ptr, align 8
+       %1 = load i32, i32* getelementptr ([32 x i32], [32 x i32]* @xsrc, i32 0, i64 0), align 4
        store i32 %1, i32* %0, align 4
-; LINUX-64-STATIC: fxo02:
+; LINUX-64-STATIC-LABEL: fxo02:
 ; LINUX-64-STATIC: movl    xsrc(%rip), %
 ; LINUX-64-STATIC: movq    ptr(%rip), %
 ; LINUX-64-STATIC: movl
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: fxo02:
-; LINUX-32-STATIC:     movl    xsrc, %eax
-; LINUX-32-STATIC-NEXT:        movl    ptr, %ecx
-; LINUX-32-STATIC-NEXT:        movl    %eax, (%ecx)
+; LINUX-32-STATIC-LABEL: fxo02:
+; LINUX-32-STATIC:     movl    xsrc, [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT:        movl    ptr, [[ECX:%e.x]]
+; LINUX-32-STATIC-NEXT:        movl    [[EAX]], ([[ECX]])
 ; LINUX-32-STATIC-NEXT:        ret
        ret void
 
-; LINUX-32-PIC: fxo02:
-; LINUX-32-PIC:        movl    xsrc, %eax
-; LINUX-32-PIC-NEXT:   movl    ptr, %ecx
-; LINUX-32-PIC-NEXT:   movl    %eax, (%ecx)
+; LINUX-32-PIC-LABEL: fxo02:
+; LINUX-32-PIC:        movl    xsrc, [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT:   movl    ptr, [[ECX:%e.x]]
+; LINUX-32-PIC-NEXT:   movl    [[EAX]], ([[ECX]])
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: fxo02:
-; LINUX-64-PIC:        movq    xsrc@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT:   movl    (%rax), %eax
-; LINUX-64-PIC-NEXT:   movq    ptr@GOTPCREL(%rip), %rcx
-; LINUX-64-PIC-NEXT:   movq    (%rcx), %rcx
-; LINUX-64-PIC-NEXT:   movl    %eax, (%rcx)
+; LINUX-64-PIC-LABEL: fxo02:
+; LINUX-64-PIC:        movq    xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT:   movl    ([[RAX]]), [[EAX:%e.x]]
+; LINUX-64-PIC-NEXT:   movq    ptr@GOTPCREL(%rip), [[RCX:%r.x]]
+; LINUX-64-PIC-NEXT:   movq    ([[RCX]]), [[RCX:%r.x]]
+; LINUX-64-PIC-NEXT:   movl    [[EAX]], ([[RCX]])
 ; LINUX-64-PIC-NEXT:   ret
 
 ; DARWIN-32-STATIC: _fxo02:
-; DARWIN-32-STATIC:    movl    _xsrc, %eax
-; DARWIN-32-STATIC-NEXT:       movl    _ptr, %ecx
-; DARWIN-32-STATIC-NEXT:       movl    %eax, (%ecx)
+; DARWIN-32-STATIC:    movl    _xsrc, [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       movl    _ptr, [[ECX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       movl    [[EAX]], ([[ECX]])
 ; DARWIN-32-STATIC-NEXT:       ret
 
 ; DARWIN-32-DYNAMIC: _fxo02:
-; DARWIN-32-DYNAMIC:   movl    L_xsrc$non_lazy_ptr, %eax
-; DARWIN-32-DYNAMIC-NEXT:      movl    (%eax), %eax
-; DARWIN-32-DYNAMIC-NEXT:      movl    L_ptr$non_lazy_ptr, %ecx
-; DARWIN-32-DYNAMIC-NEXT:      movl    (%ecx), %ecx
-; DARWIN-32-DYNAMIC-NEXT:      movl    %eax, (%ecx)
+; DARWIN-32-DYNAMIC:   movl    L_xsrc$non_lazy_ptr, [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    ([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    L_ptr$non_lazy_ptr, [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    ([[ECX]]), [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    [[EAX]], ([[ECX]])
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _fxo02:
-; DARWIN-32-PIC:       call    "L6$pb"
-; DARWIN-32-PIC-NEXT: "L6$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  movl    L_xsrc$non_lazy_ptr-"L6$pb"(%eax), %ecx
-; DARWIN-32-PIC-NEXT:  movl    (%ecx), %ecx
-; DARWIN-32-PIC-NEXT:  movl    L_ptr$non_lazy_ptr-"L6$pb"(%eax), %eax
-; DARWIN-32-PIC-NEXT:  movl    (%eax), %eax
-; DARWIN-32-PIC-NEXT:  movl    %ecx, (%eax)
+; DARWIN-32-PIC:       calll   L5$pb
+; DARWIN-32-PIC-NEXT: L5$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    L_xsrc$non_lazy_ptr-L5$pb([[EAX]]), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    ([[ECX]]), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    L_ptr$non_lazy_ptr-L5$pb([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    ([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    [[ECX]], ([[EAX]])
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _fxo02:
-; DARWIN-64-STATIC:    movq    _xsrc@GOTPCREL(%rip), %rax
-; DARWIN-64-STATIC-NEXT:       movl    (%rax), %eax
-; DARWIN-64-STATIC-NEXT:       movq    _ptr@GOTPCREL(%rip), %rcx
-; DARWIN-64-STATIC-NEXT:       movq    (%rcx), %rcx
-; DARWIN-64-STATIC-NEXT:       movl    %eax, (%rcx)
+; DARWIN-64-STATIC:    movq    _xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movl    ([[RAX]]), [[EAX:%e.x]]
+; DARWIN-64-STATIC-NEXT:       movq    _ptr@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movq    ([[RCX]]), [[RCX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movl    [[EAX]], ([[RCX]])
 ; DARWIN-64-STATIC-NEXT:       ret
 
 ; DARWIN-64-DYNAMIC: _fxo02:
-; DARWIN-64-DYNAMIC:   movq    _xsrc@GOTPCREL(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT:      movl    (%rax), %eax
-; DARWIN-64-DYNAMIC-NEXT:      movq    _ptr@GOTPCREL(%rip), %rcx
-; DARWIN-64-DYNAMIC-NEXT:      movq    (%rcx), %rcx
-; DARWIN-64-DYNAMIC-NEXT:      movl    %eax, (%rcx)
+; DARWIN-64-DYNAMIC:   movq    _xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movl    ([[RAX]]), [[EAX:%e.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movq    _ptr@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movq    ([[RCX]]), [[RCX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movl    [[EAX]], ([[RCX]])
 ; DARWIN-64-DYNAMIC-NEXT:      ret
 
 ; DARWIN-64-PIC: _fxo02:
-; DARWIN-64-PIC:       movq    _xsrc@GOTPCREL(%rip), %rax
-; DARWIN-64-PIC-NEXT:  movl    (%rax), %eax
-; DARWIN-64-PIC-NEXT:  movq    _ptr@GOTPCREL(%rip), %rcx
-; DARWIN-64-PIC-NEXT:  movq    (%rcx), %rcx
-; DARWIN-64-PIC-NEXT:  movl    %eax, (%rcx)
+; DARWIN-64-PIC:       movq    _xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movl    ([[RAX]]), [[EAX:%e.x]]
+; DARWIN-64-PIC-NEXT:  movq    _ptr@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movq    ([[RCX]]), [[RCX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movl    [[EAX]], ([[RCX]])
 ; DARWIN-64-PIC-NEXT:  ret
 }
 
 define void @foo03() nounwind {
 entry:
-       %0 = load i32* getelementptr ([131072 x i32]* @dsrc, i32 0, i64 0), align 32
-       store i32 %0, i32* getelementptr ([131072 x i32]* @ddst, i32 0, i64 0), align 32
+       %0 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @dsrc, i32 0, i64 0), align 32
+       store i32 %0, i32* getelementptr ([131072 x i32], [131072 x i32]* @ddst, i32 0, i64 0), align 32
        ret void
-; LINUX-64-STATIC: foo03:
-; LINUX-64-STATIC: movl    dsrc(%rip), %eax
-; LINUX-64-STATIC: movl    %eax, ddst
+; LINUX-64-STATIC-LABEL: foo03:
+; LINUX-64-STATIC: movl    dsrc(%rip), [[EAX:%e.x]]
+; LINUX-64-STATIC: movl    [[EAX]], ddst
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: foo03:
-; LINUX-32-STATIC:     movl    dsrc, %eax
-; LINUX-32-STATIC-NEXT:        movl    %eax, ddst
+; LINUX-32-STATIC-LABEL: foo03:
+; LINUX-32-STATIC:     movl    dsrc, [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT:        movl    [[EAX]], ddst
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: foo03:
-; LINUX-32-PIC:        movl    dsrc, %eax
-; LINUX-32-PIC-NEXT:   movl    %eax, ddst
+; LINUX-32-PIC-LABEL: foo03:
+; LINUX-32-PIC:        movl    dsrc, [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT:   movl    [[EAX]], ddst
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: foo03:
-; LINUX-64-PIC:        movq    dsrc@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT:   movl    (%rax), %eax
-; LINUX-64-PIC-NEXT:   movq    ddst@GOTPCREL(%rip), %rcx
-; LINUX-64-PIC-NEXT:   movl    %eax, (%rcx)
+; LINUX-64-PIC-LABEL: foo03:
+; LINUX-64-PIC:        movq    dsrc@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT:   movl    ([[RAX]]), [[EAX:%e.x]]
+; LINUX-64-PIC-NEXT:   movq    ddst@GOTPCREL(%rip), [[RCX:%r.x]]
+; LINUX-64-PIC-NEXT:   movl    [[EAX]], ([[RCX]])
 ; LINUX-64-PIC-NEXT:   ret
 
 ; DARWIN-32-STATIC: _foo03:
-; DARWIN-32-STATIC:    movl    _dsrc, %eax
-; DARWIN-32-STATIC-NEXT:       movl    %eax, _ddst
+; DARWIN-32-STATIC:    movl    _dsrc, [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       movl    [[EAX]], _ddst
 ; DARWIN-32-STATIC-NEXT:       ret
 
 ; DARWIN-32-DYNAMIC: _foo03:
-; DARWIN-32-DYNAMIC:   movl    _dsrc, %eax
-; DARWIN-32-DYNAMIC-NEXT:      movl    %eax, _ddst
+; DARWIN-32-DYNAMIC:   movl    _dsrc, [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    [[EAX]], _ddst
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _foo03:
-; DARWIN-32-PIC:       call    "L7$pb"
-; DARWIN-32-PIC-NEXT: "L7$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  movl    _dsrc-"L7$pb"(%eax), %ecx
-; DARWIN-32-PIC-NEXT:  movl    %ecx, _ddst-"L7$pb"(%eax)
+; DARWIN-32-PIC:       calll   L6$pb
+; DARWIN-32-PIC-NEXT: L6$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    _dsrc-L6$pb([[EAX]]), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    [[ECX]], _ddst-L6$pb([[EAX]])
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _foo03:
-; DARWIN-64-STATIC:    movl    _dsrc(%rip), %eax
-; DARWIN-64-STATIC-NEXT:       movl    %eax, _ddst(%rip)
+; DARWIN-64-STATIC:    movl    _dsrc(%rip), [[EAX:%e.x]]
+; DARWIN-64-STATIC-NEXT:       movl    [[EAX]], _ddst(%rip)
 ; DARWIN-64-STATIC-NEXT:       ret
 
 ; DARWIN-64-DYNAMIC: _foo03:
-; DARWIN-64-DYNAMIC:   movl    _dsrc(%rip), %eax
-; DARWIN-64-DYNAMIC-NEXT:      movl    %eax, _ddst(%rip)
+; DARWIN-64-DYNAMIC:   movl    _dsrc(%rip), [[EAX:%e.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movl    [[EAX]], _ddst(%rip)
 ; DARWIN-64-DYNAMIC-NEXT:      ret
 
 ; DARWIN-64-PIC: _foo03:
-; DARWIN-64-PIC:       movl    _dsrc(%rip), %eax
-; DARWIN-64-PIC-NEXT:  movl    %eax, _ddst(%rip)
+; DARWIN-64-PIC:       movl    _dsrc(%rip), [[EAX:%e.x]]
+; DARWIN-64-PIC-NEXT:  movl    [[EAX]], _ddst(%rip)
 ; DARWIN-64-PIC-NEXT:  ret
 }
 
 define void @foo04() nounwind {
 entry:
-       store i32* getelementptr ([131072 x i32]* @ddst, i32 0, i32 0), i32** @dptr, align 8
+       store i32* getelementptr ([131072 x i32], [131072 x i32]* @ddst, i32 0, i32 0), i32** @dptr, align 8
        ret void
-; LINUX-64-STATIC: foo04:
+; LINUX-64-STATIC-LABEL: foo04:
 ; LINUX-64-STATIC: movq    $ddst, dptr
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: foo04:
+; LINUX-32-STATIC-LABEL: foo04:
 ; LINUX-32-STATIC:     movl    $ddst, dptr
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: foo04:
+; LINUX-32-PIC-LABEL: foo04:
 ; LINUX-32-PIC:        movl    $ddst, dptr
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: foo04:
-; LINUX-64-PIC:        movq    ddst@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT:   movq    dptr@GOTPCREL(%rip), %rcx
-; LINUX-64-PIC-NEXT:   movq    %rax, (%rcx)
+; LINUX-64-PIC-LABEL: foo04:
+; LINUX-64-PIC:        movq    ddst@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT:   movq    dptr@GOTPCREL(%rip), [[RCX:%r.x]]
+; LINUX-64-PIC-NEXT:   movq    [[RAX]], ([[RCX]])
 ; LINUX-64-PIC-NEXT:   ret
 
 ; DARWIN-32-STATIC: _foo04:
@@ -551,179 +551,179 @@ entry:
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _foo04:
-; DARWIN-32-PIC:       call    "L8$pb"
-; DARWIN-32-PIC-NEXT: "L8$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  leal    _ddst-"L8$pb"(%eax), %ecx
-; DARWIN-32-PIC-NEXT:  movl    %ecx, _dptr-"L8$pb"(%eax)
+; DARWIN-32-PIC:       calll   L7$pb
+; DARWIN-32-PIC-NEXT: L7$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  leal    _ddst-L7$pb([[EAX]]), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    [[ECX]], _dptr-L7$pb([[EAX]])
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _foo04:
-; DARWIN-64-STATIC:    leaq    _ddst(%rip), %rax
-; DARWIN-64-STATIC-NEXT:       movq    %rax, _dptr(%rip)
+; DARWIN-64-STATIC:    leaq    _ddst(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movq    [[RAX]], _dptr(%rip)
 ; DARWIN-64-STATIC-NEXT:       ret
 
 ; DARWIN-64-DYNAMIC: _foo04:
-; DARWIN-64-DYNAMIC:   leaq    _ddst(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT:      movq    %rax, _dptr(%rip)
+; DARWIN-64-DYNAMIC:   leaq    _ddst(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movq    [[RAX]], _dptr(%rip)
 ; DARWIN-64-DYNAMIC-NEXT:      ret
 
 ; DARWIN-64-PIC: _foo04:
-; DARWIN-64-PIC:       leaq    _ddst(%rip), %rax
-; DARWIN-64-PIC-NEXT:  movq    %rax, _dptr(%rip)
+; DARWIN-64-PIC:       leaq    _ddst(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movq    [[RAX]], _dptr(%rip)
 ; DARWIN-64-PIC-NEXT:  ret
 }
 
 define void @foo05() nounwind {
 entry:
-       %0 = load i32** @dptr, align 8
-       %1 = load i32* getelementptr ([131072 x i32]* @dsrc, i32 0, i64 0), align 32
+       %0 = load i32*, i32** @dptr, align 8
+       %1 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @dsrc, i32 0, i64 0), align 32
        store i32 %1, i32* %0, align 4
        ret void
-; LINUX-64-STATIC: foo05:
+; LINUX-64-STATIC-LABEL: foo05:
 ; LINUX-64-STATIC: movl    dsrc(%rip), %
 ; LINUX-64-STATIC: movq    dptr(%rip), %
 ; LINUX-64-STATIC: movl
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: foo05:
-; LINUX-32-STATIC:     movl    dsrc, %eax
-; LINUX-32-STATIC-NEXT:        movl    dptr, %ecx
-; LINUX-32-STATIC-NEXT:        movl    %eax, (%ecx)
+; LINUX-32-STATIC-LABEL: foo05:
+; LINUX-32-STATIC:     movl    dsrc, [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT:        movl    dptr, [[ECX:%e.x]]
+; LINUX-32-STATIC-NEXT:        movl    [[EAX]], ([[ECX]])
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: foo05:
-; LINUX-32-PIC:        movl    dsrc, %eax
-; LINUX-32-PIC-NEXT:   movl    dptr, %ecx
-; LINUX-32-PIC-NEXT:   movl    %eax, (%ecx)
+; LINUX-32-PIC-LABEL: foo05:
+; LINUX-32-PIC:        movl    dsrc, [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT:   movl    dptr, [[ECX:%e.x]]
+; LINUX-32-PIC-NEXT:   movl    [[EAX]], ([[ECX]])
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: foo05:
-; LINUX-64-PIC:        movq    dsrc@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT:   movl    (%rax), %eax
-; LINUX-64-PIC-NEXT:   movq    dptr@GOTPCREL(%rip), %rcx
-; LINUX-64-PIC-NEXT:   movq    (%rcx), %rcx
-; LINUX-64-PIC-NEXT:   movl    %eax, (%rcx)
+; LINUX-64-PIC-LABEL: foo05:
+; LINUX-64-PIC:        movq    dsrc@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT:   movl    ([[RAX]]), [[EAX:%e.x]]
+; LINUX-64-PIC-NEXT:   movq    dptr@GOTPCREL(%rip), [[RCX:%r.x]]
+; LINUX-64-PIC-NEXT:   movq    ([[RCX]]), [[RCX:%r.x]]
+; LINUX-64-PIC-NEXT:   movl    [[EAX]], ([[RCX]])
 ; LINUX-64-PIC-NEXT:   ret
 
 ; DARWIN-32-STATIC: _foo05:
-; DARWIN-32-STATIC:    movl    _dsrc, %eax
-; DARWIN-32-STATIC-NEXT:       movl    _dptr, %ecx
-; DARWIN-32-STATIC-NEXT:       movl    %eax, (%ecx)
+; DARWIN-32-STATIC:    movl    _dsrc, [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       movl    _dptr, [[ECX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       movl    [[EAX]], ([[ECX]])
 ; DARWIN-32-STATIC-NEXT:       ret
 
 ; DARWIN-32-DYNAMIC: _foo05:
-; DARWIN-32-DYNAMIC:   movl    _dsrc, %eax
-; DARWIN-32-DYNAMIC-NEXT:      movl    _dptr, %ecx
-; DARWIN-32-DYNAMIC-NEXT:      movl    %eax, (%ecx)
+; DARWIN-32-DYNAMIC:   movl    _dsrc, [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    _dptr, [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    [[EAX]], ([[ECX]])
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _foo05:
-; DARWIN-32-PIC:       call    "L9$pb"
-; DARWIN-32-PIC-NEXT: "L9$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  movl    _dsrc-"L9$pb"(%eax), %ecx
-; DARWIN-32-PIC-NEXT:  movl    _dptr-"L9$pb"(%eax), %eax
-; DARWIN-32-PIC-NEXT:  movl    %ecx, (%eax)
+; DARWIN-32-PIC:       calll   L8$pb
+; DARWIN-32-PIC-NEXT: L8$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    _dsrc-L8$pb([[EAX]]), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    _dptr-L8$pb([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    [[ECX]], ([[EAX]])
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _foo05:
-; DARWIN-64-STATIC:    movl    _dsrc(%rip), %eax
-; DARWIN-64-STATIC-NEXT:       movq    _dptr(%rip), %rcx
-; DARWIN-64-STATIC-NEXT:       movl    %eax, (%rcx)
+; DARWIN-64-STATIC:    movl    _dsrc(%rip), [[EAX:%e.x]]
+; DARWIN-64-STATIC-NEXT:       movq    _dptr(%rip), [[RCX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movl    [[EAX]], ([[RCX]])
 ; DARWIN-64-STATIC-NEXT:       ret
 
 ; DARWIN-64-DYNAMIC: _foo05:
-; DARWIN-64-DYNAMIC:   movl    _dsrc(%rip), %eax
-; DARWIN-64-DYNAMIC-NEXT:      movq    _dptr(%rip), %rcx
-; DARWIN-64-DYNAMIC-NEXT:      movl    %eax, (%rcx)
+; DARWIN-64-DYNAMIC:   movl    _dsrc(%rip), [[EAX:%e.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movq    _dptr(%rip), [[RCX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movl    [[EAX]], ([[RCX]])
 ; DARWIN-64-DYNAMIC-NEXT:      ret
 
 ; DARWIN-64-PIC: _foo05:
-; DARWIN-64-PIC:       movl    _dsrc(%rip), %eax
-; DARWIN-64-PIC-NEXT:  movq    _dptr(%rip), %rcx
-; DARWIN-64-PIC-NEXT:  movl    %eax, (%rcx)
+; DARWIN-64-PIC:       movl    _dsrc(%rip), [[EAX:%e.x]]
+; DARWIN-64-PIC-NEXT:  movq    _dptr(%rip), [[RCX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movl    [[EAX]], ([[RCX]])
 ; DARWIN-64-PIC-NEXT:  ret
 }
 
 define void @foo06() nounwind {
 entry:
-       %0 = load i32* getelementptr ([131072 x i32]* @lsrc, i32 0, i64 0), align 4
-       store i32 %0, i32* getelementptr ([131072 x i32]* @ldst, i32 0, i64 0), align 4
+       %0 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @lsrc, i32 0, i64 0), align 4
+       store i32 %0, i32* getelementptr ([131072 x i32], [131072 x i32]* @ldst, i32 0, i64 0), align 4
        ret void
-; LINUX-64-STATIC: foo06:
-; LINUX-64-STATIC: movl    lsrc(%rip), %eax
-; LINUX-64-STATIC: movl    %eax, ldst(%rip)
+; LINUX-64-STATIC-LABEL: foo06:
+; LINUX-64-STATIC: movl    lsrc(%rip), [[EAX:%e.x]]
+; LINUX-64-STATIC: movl    [[EAX]], ldst(%rip)
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: foo06:
-; LINUX-32-STATIC:     movl    lsrc, %eax
-; LINUX-32-STATIC-NEXT:        movl    %eax, ldst
+; LINUX-32-STATIC-LABEL: foo06:
+; LINUX-32-STATIC:     movl    lsrc, [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT:        movl    [[EAX]], ldst
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: foo06:
-; LINUX-32-PIC:        movl    lsrc, %eax
-; LINUX-32-PIC-NEXT:   movl    %eax, ldst
+; LINUX-32-PIC-LABEL: foo06:
+; LINUX-32-PIC:        movl    lsrc, [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT:   movl    [[EAX]], ldst
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: foo06:
-; LINUX-64-PIC:        movl    lsrc(%rip), %eax
-; LINUX-64-PIC-NEXT:   movl    %eax, ldst(%rip)
+; LINUX-64-PIC-LABEL: foo06:
+; LINUX-64-PIC:        movl    lsrc(%rip), [[EAX:%e.x]]
+; LINUX-64-PIC-NEXT:   movl    [[EAX]], ldst(%rip)
 ; LINUX-64-PIC-NEXT:   ret
 
 ; DARWIN-32-STATIC: _foo06:
-; DARWIN-32-STATIC:    movl    _lsrc, %eax
-; DARWIN-32-STATIC-NEXT:       movl    %eax, _ldst
+; DARWIN-32-STATIC:    movl    _lsrc, [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       movl    [[EAX]], _ldst
 ; DARWIN-32-STATIC-NEXT:       ret
 
 ; DARWIN-32-DYNAMIC: _foo06:
-; DARWIN-32-DYNAMIC:   movl    _lsrc, %eax
-; DARWIN-32-DYNAMIC-NEXT:      movl    %eax, _ldst
+; DARWIN-32-DYNAMIC:   movl    _lsrc, [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    [[EAX]], _ldst
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _foo06:
-; DARWIN-32-PIC:       call    "L10$pb"
-; DARWIN-32-PIC-NEXT: "L10$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  movl    _lsrc-"L10$pb"(%eax), %ecx
-; DARWIN-32-PIC-NEXT:  movl    %ecx, _ldst-"L10$pb"(%eax)
+; DARWIN-32-PIC:       calll   L9$pb
+; DARWIN-32-PIC-NEXT: L9$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    _lsrc-L9$pb([[EAX]]), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    [[ECX]], _ldst-L9$pb([[EAX]])
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _foo06:
-; DARWIN-64-STATIC:    movl    _lsrc(%rip), %eax
-; DARWIN-64-STATIC-NEXT:       movl    %eax, _ldst(%rip)
+; DARWIN-64-STATIC:    movl    _lsrc(%rip), [[EAX:%e.x]]
+; DARWIN-64-STATIC-NEXT:       movl    [[EAX]], _ldst(%rip)
 ; DARWIN-64-STATIC-NEXT:       ret
 
 ; DARWIN-64-DYNAMIC: _foo06:
-; DARWIN-64-DYNAMIC:   movl    _lsrc(%rip), %eax
-; DARWIN-64-DYNAMIC-NEXT:      movl    %eax, _ldst(%rip)
+; DARWIN-64-DYNAMIC:   movl    _lsrc(%rip), [[EAX:%e.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movl    [[EAX]], _ldst(%rip)
 ; DARWIN-64-DYNAMIC-NEXT:      ret
 
 ; DARWIN-64-PIC: _foo06:
-; DARWIN-64-PIC:       movl    _lsrc(%rip), %eax
-; DARWIN-64-PIC-NEXT:  movl    %eax, _ldst(%rip)
+; DARWIN-64-PIC:       movl    _lsrc(%rip), [[EAX:%e.x]]
+; DARWIN-64-PIC-NEXT:  movl    [[EAX]], _ldst(%rip)
 ; DARWIN-64-PIC-NEXT:  ret
 }
 
 define void @foo07() nounwind {
 entry:
-       store i32* getelementptr ([131072 x i32]* @ldst, i32 0, i32 0), i32** @lptr, align 8
+       store i32* getelementptr ([131072 x i32], [131072 x i32]* @ldst, i32 0, i32 0), i32** @lptr, align 8
        ret void
-; LINUX-64-STATIC: foo07:
+; LINUX-64-STATIC-LABEL: foo07:
 ; LINUX-64-STATIC: movq    $ldst, lptr
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: foo07:
+; LINUX-32-STATIC-LABEL: foo07:
 ; LINUX-32-STATIC:     movl    $ldst, lptr
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: foo07:
+; LINUX-32-PIC-LABEL: foo07:
 ; LINUX-32-PIC:        movl    $ldst, lptr
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: foo07:
-; LINUX-64-PIC:        leaq    ldst(%rip), %rax
-; LINUX-64-PIC-NEXT:   movq    %rax, lptr(%rip)
+; LINUX-64-PIC-LABEL: foo07:
+; LINUX-64-PIC:        leaq    ldst(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT:   movq    [[RAX]], lptr(%rip)
 ; LINUX-64-PIC-NEXT:   ret
 
 ; DARWIN-32-STATIC: _foo07:
@@ -735,262 +735,262 @@ entry:
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _foo07:
-; DARWIN-32-PIC:       call    "L11$pb"
-; DARWIN-32-PIC-NEXT: "L11$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  leal    _ldst-"L11$pb"(%eax), %ecx
-; DARWIN-32-PIC-NEXT:  movl    %ecx, _lptr-"L11$pb"(%eax)
+; DARWIN-32-PIC:       calll   L10$pb
+; DARWIN-32-PIC-NEXT: L10$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  leal    _ldst-L10$pb([[EAX]]), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    [[ECX]], _lptr-L10$pb([[EAX]])
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _foo07:
-; DARWIN-64-STATIC:    leaq    _ldst(%rip), %rax
-; DARWIN-64-STATIC-NEXT:       movq    %rax, _lptr(%rip)
+; DARWIN-64-STATIC:    leaq    _ldst(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movq    [[RAX]], _lptr(%rip)
 ; DARWIN-64-STATIC-NEXT:       ret
 
 ; DARWIN-64-DYNAMIC: _foo07:
-; DARWIN-64-DYNAMIC:   leaq    _ldst(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT:      movq    %rax, _lptr(%rip)
+; DARWIN-64-DYNAMIC:   leaq    _ldst(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movq    [[RAX]], _lptr(%rip)
 ; DARWIN-64-DYNAMIC-NEXT:      ret
 
 ; DARWIN-64-PIC: _foo07:
-; DARWIN-64-PIC:       leaq    _ldst(%rip), %rax
-; DARWIN-64-PIC-NEXT:  movq    %rax, _lptr(%rip)
+; DARWIN-64-PIC:       leaq    _ldst(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movq    [[RAX]], _lptr(%rip)
 ; DARWIN-64-PIC-NEXT:  ret
 }
 
 define void @foo08() nounwind {
 entry:
-       %0 = load i32** @lptr, align 8
-       %1 = load i32* getelementptr ([131072 x i32]* @lsrc, i32 0, i64 0), align 4
+       %0 = load i32*, i32** @lptr, align 8
+       %1 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @lsrc, i32 0, i64 0), align 4
        store i32 %1, i32* %0, align 4
        ret void
-; LINUX-64-STATIC: foo08:
+; LINUX-64-STATIC-LABEL: foo08:
 ; LINUX-64-STATIC: movl    lsrc(%rip), %
 ; LINUX-64-STATIC: movq    lptr(%rip), %
 ; LINUX-64-STATIC: movl
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: foo08:
-; LINUX-32-STATIC:     movl    lsrc, %eax
-; LINUX-32-STATIC-NEXT:        movl    lptr, %ecx
-; LINUX-32-STATIC-NEXT:        movl    %eax, (%ecx)
+; LINUX-32-STATIC-LABEL: foo08:
+; LINUX-32-STATIC:     movl    lsrc, [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT:        movl    lptr, [[ECX:%e.x]]
+; LINUX-32-STATIC-NEXT:        movl    [[EAX]], ([[ECX]])
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: foo08:
-; LINUX-32-PIC:        movl    lsrc, %eax
-; LINUX-32-PIC-NEXT:   movl    lptr, %ecx
-; LINUX-32-PIC-NEXT:   movl    %eax, (%ecx)
+; LINUX-32-PIC-LABEL: foo08:
+; LINUX-32-PIC:        movl    lsrc, [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT:   movl    lptr, [[ECX:%e.x]]
+; LINUX-32-PIC-NEXT:   movl    [[EAX]], ([[ECX]])
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: foo08:
-; LINUX-64-PIC:        movl    lsrc(%rip), %eax
-; LINUX-64-PIC-NEXT:   movq    lptr(%rip), %rcx
-; LINUX-64-PIC-NEXT:   movl    %eax, (%rcx)
+; LINUX-64-PIC-LABEL: foo08:
+; LINUX-64-PIC:        movl    lsrc(%rip), [[EAX:%e.x]]
+; LINUX-64-PIC-NEXT:   movq    lptr(%rip), [[RCX:%r.x]]
+; LINUX-64-PIC-NEXT:   movl    [[EAX]], ([[RCX]])
 ; LINUX-64-PIC-NEXT:   ret
 
 ; DARWIN-32-STATIC: _foo08:
-; DARWIN-32-STATIC:    movl    _lsrc, %eax
-; DARWIN-32-STATIC-NEXT:       movl    _lptr, %ecx
-; DARWIN-32-STATIC-NEXT:       movl    %eax, (%ecx)
+; DARWIN-32-STATIC:    movl    _lsrc, [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       movl    _lptr, [[ECX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       movl    [[EAX]], ([[ECX]])
 ; DARWIN-32-STATIC-NEXT:       ret
 
 ; DARWIN-32-DYNAMIC: _foo08:
-; DARWIN-32-DYNAMIC:   movl    _lsrc, %eax
-; DARWIN-32-DYNAMIC-NEXT:      movl    _lptr, %ecx
-; DARWIN-32-DYNAMIC-NEXT:      movl    %eax, (%ecx)
+; DARWIN-32-DYNAMIC:   movl    _lsrc, [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    _lptr, [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    [[EAX]], ([[ECX]])
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _foo08:
-; DARWIN-32-PIC:       call    "L12$pb"
-; DARWIN-32-PIC-NEXT: "L12$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  movl    _lsrc-"L12$pb"(%eax), %ecx
-; DARWIN-32-PIC-NEXT:  movl    _lptr-"L12$pb"(%eax), %eax
-; DARWIN-32-PIC-NEXT:  movl    %ecx, (%eax)
+; DARWIN-32-PIC:       calll   L11$pb
+; DARWIN-32-PIC-NEXT: L11$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    _lsrc-L11$pb([[EAX]]), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    _lptr-L11$pb([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    [[ECX]], ([[EAX]])
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _foo08:
-; DARWIN-64-STATIC:    movl    _lsrc(%rip), %eax
-; DARWIN-64-STATIC-NEXT:       movq    _lptr(%rip), %rcx
-; DARWIN-64-STATIC-NEXT:       movl    %eax, (%rcx)
+; DARWIN-64-STATIC:    movl    _lsrc(%rip), [[EAX:%e.x]]
+; DARWIN-64-STATIC-NEXT:       movq    _lptr(%rip), [[RCX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movl    [[EAX]], ([[RCX]])
 ; DARWIN-64-STATIC-NEXT:       ret
 
 ; DARWIN-64-DYNAMIC: _foo08:
-; DARWIN-64-DYNAMIC:   movl    _lsrc(%rip), %eax
-; DARWIN-64-DYNAMIC-NEXT:      movq    _lptr(%rip), %rcx
-; DARWIN-64-DYNAMIC-NEXT:      movl    %eax, (%rcx)
+; DARWIN-64-DYNAMIC:   movl    _lsrc(%rip), [[EAX:%e.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movq    _lptr(%rip), [[RCX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movl    [[EAX]], ([[RCX]])
 ; DARWIN-64-DYNAMIC-NEXT:      ret
 
 ; DARWIN-64-PIC: _foo08:
-; DARWIN-64-PIC:       movl    _lsrc(%rip), %eax
-; DARWIN-64-PIC-NEXT:  movq    _lptr(%rip), %rcx
-; DARWIN-64-PIC-NEXT:  movl    %eax, (%rcx)
+; DARWIN-64-PIC:       movl    _lsrc(%rip), [[EAX:%e.x]]
+; DARWIN-64-PIC-NEXT:  movq    _lptr(%rip), [[RCX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movl    [[EAX]], ([[RCX]])
 ; DARWIN-64-PIC-NEXT:  ret
 }
 
 define void @qux00() nounwind {
 entry:
-       %0 = load i32* getelementptr ([131072 x i32]* @src, i32 0, i64 16), align 4
-       store i32 %0, i32* getelementptr ([131072 x i32]* @dst, i32 0, i64 16), align 4
+       %0 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @src, i32 0, i64 16), align 4
+       store i32 %0, i32* getelementptr ([131072 x i32], [131072 x i32]* @dst, i32 0, i64 16), align 4
        ret void
-; LINUX-64-STATIC: qux00:
-; LINUX-64-STATIC: movl    src+64(%rip), %eax
-; LINUX-64-STATIC: movl    %eax, dst+64(%rip)
+; LINUX-64-STATIC-LABEL: qux00:
+; LINUX-64-STATIC: movl    src+64(%rip), [[EAX:%e.x]]
+; LINUX-64-STATIC: movl    [[EAX]], dst+64(%rip)
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: qux00:
-; LINUX-32-STATIC:     movl    src+64, %eax
-; LINUX-32-STATIC-NEXT:        movl    %eax, dst+64
+; LINUX-32-STATIC-LABEL: qux00:
+; LINUX-32-STATIC:     movl    src+64, [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT:        movl    [[EAX]], dst+64
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: qux00:
-; LINUX-32-PIC:        movl    src+64, %eax
-; LINUX-32-PIC-NEXT:   movl    %eax, dst+64
+; LINUX-32-PIC-LABEL: qux00:
+; LINUX-32-PIC:        movl    src+64, [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT:   movl    [[EAX]], dst+64
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: qux00:
-; LINUX-64-PIC:        movq    src@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT:   movl    64(%rax), %eax
-; LINUX-64-PIC-NEXT:   movq    dst@GOTPCREL(%rip), %rcx
-; LINUX-64-PIC-NEXT:   movl    %eax, 64(%rcx)
+; LINUX-64-PIC-LABEL: qux00:
+; LINUX-64-PIC:        movq    src@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT:   movl    64([[RAX]]), [[EAX:%e.x]]
+; LINUX-64-PIC-NEXT:   movq    dst@GOTPCREL(%rip), [[RCX:%r.x]]
+; LINUX-64-PIC-NEXT:   movl    [[EAX]], 64([[RCX]])
 ; LINUX-64-PIC-NEXT:   ret
 
 ; DARWIN-32-STATIC: _qux00:
-; DARWIN-32-STATIC:    movl    _src+64, %eax
-; DARWIN-32-STATIC-NEXT:       movl    %eax, _dst+64
+; DARWIN-32-STATIC:    movl    _src+64, [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       movl    [[EAX]], _dst+64
 ; DARWIN-32-STATIC-NEXT:       ret
 
 ; DARWIN-32-DYNAMIC: _qux00:
-; DARWIN-32-DYNAMIC:   movl    L_src$non_lazy_ptr, %eax
-; DARWIN-32-DYNAMIC-NEXT:      movl    64(%eax), %eax
-; DARWIN-32-DYNAMIC-NEXT:      movl    L_dst$non_lazy_ptr, %ecx
-; DARWIN-32-DYNAMIC-NEXT:      movl    %eax, 64(%ecx)
+; DARWIN-32-DYNAMIC:   movl    L_src$non_lazy_ptr, [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    64([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    L_dst$non_lazy_ptr, [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    [[EAX]], 64([[ECX]])
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _qux00:
-; DARWIN-32-PIC:       call    "L13$pb"
-; DARWIN-32-PIC-NEXT: "L13$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  movl    L_src$non_lazy_ptr-"L13$pb"(%eax), %ecx
-; DARWIN-32-PIC-NEXT:  movl    64(%ecx), %ecx
-; DARWIN-32-PIC-NEXT:  movl    L_dst$non_lazy_ptr-"L13$pb"(%eax), %eax
-; DARWIN-32-PIC-NEXT:  movl    %ecx, 64(%eax)
+; DARWIN-32-PIC:       calll   L12$pb
+; DARWIN-32-PIC-NEXT: L12$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    L_src$non_lazy_ptr-L12$pb([[EAX]]), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    64([[ECX]]), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    L_dst$non_lazy_ptr-L12$pb([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    [[ECX]], 64([[EAX]])
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _qux00:
-; DARWIN-64-STATIC:    movq    _src@GOTPCREL(%rip), %rax
-; DARWIN-64-STATIC-NEXT:       movl    64(%rax), %eax
-; DARWIN-64-STATIC-NEXT:       movq    _dst@GOTPCREL(%rip), %rcx
-; DARWIN-64-STATIC-NEXT:       movl    %eax, 64(%rcx)
+; DARWIN-64-STATIC:    movq    _src@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movl    64([[RAX]]), [[EAX:%e.x]]
+; DARWIN-64-STATIC-NEXT:       movq    _dst@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movl    [[EAX]], 64([[RCX]])
 ; DARWIN-64-STATIC-NEXT:       ret
 
 ; DARWIN-64-DYNAMIC: _qux00:
-; DARWIN-64-DYNAMIC:   movq    _src@GOTPCREL(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT:      movl    64(%rax), %eax
-; DARWIN-64-DYNAMIC-NEXT:      movq    _dst@GOTPCREL(%rip), %rcx
-; DARWIN-64-DYNAMIC-NEXT:      movl    %eax, 64(%rcx)
+; DARWIN-64-DYNAMIC:   movq    _src@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movl    64([[RAX]]), [[EAX:%e.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movq    _dst@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movl    [[EAX]], 64([[RCX]])
 ; DARWIN-64-DYNAMIC-NEXT:      ret
 
 ; DARWIN-64-PIC: _qux00:
-; DARWIN-64-PIC:       movq    _src@GOTPCREL(%rip), %rax
-; DARWIN-64-PIC-NEXT:  movl    64(%rax), %eax
-; DARWIN-64-PIC-NEXT:  movq    _dst@GOTPCREL(%rip), %rcx
-; DARWIN-64-PIC-NEXT:  movl    %eax, 64(%rcx)
+; DARWIN-64-PIC:       movq    _src@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movl    64([[RAX]]), [[EAX:%e.x]]
+; DARWIN-64-PIC-NEXT:  movq    _dst@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movl    [[EAX]], 64([[RCX]])
 ; DARWIN-64-PIC-NEXT:  ret
 }
 
 define void @qxx00() nounwind {
 entry:
-       %0 = load i32* getelementptr ([32 x i32]* @xsrc, i32 0, i64 16), align 4
-       store i32 %0, i32* getelementptr ([32 x i32]* @xdst, i32 0, i64 16), align 4
+       %0 = load i32, i32* getelementptr ([32 x i32], [32 x i32]* @xsrc, i32 0, i64 16), align 4
+       store i32 %0, i32* getelementptr ([32 x i32], [32 x i32]* @xdst, i32 0, i64 16), align 4
        ret void
-; LINUX-64-STATIC: qxx00:
-; LINUX-64-STATIC: movl    xsrc+64(%rip), %eax
-; LINUX-64-STATIC: movl    %eax, xdst+64(%rip)
+; LINUX-64-STATIC-LABEL: qxx00:
+; LINUX-64-STATIC: movl    xsrc+64(%rip), [[EAX:%e.x]]
+; LINUX-64-STATIC: movl    [[EAX]], xdst+64(%rip)
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: qxx00:
-; LINUX-32-STATIC:     movl    xsrc+64, %eax
-; LINUX-32-STATIC-NEXT:        movl    %eax, xdst+64
+; LINUX-32-STATIC-LABEL: qxx00:
+; LINUX-32-STATIC:     movl    xsrc+64, [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT:        movl    [[EAX]], xdst+64
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: qxx00:
-; LINUX-32-PIC:        movl    xsrc+64, %eax
-; LINUX-32-PIC-NEXT:   movl    %eax, xdst+64
+; LINUX-32-PIC-LABEL: qxx00:
+; LINUX-32-PIC:        movl    xsrc+64, [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT:   movl    [[EAX]], xdst+64
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: qxx00:
-; LINUX-64-PIC:        movq    xsrc@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT:   movl    64(%rax), %eax
-; LINUX-64-PIC-NEXT:   movq    xdst@GOTPCREL(%rip), %rcx
-; LINUX-64-PIC-NEXT:   movl    %eax, 64(%rcx)
+; LINUX-64-PIC-LABEL: qxx00:
+; LINUX-64-PIC:        movq    xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT:   movl    64([[RAX]]), [[EAX:%e.x]]
+; LINUX-64-PIC-NEXT:   movq    xdst@GOTPCREL(%rip), [[RCX:%r.x]]
+; LINUX-64-PIC-NEXT:   movl    [[EAX]], 64([[RCX]])
 ; LINUX-64-PIC-NEXT:   ret
 
 ; DARWIN-32-STATIC: _qxx00:
-; DARWIN-32-STATIC:    movl    _xsrc+64, %eax
-; DARWIN-32-STATIC-NEXT:       movl    %eax, _xdst+64
+; DARWIN-32-STATIC:    movl    _xsrc+64, [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       movl    [[EAX]], _xdst+64
 ; DARWIN-32-STATIC-NEXT:       ret
 
 ; DARWIN-32-DYNAMIC: _qxx00:
-; DARWIN-32-DYNAMIC:   movl    L_xsrc$non_lazy_ptr, %eax
-; DARWIN-32-DYNAMIC-NEXT:      movl    64(%eax), %eax
-; DARWIN-32-DYNAMIC-NEXT:      movl    L_xdst$non_lazy_ptr, %ecx
-; DARWIN-32-DYNAMIC-NEXT:      movl    %eax, 64(%ecx)
+; DARWIN-32-DYNAMIC:   movl    L_xsrc$non_lazy_ptr, [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    64([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    L_xdst$non_lazy_ptr, [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    [[EAX]], 64([[ECX]])
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _qxx00:
-; DARWIN-32-PIC:       call    "L14$pb"
-; DARWIN-32-PIC-NEXT: "L14$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  movl    L_xsrc$non_lazy_ptr-"L14$pb"(%eax), %ecx
-; DARWIN-32-PIC-NEXT:  movl    64(%ecx), %ecx
-; DARWIN-32-PIC-NEXT:  movl    L_xdst$non_lazy_ptr-"L14$pb"(%eax), %eax
-; DARWIN-32-PIC-NEXT:  movl    %ecx, 64(%eax)
+; DARWIN-32-PIC:       calll   L13$pb
+; DARWIN-32-PIC-NEXT: L13$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    L_xsrc$non_lazy_ptr-L13$pb([[EAX]]), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    64([[ECX]]), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    L_xdst$non_lazy_ptr-L13$pb([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    [[ECX]], 64([[EAX]])
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _qxx00:
-; DARWIN-64-STATIC:    movq    _xsrc@GOTPCREL(%rip), %rax
-; DARWIN-64-STATIC-NEXT:       movl    64(%rax), %eax
-; DARWIN-64-STATIC-NEXT:       movq    _xdst@GOTPCREL(%rip), %rcx
-; DARWIN-64-STATIC-NEXT:       movl    %eax, 64(%rcx)
+; DARWIN-64-STATIC:    movq    _xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movl    64([[RAX]]), [[EAX:%e.x]]
+; DARWIN-64-STATIC-NEXT:       movq    _xdst@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movl    [[EAX]], 64([[RCX]])
 ; DARWIN-64-STATIC-NEXT:       ret
 
 ; DARWIN-64-DYNAMIC: _qxx00:
-; DARWIN-64-DYNAMIC:   movq    _xsrc@GOTPCREL(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT:      movl    64(%rax), %eax
-; DARWIN-64-DYNAMIC-NEXT:      movq    _xdst@GOTPCREL(%rip), %rcx
-; DARWIN-64-DYNAMIC-NEXT:      movl    %eax, 64(%rcx)
+; DARWIN-64-DYNAMIC:   movq    _xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movl    64([[RAX]]), [[EAX:%e.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movq    _xdst@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movl    [[EAX]], 64([[RCX]])
 ; DARWIN-64-DYNAMIC-NEXT:      ret
 
 ; DARWIN-64-PIC: _qxx00:
-; DARWIN-64-PIC:       movq    _xsrc@GOTPCREL(%rip), %rax
-; DARWIN-64-PIC-NEXT:  movl    64(%rax), %eax
-; DARWIN-64-PIC-NEXT:  movq    _xdst@GOTPCREL(%rip), %rcx
-; DARWIN-64-PIC-NEXT:  movl    %eax, 64(%rcx)
+; DARWIN-64-PIC:       movq    _xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movl    64([[RAX]]), [[EAX:%e.x]]
+; DARWIN-64-PIC-NEXT:  movq    _xdst@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movl    [[EAX]], 64([[RCX]])
 ; DARWIN-64-PIC-NEXT:  ret
 }
 
 define void @qux01() nounwind {
 entry:
-       store i32* getelementptr ([131072 x i32]* @dst, i32 0, i64 16), i32** @ptr, align 8
+       store i32* getelementptr ([131072 x i32], [131072 x i32]* @dst, i32 0, i64 16), i32** @ptr, align 8
        ret void
-; LINUX-64-STATIC: qux01:
+; LINUX-64-STATIC-LABEL: qux01:
 ; LINUX-64-STATIC: movq    $dst+64, ptr
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: qux01:
+; LINUX-32-STATIC-LABEL: qux01:
 ; LINUX-32-STATIC:     movl    $dst+64, ptr
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: qux01:
+; LINUX-32-PIC-LABEL: qux01:
 ; LINUX-32-PIC:        movl    $dst+64, ptr
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: qux01:
-; LINUX-64-PIC:        movq    dst@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT:   addq    $64, %rax
-; LINUX-64-PIC-NEXT:   movq    ptr@GOTPCREL(%rip), %rcx
-; LINUX-64-PIC-NEXT:   movq    %rax, (%rcx)
+; LINUX-64-PIC-LABEL: qux01:
+; LINUX-64-PIC:        movq    dst@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT:   addq    $64, [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT:   movq    ptr@GOTPCREL(%rip), [[RCX:%r.x]]
+; LINUX-64-PIC-NEXT:   movq    [[RAX]], ([[RCX]])
 ; LINUX-64-PIC-NEXT:   ret
 
 ; DARWIN-32-STATIC: _qux01:
@@ -998,65 +998,65 @@ entry:
 ; DARWIN-32-STATIC-NEXT:       ret
 
 ; DARWIN-32-DYNAMIC: _qux01:
-; DARWIN-32-DYNAMIC:   movl    L_dst$non_lazy_ptr, %eax
-; DARWIN-32-DYNAMIC-NEXT:      addl    $64, %eax
-; DARWIN-32-DYNAMIC-NEXT:      movl    L_ptr$non_lazy_ptr, %ecx
-; DARWIN-32-DYNAMIC-NEXT:      movl    %eax, (%ecx)
+; DARWIN-32-DYNAMIC:   movl    L_dst$non_lazy_ptr, [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      addl    $64, [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    L_ptr$non_lazy_ptr, [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    [[EAX]], ([[ECX]])
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _qux01:
-; DARWIN-32-PIC:       call    "L15$pb"
-; DARWIN-32-PIC-NEXT: "L15$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  movl    L_dst$non_lazy_ptr-"L15$pb"(%eax), %ecx
-; DARWIN-32-PIC-NEXT:  addl    $64, %ecx
-; DARWIN-32-PIC-NEXT:  movl    L_ptr$non_lazy_ptr-"L15$pb"(%eax), %eax
-; DARWIN-32-PIC-NEXT:  movl    %ecx, (%eax)
+; DARWIN-32-PIC:       calll   L14$pb
+; DARWIN-32-PIC-NEXT: L14$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    L_dst$non_lazy_ptr-L14$pb([[EAX]]), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  addl    $64, [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    L_ptr$non_lazy_ptr-L14$pb([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    [[ECX]], ([[EAX]])
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _qux01:
-; DARWIN-64-STATIC:    movq    _dst@GOTPCREL(%rip), %rax
-; DARWIN-64-STATIC-NEXT:       addq    $64, %rax
-; DARWIN-64-STATIC-NEXT:       movq    _ptr@GOTPCREL(%rip), %rcx
-; DARWIN-64-STATIC-NEXT:       movq    %rax, (%rcx)
+; DARWIN-64-STATIC:    movq    _dst@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       addq    $64, [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movq    _ptr@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movq    [[RAX]], ([[RCX]])
 ; DARWIN-64-STATIC-NEXT:       ret
 
 ; DARWIN-64-DYNAMIC: _qux01:
-; DARWIN-64-DYNAMIC:   movq    _dst@GOTPCREL(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT:      addq    $64, %rax
-; DARWIN-64-DYNAMIC-NEXT:      movq    _ptr@GOTPCREL(%rip), %rcx
-; DARWIN-64-DYNAMIC-NEXT:      movq    %rax, (%rcx)
+; DARWIN-64-DYNAMIC:   movq    _dst@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      addq    $64, [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movq    _ptr@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movq    [[RAX]], ([[RCX]])
 ; DARWIN-64-DYNAMIC-NEXT:      ret
 
 ; DARWIN-64-PIC: _qux01:
-; DARWIN-64-PIC:       movq    _dst@GOTPCREL(%rip), %rax
-; DARWIN-64-PIC-NEXT:  addq    $64, %rax
-; DARWIN-64-PIC-NEXT:  movq    _ptr@GOTPCREL(%rip), %rcx
-; DARWIN-64-PIC-NEXT:  movq    %rax, (%rcx)
+; DARWIN-64-PIC:       movq    _dst@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT:  addq    $64, [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movq    _ptr@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movq    [[RAX]], ([[RCX]])
 ; DARWIN-64-PIC-NEXT:  ret
 }
 
 define void @qxx01() nounwind {
 entry:
-       store i32* getelementptr ([32 x i32]* @xdst, i32 0, i64 16), i32** @ptr, align 8
+       store i32* getelementptr ([32 x i32], [32 x i32]* @xdst, i32 0, i64 16), i32** @ptr, align 8
        ret void
-; LINUX-64-STATIC: qxx01:
+; LINUX-64-STATIC-LABEL: qxx01:
 ; LINUX-64-STATIC: movq    $xdst+64, ptr
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: qxx01:
+; LINUX-32-STATIC-LABEL: qxx01:
 ; LINUX-32-STATIC:     movl    $xdst+64, ptr
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: qxx01:
+; LINUX-32-PIC-LABEL: qxx01:
 ; LINUX-32-PIC:        movl    $xdst+64, ptr
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: qxx01:
-; LINUX-64-PIC:        movq    xdst@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT:   addq    $64, %rax
-; LINUX-64-PIC-NEXT:   movq    ptr@GOTPCREL(%rip), %rcx
-; LINUX-64-PIC-NEXT:   movq    %rax, (%rcx)
+; LINUX-64-PIC-LABEL: qxx01:
+; LINUX-64-PIC:        movq    xdst@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT:   addq    $64, [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT:   movq    ptr@GOTPCREL(%rip), [[RCX:%r.x]]
+; LINUX-64-PIC-NEXT:   movq    [[RAX]], ([[RCX]])
 ; LINUX-64-PIC-NEXT:   ret
 
 ; DARWIN-32-STATIC: _qxx01:
@@ -1064,292 +1064,292 @@ entry:
 ; DARWIN-32-STATIC-NEXT:       ret
 
 ; DARWIN-32-DYNAMIC: _qxx01:
-; DARWIN-32-DYNAMIC:   movl    L_xdst$non_lazy_ptr, %eax
-; DARWIN-32-DYNAMIC-NEXT:      addl    $64, %eax
-; DARWIN-32-DYNAMIC-NEXT:      movl    L_ptr$non_lazy_ptr, %ecx
-; DARWIN-32-DYNAMIC-NEXT:      movl    %eax, (%ecx)
+; DARWIN-32-DYNAMIC:   movl    L_xdst$non_lazy_ptr, [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      addl    $64, [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    L_ptr$non_lazy_ptr, [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    [[EAX]], ([[ECX]])
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _qxx01:
-; DARWIN-32-PIC:       call    "L16$pb"
-; DARWIN-32-PIC-NEXT: "L16$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  movl    L_xdst$non_lazy_ptr-"L16$pb"(%eax), %ecx
-; DARWIN-32-PIC-NEXT:  addl    $64, %ecx
-; DARWIN-32-PIC-NEXT:  movl    L_ptr$non_lazy_ptr-"L16$pb"(%eax), %eax
-; DARWIN-32-PIC-NEXT:  movl    %ecx, (%eax)
+; DARWIN-32-PIC:       calll   L15$pb
+; DARWIN-32-PIC-NEXT: L15$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    L_xdst$non_lazy_ptr-L15$pb([[EAX]]), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  addl    $64, [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    L_ptr$non_lazy_ptr-L15$pb([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    [[ECX]], ([[EAX]])
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _qxx01:
-; DARWIN-64-STATIC:    movq    _xdst@GOTPCREL(%rip), %rax
-; DARWIN-64-STATIC-NEXT:       addq    $64, %rax
-; DARWIN-64-STATIC-NEXT:       movq    _ptr@GOTPCREL(%rip), %rcx
-; DARWIN-64-STATIC-NEXT:       movq    %rax, (%rcx)
+; DARWIN-64-STATIC:    movq    _xdst@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       addq    $64, [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movq    _ptr@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movq    [[RAX]], ([[RCX]])
 ; DARWIN-64-STATIC-NEXT:       ret
 
 ; DARWIN-64-DYNAMIC: _qxx01:
-; DARWIN-64-DYNAMIC:   movq    _xdst@GOTPCREL(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT:      addq    $64, %rax
-; DARWIN-64-DYNAMIC-NEXT:      movq    _ptr@GOTPCREL(%rip), %rcx
-; DARWIN-64-DYNAMIC-NEXT:      movq    %rax, (%rcx)
+; DARWIN-64-DYNAMIC:   movq    _xdst@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      addq    $64, [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movq    _ptr@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movq    [[RAX]], ([[RCX]])
 ; DARWIN-64-DYNAMIC-NEXT:      ret
 
 ; DARWIN-64-PIC: _qxx01:
-; DARWIN-64-PIC:       movq    _xdst@GOTPCREL(%rip), %rax
-; DARWIN-64-PIC-NEXT:  addq    $64, %rax
-; DARWIN-64-PIC-NEXT:  movq    _ptr@GOTPCREL(%rip), %rcx
-; DARWIN-64-PIC-NEXT:  movq    %rax, (%rcx)
+; DARWIN-64-PIC:       movq    _xdst@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT:  addq    $64, [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movq    _ptr@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movq    [[RAX]], ([[RCX]])
 ; DARWIN-64-PIC-NEXT:  ret
 }
 
 define void @qux02() nounwind {
 entry:
-       %0 = load i32** @ptr, align 8
-       %1 = load i32* getelementptr ([131072 x i32]* @src, i32 0, i64 16), align 4
-       %2 = getelementptr i32* %0, i64 16
+       %0 = load i32*, i32** @ptr, align 8
+       %1 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @src, i32 0, i64 16), align 4
+       %2 = getelementptr i32, i32* %0, i64 16
        store i32 %1, i32* %2, align 4
-; LINUX-64-STATIC: qux02:
-; LINUX-64-STATIC: movl    src+64(%rip), %eax
-; LINUX-64-STATIC: movq    ptr(%rip), %rcx
-; LINUX-64-STATIC: movl    %eax, 64(%rcx)
+; LINUX-64-STATIC-LABEL: qux02:
+; LINUX-64-STATIC: movl    src+64(%rip), [[EAX:%e.x]]
+; LINUX-64-STATIC: movq    ptr(%rip), [[RCX:%r.x]]
+; LINUX-64-STATIC: movl    [[EAX]], 64([[RCX]])
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: qux02:
-; LINUX-32-STATIC:     movl    src+64, %eax
-; LINUX-32-STATIC-NEXT:        movl    ptr, %ecx
-; LINUX-32-STATIC-NEXT:        movl    %eax, 64(%ecx)
+; LINUX-32-STATIC-LABEL: qux02:
+; LINUX-32-STATIC:     movl    src+64, [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT:        movl    ptr, [[ECX:%e.x]]
+; LINUX-32-STATIC-NEXT:        movl    [[EAX]], 64([[ECX]])
 ; LINUX-32-STATIC-NEXT:        ret
        ret void
 
-; LINUX-32-PIC: qux02:
-; LINUX-32-PIC:        movl    src+64, %eax
-; LINUX-32-PIC-NEXT:   movl    ptr, %ecx
-; LINUX-32-PIC-NEXT:   movl    %eax, 64(%ecx)
+; LINUX-32-PIC-LABEL: qux02:
+; LINUX-32-PIC:        movl    src+64, [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT:   movl    ptr, [[ECX:%e.x]]
+; LINUX-32-PIC-NEXT:   movl    [[EAX]], 64([[ECX]])
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: qux02:
-; LINUX-64-PIC:        movq    src@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT:   movl    64(%rax), %eax
-; LINUX-64-PIC-NEXT:   movq    ptr@GOTPCREL(%rip), %rcx
-; LINUX-64-PIC-NEXT:   movq    (%rcx), %rcx
-; LINUX-64-PIC-NEXT:   movl    %eax, 64(%rcx)
+; LINUX-64-PIC-LABEL: qux02:
+; LINUX-64-PIC:        movq    src@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT:   movl    64([[RAX]]), [[EAX:%e.x]]
+; LINUX-64-PIC-NEXT:   movq    ptr@GOTPCREL(%rip), [[RCX:%r.x]]
+; LINUX-64-PIC-NEXT:   movq    ([[RCX]]), [[RCX:%r.x]]
+; LINUX-64-PIC-NEXT:   movl    [[EAX]], 64([[RCX]])
 ; LINUX-64-PIC-NEXT:   ret
 
 ; DARWIN-32-STATIC: _qux02:
-; DARWIN-32-STATIC:    movl    _src+64, %eax
-; DARWIN-32-STATIC-NEXT:       movl    _ptr, %ecx
-; DARWIN-32-STATIC-NEXT:       movl    %eax, 64(%ecx)
+; DARWIN-32-STATIC:    movl    _src+64, [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       movl    _ptr, [[ECX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       movl    [[EAX]], 64([[ECX]])
 ; DARWIN-32-STATIC-NEXT:       ret
 
 ; DARWIN-32-DYNAMIC: _qux02:
-; DARWIN-32-DYNAMIC:   movl    L_src$non_lazy_ptr, %eax
-; DARWIN-32-DYNAMIC-NEXT:      movl    64(%eax), %eax
-; DARWIN-32-DYNAMIC-NEXT:      movl    L_ptr$non_lazy_ptr, %ecx
-; DARWIN-32-DYNAMIC-NEXT:      movl    (%ecx), %ecx
-; DARWIN-32-DYNAMIC-NEXT:      movl    %eax, 64(%ecx)
+; DARWIN-32-DYNAMIC:   movl    L_src$non_lazy_ptr, [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    64([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    L_ptr$non_lazy_ptr, [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    ([[ECX]]), [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    [[EAX]], 64([[ECX]])
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _qux02:
-; DARWIN-32-PIC:       call    "L17$pb"
-; DARWIN-32-PIC-NEXT: "L17$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  movl    L_src$non_lazy_ptr-"L17$pb"(%eax), %ecx
-; DARWIN-32-PIC-NEXT:  movl    64(%ecx), %ecx
-; DARWIN-32-PIC-NEXT:  movl    L_ptr$non_lazy_ptr-"L17$pb"(%eax), %eax
-; DARWIN-32-PIC-NEXT:  movl    (%eax), %eax
-; DARWIN-32-PIC-NEXT:  movl    %ecx, 64(%eax)
+; DARWIN-32-PIC:       calll   L16$pb
+; DARWIN-32-PIC-NEXT: L16$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    L_src$non_lazy_ptr-L16$pb([[EAX]]), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    64([[ECX]]), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    L_ptr$non_lazy_ptr-L16$pb([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    ([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    [[ECX]], 64([[EAX]])
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _qux02:
-; DARWIN-64-STATIC:    movq    _src@GOTPCREL(%rip), %rax
-; DARWIN-64-STATIC-NEXT:       movl    64(%rax), %eax
-; DARWIN-64-STATIC-NEXT:       movq    _ptr@GOTPCREL(%rip), %rcx
-; DARWIN-64-STATIC-NEXT:       movq    (%rcx), %rcx
-; DARWIN-64-STATIC-NEXT:       movl    %eax, 64(%rcx)
+; DARWIN-64-STATIC:    movq    _src@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movl    64([[RAX]]), [[EAX:%e.x]]
+; DARWIN-64-STATIC-NEXT:       movq    _ptr@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movq    ([[RCX]]), [[RCX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movl    [[EAX]], 64([[RCX]])
 ; DARWIN-64-STATIC-NEXT:       ret
 
 ; DARWIN-64-DYNAMIC: _qux02:
-; DARWIN-64-DYNAMIC:   movq    _src@GOTPCREL(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT:      movl    64(%rax), %eax
-; DARWIN-64-DYNAMIC-NEXT:      movq    _ptr@GOTPCREL(%rip), %rcx
-; DARWIN-64-DYNAMIC-NEXT:      movq    (%rcx), %rcx
-; DARWIN-64-DYNAMIC-NEXT:      movl    %eax, 64(%rcx)
+; DARWIN-64-DYNAMIC:   movq    _src@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movl    64([[RAX]]), [[EAX:%e.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movq    _ptr@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movq    ([[RCX]]), [[RCX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movl    [[EAX]], 64([[RCX]])
 ; DARWIN-64-DYNAMIC-NEXT:      ret
 
 ; DARWIN-64-PIC: _qux02:
-; DARWIN-64-PIC:       movq    _src@GOTPCREL(%rip), %rax
-; DARWIN-64-PIC-NEXT:  movl    64(%rax), %eax
-; DARWIN-64-PIC-NEXT:  movq    _ptr@GOTPCREL(%rip), %rcx
-; DARWIN-64-PIC-NEXT:  movq    (%rcx), %rcx
-; DARWIN-64-PIC-NEXT:  movl    %eax, 64(%rcx)
+; DARWIN-64-PIC:       movq    _src@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movl    64([[RAX]]), [[EAX:%e.x]]
+; DARWIN-64-PIC-NEXT:  movq    _ptr@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movq    ([[RCX]]), [[RCX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movl    [[EAX]], 64([[RCX]])
 ; DARWIN-64-PIC-NEXT:  ret
 }
 
 define void @qxx02() nounwind {
 entry:
-       %0 = load i32** @ptr, align 8
-       %1 = load i32* getelementptr ([32 x i32]* @xsrc, i32 0, i64 16), align 4
-       %2 = getelementptr i32* %0, i64 16
+       %0 = load i32*, i32** @ptr, align 8
+       %1 = load i32, i32* getelementptr ([32 x i32], [32 x i32]* @xsrc, i32 0, i64 16), align 4
+       %2 = getelementptr i32, i32* %0, i64 16
        store i32 %1, i32* %2, align 4
-; LINUX-64-STATIC: qxx02:
-; LINUX-64-STATIC: movl    xsrc+64(%rip), %eax
-; LINUX-64-STATIC: movq    ptr(%rip), %rcx
-; LINUX-64-STATIC: movl    %eax, 64(%rcx)
+; LINUX-64-STATIC-LABEL: qxx02:
+; LINUX-64-STATIC: movl    xsrc+64(%rip), [[EAX:%e.x]]
+; LINUX-64-STATIC: movq    ptr(%rip), [[RCX:%r.x]]
+; LINUX-64-STATIC: movl    [[EAX]], 64([[RCX]])
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: qxx02:
-; LINUX-32-STATIC:     movl    xsrc+64, %eax
-; LINUX-32-STATIC-NEXT:        movl    ptr, %ecx
-; LINUX-32-STATIC-NEXT:        movl    %eax, 64(%ecx)
+; LINUX-32-STATIC-LABEL: qxx02:
+; LINUX-32-STATIC:     movl    xsrc+64, [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT:        movl    ptr, [[ECX:%e.x]]
+; LINUX-32-STATIC-NEXT:        movl    [[EAX]], 64([[ECX]])
 ; LINUX-32-STATIC-NEXT:        ret
        ret void
 
-; LINUX-32-PIC: qxx02:
-; LINUX-32-PIC:        movl    xsrc+64, %eax
-; LINUX-32-PIC-NEXT:   movl    ptr, %ecx
-; LINUX-32-PIC-NEXT:   movl    %eax, 64(%ecx)
+; LINUX-32-PIC-LABEL: qxx02:
+; LINUX-32-PIC:        movl    xsrc+64, [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT:   movl    ptr, [[ECX:%e.x]]
+; LINUX-32-PIC-NEXT:   movl    [[EAX]], 64([[ECX]])
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: qxx02:
-; LINUX-64-PIC:        movq    xsrc@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT:   movl    64(%rax), %eax
-; LINUX-64-PIC-NEXT:   movq    ptr@GOTPCREL(%rip), %rcx
-; LINUX-64-PIC-NEXT:   movq    (%rcx), %rcx
-; LINUX-64-PIC-NEXT:   movl    %eax, 64(%rcx)
+; LINUX-64-PIC-LABEL: qxx02:
+; LINUX-64-PIC:        movq    xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT:   movl    64([[RAX]]), [[EAX:%e.x]]
+; LINUX-64-PIC-NEXT:   movq    ptr@GOTPCREL(%rip), [[RCX:%r.x]]
+; LINUX-64-PIC-NEXT:   movq    ([[RCX]]), [[RCX:%r.x]]
+; LINUX-64-PIC-NEXT:   movl    [[EAX]], 64([[RCX]])
 ; LINUX-64-PIC-NEXT:   ret
 
 ; DARWIN-32-STATIC: _qxx02:
-; DARWIN-32-STATIC:    movl    _xsrc+64, %eax
-; DARWIN-32-STATIC-NEXT:       movl    _ptr, %ecx
-; DARWIN-32-STATIC-NEXT:       movl    %eax, 64(%ecx)
+; DARWIN-32-STATIC:    movl    _xsrc+64, [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       movl    _ptr, [[ECX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       movl    [[EAX]], 64([[ECX]])
 ; DARWIN-32-STATIC-NEXT:       ret
 
 ; DARWIN-32-DYNAMIC: _qxx02:
-; DARWIN-32-DYNAMIC:   movl    L_xsrc$non_lazy_ptr, %eax
-; DARWIN-32-DYNAMIC-NEXT:      movl    64(%eax), %eax
-; DARWIN-32-DYNAMIC-NEXT:      movl    L_ptr$non_lazy_ptr, %ecx
-; DARWIN-32-DYNAMIC-NEXT:      movl    (%ecx), %ecx
-; DARWIN-32-DYNAMIC-NEXT:      movl    %eax, 64(%ecx)
+; DARWIN-32-DYNAMIC:   movl    L_xsrc$non_lazy_ptr, [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    64([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    L_ptr$non_lazy_ptr, [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    ([[ECX]]), [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    [[EAX]], 64([[ECX]])
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _qxx02:
-; DARWIN-32-PIC:       call    "L18$pb"
-; DARWIN-32-PIC-NEXT: "L18$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  movl    L_xsrc$non_lazy_ptr-"L18$pb"(%eax), %ecx
-; DARWIN-32-PIC-NEXT:  movl    64(%ecx), %ecx
-; DARWIN-32-PIC-NEXT:  movl    L_ptr$non_lazy_ptr-"L18$pb"(%eax), %eax
-; DARWIN-32-PIC-NEXT:  movl    (%eax), %eax
-; DARWIN-32-PIC-NEXT:  movl    %ecx, 64(%eax)
+; DARWIN-32-PIC:       calll   L17$pb
+; DARWIN-32-PIC-NEXT: L17$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    L_xsrc$non_lazy_ptr-L17$pb([[EAX]]), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    64([[ECX]]), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    L_ptr$non_lazy_ptr-L17$pb([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    ([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    [[ECX]], 64([[EAX]])
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _qxx02:
-; DARWIN-64-STATIC:    movq    _xsrc@GOTPCREL(%rip), %rax
-; DARWIN-64-STATIC-NEXT:       movl    64(%rax), %eax
-; DARWIN-64-STATIC-NEXT:       movq    _ptr@GOTPCREL(%rip), %rcx
-; DARWIN-64-STATIC-NEXT:       movq    (%rcx), %rcx
-; DARWIN-64-STATIC-NEXT:       movl    %eax, 64(%rcx)
+; DARWIN-64-STATIC:    movq    _xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movl    64([[RAX]]), [[EAX:%e.x]]
+; DARWIN-64-STATIC-NEXT:       movq    _ptr@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movq    ([[RCX]]), [[RCX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movl    [[EAX]], 64([[RCX]])
 ; DARWIN-64-STATIC-NEXT:       ret
 
 ; DARWIN-64-DYNAMIC: _qxx02:
-; DARWIN-64-DYNAMIC:   movq    _xsrc@GOTPCREL(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT:      movl    64(%rax), %eax
-; DARWIN-64-DYNAMIC-NEXT:      movq    _ptr@GOTPCREL(%rip), %rcx
-; DARWIN-64-DYNAMIC-NEXT:      movq    (%rcx), %rcx
-; DARWIN-64-DYNAMIC-NEXT:      movl    %eax, 64(%rcx)
+; DARWIN-64-DYNAMIC:   movq    _xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movl    64([[RAX]]), [[EAX:%e.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movq    _ptr@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movq    ([[RCX]]), [[RCX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movl    [[EAX]], 64([[RCX]])
 ; DARWIN-64-DYNAMIC-NEXT:      ret
 
 ; DARWIN-64-PIC: _qxx02:
-; DARWIN-64-PIC:       movq    _xsrc@GOTPCREL(%rip), %rax
-; DARWIN-64-PIC-NEXT:  movl    64(%rax), %eax
-; DARWIN-64-PIC-NEXT:  movq    _ptr@GOTPCREL(%rip), %rcx
-; DARWIN-64-PIC-NEXT:  movq    (%rcx), %rcx
-; DARWIN-64-PIC-NEXT:  movl    %eax, 64(%rcx)
+; DARWIN-64-PIC:       movq    _xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movl    64([[RAX]]), [[EAX:%e.x]]
+; DARWIN-64-PIC-NEXT:  movq    _ptr@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movq    ([[RCX]]), [[RCX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movl    [[EAX]], 64([[RCX]])
 ; DARWIN-64-PIC-NEXT:  ret
 }
 
 define void @qux03() nounwind {
 entry:
-       %0 = load i32* getelementptr ([131072 x i32]* @dsrc, i32 0, i64 16), align 32
-       store i32 %0, i32* getelementptr ([131072 x i32]* @ddst, i32 0, i64 16), align 32
+       %0 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @dsrc, i32 0, i64 16), align 32
+       store i32 %0, i32* getelementptr ([131072 x i32], [131072 x i32]* @ddst, i32 0, i64 16), align 32
        ret void
-; LINUX-64-STATIC: qux03:
-; LINUX-64-STATIC: movl    dsrc+64(%rip), %eax
-; LINUX-64-STATIC: movl    %eax, ddst+64(%rip)
+; LINUX-64-STATIC-LABEL: qux03:
+; LINUX-64-STATIC: movl    dsrc+64(%rip), [[EAX:%e.x]]
+; LINUX-64-STATIC: movl    [[EAX]], ddst+64(%rip)
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: qux03:
-; LINUX-32-STATIC:     movl    dsrc+64, %eax
-; LINUX-32-STATIC-NEXT:        movl    %eax, ddst+64
+; LINUX-32-STATIC-LABEL: qux03:
+; LINUX-32-STATIC:     movl    dsrc+64, [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT:        movl    [[EAX]], ddst+64
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: qux03:
-; LINUX-32-PIC:        movl    dsrc+64, %eax
-; LINUX-32-PIC-NEXT:   movl    %eax, ddst+64
+; LINUX-32-PIC-LABEL: qux03:
+; LINUX-32-PIC:        movl    dsrc+64, [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT:   movl    [[EAX]], ddst+64
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: qux03:
-; LINUX-64-PIC:        movq    dsrc@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT:   movl    64(%rax), %eax
-; LINUX-64-PIC-NEXT:   movq    ddst@GOTPCREL(%rip), %rcx
-; LINUX-64-PIC-NEXT:   movl    %eax, 64(%rcx)
+; LINUX-64-PIC-LABEL: qux03:
+; LINUX-64-PIC:        movq    dsrc@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT:   movl    64([[RAX]]), [[EAX:%e.x]]
+; LINUX-64-PIC-NEXT:   movq    ddst@GOTPCREL(%rip), [[RCX:%r.x]]
+; LINUX-64-PIC-NEXT:   movl    [[EAX]], 64([[RCX]])
 ; LINUX-64-PIC-NEXT:   ret
 
 ; DARWIN-32-STATIC: _qux03:
-; DARWIN-32-STATIC:    movl    _dsrc+64, %eax
-; DARWIN-32-STATIC-NEXT:       movl    %eax, _ddst+64
+; DARWIN-32-STATIC:    movl    _dsrc+64, [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       movl    [[EAX]], _ddst+64
 ; DARWIN-32-STATIC-NEXT:       ret
 
 ; DARWIN-32-DYNAMIC: _qux03:
-; DARWIN-32-DYNAMIC:   movl    _dsrc+64, %eax
-; DARWIN-32-DYNAMIC-NEXT:      movl    %eax, _ddst+64
+; DARWIN-32-DYNAMIC:   movl    _dsrc+64, [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    [[EAX]], _ddst+64
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _qux03:
-; DARWIN-32-PIC:       call    "L19$pb"
-; DARWIN-32-PIC-NEXT: "L19$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  movl    _dsrc+64-"L19$pb"(%eax), %ecx
-; DARWIN-32-PIC-NEXT:  movl    %ecx, _ddst+64-"L19$pb"(%eax)
+; DARWIN-32-PIC:       calll   L18$pb
+; DARWIN-32-PIC-NEXT: L18$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    (_dsrc-L18$pb)+64([[EAX]]), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    [[ECX]], (_ddst-L18$pb)+64([[EAX]])
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _qux03:
-; DARWIN-64-STATIC:    movl    _dsrc+64(%rip), %eax
-; DARWIN-64-STATIC-NEXT:       movl    %eax, _ddst+64(%rip)
+; DARWIN-64-STATIC:    movl    _dsrc+64(%rip), [[EAX:%e.x]]
+; DARWIN-64-STATIC-NEXT:       movl    [[EAX]], _ddst+64(%rip)
 ; DARWIN-64-STATIC-NEXT:       ret
 
 ; DARWIN-64-DYNAMIC: _qux03:
-; DARWIN-64-DYNAMIC:   movl    _dsrc+64(%rip), %eax
-; DARWIN-64-DYNAMIC-NEXT:      movl    %eax, _ddst+64(%rip)
+; DARWIN-64-DYNAMIC:   movl    _dsrc+64(%rip), [[EAX:%e.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movl    [[EAX]], _ddst+64(%rip)
 ; DARWIN-64-DYNAMIC-NEXT:      ret
 
 ; DARWIN-64-PIC: _qux03:
-; DARWIN-64-PIC:       movl    _dsrc+64(%rip), %eax
-; DARWIN-64-PIC-NEXT:  movl    %eax, _ddst+64(%rip)
+; DARWIN-64-PIC:       movl    _dsrc+64(%rip), [[EAX:%e.x]]
+; DARWIN-64-PIC-NEXT:  movl    [[EAX]], _ddst+64(%rip)
 ; DARWIN-64-PIC-NEXT:  ret
 }
 
 define void @qux04() nounwind {
 entry:
-       store i32* getelementptr ([131072 x i32]* @ddst, i32 0, i64 16), i32** @dptr, align 8
+       store i32* getelementptr ([131072 x i32], [131072 x i32]* @ddst, i32 0, i64 16), i32** @dptr, align 8
        ret void
-; LINUX-64-STATIC: qux04:
+; LINUX-64-STATIC-LABEL: qux04:
 ; LINUX-64-STATIC: movq    $ddst+64, dptr(%rip)
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: qux04:
+; LINUX-32-STATIC-LABEL: qux04:
 ; LINUX-32-STATIC:     movl    $ddst+64, dptr
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: qux04:
+; LINUX-32-PIC-LABEL: qux04:
 ; LINUX-32-PIC:        movl    $ddst+64, dptr
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: qux04:
-; LINUX-64-PIC:        movq    ddst@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT:   addq    $64, %rax
-; LINUX-64-PIC-NEXT:   movq    dptr@GOTPCREL(%rip), %rcx
-; LINUX-64-PIC-NEXT:   movq    %rax, (%rcx)
+; LINUX-64-PIC-LABEL: qux04:
+; LINUX-64-PIC:        movq    ddst@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT:   addq    $64, [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT:   movq    dptr@GOTPCREL(%rip), [[RCX:%r.x]]
+; LINUX-64-PIC-NEXT:   movq    [[RAX]], ([[RCX]])
 ; LINUX-64-PIC-NEXT:   ret
 
 ; DARWIN-32-STATIC: _qux04:
@@ -1361,180 +1361,180 @@ entry:
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _qux04:
-; DARWIN-32-PIC:       call    "L20$pb"
-; DARWIN-32-PIC-NEXT: "L20$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  leal    _ddst+64-"L20$pb"(%eax), %ecx
-; DARWIN-32-PIC-NEXT:  movl    %ecx, _dptr-"L20$pb"(%eax)
+; DARWIN-32-PIC:       calll   L19$pb
+; DARWIN-32-PIC-NEXT: L19$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  leal    (_ddst-L19$pb)+64([[EAX]]), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    [[ECX]], _dptr-L19$pb([[EAX]])
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _qux04:
-; DARWIN-64-STATIC:    leaq    _ddst+64(%rip), %rax
-; DARWIN-64-STATIC-NEXT:       movq    %rax, _dptr(%rip)
+; DARWIN-64-STATIC:    leaq    _ddst+64(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movq    [[RAX]], _dptr(%rip)
 ; DARWIN-64-STATIC-NEXT:       ret
 
 ; DARWIN-64-DYNAMIC: _qux04:
-; DARWIN-64-DYNAMIC:   leaq    _ddst+64(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT:      movq    %rax, _dptr(%rip)
+; DARWIN-64-DYNAMIC:   leaq    _ddst+64(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movq    [[RAX]], _dptr(%rip)
 ; DARWIN-64-DYNAMIC-NEXT:      ret
 
 ; DARWIN-64-PIC: _qux04:
-; DARWIN-64-PIC:       leaq    _ddst+64(%rip), %rax
-; DARWIN-64-PIC-NEXT:  movq    %rax, _dptr(%rip)
+; DARWIN-64-PIC:       leaq    _ddst+64(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movq    [[RAX]], _dptr(%rip)
 ; DARWIN-64-PIC-NEXT:  ret
 }
 
 define void @qux05() nounwind {
 entry:
-       %0 = load i32** @dptr, align 8
-       %1 = load i32* getelementptr ([131072 x i32]* @dsrc, i32 0, i64 16), align 32
-       %2 = getelementptr i32* %0, i64 16
+       %0 = load i32*, i32** @dptr, align 8
+       %1 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @dsrc, i32 0, i64 16), align 32
+       %2 = getelementptr i32, i32* %0, i64 16
        store i32 %1, i32* %2, align 4
-; LINUX-64-STATIC: qux05:
-; LINUX-64-STATIC: movl    dsrc+64(%rip), %eax
-; LINUX-64-STATIC: movq    dptr(%rip), %rcx
-; LINUX-64-STATIC: movl    %eax, 64(%rcx)
+; LINUX-64-STATIC-LABEL: qux05:
+; LINUX-64-STATIC: movl    dsrc+64(%rip), [[EAX:%e.x]]
+; LINUX-64-STATIC: movq    dptr(%rip), [[RCX:%r.x]]
+; LINUX-64-STATIC: movl    [[EAX]], 64([[RCX]])
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: qux05:
-; LINUX-32-STATIC:     movl    dsrc+64, %eax
-; LINUX-32-STATIC-NEXT:        movl    dptr, %ecx
-; LINUX-32-STATIC-NEXT:        movl    %eax, 64(%ecx)
+; LINUX-32-STATIC-LABEL: qux05:
+; LINUX-32-STATIC:     movl    dsrc+64, [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT:        movl    dptr, [[ECX:%e.x]]
+; LINUX-32-STATIC-NEXT:        movl    [[EAX]], 64([[ECX]])
 ; LINUX-32-STATIC-NEXT:        ret
        ret void
 
-; LINUX-32-PIC: qux05:
-; LINUX-32-PIC:        movl    dsrc+64, %eax
-; LINUX-32-PIC-NEXT:   movl    dptr, %ecx
-; LINUX-32-PIC-NEXT:   movl    %eax, 64(%ecx)
+; LINUX-32-PIC-LABEL: qux05:
+; LINUX-32-PIC:        movl    dsrc+64, [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT:   movl    dptr, [[ECX:%e.x]]
+; LINUX-32-PIC-NEXT:   movl    [[EAX]], 64([[ECX]])
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: qux05:
-; LINUX-64-PIC:        movq    dsrc@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT:   movl    64(%rax), %eax
-; LINUX-64-PIC-NEXT:   movq    dptr@GOTPCREL(%rip), %rcx
-; LINUX-64-PIC-NEXT:   movq    (%rcx), %rcx
-; LINUX-64-PIC-NEXT:   movl    %eax, 64(%rcx)
+; LINUX-64-PIC-LABEL: qux05:
+; LINUX-64-PIC:        movq    dsrc@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT:   movl    64([[RAX]]), [[EAX:%e.x]]
+; LINUX-64-PIC-NEXT:   movq    dptr@GOTPCREL(%rip), [[RCX:%r.x]]
+; LINUX-64-PIC-NEXT:   movq    ([[RCX]]), [[RCX:%r.x]]
+; LINUX-64-PIC-NEXT:   movl    [[EAX]], 64([[RCX]])
 ; LINUX-64-PIC-NEXT:   ret
 
 ; DARWIN-32-STATIC: _qux05:
-; DARWIN-32-STATIC:    movl    _dsrc+64, %eax
-; DARWIN-32-STATIC-NEXT:       movl    _dptr, %ecx
-; DARWIN-32-STATIC-NEXT:       movl    %eax, 64(%ecx)
+; DARWIN-32-STATIC:    movl    _dsrc+64, [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       movl    _dptr, [[ECX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       movl    [[EAX]], 64([[ECX]])
 ; DARWIN-32-STATIC-NEXT:       ret
 
 ; DARWIN-32-DYNAMIC: _qux05:
-; DARWIN-32-DYNAMIC:   movl    _dsrc+64, %eax
-; DARWIN-32-DYNAMIC-NEXT:      movl    _dptr, %ecx
-; DARWIN-32-DYNAMIC-NEXT:      movl    %eax, 64(%ecx)
+; DARWIN-32-DYNAMIC:   movl    _dsrc+64, [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    _dptr, [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    [[EAX]], 64([[ECX]])
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _qux05:
-; DARWIN-32-PIC:       call    "L21$pb"
-; DARWIN-32-PIC-NEXT: "L21$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  movl    _dsrc+64-"L21$pb"(%eax), %ecx
-; DARWIN-32-PIC-NEXT:  movl    _dptr-"L21$pb"(%eax), %eax
-; DARWIN-32-PIC-NEXT:  movl    %ecx, 64(%eax)
+; DARWIN-32-PIC:       calll   L20$pb
+; DARWIN-32-PIC-NEXT: L20$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    (_dsrc-L20$pb)+64([[EAX]]), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    _dptr-L20$pb([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    [[ECX]], 64([[EAX]])
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _qux05:
-; DARWIN-64-STATIC:    movl    _dsrc+64(%rip), %eax
-; DARWIN-64-STATIC-NEXT:       movq    _dptr(%rip), %rcx
-; DARWIN-64-STATIC-NEXT:       movl    %eax, 64(%rcx)
+; DARWIN-64-STATIC:    movl    _dsrc+64(%rip), [[EAX:%e.x]]
+; DARWIN-64-STATIC-NEXT:       movq    _dptr(%rip), [[RCX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movl    [[EAX]], 64([[RCX]])
 ; DARWIN-64-STATIC-NEXT:       ret
 
 ; DARWIN-64-DYNAMIC: _qux05:
-; DARWIN-64-DYNAMIC:   movl    _dsrc+64(%rip), %eax
-; DARWIN-64-DYNAMIC-NEXT:      movq    _dptr(%rip), %rcx
-; DARWIN-64-DYNAMIC-NEXT:      movl    %eax, 64(%rcx)
+; DARWIN-64-DYNAMIC:   movl    _dsrc+64(%rip), [[EAX:%e.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movq    _dptr(%rip), [[RCX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movl    [[EAX]], 64([[RCX]])
 ; DARWIN-64-DYNAMIC-NEXT:      ret
 
 ; DARWIN-64-PIC: _qux05:
-; DARWIN-64-PIC:       movl    _dsrc+64(%rip), %eax
-; DARWIN-64-PIC-NEXT:  movq    _dptr(%rip), %rcx
-; DARWIN-64-PIC-NEXT:  movl    %eax, 64(%rcx)
+; DARWIN-64-PIC:       movl    _dsrc+64(%rip), [[EAX:%e.x]]
+; DARWIN-64-PIC-NEXT:  movq    _dptr(%rip), [[RCX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movl    [[EAX]], 64([[RCX]])
 ; DARWIN-64-PIC-NEXT:  ret
 }
 
 define void @qux06() nounwind {
 entry:
-       %0 = load i32* getelementptr ([131072 x i32]* @lsrc, i32 0, i64 16), align 4
-       store i32 %0, i32* getelementptr ([131072 x i32]* @ldst, i32 0, i64 16), align 4
+       %0 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @lsrc, i32 0, i64 16), align 4
+       store i32 %0, i32* getelementptr ([131072 x i32], [131072 x i32]* @ldst, i32 0, i64 16), align 4
        ret void
-; LINUX-64-STATIC: qux06:
-; LINUX-64-STATIC: movl    lsrc+64(%rip), %eax
-; LINUX-64-STATIC: movl    %eax, ldst+64
+; LINUX-64-STATIC-LABEL: qux06:
+; LINUX-64-STATIC: movl    lsrc+64(%rip), [[EAX:%e.x]]
+; LINUX-64-STATIC: movl    [[EAX]], ldst+64
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: qux06:
-; LINUX-32-STATIC:     movl    lsrc+64, %eax
-; LINUX-32-STATIC-NEXT:        movl    %eax, ldst+64
+; LINUX-32-STATIC-LABEL: qux06:
+; LINUX-32-STATIC:     movl    lsrc+64, [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT:        movl    [[EAX]], ldst+64
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: qux06:
-; LINUX-32-PIC:        movl    lsrc+64, %eax
-; LINUX-32-PIC-NEXT:   movl    %eax, ldst+64
+; LINUX-32-PIC-LABEL: qux06:
+; LINUX-32-PIC:        movl    lsrc+64, [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT:   movl    [[EAX]], ldst+64
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: qux06:
-; LINUX-64-PIC:        movl    lsrc+64(%rip), %eax
-; LINUX-64-PIC-NEXT:   movl    %eax, ldst+64(%rip)
+; LINUX-64-PIC-LABEL: qux06:
+; LINUX-64-PIC:        movl    lsrc+64(%rip), [[EAX:%e.x]]
+; LINUX-64-PIC-NEXT:   movl    [[EAX]], ldst+64(%rip)
 ; LINUX-64-PIC-NEXT:   ret
 
 ; DARWIN-32-STATIC: _qux06:
-; DARWIN-32-STATIC:    movl    _lsrc+64, %eax
-; DARWIN-32-STATIC-NEXT:       movl    %eax, _ldst+64
+; DARWIN-32-STATIC:    movl    _lsrc+64, [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       movl    [[EAX]], _ldst+64
 ; DARWIN-32-STATIC-NEXT:       ret
 
 ; DARWIN-32-DYNAMIC: _qux06:
-; DARWIN-32-DYNAMIC:   movl    _lsrc+64, %eax
-; DARWIN-32-DYNAMIC-NEXT:      movl    %eax, _ldst+64
+; DARWIN-32-DYNAMIC:   movl    _lsrc+64, [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    [[EAX]], _ldst+64
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _qux06:
-; DARWIN-32-PIC:       call    "L22$pb"
-; DARWIN-32-PIC-NEXT: "L22$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  movl    _lsrc+64-"L22$pb"(%eax), %ecx
-; DARWIN-32-PIC-NEXT:  movl    %ecx, _ldst+64-"L22$pb"(%eax)
+; DARWIN-32-PIC:       calll   L21$pb
+; DARWIN-32-PIC-NEXT: L21$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    (_lsrc-L21$pb)+64([[EAX]]), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    [[ECX]], (_ldst-L21$pb)+64([[EAX]])
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _qux06:
-; DARWIN-64-STATIC:    movl    _lsrc+64(%rip), %eax
-; DARWIN-64-STATIC-NEXT:       movl    %eax, _ldst+64(%rip)
+; DARWIN-64-STATIC:    movl    _lsrc+64(%rip), [[EAX:%e.x]]
+; DARWIN-64-STATIC-NEXT:       movl    [[EAX]], _ldst+64(%rip)
 ; DARWIN-64-STATIC-NEXT:       ret
 
 ; DARWIN-64-DYNAMIC: _qux06:
-; DARWIN-64-DYNAMIC:   movl    _lsrc+64(%rip), %eax
-; DARWIN-64-DYNAMIC-NEXT:      movl    %eax, _ldst+64(%rip)
+; DARWIN-64-DYNAMIC:   movl    _lsrc+64(%rip), [[EAX:%e.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movl    [[EAX]], _ldst+64(%rip)
 ; DARWIN-64-DYNAMIC-NEXT:      ret
 
 ; DARWIN-64-PIC: _qux06:
-; DARWIN-64-PIC:       movl    _lsrc+64(%rip), %eax
-; DARWIN-64-PIC-NEXT:  movl    %eax, _ldst+64(%rip)
+; DARWIN-64-PIC:       movl    _lsrc+64(%rip), [[EAX:%e.x]]
+; DARWIN-64-PIC-NEXT:  movl    [[EAX]], _ldst+64(%rip)
 ; DARWIN-64-PIC-NEXT:  ret
 }
 
 define void @qux07() nounwind {
 entry:
-       store i32* getelementptr ([131072 x i32]* @ldst, i32 0, i64 16), i32** @lptr, align 8
+       store i32* getelementptr ([131072 x i32], [131072 x i32]* @ldst, i32 0, i64 16), i32** @lptr, align 8
        ret void
-; LINUX-64-STATIC: qux07:
+; LINUX-64-STATIC-LABEL: qux07:
 ; LINUX-64-STATIC: movq    $ldst+64, lptr
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: qux07:
+; LINUX-32-STATIC-LABEL: qux07:
 ; LINUX-32-STATIC:     movl    $ldst+64, lptr
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: qux07:
+; LINUX-32-PIC-LABEL: qux07:
 ; LINUX-32-PIC:        movl    $ldst+64, lptr
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: qux07:
-; LINUX-64-PIC:        leaq    ldst+64(%rip), %rax
-; LINUX-64-PIC-NEXT:   movq    %rax, lptr(%rip)
+; LINUX-64-PIC-LABEL: qux07:
+; LINUX-64-PIC:        leaq    ldst+64(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT:   movq    [[RAX]], lptr(%rip)
 ; LINUX-64-PIC-NEXT:   ret
 
 ; DARWIN-32-STATIC: _qux07:
@@ -1546,2072 +1546,2072 @@ entry:
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _qux07:
-; DARWIN-32-PIC:       call    "L23$pb"
-; DARWIN-32-PIC-NEXT: "L23$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  leal    _ldst+64-"L23$pb"(%eax), %ecx
-; DARWIN-32-PIC-NEXT:  movl    %ecx, _lptr-"L23$pb"(%eax)
+; DARWIN-32-PIC:       calll   L22$pb
+; DARWIN-32-PIC-NEXT: L22$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  leal    (_ldst-L22$pb)+64([[EAX]]), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    [[ECX]], _lptr-L22$pb([[EAX]])
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _qux07:
-; DARWIN-64-STATIC:    leaq    _ldst+64(%rip), %rax
-; DARWIN-64-STATIC-NEXT:       movq    %rax, _lptr(%rip)
+; DARWIN-64-STATIC:    leaq    _ldst+64(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movq    [[RAX]], _lptr(%rip)
 ; DARWIN-64-STATIC-NEXT:       ret
 
 ; DARWIN-64-DYNAMIC: _qux07:
-; DARWIN-64-DYNAMIC:   leaq    _ldst+64(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT:      movq    %rax, _lptr(%rip)
+; DARWIN-64-DYNAMIC:   leaq    _ldst+64(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movq    [[RAX]], _lptr(%rip)
 ; DARWIN-64-DYNAMIC-NEXT:      ret
 
 ; DARWIN-64-PIC: _qux07:
-; DARWIN-64-PIC:       leaq    _ldst+64(%rip), %rax
-; DARWIN-64-PIC-NEXT:  movq    %rax, _lptr(%rip)
+; DARWIN-64-PIC:       leaq    _ldst+64(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movq    [[RAX]], _lptr(%rip)
 ; DARWIN-64-PIC-NEXT:  ret
 }
 
 define void @qux08() nounwind {
 entry:
-       %0 = load i32** @lptr, align 8
-       %1 = load i32* getelementptr ([131072 x i32]* @lsrc, i32 0, i64 16), align 4
-       %2 = getelementptr i32* %0, i64 16
+       %0 = load i32*, i32** @lptr, align 8
+       %1 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @lsrc, i32 0, i64 16), align 4
+       %2 = getelementptr i32, i32* %0, i64 16
        store i32 %1, i32* %2, align 4
-; LINUX-64-STATIC: qux08:
-; LINUX-64-STATIC: movl    lsrc+64(%rip), %eax
-; LINUX-64-STATIC: movq    lptr(%rip), %rcx
-; LINUX-64-STATIC: movl    %eax, 64(%rcx)
+; LINUX-64-STATIC-LABEL: qux08:
+; LINUX-64-STATIC: movl    lsrc+64(%rip), [[EAX:%e.x]]
+; LINUX-64-STATIC: movq    lptr(%rip), [[RCX:%r.x]]
+; LINUX-64-STATIC: movl    [[EAX]], 64([[RCX]])
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: qux08:
-; LINUX-32-STATIC:     movl    lsrc+64, %eax
-; LINUX-32-STATIC-NEXT:        movl    lptr, %ecx
-; LINUX-32-STATIC-NEXT:        movl    %eax, 64(%ecx)
+; LINUX-32-STATIC-LABEL: qux08:
+; LINUX-32-STATIC:     movl    lsrc+64, [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT:        movl    lptr, [[ECX:%e.x]]
+; LINUX-32-STATIC-NEXT:        movl    [[EAX]], 64([[ECX]])
 ; LINUX-32-STATIC-NEXT:        ret
        ret void
 
-; LINUX-32-PIC: qux08:
-; LINUX-32-PIC:        movl    lsrc+64, %eax
-; LINUX-32-PIC-NEXT:   movl    lptr, %ecx
-; LINUX-32-PIC-NEXT:   movl    %eax, 64(%ecx)
+; LINUX-32-PIC-LABEL: qux08:
+; LINUX-32-PIC:        movl    lsrc+64, [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT:   movl    lptr, [[ECX:%e.x]]
+; LINUX-32-PIC-NEXT:   movl    [[EAX]], 64([[ECX]])
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: qux08:
-; LINUX-64-PIC:        movl    lsrc+64(%rip), %eax
-; LINUX-64-PIC-NEXT:   movq    lptr(%rip), %rcx
-; LINUX-64-PIC-NEXT:   movl    %eax, 64(%rcx)
+; LINUX-64-PIC-LABEL: qux08:
+; LINUX-64-PIC:        movl    lsrc+64(%rip), [[EAX:%e.x]]
+; LINUX-64-PIC-NEXT:   movq    lptr(%rip), [[RCX:%r.x]]
+; LINUX-64-PIC-NEXT:   movl    [[EAX]], 64([[RCX]])
 ; LINUX-64-PIC-NEXT:   ret
 
 ; DARWIN-32-STATIC: _qux08:
-; DARWIN-32-STATIC:    movl    _lsrc+64, %eax
-; DARWIN-32-STATIC-NEXT:       movl    _lptr, %ecx
-; DARWIN-32-STATIC-NEXT:       movl    %eax, 64(%ecx)
+; DARWIN-32-STATIC:    movl    _lsrc+64, [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       movl    _lptr, [[ECX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       movl    [[EAX]], 64([[ECX]])
 ; DARWIN-32-STATIC-NEXT:       ret
 
 ; DARWIN-32-DYNAMIC: _qux08:
-; DARWIN-32-DYNAMIC:   movl    _lsrc+64, %eax
-; DARWIN-32-DYNAMIC-NEXT:      movl    _lptr, %ecx
-; DARWIN-32-DYNAMIC-NEXT:      movl    %eax, 64(%ecx)
+; DARWIN-32-DYNAMIC:   movl    _lsrc+64, [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    _lptr, [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    [[EAX]], 64([[ECX]])
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _qux08:
-; DARWIN-32-PIC:       call    "L24$pb"
-; DARWIN-32-PIC-NEXT: "L24$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  movl    _lsrc+64-"L24$pb"(%eax), %ecx
-; DARWIN-32-PIC-NEXT:  movl    _lptr-"L24$pb"(%eax), %eax
-; DARWIN-32-PIC-NEXT:  movl    %ecx, 64(%eax)
+; DARWIN-32-PIC:       calll   L23$pb
+; DARWIN-32-PIC-NEXT: L23$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    (_lsrc-L23$pb)+64([[EAX]]), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    _lptr-L23$pb([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    [[ECX]], 64([[EAX]])
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _qux08:
-; DARWIN-64-STATIC:    movl    _lsrc+64(%rip), %eax
-; DARWIN-64-STATIC-NEXT:       movq    _lptr(%rip), %rcx
-; DARWIN-64-STATIC-NEXT:       movl    %eax, 64(%rcx)
+; DARWIN-64-STATIC:    movl    _lsrc+64(%rip), [[EAX:%e.x]]
+; DARWIN-64-STATIC-NEXT:       movq    _lptr(%rip), [[RCX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movl    [[EAX]], 64([[RCX]])
 ; DARWIN-64-STATIC-NEXT:       ret
 
 ; DARWIN-64-DYNAMIC: _qux08:
-; DARWIN-64-DYNAMIC:   movl    _lsrc+64(%rip), %eax
-; DARWIN-64-DYNAMIC-NEXT:      movq    _lptr(%rip), %rcx
-; DARWIN-64-DYNAMIC-NEXT:      movl    %eax, 64(%rcx)
+; DARWIN-64-DYNAMIC:   movl    _lsrc+64(%rip), [[EAX:%e.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movq    _lptr(%rip), [[RCX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movl    [[EAX]], 64([[RCX]])
 ; DARWIN-64-DYNAMIC-NEXT:      ret
 
 ; DARWIN-64-PIC: _qux08:
-; DARWIN-64-PIC:       movl    _lsrc+64(%rip), %eax
-; DARWIN-64-PIC-NEXT:  movq    _lptr(%rip), %rcx
-; DARWIN-64-PIC-NEXT:  movl    %eax, 64(%rcx)
+; DARWIN-64-PIC:       movl    _lsrc+64(%rip), [[EAX:%e.x]]
+; DARWIN-64-PIC-NEXT:  movq    _lptr(%rip), [[RCX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movl    [[EAX]], 64([[RCX]])
 ; DARWIN-64-PIC-NEXT:  ret
 }
 
 define void @ind00(i64 %i) nounwind {
 entry:
-       %0 = getelementptr [131072 x i32]* @src, i64 0, i64 %i
-       %1 = load i32* %0, align 4
-       %2 = getelementptr [131072 x i32]* @dst, i64 0, i64 %i
+       %0 = getelementptr [131072 x i32], [131072 x i32]* @src, i64 0, i64 %i
+       %1 = load i32, i32* %0, align 4
+       %2 = getelementptr [131072 x i32], [131072 x i32]* @dst, i64 0, i64 %i
        store i32 %1, i32* %2, align 4
        ret void
-; LINUX-64-STATIC: ind00:
-; LINUX-64-STATIC: movl    src(,%rdi,4), %eax
-; LINUX-64-STATIC: movl    %eax, dst(,%rdi,4)
+; LINUX-64-STATIC-LABEL: ind00:
+; LINUX-64-STATIC: movl    src(,%rdi,4), [[EAX:%e.x]]
+; LINUX-64-STATIC: movl    [[EAX]], dst(,%rdi,4)
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: ind00:
-; LINUX-32-STATIC:     movl    4(%esp), %eax
-; LINUX-32-STATIC-NEXT:        movl    src(,%eax,4), %ecx
-; LINUX-32-STATIC-NEXT:        movl    %ecx, dst(,%eax,4)
+; LINUX-32-STATIC-LABEL: ind00:
+; LINUX-32-STATIC:     movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT:        movl    src(,[[EAX]],4), [[ECX:%e.x]]
+; LINUX-32-STATIC-NEXT:        movl    [[ECX]], dst(,[[EAX]],4)
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: ind00:
-; LINUX-32-PIC:        movl    4(%esp), %eax
-; LINUX-32-PIC-NEXT:   movl    src(,%eax,4), %ecx
-; LINUX-32-PIC-NEXT:   movl    %ecx, dst(,%eax,4)
+; LINUX-32-PIC-LABEL: ind00:
+; LINUX-32-PIC:        movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT:   movl    src(,[[EAX]],4), [[ECX:%e.x]]
+; LINUX-32-PIC-NEXT:   movl    [[ECX]], dst(,[[EAX]],4)
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: ind00:
-; LINUX-64-PIC:        movq    src@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT:   movl    (%rax,%rdi,4), %eax
-; LINUX-64-PIC-NEXT:   movq    dst@GOTPCREL(%rip), %rcx
-; LINUX-64-PIC-NEXT:   movl    %eax, (%rcx,%rdi,4)
+; LINUX-64-PIC-LABEL: ind00:
+; LINUX-64-PIC:        movq    src@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT:   movl    ([[RAX]],%rdi,4), [[EAX:%e.x]]
+; LINUX-64-PIC-NEXT:   movq    dst@GOTPCREL(%rip), [[RCX:%r.x]]
+; LINUX-64-PIC-NEXT:   movl    [[EAX]], ([[RCX]],%rdi,4)
 ; LINUX-64-PIC-NEXT:   ret
 
 ; DARWIN-32-STATIC: _ind00:
-; DARWIN-32-STATIC:    movl    4(%esp), %eax
-; DARWIN-32-STATIC-NEXT:       movl    _src(,%eax,4), %ecx
-; DARWIN-32-STATIC-NEXT:       movl    %ecx, _dst(,%eax,4)
+; DARWIN-32-STATIC:    movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       movl    _src(,[[EAX]],4), [[ECX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       movl    [[ECX]], _dst(,[[EAX]],4)
 ; DARWIN-32-STATIC-NEXT:       ret
 
 ; DARWIN-32-DYNAMIC: _ind00:
-; DARWIN-32-DYNAMIC:   movl    4(%esp), %eax
-; DARWIN-32-DYNAMIC-NEXT:      movl    L_src$non_lazy_ptr, %ecx
-; DARWIN-32-DYNAMIC-NEXT:      movl    (%ecx,%eax,4), %ecx
-; DARWIN-32-DYNAMIC-NEXT:      movl    L_dst$non_lazy_ptr, %edx
-; DARWIN-32-DYNAMIC-NEXT:      movl    %ecx, (%edx,%eax,4)
+; DARWIN-32-DYNAMIC:   movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    L_src$non_lazy_ptr, [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    ([[ECX]],[[EAX]],4), [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    L_dst$non_lazy_ptr, [[EDX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    [[ECX]], ([[EDX]],[[EAX]],4)
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _ind00:
-; DARWIN-32-PIC:       call    "L25$pb"
-; DARWIN-32-PIC-NEXT: "L25$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  movl    4(%esp), %ecx
-; DARWIN-32-PIC-NEXT:  movl    L_src$non_lazy_ptr-"L25$pb"(%eax), %edx
-; DARWIN-32-PIC-NEXT:  movl    (%edx,%ecx,4), %edx
-; DARWIN-32-PIC-NEXT:  movl    L_dst$non_lazy_ptr-"L25$pb"(%eax), %eax
-; DARWIN-32-PIC-NEXT:  movl    %edx, (%eax,%ecx,4)
+; DARWIN-32-PIC:       calll   L24$pb
+; DARWIN-32-PIC-NEXT: L24$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    L_src$non_lazy_ptr-L24$pb([[EAX]]), [[EDX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    ([[EDX]],[[ECX]],4), [[EDX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    L_dst$non_lazy_ptr-L24$pb([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    [[EDX]], ([[EAX]],[[ECX]],4)
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _ind00:
-; DARWIN-64-STATIC:    movq    _src@GOTPCREL(%rip), %rax
-; DARWIN-64-STATIC-NEXT:       movl    (%rax,%rdi,4), %eax
-; DARWIN-64-STATIC-NEXT:       movq    _dst@GOTPCREL(%rip), %rcx
-; DARWIN-64-STATIC-NEXT:       movl    %eax, (%rcx,%rdi,4)
+; DARWIN-64-STATIC:    movq    _src@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movl    ([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-STATIC-NEXT:       movq    _dst@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movl    [[EAX]], ([[RCX]],%rdi,4)
 ; DARWIN-64-STATIC-NEXT:       ret
 
 ; DARWIN-64-DYNAMIC: _ind00:
-; DARWIN-64-DYNAMIC:   movq    _src@GOTPCREL(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT:      movl    (%rax,%rdi,4), %eax
-; DARWIN-64-DYNAMIC-NEXT:      movq    _dst@GOTPCREL(%rip), %rcx
-; DARWIN-64-DYNAMIC-NEXT:      movl    %eax, (%rcx,%rdi,4)
+; DARWIN-64-DYNAMIC:   movq    _src@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movl    ([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movq    _dst@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movl    [[EAX]], ([[RCX]],%rdi,4)
 ; DARWIN-64-DYNAMIC-NEXT:      ret
 
 ; DARWIN-64-PIC: _ind00:
-; DARWIN-64-PIC:       movq    _src@GOTPCREL(%rip), %rax
-; DARWIN-64-PIC-NEXT:  movl    (%rax,%rdi,4), %eax
-; DARWIN-64-PIC-NEXT:  movq    _dst@GOTPCREL(%rip), %rcx
-; DARWIN-64-PIC-NEXT:  movl    %eax, (%rcx,%rdi,4)
+; DARWIN-64-PIC:       movq    _src@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movl    ([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-PIC-NEXT:  movq    _dst@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movl    [[EAX]], ([[RCX]],%rdi,4)
 ; DARWIN-64-PIC-NEXT:  ret
 }
 
 define void @ixd00(i64 %i) nounwind {
 entry:
-       %0 = getelementptr [32 x i32]* @xsrc, i64 0, i64 %i
-       %1 = load i32* %0, align 4
-       %2 = getelementptr [32 x i32]* @xdst, i64 0, i64 %i
+       %0 = getelementptr [32 x i32], [32 x i32]* @xsrc, i64 0, i64 %i
+       %1 = load i32, i32* %0, align 4
+       %2 = getelementptr [32 x i32], [32 x i32]* @xdst, i64 0, i64 %i
        store i32 %1, i32* %2, align 4
        ret void
-; LINUX-64-STATIC: ixd00:
-; LINUX-64-STATIC: movl    xsrc(,%rdi,4), %eax
-; LINUX-64-STATIC: movl    %eax, xdst(,%rdi,4)
+; LINUX-64-STATIC-LABEL: ixd00:
+; LINUX-64-STATIC: movl    xsrc(,%rdi,4), [[EAX:%e.x]]
+; LINUX-64-STATIC: movl    [[EAX]], xdst(,%rdi,4)
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: ixd00:
-; LINUX-32-STATIC:     movl    4(%esp), %eax
-; LINUX-32-STATIC-NEXT:        movl    xsrc(,%eax,4), %ecx
-; LINUX-32-STATIC-NEXT:        movl    %ecx, xdst(,%eax,4)
+; LINUX-32-STATIC-LABEL: ixd00:
+; LINUX-32-STATIC:     movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT:        movl    xsrc(,[[EAX]],4), [[ECX:%e.x]]
+; LINUX-32-STATIC-NEXT:        movl    [[ECX]], xdst(,[[EAX]],4)
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: ixd00:
-; LINUX-32-PIC:        movl    4(%esp), %eax
-; LINUX-32-PIC-NEXT:   movl    xsrc(,%eax,4), %ecx
-; LINUX-32-PIC-NEXT:   movl    %ecx, xdst(,%eax,4)
+; LINUX-32-PIC-LABEL: ixd00:
+; LINUX-32-PIC:        movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT:   movl    xsrc(,[[EAX]],4), [[ECX:%e.x]]
+; LINUX-32-PIC-NEXT:   movl    [[ECX]], xdst(,[[EAX]],4)
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: ixd00:
-; LINUX-64-PIC:        movq    xsrc@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT:   movl    (%rax,%rdi,4), %eax
-; LINUX-64-PIC-NEXT:   movq    xdst@GOTPCREL(%rip), %rcx
-; LINUX-64-PIC-NEXT:   movl    %eax, (%rcx,%rdi,4)
+; LINUX-64-PIC-LABEL: ixd00:
+; LINUX-64-PIC:        movq    xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT:   movl    ([[RAX]],%rdi,4), [[EAX:%e.x]]
+; LINUX-64-PIC-NEXT:   movq    xdst@GOTPCREL(%rip), [[RCX:%r.x]]
+; LINUX-64-PIC-NEXT:   movl    [[EAX]], ([[RCX]],%rdi,4)
 ; LINUX-64-PIC-NEXT:   ret
 
 ; DARWIN-32-STATIC: _ixd00:
-; DARWIN-32-STATIC:    movl    4(%esp), %eax
-; DARWIN-32-STATIC-NEXT:       movl    _xsrc(,%eax,4), %ecx
-; DARWIN-32-STATIC-NEXT:       movl    %ecx, _xdst(,%eax,4)
+; DARWIN-32-STATIC:    movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       movl    _xsrc(,[[EAX]],4), [[ECX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       movl    [[ECX]], _xdst(,[[EAX]],4)
 ; DARWIN-32-STATIC-NEXT:       ret
 
 ; DARWIN-32-DYNAMIC: _ixd00:
-; DARWIN-32-DYNAMIC:   movl    4(%esp), %eax
-; DARWIN-32-DYNAMIC-NEXT:      movl    L_xsrc$non_lazy_ptr, %ecx
-; DARWIN-32-DYNAMIC-NEXT:      movl    (%ecx,%eax,4), %ecx
-; DARWIN-32-DYNAMIC-NEXT:      movl    L_xdst$non_lazy_ptr, %edx
-; DARWIN-32-DYNAMIC-NEXT:      movl    %ecx, (%edx,%eax,4)
+; DARWIN-32-DYNAMIC:   movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    L_xsrc$non_lazy_ptr, [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    ([[ECX]],[[EAX]],4), [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    L_xdst$non_lazy_ptr, [[EDX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    [[ECX]], ([[EDX]],[[EAX]],4)
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _ixd00:
-; DARWIN-32-PIC:       call    "L26$pb"
-; DARWIN-32-PIC-NEXT: "L26$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  movl    4(%esp), %ecx
-; DARWIN-32-PIC-NEXT:  movl    L_xsrc$non_lazy_ptr-"L26$pb"(%eax), %edx
-; DARWIN-32-PIC-NEXT:  movl    (%edx,%ecx,4), %edx
-; DARWIN-32-PIC-NEXT:  movl    L_xdst$non_lazy_ptr-"L26$pb"(%eax), %eax
-; DARWIN-32-PIC-NEXT:  movl    %edx, (%eax,%ecx,4)
+; DARWIN-32-PIC:       calll   L25$pb
+; DARWIN-32-PIC-NEXT: L25$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    L_xsrc$non_lazy_ptr-L25$pb([[EAX]]), [[EDX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    ([[EDX]],[[ECX]],4), [[EDX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    L_xdst$non_lazy_ptr-L25$pb([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    [[EDX]], ([[EAX]],[[ECX]],4)
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _ixd00:
-; DARWIN-64-STATIC:    movq    _xsrc@GOTPCREL(%rip), %rax
-; DARWIN-64-STATIC-NEXT:       movl    (%rax,%rdi,4), %eax
-; DARWIN-64-STATIC-NEXT:       movq    _xdst@GOTPCREL(%rip), %rcx
-; DARWIN-64-STATIC-NEXT:       movl    %eax, (%rcx,%rdi,4)
+; DARWIN-64-STATIC:    movq    _xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movl    ([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-STATIC-NEXT:       movq    _xdst@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movl    [[EAX]], ([[RCX]],%rdi,4)
 ; DARWIN-64-STATIC-NEXT:       ret
 
 ; DARWIN-64-DYNAMIC: _ixd00:
-; DARWIN-64-DYNAMIC:   movq    _xsrc@GOTPCREL(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT:      movl    (%rax,%rdi,4), %eax
-; DARWIN-64-DYNAMIC-NEXT:      movq    _xdst@GOTPCREL(%rip), %rcx
-; DARWIN-64-DYNAMIC-NEXT:      movl    %eax, (%rcx,%rdi,4)
+; DARWIN-64-DYNAMIC:   movq    _xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movl    ([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movq    _xdst@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movl    [[EAX]], ([[RCX]],%rdi,4)
 ; DARWIN-64-DYNAMIC-NEXT:      ret
 
 ; DARWIN-64-PIC: _ixd00:
-; DARWIN-64-PIC:       movq    _xsrc@GOTPCREL(%rip), %rax
-; DARWIN-64-PIC-NEXT:  movl    (%rax,%rdi,4), %eax
-; DARWIN-64-PIC-NEXT:  movq    _xdst@GOTPCREL(%rip), %rcx
-; DARWIN-64-PIC-NEXT:  movl    %eax, (%rcx,%rdi,4)
+; DARWIN-64-PIC:       movq    _xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movl    ([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-PIC-NEXT:  movq    _xdst@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movl    [[EAX]], ([[RCX]],%rdi,4)
 ; DARWIN-64-PIC-NEXT:  ret
 }
 
 define void @ind01(i64 %i) nounwind {
 entry:
-       %0 = getelementptr [131072 x i32]* @dst, i64 0, i64 %i
+       %0 = getelementptr [131072 x i32], [131072 x i32]* @dst, i64 0, i64 %i
        store i32* %0, i32** @ptr, align 8
        ret void
-; LINUX-64-STATIC: ind01:
-; LINUX-64-STATIC: leaq    dst(,%rdi,4), %rax
-; LINUX-64-STATIC: movq    %rax, ptr
+; LINUX-64-STATIC-LABEL: ind01:
+; LINUX-64-STATIC: leaq    dst(,%rdi,4), [[RAX:%r.x]]
+; LINUX-64-STATIC: movq    [[RAX]], ptr
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: ind01:
-; LINUX-32-STATIC:     movl    4(%esp), %eax
-; LINUX-32-STATIC-NEXT:        leal    dst(,%eax,4), %eax
-; LINUX-32-STATIC-NEXT:        movl    %eax, ptr
+; LINUX-32-STATIC-LABEL: ind01:
+; LINUX-32-STATIC:     movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT:        leal    dst(,[[EAX]],4), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT:        movl    [[EAX]], ptr
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: ind01:
-; LINUX-32-PIC:        movl    4(%esp), %eax
-; LINUX-32-PIC-NEXT:   leal    dst(,%eax,4), %eax
-; LINUX-32-PIC-NEXT:   movl    %eax, ptr
+; LINUX-32-PIC-LABEL: ind01:
+; LINUX-32-PIC:        movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT:   leal    dst(,[[EAX]],4), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT:   movl    [[EAX]], ptr
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: ind01:
+; LINUX-64-PIC-LABEL: ind01:
 ; LINUX-64-PIC:        shlq    $2, %rdi
 ; LINUX-64-PIC-NEXT:   addq    dst@GOTPCREL(%rip), %rdi
-; LINUX-64-PIC-NEXT:   movq    ptr@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT:   movq    %rdi, (%rax)
+; LINUX-64-PIC-NEXT:   movq    ptr@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT:   movq    %rdi, ([[RAX]])
 ; LINUX-64-PIC-NEXT:   ret
 
 ; DARWIN-32-STATIC: _ind01:
-; DARWIN-32-STATIC:    movl    4(%esp), %eax
-; DARWIN-32-STATIC-NEXT:       leal    _dst(,%eax,4), %eax
-; DARWIN-32-STATIC-NEXT:       movl    %eax, _ptr
+; DARWIN-32-STATIC:    movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       leal    _dst(,[[EAX]],4), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       movl    [[EAX]], _ptr
 ; DARWIN-32-STATIC-NEXT:       ret
 
 ; DARWIN-32-DYNAMIC: _ind01:
-; DARWIN-32-DYNAMIC:   movl    4(%esp), %eax
-; DARWIN-32-DYNAMIC-NEXT:      shll    $2, %eax
-; DARWIN-32-DYNAMIC-NEXT:      addl    L_dst$non_lazy_ptr, %eax
-; DARWIN-32-DYNAMIC-NEXT:      movl    L_ptr$non_lazy_ptr, %ecx
-; DARWIN-32-DYNAMIC-NEXT:      movl    %eax, (%ecx)
+; DARWIN-32-DYNAMIC:   movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      shll    $2, [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      addl    L_dst$non_lazy_ptr, [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    L_ptr$non_lazy_ptr, [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    [[EAX]], ([[ECX]])
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _ind01:
-; DARWIN-32-PIC:       call    "L27$pb"
-; DARWIN-32-PIC-NEXT: "L27$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  movl    4(%esp), %ecx
-; DARWIN-32-PIC-NEXT:  shll    $2, %ecx
-; DARWIN-32-PIC-NEXT:  addl    L_dst$non_lazy_ptr-"L27$pb"(%eax), %ecx
-; DARWIN-32-PIC-NEXT:  movl    L_ptr$non_lazy_ptr-"L27$pb"(%eax), %eax
-; DARWIN-32-PIC-NEXT:  movl    %ecx, (%eax)
+; DARWIN-32-PIC:       calll   L26$pb
+; DARWIN-32-PIC-NEXT: L26$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  shll    $2, [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  addl    L_dst$non_lazy_ptr-L26$pb([[EAX]]), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    L_ptr$non_lazy_ptr-L26$pb([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    [[ECX]], ([[EAX]])
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _ind01:
 ; DARWIN-64-STATIC:    shlq    $2, %rdi
 ; DARWIN-64-STATIC-NEXT:       addq    _dst@GOTPCREL(%rip), %rdi
-; DARWIN-64-STATIC-NEXT:       movq    _ptr@GOTPCREL(%rip), %rax
-; DARWIN-64-STATIC-NEXT:       movq    %rdi, (%rax)
+; DARWIN-64-STATIC-NEXT:       movq    _ptr@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movq    %rdi, ([[RAX]])
 ; DARWIN-64-STATIC-NEXT:       ret
 
 ; DARWIN-64-DYNAMIC: _ind01:
 ; DARWIN-64-DYNAMIC:   shlq    $2, %rdi
 ; DARWIN-64-DYNAMIC-NEXT:      addq    _dst@GOTPCREL(%rip), %rdi
-; DARWIN-64-DYNAMIC-NEXT:      movq    _ptr@GOTPCREL(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT:      movq    %rdi, (%rax)
+; DARWIN-64-DYNAMIC-NEXT:      movq    _ptr@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movq    %rdi, ([[RAX]])
 ; DARWIN-64-DYNAMIC-NEXT:      ret
 
 ; DARWIN-64-PIC: _ind01:
 ; DARWIN-64-PIC:       shlq    $2, %rdi
 ; DARWIN-64-PIC-NEXT:  addq    _dst@GOTPCREL(%rip), %rdi
-; DARWIN-64-PIC-NEXT:  movq    _ptr@GOTPCREL(%rip), %rax
-; DARWIN-64-PIC-NEXT:  movq    %rdi, (%rax)
+; DARWIN-64-PIC-NEXT:  movq    _ptr@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movq    %rdi, ([[RAX]])
 ; DARWIN-64-PIC-NEXT:  ret
 }
 
 define void @ixd01(i64 %i) nounwind {
 entry:
-       %0 = getelementptr [32 x i32]* @xdst, i64 0, i64 %i
+       %0 = getelementptr [32 x i32], [32 x i32]* @xdst, i64 0, i64 %i
        store i32* %0, i32** @ptr, align 8
        ret void
-; LINUX-64-STATIC: ixd01:
-; LINUX-64-STATIC: leaq    xdst(,%rdi,4), %rax
-; LINUX-64-STATIC: movq    %rax, ptr
+; LINUX-64-STATIC-LABEL: ixd01:
+; LINUX-64-STATIC: leaq    xdst(,%rdi,4), [[RAX:%r.x]]
+; LINUX-64-STATIC: movq    [[RAX]], ptr
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: ixd01:
-; LINUX-32-STATIC:     movl    4(%esp), %eax
-; LINUX-32-STATIC-NEXT:        leal    xdst(,%eax,4), %eax
-; LINUX-32-STATIC-NEXT:        movl    %eax, ptr
+; LINUX-32-STATIC-LABEL: ixd01:
+; LINUX-32-STATIC:     movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT:        leal    xdst(,[[EAX]],4), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT:        movl    [[EAX]], ptr
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: ixd01:
-; LINUX-32-PIC:        movl    4(%esp), %eax
-; LINUX-32-PIC-NEXT:   leal    xdst(,%eax,4), %eax
-; LINUX-32-PIC-NEXT:   movl    %eax, ptr
+; LINUX-32-PIC-LABEL: ixd01:
+; LINUX-32-PIC:        movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT:   leal    xdst(,[[EAX]],4), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT:   movl    [[EAX]], ptr
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: ixd01:
+; LINUX-64-PIC-LABEL: ixd01:
 ; LINUX-64-PIC:        shlq    $2, %rdi
 ; LINUX-64-PIC-NEXT:   addq    xdst@GOTPCREL(%rip), %rdi
-; LINUX-64-PIC-NEXT:   movq    ptr@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT:   movq    %rdi, (%rax)
+; LINUX-64-PIC-NEXT:   movq    ptr@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT:   movq    %rdi, ([[RAX]])
 ; LINUX-64-PIC-NEXT:   ret
 
 ; DARWIN-32-STATIC: _ixd01:
-; DARWIN-32-STATIC:    movl    4(%esp), %eax
-; DARWIN-32-STATIC-NEXT:       leal    _xdst(,%eax,4), %eax
-; DARWIN-32-STATIC-NEXT:       movl    %eax, _ptr
+; DARWIN-32-STATIC:    movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       leal    _xdst(,[[EAX]],4), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       movl    [[EAX]], _ptr
 ; DARWIN-32-STATIC-NEXT:       ret
 
 ; DARWIN-32-DYNAMIC: _ixd01:
-; DARWIN-32-DYNAMIC:   movl    4(%esp), %eax
-; DARWIN-32-DYNAMIC-NEXT:      shll    $2, %eax
-; DARWIN-32-DYNAMIC-NEXT:      addl    L_xdst$non_lazy_ptr, %eax
-; DARWIN-32-DYNAMIC-NEXT:      movl    L_ptr$non_lazy_ptr, %ecx
-; DARWIN-32-DYNAMIC-NEXT:      movl    %eax, (%ecx)
+; DARWIN-32-DYNAMIC:   movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      shll    $2, [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      addl    L_xdst$non_lazy_ptr, [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    L_ptr$non_lazy_ptr, [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    [[EAX]], ([[ECX]])
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _ixd01:
-; DARWIN-32-PIC:       call    "L28$pb"
-; DARWIN-32-PIC-NEXT: "L28$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  movl    4(%esp), %ecx
-; DARWIN-32-PIC-NEXT:  shll    $2, %ecx
-; DARWIN-32-PIC-NEXT:  addl    L_xdst$non_lazy_ptr-"L28$pb"(%eax), %ecx
-; DARWIN-32-PIC-NEXT:  movl    L_ptr$non_lazy_ptr-"L28$pb"(%eax), %eax
-; DARWIN-32-PIC-NEXT:  movl    %ecx, (%eax)
+; DARWIN-32-PIC:       calll   L27$pb
+; DARWIN-32-PIC-NEXT: L27$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  shll    $2, [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  addl    L_xdst$non_lazy_ptr-L27$pb([[EAX]]), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    L_ptr$non_lazy_ptr-L27$pb([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    [[ECX]], ([[EAX]])
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _ixd01:
 ; DARWIN-64-STATIC:    shlq    $2, %rdi
 ; DARWIN-64-STATIC-NEXT:       addq    _xdst@GOTPCREL(%rip), %rdi
-; DARWIN-64-STATIC-NEXT:       movq    _ptr@GOTPCREL(%rip), %rax
-; DARWIN-64-STATIC-NEXT:       movq    %rdi, (%rax)
+; DARWIN-64-STATIC-NEXT:       movq    _ptr@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movq    %rdi, ([[RAX]])
 ; DARWIN-64-STATIC-NEXT:       ret
 
 ; DARWIN-64-DYNAMIC: _ixd01:
 ; DARWIN-64-DYNAMIC:   shlq    $2, %rdi
 ; DARWIN-64-DYNAMIC-NEXT:      addq    _xdst@GOTPCREL(%rip), %rdi
-; DARWIN-64-DYNAMIC-NEXT:      movq    _ptr@GOTPCREL(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT:      movq    %rdi, (%rax)
+; DARWIN-64-DYNAMIC-NEXT:      movq    _ptr@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movq    %rdi, ([[RAX]])
 ; DARWIN-64-DYNAMIC-NEXT:      ret
 
 ; DARWIN-64-PIC: _ixd01:
 ; DARWIN-64-PIC:       shlq    $2, %rdi
 ; DARWIN-64-PIC-NEXT:  addq    _xdst@GOTPCREL(%rip), %rdi
-; DARWIN-64-PIC-NEXT:  movq    _ptr@GOTPCREL(%rip), %rax
-; DARWIN-64-PIC-NEXT:  movq    %rdi, (%rax)
+; DARWIN-64-PIC-NEXT:  movq    _ptr@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movq    %rdi, ([[RAX]])
 ; DARWIN-64-PIC-NEXT:  ret
 }
 
 define void @ind02(i64 %i) nounwind {
 entry:
-       %0 = load i32** @ptr, align 8
-       %1 = getelementptr [131072 x i32]* @src, i64 0, i64 %i
-       %2 = load i32* %1, align 4
-       %3 = getelementptr i32* %0, i64 %i
+       %0 = load i32*, i32** @ptr, align 8
+       %1 = getelementptr [131072 x i32], [131072 x i32]* @src, i64 0, i64 %i
+       %2 = load i32, i32* %1, align 4
+       %3 = getelementptr i32, i32* %0, i64 %i
        store i32 %2, i32* %3, align 4
        ret void
-; LINUX-64-STATIC: ind02:
-; LINUX-64-STATIC: movl    src(,%rdi,4), %eax
-; LINUX-64-STATIC: movq    ptr(%rip), %rcx
-; LINUX-64-STATIC: movl    %eax, (%rcx,%rdi,4)
+; LINUX-64-STATIC-LABEL: ind02:
+; LINUX-64-STATIC: movl    src(,%rdi,4), [[EAX:%e.x]]
+; LINUX-64-STATIC: movq    ptr(%rip), [[RCX:%r.x]]
+; LINUX-64-STATIC: movl    [[EAX]], ([[RCX]],%rdi,4)
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: ind02:
-; LINUX-32-STATIC:     movl    4(%esp), %eax
-; LINUX-32-STATIC-NEXT:        movl    src(,%eax,4), %ecx
-; LINUX-32-STATIC-NEXT:        movl    ptr, %edx
-; LINUX-32-STATIC-NEXT:        movl    %ecx, (%edx,%eax,4)
+; LINUX-32-STATIC-LABEL: ind02:
+; LINUX-32-STATIC:     movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT:        movl    src(,[[EAX]],4), [[ECX:%e.x]]
+; LINUX-32-STATIC-NEXT:        movl    ptr, [[EDX:%e.x]]
+; LINUX-32-STATIC-NEXT:        movl    [[ECX]], ([[EDX]],[[EAX]],4)
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: ind02:
-; LINUX-32-PIC:        movl    4(%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-LABEL: ind02:
+; LINUX-32-PIC:        movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT:   movl    src(,[[EAX]],4), [[ECX:%e.x]]
+; LINUX-32-PIC-NEXT:   movl    ptr, [[EDX:%e.x]]
+; LINUX-32-PIC-NEXT:   movl    [[ECX]], ([[EDX]],[[EAX]],4)
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: ind02:
-; LINUX-64-PIC:        movq    src@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT:   movl    (%rax,%rdi,4), %eax
-; LINUX-64-PIC-NEXT:   movq    ptr@GOTPCREL(%rip), %rcx
-; LINUX-64-PIC-NEXT:   movq    (%rcx), %rcx
-; LINUX-64-PIC-NEXT:   movl    %eax, (%rcx,%rdi,4)
+; LINUX-64-PIC-LABEL: ind02:
+; LINUX-64-PIC:        movq    src@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT:   movl    ([[RAX]],%rdi,4), [[EAX:%e.x]]
+; LINUX-64-PIC-NEXT:   movq    ptr@GOTPCREL(%rip), [[RCX:%r.x]]
+; LINUX-64-PIC-NEXT:   movq    ([[RCX]]), [[RCX:%r.x]]
+; LINUX-64-PIC-NEXT:   movl    [[EAX]], ([[RCX]],%rdi,4)
 ; LINUX-64-PIC-NEXT:   ret
 
 ; DARWIN-32-STATIC: _ind02:
-; DARWIN-32-STATIC:    movl    4(%esp), %eax
-; DARWIN-32-STATIC-NEXT:       movl    _src(,%eax,4), %ecx
-; DARWIN-32-STATIC-NEXT:       movl    _ptr, %edx
-; DARWIN-32-STATIC-NEXT:       movl    %ecx, (%edx,%eax,4)
+; DARWIN-32-STATIC:    movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       movl    _src(,[[EAX]],4), [[ECX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       movl    _ptr, [[EDX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       movl    [[ECX]], ([[EDX]],[[EAX]],4)
 ; DARWIN-32-STATIC-NEXT:       ret
 
 ; DARWIN-32-DYNAMIC: _ind02:
-; DARWIN-32-DYNAMIC:   movl    4(%esp), %eax
-; DARWIN-32-DYNAMIC-NEXT:      movl    L_src$non_lazy_ptr, %ecx
-; DARWIN-32-DYNAMIC-NEXT:      movl    (%ecx,%eax,4), %ecx
-; DARWIN-32-DYNAMIC-NEXT:      movl    L_ptr$non_lazy_ptr, %edx
-; DARWIN-32-DYNAMIC-NEXT:      movl    (%edx), %edx
-; DARWIN-32-DYNAMIC-NEXT:      movl    %ecx, (%edx,%eax,4)
+; DARWIN-32-DYNAMIC:   movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    L_src$non_lazy_ptr, [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    ([[ECX]],[[EAX]],4), [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    L_ptr$non_lazy_ptr, [[EDX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    ([[EDX]]), [[EDX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    [[ECX]], ([[EDX]],[[EAX]],4)
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _ind02:
-; DARWIN-32-PIC:       call    "L29$pb"
-; DARWIN-32-PIC-NEXT: "L29$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  movl    4(%esp), %ecx
-; DARWIN-32-PIC-NEXT:  movl    L_src$non_lazy_ptr-"L29$pb"(%eax), %edx
-; DARWIN-32-PIC-NEXT:  movl    (%edx,%ecx,4), %edx
-; DARWIN-32-PIC-NEXT:  movl    L_ptr$non_lazy_ptr-"L29$pb"(%eax), %eax
-; DARWIN-32-PIC-NEXT:  movl    (%eax), %eax
-; DARWIN-32-PIC-NEXT:  movl    %edx, (%eax,%ecx,4)
+; DARWIN-32-PIC:       calll   L28$pb
+; DARWIN-32-PIC-NEXT: L28$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    L_src$non_lazy_ptr-L28$pb([[EAX]]), [[EDX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    ([[EDX]],[[ECX]],4), [[EDX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    L_ptr$non_lazy_ptr-L28$pb([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    ([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    [[EDX]], ([[EAX]],[[ECX]],4)
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _ind02:
-; DARWIN-64-STATIC:    movq    _src@GOTPCREL(%rip), %rax
-; DARWIN-64-STATIC-NEXT:       movl    (%rax,%rdi,4), %eax
-; DARWIN-64-STATIC-NEXT:       movq    _ptr@GOTPCREL(%rip), %rcx
-; DARWIN-64-STATIC-NEXT:       movq    (%rcx), %rcx
-; DARWIN-64-STATIC-NEXT:       movl    %eax, (%rcx,%rdi,4)
+; DARWIN-64-STATIC:    movq    _src@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movl    ([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-STATIC-NEXT:       movq    _ptr@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movq    ([[RCX]]), [[RCX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movl    [[EAX]], ([[RCX]],%rdi,4)
 ; DARWIN-64-STATIC-NEXT:       ret
 
 ; DARWIN-64-DYNAMIC: _ind02:
-; DARWIN-64-DYNAMIC:   movq    _src@GOTPCREL(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT:      movl    (%rax,%rdi,4), %eax
-; DARWIN-64-DYNAMIC-NEXT:      movq    _ptr@GOTPCREL(%rip), %rcx
-; DARWIN-64-DYNAMIC-NEXT:      movq    (%rcx), %rcx
-; DARWIN-64-DYNAMIC-NEXT:      movl    %eax, (%rcx,%rdi,4)
+; DARWIN-64-DYNAMIC:   movq    _src@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movl    ([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movq    _ptr@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movq    ([[RCX]]), [[RCX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movl    [[EAX]], ([[RCX]],%rdi,4)
 ; DARWIN-64-DYNAMIC-NEXT:      ret
 
 ; DARWIN-64-PIC: _ind02:
-; DARWIN-64-PIC:       movq    _src@GOTPCREL(%rip), %rax
-; DARWIN-64-PIC-NEXT:  movl    (%rax,%rdi,4), %eax
-; DARWIN-64-PIC-NEXT:  movq    _ptr@GOTPCREL(%rip), %rcx
-; DARWIN-64-PIC-NEXT:  movq    (%rcx), %rcx
-; DARWIN-64-PIC-NEXT:  movl    %eax, (%rcx,%rdi,4)
+; DARWIN-64-PIC:       movq    _src@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movl    ([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-PIC-NEXT:  movq    _ptr@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movq    ([[RCX]]), [[RCX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movl    [[EAX]], ([[RCX]],%rdi,4)
 ; DARWIN-64-PIC-NEXT:  ret
 }
 
 define void @ixd02(i64 %i) nounwind {
 entry:
-       %0 = load i32** @ptr, align 8
-       %1 = getelementptr [32 x i32]* @xsrc, i64 0, i64 %i
-       %2 = load i32* %1, align 4
-       %3 = getelementptr i32* %0, i64 %i
+       %0 = load i32*, i32** @ptr, align 8
+       %1 = getelementptr [32 x i32], [32 x i32]* @xsrc, i64 0, i64 %i
+       %2 = load i32, i32* %1, align 4
+       %3 = getelementptr i32, i32* %0, i64 %i
        store i32 %2, i32* %3, align 4
        ret void
-; LINUX-64-STATIC: ixd02:
-; LINUX-64-STATIC: movl    xsrc(,%rdi,4), %eax
-; LINUX-64-STATIC: movq    ptr(%rip), %rcx
-; LINUX-64-STATIC: movl    %eax, (%rcx,%rdi,4)
+; LINUX-64-STATIC-LABEL: ixd02:
+; LINUX-64-STATIC: movl    xsrc(,%rdi,4), [[EAX:%e.x]]
+; LINUX-64-STATIC: movq    ptr(%rip), [[RCX:%r.x]]
+; LINUX-64-STATIC: movl    [[EAX]], ([[RCX]],%rdi,4)
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: ixd02:
-; LINUX-32-STATIC:     movl    4(%esp), %eax
-; LINUX-32-STATIC-NEXT:        movl    xsrc(,%eax,4), %ecx
-; LINUX-32-STATIC-NEXT:        movl    ptr, %edx
-; LINUX-32-STATIC-NEXT:        movl    %ecx, (%edx,%eax,4)
+; LINUX-32-STATIC-LABEL: ixd02:
+; LINUX-32-STATIC:     movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT:        movl    xsrc(,[[EAX]],4), [[ECX:%e.x]]
+; LINUX-32-STATIC-NEXT:        movl    ptr, [[EDX:%e.x]]
+; LINUX-32-STATIC-NEXT:        movl    [[ECX]], ([[EDX]],[[EAX]],4)
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: ixd02:
-; LINUX-32-PIC:        movl    4(%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-LABEL: ixd02:
+; LINUX-32-PIC:        movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT:   movl    xsrc(,[[EAX]],4), [[ECX:%e.x]]
+; LINUX-32-PIC-NEXT:   movl    ptr, [[EDX:%e.x]]
+; LINUX-32-PIC-NEXT:   movl    [[ECX]], ([[EDX]],[[EAX]],4)
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: ixd02:
-; LINUX-64-PIC:        movq    xsrc@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT:   movl    (%rax,%rdi,4), %eax
-; LINUX-64-PIC-NEXT:   movq    ptr@GOTPCREL(%rip), %rcx
-; LINUX-64-PIC-NEXT:   movq    (%rcx), %rcx
-; LINUX-64-PIC-NEXT:   movl    %eax, (%rcx,%rdi,4)
+; LINUX-64-PIC-LABEL: ixd02:
+; LINUX-64-PIC:        movq    xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT:   movl    ([[RAX]],%rdi,4), [[EAX:%e.x]]
+; LINUX-64-PIC-NEXT:   movq    ptr@GOTPCREL(%rip), [[RCX:%r.x]]
+; LINUX-64-PIC-NEXT:   movq    ([[RCX]]), [[RCX:%r.x]]
+; LINUX-64-PIC-NEXT:   movl    [[EAX]], ([[RCX]],%rdi,4)
 ; LINUX-64-PIC-NEXT:   ret
 
 ; DARWIN-32-STATIC: _ixd02:
-; DARWIN-32-STATIC:    movl    4(%esp), %eax
-; DARWIN-32-STATIC-NEXT:       movl    _xsrc(,%eax,4), %ecx
-; DARWIN-32-STATIC-NEXT:       movl    _ptr, %edx
-; DARWIN-32-STATIC-NEXT:       movl    %ecx, (%edx,%eax,4)
+; DARWIN-32-STATIC:    movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       movl    _xsrc(,[[EAX]],4), [[ECX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       movl    _ptr, [[EDX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       movl    [[ECX]], ([[EDX]],[[EAX]],4)
 ; DARWIN-32-STATIC-NEXT:       ret
 
 ; DARWIN-32-DYNAMIC: _ixd02:
-; DARWIN-32-DYNAMIC:   movl    4(%esp), %eax
-; DARWIN-32-DYNAMIC-NEXT:      movl    L_xsrc$non_lazy_ptr, %ecx
-; DARWIN-32-DYNAMIC-NEXT:      movl    (%ecx,%eax,4), %ecx
-; DARWIN-32-DYNAMIC-NEXT:      movl    L_ptr$non_lazy_ptr, %edx
-; DARWIN-32-DYNAMIC-NEXT:      movl    (%edx), %edx
-; DARWIN-32-DYNAMIC-NEXT:      movl    %ecx, (%edx,%eax,4)
+; DARWIN-32-DYNAMIC:   movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    L_xsrc$non_lazy_ptr, [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    ([[ECX]],[[EAX]],4), [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    L_ptr$non_lazy_ptr, [[EDX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    ([[EDX]]), [[EDX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    [[ECX]], ([[EDX]],[[EAX]],4)
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _ixd02:
-; DARWIN-32-PIC:       call    "L30$pb"
-; DARWIN-32-PIC-NEXT: "L30$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  movl    4(%esp), %ecx
-; DARWIN-32-PIC-NEXT:  movl    L_xsrc$non_lazy_ptr-"L30$pb"(%eax), %edx
-; DARWIN-32-PIC-NEXT:  movl    (%edx,%ecx,4), %edx
-; DARWIN-32-PIC-NEXT:  movl    L_ptr$non_lazy_ptr-"L30$pb"(%eax), %eax
-; DARWIN-32-PIC-NEXT:  movl    (%eax), %eax
-; DARWIN-32-PIC-NEXT:  movl    %edx, (%eax,%ecx,4)
+; DARWIN-32-PIC:       calll   L29$pb
+; DARWIN-32-PIC-NEXT: L29$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    L_xsrc$non_lazy_ptr-L29$pb([[EAX]]), [[EDX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    ([[EDX]],[[ECX]],4), [[EDX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    L_ptr$non_lazy_ptr-L29$pb([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    ([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    [[EDX]], ([[EAX]],[[ECX]],4)
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _ixd02:
-; DARWIN-64-STATIC:    movq    _xsrc@GOTPCREL(%rip), %rax
-; DARWIN-64-STATIC-NEXT:       movl    (%rax,%rdi,4), %eax
-; DARWIN-64-STATIC-NEXT:       movq    _ptr@GOTPCREL(%rip), %rcx
-; DARWIN-64-STATIC-NEXT:       movq    (%rcx), %rcx
-; DARWIN-64-STATIC-NEXT:       movl    %eax, (%rcx,%rdi,4)
+; DARWIN-64-STATIC:    movq    _xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movl    ([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-STATIC-NEXT:       movq    _ptr@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movq    ([[RCX]]), [[RCX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movl    [[EAX]], ([[RCX]],%rdi,4)
 ; DARWIN-64-STATIC-NEXT:       ret
 
 ; DARWIN-64-DYNAMIC: _ixd02:
-; DARWIN-64-DYNAMIC:   movq    _xsrc@GOTPCREL(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT:      movl    (%rax,%rdi,4), %eax
-; DARWIN-64-DYNAMIC-NEXT:      movq    _ptr@GOTPCREL(%rip), %rcx
-; DARWIN-64-DYNAMIC-NEXT:      movq    (%rcx), %rcx
-; DARWIN-64-DYNAMIC-NEXT:      movl    %eax, (%rcx,%rdi,4)
+; DARWIN-64-DYNAMIC:   movq    _xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movl    ([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movq    _ptr@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movq    ([[RCX]]), [[RCX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movl    [[EAX]], ([[RCX]],%rdi,4)
 ; DARWIN-64-DYNAMIC-NEXT:      ret
 
 ; DARWIN-64-PIC: _ixd02:
-; DARWIN-64-PIC:       movq    _xsrc@GOTPCREL(%rip), %rax
-; DARWIN-64-PIC-NEXT:  movl    (%rax,%rdi,4), %eax
-; DARWIN-64-PIC-NEXT:  movq    _ptr@GOTPCREL(%rip), %rcx
-; DARWIN-64-PIC-NEXT:  movq    (%rcx), %rcx
-; DARWIN-64-PIC-NEXT:  movl    %eax, (%rcx,%rdi,4)
+; DARWIN-64-PIC:       movq    _xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movl    ([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-PIC-NEXT:  movq    _ptr@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movq    ([[RCX]]), [[RCX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movl    [[EAX]], ([[RCX]],%rdi,4)
 ; DARWIN-64-PIC-NEXT:  ret
 }
 
 define void @ind03(i64 %i) nounwind {
 entry:
-       %0 = getelementptr [131072 x i32]* @dsrc, i64 0, i64 %i
-       %1 = load i32* %0, align 4
-       %2 = getelementptr [131072 x i32]* @ddst, i64 0, i64 %i
+       %0 = getelementptr [131072 x i32], [131072 x i32]* @dsrc, i64 0, i64 %i
+       %1 = load i32, i32* %0, align 4
+       %2 = getelementptr [131072 x i32], [131072 x i32]* @ddst, i64 0, i64 %i
        store i32 %1, i32* %2, align 4
        ret void
-; LINUX-64-STATIC: ind03:
-; LINUX-64-STATIC: movl    dsrc(,%rdi,4), %eax
-; LINUX-64-STATIC: movl    %eax, ddst(,%rdi,4)
+; LINUX-64-STATIC-LABEL: ind03:
+; LINUX-64-STATIC: movl    dsrc(,%rdi,4), [[EAX:%e.x]]
+; LINUX-64-STATIC: movl    [[EAX]], ddst(,%rdi,4)
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: ind03:
-; LINUX-32-STATIC:     movl    4(%esp), %eax
-; LINUX-32-STATIC-NEXT:        movl    dsrc(,%eax,4), %ecx
-; LINUX-32-STATIC-NEXT:        movl    %ecx, ddst(,%eax,4)
+; LINUX-32-STATIC-LABEL: ind03:
+; LINUX-32-STATIC:     movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT:        movl    dsrc(,[[EAX]],4), [[ECX:%e.x]]
+; LINUX-32-STATIC-NEXT:        movl    [[ECX]], ddst(,[[EAX]],4)
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: ind03:
-; LINUX-32-PIC:        movl    4(%esp), %eax
-; LINUX-32-PIC-NEXT:   movl    dsrc(,%eax,4), %ecx
-; LINUX-32-PIC-NEXT:   movl    %ecx, ddst(,%eax,4)
+; LINUX-32-PIC-LABEL: ind03:
+; LINUX-32-PIC:        movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT:   movl    dsrc(,[[EAX]],4), [[ECX:%e.x]]
+; LINUX-32-PIC-NEXT:   movl    [[ECX]], ddst(,[[EAX]],4)
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: ind03:
-; LINUX-64-PIC:        movq    dsrc@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT:   movl    (%rax,%rdi,4), %eax
-; LINUX-64-PIC-NEXT:   movq    ddst@GOTPCREL(%rip), %rcx
-; LINUX-64-PIC-NEXT:   movl    %eax, (%rcx,%rdi,4)
+; LINUX-64-PIC-LABEL: ind03:
+; LINUX-64-PIC:        movq    dsrc@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT:   movl    ([[RAX]],%rdi,4), [[EAX:%e.x]]
+; LINUX-64-PIC-NEXT:   movq    ddst@GOTPCREL(%rip), [[RCX:%r.x]]
+; LINUX-64-PIC-NEXT:   movl    [[EAX]], ([[RCX]],%rdi,4)
 ; LINUX-64-PIC-NEXT:   ret
 
 ; DARWIN-32-STATIC: _ind03:
-; DARWIN-32-STATIC:    movl    4(%esp), %eax
-; DARWIN-32-STATIC-NEXT:       movl    _dsrc(,%eax,4), %ecx
-; DARWIN-32-STATIC-NEXT:       movl    %ecx, _ddst(,%eax,4)
+; DARWIN-32-STATIC:    movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       movl    _dsrc(,[[EAX]],4), [[ECX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       movl    [[ECX]], _ddst(,[[EAX]],4)
 ; DARWIN-32-STATIC-NEXT:       ret
 
 ; DARWIN-32-DYNAMIC: _ind03:
-; DARWIN-32-DYNAMIC:   movl    4(%esp), %eax
-; DARWIN-32-DYNAMIC-NEXT:      movl    _dsrc(,%eax,4), %ecx
-; DARWIN-32-DYNAMIC-NEXT:      movl    %ecx, _ddst(,%eax,4)
+; DARWIN-32-DYNAMIC:   movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    _dsrc(,[[EAX]],4), [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    [[ECX]], _ddst(,[[EAX]],4)
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _ind03:
-; DARWIN-32-PIC:       call    "L31$pb"
-; DARWIN-32-PIC-NEXT: "L31$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  movl    4(%esp), %ecx
-; DARWIN-32-PIC-NEXT:  movl    _dsrc-"L31$pb"(%eax,%ecx,4), %edx
-; DARWIN-32-PIC-NEXT:  movl    %edx, _ddst-"L31$pb"(%eax,%ecx,4)
+; DARWIN-32-PIC:       calll   L30$pb
+; DARWIN-32-PIC-NEXT: L30$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    _dsrc-L30$pb([[EAX]],[[ECX]],4), [[EDX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    [[EDX]], _ddst-L30$pb([[EAX]],[[ECX]],4)
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _ind03:
-; DARWIN-64-STATIC:    leaq    _dsrc(%rip), %rax
-; DARWIN-64-STATIC-NEXT:       movl    (%rax,%rdi,4), %eax
-; DARWIN-64-STATIC-NEXT:       leaq    _ddst(%rip), %rcx
-; DARWIN-64-STATIC-NEXT:       movl    %eax, (%rcx,%rdi,4)
+; DARWIN-64-STATIC:    leaq    _dsrc(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movl    ([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-STATIC-NEXT:       leaq    _ddst(%rip), [[RCX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movl    [[EAX]], ([[RCX]],%rdi,4)
 ; DARWIN-64-STATIC-NEXT:       ret
 
 ; DARWIN-64-DYNAMIC: _ind03:
-; DARWIN-64-DYNAMIC:   leaq    _dsrc(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT:      movl    (%rax,%rdi,4), %eax
-; DARWIN-64-DYNAMIC-NEXT:      leaq    _ddst(%rip), %rcx
-; DARWIN-64-DYNAMIC-NEXT:      movl    %eax, (%rcx,%rdi,4)
+; DARWIN-64-DYNAMIC:   leaq    _dsrc(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movl    ([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-DYNAMIC-NEXT:      leaq    _ddst(%rip), [[RCX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movl    [[EAX]], ([[RCX]],%rdi,4)
 ; DARWIN-64-DYNAMIC-NEXT:      ret
 
 ; DARWIN-64-PIC: _ind03:
-; DARWIN-64-PIC:       leaq    _dsrc(%rip), %rax
-; DARWIN-64-PIC-NEXT:  movl    (%rax,%rdi,4), %eax
-; DARWIN-64-PIC-NEXT:  leaq    _ddst(%rip), %rcx
-; DARWIN-64-PIC-NEXT:  movl    %eax, (%rcx,%rdi,4)
+; DARWIN-64-PIC:       leaq    _dsrc(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movl    ([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-PIC-NEXT:  leaq    _ddst(%rip), [[RCX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movl    [[EAX]], ([[RCX]],%rdi,4)
 ; DARWIN-64-PIC-NEXT:  ret
 }
 
 define void @ind04(i64 %i) nounwind {
 entry:
-       %0 = getelementptr [131072 x i32]* @ddst, i64 0, i64 %i
+       %0 = getelementptr [131072 x i32], [131072 x i32]* @ddst, i64 0, i64 %i
        store i32* %0, i32** @dptr, align 8
        ret void
-; LINUX-64-STATIC: ind04:
-; LINUX-64-STATIC: leaq    ddst(,%rdi,4), %rax
-; LINUX-64-STATIC: movq    %rax, dptr
+; LINUX-64-STATIC-LABEL: ind04:
+; LINUX-64-STATIC: leaq    ddst(,%rdi,4), [[RAX:%r.x]]
+; LINUX-64-STATIC: movq    [[RAX]], dptr
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: ind04:
-; LINUX-32-STATIC:     movl    4(%esp), %eax
-; LINUX-32-STATIC-NEXT:        leal    ddst(,%eax,4), %eax
-; LINUX-32-STATIC-NEXT:        movl    %eax, dptr
+; LINUX-32-STATIC-LABEL: ind04:
+; LINUX-32-STATIC:     movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT:        leal    ddst(,[[EAX]],4), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT:        movl    [[EAX]], dptr
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: ind04:
-; LINUX-32-PIC:        movl    4(%esp), %eax
-; LINUX-32-PIC-NEXT:   leal    ddst(,%eax,4), %eax
-; LINUX-32-PIC-NEXT:   movl    %eax, dptr
+; LINUX-32-PIC-LABEL: ind04:
+; LINUX-32-PIC:        movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT:   leal    ddst(,[[EAX]],4), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT:   movl    [[EAX]], dptr
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: ind04:
+; LINUX-64-PIC-LABEL: ind04:
 ; LINUX-64-PIC:        shlq    $2, %rdi
 ; LINUX-64-PIC-NEXT:   addq    ddst@GOTPCREL(%rip), %rdi
-; LINUX-64-PIC-NEXT:   movq    dptr@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT:   movq    %rdi, (%rax)
+; LINUX-64-PIC-NEXT:   movq    dptr@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT:   movq    %rdi, ([[RAX]])
 ; LINUX-64-PIC-NEXT:   ret
 
 ; DARWIN-32-STATIC: _ind04:
-; DARWIN-32-STATIC:    movl    4(%esp), %eax
-; DARWIN-32-STATIC-NEXT:       leal    _ddst(,%eax,4), %eax
-; DARWIN-32-STATIC-NEXT:       movl    %eax, _dptr
+; DARWIN-32-STATIC:    movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       leal    _ddst(,[[EAX]],4), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       movl    [[EAX]], _dptr
 ; DARWIN-32-STATIC-NEXT:       ret
 
 ; DARWIN-32-DYNAMIC: _ind04:
-; DARWIN-32-DYNAMIC:   movl    4(%esp), %eax
-; DARWIN-32-DYNAMIC-NEXT:      leal    _ddst(,%eax,4), %eax
-; DARWIN-32-DYNAMIC-NEXT:      movl    %eax, _dptr
+; DARWIN-32-DYNAMIC:   movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      leal    _ddst(,[[EAX]],4), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    [[EAX]], _dptr
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _ind04:
-; DARWIN-32-PIC:       call    "L32$pb"
-; DARWIN-32-PIC-NEXT: "L32$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  movl    4(%esp), %ecx
-; DARWIN-32-PIC-NEXT:  leal    _ddst-"L32$pb"(%eax,%ecx,4), %ecx
-; DARWIN-32-PIC-NEXT:  movl    %ecx, _dptr-"L32$pb"(%eax)
+; DARWIN-32-PIC:       calll   L31$pb
+; DARWIN-32-PIC-NEXT: L31$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  leal    _ddst-L31$pb([[EAX]],[[ECX]],4), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    [[ECX]], _dptr-L31$pb([[EAX]])
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _ind04:
-; DARWIN-64-STATIC:    leaq    _ddst(%rip), %rax
-; DARWIN-64-STATIC-NEXT:       leaq    (%rax,%rdi,4), %rax
-; DARWIN-64-STATIC-NEXT:       movq    %rax, _dptr(%rip)
+; DARWIN-64-STATIC:    leaq    _ddst(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       leaq    ([[RAX]],%rdi,4), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movq    [[RAX]], _dptr(%rip)
 ; DARWIN-64-STATIC-NEXT:       ret
 
 ; DARWIN-64-DYNAMIC: _ind04:
-; DARWIN-64-DYNAMIC:   leaq    _ddst(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT:      leaq    (%rax,%rdi,4), %rax
-; DARWIN-64-DYNAMIC-NEXT:      movq    %rax, _dptr(%rip)
+; DARWIN-64-DYNAMIC:   leaq    _ddst(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      leaq    ([[RAX]],%rdi,4), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movq    [[RAX]], _dptr(%rip)
 ; DARWIN-64-DYNAMIC-NEXT:      ret
 
 ; DARWIN-64-PIC: _ind04:
-; DARWIN-64-PIC:       leaq    _ddst(%rip), %rax
-; DARWIN-64-PIC-NEXT:  leaq    (%rax,%rdi,4), %rax
-; DARWIN-64-PIC-NEXT:  movq    %rax, _dptr(%rip)
+; DARWIN-64-PIC:       leaq    _ddst(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT:  leaq    ([[RAX]],%rdi,4), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movq    [[RAX]], _dptr(%rip)
 ; DARWIN-64-PIC-NEXT:  ret
 }
 
 define void @ind05(i64 %i) nounwind {
 entry:
-       %0 = load i32** @dptr, align 8
-       %1 = getelementptr [131072 x i32]* @dsrc, i64 0, i64 %i
-       %2 = load i32* %1, align 4
-       %3 = getelementptr i32* %0, i64 %i
+       %0 = load i32*, i32** @dptr, align 8
+       %1 = getelementptr [131072 x i32], [131072 x i32]* @dsrc, i64 0, i64 %i
+       %2 = load i32, i32* %1, align 4
+       %3 = getelementptr i32, i32* %0, i64 %i
        store i32 %2, i32* %3, align 4
        ret void
-; LINUX-64-STATIC: ind05:
-; LINUX-64-STATIC: movl    dsrc(,%rdi,4), %eax
-; LINUX-64-STATIC: movq    dptr(%rip), %rcx
-; LINUX-64-STATIC: movl    %eax, (%rcx,%rdi,4)
+; LINUX-64-STATIC-LABEL: ind05:
+; LINUX-64-STATIC: movl    dsrc(,%rdi,4), [[EAX:%e.x]]
+; LINUX-64-STATIC: movq    dptr(%rip), [[RCX:%r.x]]
+; LINUX-64-STATIC: movl    [[EAX]], ([[RCX]],%rdi,4)
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: ind05:
-; LINUX-32-STATIC:     movl    4(%esp), %eax
-; LINUX-32-STATIC-NEXT:        movl    dsrc(,%eax,4), %ecx
-; LINUX-32-STATIC-NEXT:        movl    dptr, %edx
-; LINUX-32-STATIC-NEXT:        movl    %ecx, (%edx,%eax,4)
+; LINUX-32-STATIC-LABEL: ind05:
+; LINUX-32-STATIC:     movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT:        movl    dsrc(,[[EAX]],4), [[ECX:%e.x]]
+; LINUX-32-STATIC-NEXT:        movl    dptr, [[EDX:%e.x]]
+; LINUX-32-STATIC-NEXT:        movl    [[ECX]], ([[EDX]],[[EAX]],4)
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: ind05:
-; LINUX-32-PIC:        movl    4(%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-LABEL: ind05:
+; LINUX-32-PIC:        movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT:   movl    dsrc(,[[EAX]],4), [[ECX:%e.x]]
+; LINUX-32-PIC-NEXT:   movl    dptr, [[EDX:%e.x]]
+; LINUX-32-PIC-NEXT:   movl    [[ECX]], ([[EDX]],[[EAX]],4)
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: ind05:
-; LINUX-64-PIC:        movq    dsrc@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT:   movl    (%rax,%rdi,4), %eax
-; LINUX-64-PIC-NEXT:   movq    dptr@GOTPCREL(%rip), %rcx
-; LINUX-64-PIC-NEXT:   movq    (%rcx), %rcx
-; LINUX-64-PIC-NEXT:   movl    %eax, (%rcx,%rdi,4)
+; LINUX-64-PIC-LABEL: ind05:
+; LINUX-64-PIC:        movq    dsrc@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT:   movl    ([[RAX]],%rdi,4), [[EAX:%e.x]]
+; LINUX-64-PIC-NEXT:   movq    dptr@GOTPCREL(%rip), [[RCX:%r.x]]
+; LINUX-64-PIC-NEXT:   movq    ([[RCX]]), [[RCX:%r.x]]
+; LINUX-64-PIC-NEXT:   movl    [[EAX]], ([[RCX]],%rdi,4)
 ; LINUX-64-PIC-NEXT:   ret
 
 ; DARWIN-32-STATIC: _ind05:
-; DARWIN-32-STATIC:    movl    4(%esp), %eax
-; DARWIN-32-STATIC-NEXT:       movl    _dsrc(,%eax,4), %ecx
-; DARWIN-32-STATIC-NEXT:       movl    _dptr, %edx
-; DARWIN-32-STATIC-NEXT:       movl    %ecx, (%edx,%eax,4)
+; DARWIN-32-STATIC:    movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       movl    _dsrc(,[[EAX]],4), [[ECX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       movl    _dptr, [[EDX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       movl    [[ECX]], ([[EDX]],[[EAX]],4)
 ; DARWIN-32-STATIC-NEXT:       ret
 
 ; DARWIN-32-DYNAMIC: _ind05:
-; DARWIN-32-DYNAMIC:   movl    4(%esp), %eax
-; DARWIN-32-DYNAMIC-NEXT:      movl    _dsrc(,%eax,4), %ecx
-; DARWIN-32-DYNAMIC-NEXT:      movl    _dptr, %edx
-; DARWIN-32-DYNAMIC-NEXT:      movl    %ecx, (%edx,%eax,4)
+; DARWIN-32-DYNAMIC:   movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    _dsrc(,[[EAX]],4), [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    _dptr, [[EDX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    [[ECX]], ([[EDX]],[[EAX]],4)
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _ind05:
-; DARWIN-32-PIC:       call    "L33$pb"
-; DARWIN-32-PIC-NEXT: "L33$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  movl    4(%esp), %ecx
-; DARWIN-32-PIC-NEXT:  movl    _dsrc-"L33$pb"(%eax,%ecx,4), %edx
-; DARWIN-32-PIC-NEXT:  movl    _dptr-"L33$pb"(%eax), %eax
-; DARWIN-32-PIC-NEXT:  movl    %edx, (%eax,%ecx,4)
+; DARWIN-32-PIC:       calll   L32$pb
+; DARWIN-32-PIC-NEXT: L32$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    _dsrc-L32$pb([[EAX]],[[ECX]],4), [[EDX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    _dptr-L32$pb([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    [[EDX]], ([[EAX]],[[ECX]],4)
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _ind05:
-; DARWIN-64-STATIC:    leaq    _dsrc(%rip), %rax
-; DARWIN-64-STATIC-NEXT:       movl    (%rax,%rdi,4), %eax
-; DARWIN-64-STATIC-NEXT:       movq    _dptr(%rip), %rcx
-; DARWIN-64-STATIC-NEXT:       movl    %eax, (%rcx,%rdi,4)
+; DARWIN-64-STATIC:    leaq    _dsrc(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movl    ([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-STATIC-NEXT:       movq    _dptr(%rip), [[RCX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movl    [[EAX]], ([[RCX]],%rdi,4)
 ; DARWIN-64-STATIC-NEXT:       ret
 
 ; DARWIN-64-DYNAMIC: _ind05:
-; DARWIN-64-DYNAMIC:   leaq    _dsrc(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT:      movl    (%rax,%rdi,4), %eax
-; DARWIN-64-DYNAMIC-NEXT:      movq    _dptr(%rip), %rcx
-; DARWIN-64-DYNAMIC-NEXT:      movl    %eax, (%rcx,%rdi,4)
+; DARWIN-64-DYNAMIC:   leaq    _dsrc(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movl    ([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movq    _dptr(%rip), [[RCX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movl    [[EAX]], ([[RCX]],%rdi,4)
 ; DARWIN-64-DYNAMIC-NEXT:      ret
 
 ; DARWIN-64-PIC: _ind05:
-; DARWIN-64-PIC:       leaq    _dsrc(%rip), %rax
-; DARWIN-64-PIC-NEXT:  movl    (%rax,%rdi,4), %eax
-; DARWIN-64-PIC-NEXT:  movq    _dptr(%rip), %rcx
-; DARWIN-64-PIC-NEXT:  movl    %eax, (%rcx,%rdi,4)
+; DARWIN-64-PIC:       leaq    _dsrc(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movl    ([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-PIC-NEXT:  movq    _dptr(%rip), [[RCX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movl    [[EAX]], ([[RCX]],%rdi,4)
 ; DARWIN-64-PIC-NEXT:  ret
 }
 
 define void @ind06(i64 %i) nounwind {
 entry:
-       %0 = getelementptr [131072 x i32]* @lsrc, i64 0, i64 %i
-       %1 = load i32* %0, align 4
-       %2 = getelementptr [131072 x i32]* @ldst, i64 0, i64 %i
+       %0 = getelementptr [131072 x i32], [131072 x i32]* @lsrc, i64 0, i64 %i
+       %1 = load i32, i32* %0, align 4
+       %2 = getelementptr [131072 x i32], [131072 x i32]* @ldst, i64 0, i64 %i
        store i32 %1, i32* %2, align 4
        ret void
-; LINUX-64-STATIC: ind06:
-; LINUX-64-STATIC: movl    lsrc(,%rdi,4), %eax
-; LINUX-64-STATIC: movl    %eax, ldst(,%rdi,4)
+; LINUX-64-STATIC-LABEL: ind06:
+; LINUX-64-STATIC: movl    lsrc(,%rdi,4), [[EAX:%e.x]]
+; LINUX-64-STATIC: movl    [[EAX]], ldst(,%rdi,4)
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: ind06:
-; LINUX-32-STATIC:     movl    4(%esp), %eax
-; LINUX-32-STATIC-NEXT:        movl    lsrc(,%eax,4), %ecx
-; LINUX-32-STATIC-NEXT:        movl    %ecx, ldst(,%eax,4)
+; LINUX-32-STATIC-LABEL: ind06:
+; LINUX-32-STATIC:     movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT:        movl    lsrc(,[[EAX]],4), [[ECX:%e.x]]
+; LINUX-32-STATIC-NEXT:        movl    [[ECX]], ldst(,[[EAX]],4)
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: ind06:
-; LINUX-32-PIC:        movl    4(%esp), %eax
-; LINUX-32-PIC-NEXT:   movl    lsrc(,%eax,4), %ecx
-; LINUX-32-PIC-NEXT:   movl    %ecx, ldst(,%eax,4)
+; LINUX-32-PIC-LABEL: ind06:
+; LINUX-32-PIC:        movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT:   movl    lsrc(,[[EAX]],4), [[ECX:%e.x]]
+; LINUX-32-PIC-NEXT:   movl    [[ECX]], ldst(,[[EAX]],4)
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: ind06:
-; LINUX-64-PIC:        leaq    lsrc(%rip), %rax
-; LINUX-64-PIC-NEXT:   movl    (%rax,%rdi,4), %eax
-; LINUX-64-PIC-NEXT:   leaq    ldst(%rip), %rcx
-; LINUX-64-PIC-NEXT:   movl    %eax, (%rcx,%rdi,4)
+; LINUX-64-PIC-LABEL: ind06:
+; LINUX-64-PIC:        leaq    lsrc(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT:   movl    ([[RAX]],%rdi,4), [[EAX:%e.x]]
+; LINUX-64-PIC-NEXT:   leaq    ldst(%rip), [[RCX:%r.x]]
+; LINUX-64-PIC-NEXT:   movl    [[EAX]], ([[RCX]],%rdi,4)
 ; LINUX-64-PIC-NEXT:   ret
 
 ; DARWIN-32-STATIC: _ind06:
-; DARWIN-32-STATIC:    movl    4(%esp), %eax
-; DARWIN-32-STATIC-NEXT:       movl    _lsrc(,%eax,4), %ecx
-; DARWIN-32-STATIC-NEXT:       movl    %ecx, _ldst(,%eax,4)
+; DARWIN-32-STATIC:    movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       movl    _lsrc(,[[EAX]],4), [[ECX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       movl    [[ECX]], _ldst(,[[EAX]],4)
 ; DARWIN-32-STATIC-NEXT:       ret
 
 ; DARWIN-32-DYNAMIC: _ind06:
-; DARWIN-32-DYNAMIC:   movl    4(%esp), %eax
-; DARWIN-32-DYNAMIC-NEXT:      movl    _lsrc(,%eax,4), %ecx
-; DARWIN-32-DYNAMIC-NEXT:      movl    %ecx, _ldst(,%eax,4)
+; DARWIN-32-DYNAMIC:   movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    _lsrc(,[[EAX]],4), [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    [[ECX]], _ldst(,[[EAX]],4)
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _ind06:
-; DARWIN-32-PIC:       call    "L34$pb"
-; DARWIN-32-PIC-NEXT: "L34$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  movl    4(%esp), %ecx
-; DARWIN-32-PIC-NEXT:  movl    _lsrc-"L34$pb"(%eax,%ecx,4), %edx
-; DARWIN-32-PIC-NEXT:  movl    %edx, _ldst-"L34$pb"(%eax,%ecx,4)
+; DARWIN-32-PIC:       calll   L33$pb
+; DARWIN-32-PIC-NEXT: L33$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    _lsrc-L33$pb([[EAX]],[[ECX]],4), [[EDX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    [[EDX]], _ldst-L33$pb([[EAX]],[[ECX]],4)
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _ind06:
-; DARWIN-64-STATIC:    leaq    _lsrc(%rip), %rax
-; DARWIN-64-STATIC-NEXT:       movl    (%rax,%rdi,4), %eax
-; DARWIN-64-STATIC-NEXT:       leaq    _ldst(%rip), %rcx
-; DARWIN-64-STATIC-NEXT:       movl    %eax, (%rcx,%rdi,4)
+; DARWIN-64-STATIC:    leaq    _lsrc(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movl    ([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-STATIC-NEXT:       leaq    _ldst(%rip), [[RCX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movl    [[EAX]], ([[RCX]],%rdi,4)
 ; DARWIN-64-STATIC-NEXT:       ret
 
 ; DARWIN-64-DYNAMIC: _ind06:
-; DARWIN-64-DYNAMIC:   leaq    _lsrc(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT:      movl    (%rax,%rdi,4), %eax
-; DARWIN-64-DYNAMIC-NEXT:      leaq    _ldst(%rip), %rcx
-; DARWIN-64-DYNAMIC-NEXT:      movl    %eax, (%rcx,%rdi,4)
+; DARWIN-64-DYNAMIC:   leaq    _lsrc(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movl    ([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-DYNAMIC-NEXT:      leaq    _ldst(%rip), [[RCX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movl    [[EAX]], ([[RCX]],%rdi,4)
 ; DARWIN-64-DYNAMIC-NEXT:      ret
 
 ; DARWIN-64-PIC: _ind06:
-; DARWIN-64-PIC:       leaq    _lsrc(%rip), %rax
-; DARWIN-64-PIC-NEXT:  movl    (%rax,%rdi,4), %eax
-; DARWIN-64-PIC-NEXT:  leaq    _ldst(%rip), %rcx
-; DARWIN-64-PIC-NEXT:  movl    %eax, (%rcx,%rdi,4)
+; DARWIN-64-PIC:       leaq    _lsrc(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movl    ([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-PIC-NEXT:  leaq    _ldst(%rip), [[RCX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movl    [[EAX]], ([[RCX]],%rdi,4)
 ; DARWIN-64-PIC-NEXT:  ret
 }
 
 define void @ind07(i64 %i) nounwind {
 entry:
-       %0 = getelementptr [131072 x i32]* @ldst, i64 0, i64 %i
+       %0 = getelementptr [131072 x i32], [131072 x i32]* @ldst, i64 0, i64 %i
        store i32* %0, i32** @lptr, align 8
        ret void
-; LINUX-64-STATIC: ind07:
-; LINUX-64-STATIC: leaq    ldst(,%rdi,4), %rax
-; LINUX-64-STATIC: movq    %rax, lptr
+; LINUX-64-STATIC-LABEL: ind07:
+; LINUX-64-STATIC: leaq    ldst(,%rdi,4), [[RAX:%r.x]]
+; LINUX-64-STATIC: movq    [[RAX]], lptr
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: ind07:
-; LINUX-32-STATIC:     movl    4(%esp), %eax
-; LINUX-32-STATIC-NEXT:        leal    ldst(,%eax,4), %eax
-; LINUX-32-STATIC-NEXT:        movl    %eax, lptr
+; LINUX-32-STATIC-LABEL: ind07:
+; LINUX-32-STATIC:     movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT:        leal    ldst(,[[EAX]],4), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT:        movl    [[EAX]], lptr
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: ind07:
-; LINUX-32-PIC:        movl    4(%esp), %eax
-; LINUX-32-PIC-NEXT:   leal    ldst(,%eax,4), %eax
-; LINUX-32-PIC-NEXT:   movl    %eax, lptr
+; LINUX-32-PIC-LABEL: ind07:
+; LINUX-32-PIC:        movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT:   leal    ldst(,[[EAX]],4), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT:   movl    [[EAX]], lptr
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: ind07:
-; LINUX-64-PIC:        leaq    ldst(%rip), %rax
-; LINUX-64-PIC-NEXT:   leaq    (%rax,%rdi,4), %rax
-; LINUX-64-PIC-NEXT:   movq    %rax, lptr(%rip)
+; LINUX-64-PIC-LABEL: ind07:
+; LINUX-64-PIC:        leaq    ldst(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT:   leaq    ([[RAX]],%rdi,4), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT:   movq    [[RAX]], lptr(%rip)
 ; LINUX-64-PIC-NEXT:   ret
 
 ; DARWIN-32-STATIC: _ind07:
-; DARWIN-32-STATIC:    movl    4(%esp), %eax
-; DARWIN-32-STATIC-NEXT:       leal    _ldst(,%eax,4), %eax
-; DARWIN-32-STATIC-NEXT:       movl    %eax, _lptr
+; DARWIN-32-STATIC:    movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       leal    _ldst(,[[EAX]],4), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       movl    [[EAX]], _lptr
 ; DARWIN-32-STATIC-NEXT:       ret
 
 ; DARWIN-32-DYNAMIC: _ind07:
-; DARWIN-32-DYNAMIC:   movl    4(%esp), %eax
-; DARWIN-32-DYNAMIC-NEXT:      leal    _ldst(,%eax,4), %eax
-; DARWIN-32-DYNAMIC-NEXT:      movl    %eax, _lptr
+; DARWIN-32-DYNAMIC:   movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      leal    _ldst(,[[EAX]],4), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    [[EAX]], _lptr
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _ind07:
-; DARWIN-32-PIC:       call    "L35$pb"
-; DARWIN-32-PIC-NEXT: "L35$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  movl    4(%esp), %ecx
-; DARWIN-32-PIC-NEXT:  leal    _ldst-"L35$pb"(%eax,%ecx,4), %ecx
-; DARWIN-32-PIC-NEXT:  movl    %ecx, _lptr-"L35$pb"(%eax)
+; DARWIN-32-PIC:       calll   L34$pb
+; DARWIN-32-PIC-NEXT: L34$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  leal    _ldst-L34$pb([[EAX]],[[ECX]],4), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    [[ECX]], _lptr-L34$pb([[EAX]])
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _ind07:
-; DARWIN-64-STATIC:    leaq    _ldst(%rip), %rax
-; DARWIN-64-STATIC-NEXT:       leaq    (%rax,%rdi,4), %rax
-; DARWIN-64-STATIC-NEXT:       movq    %rax, _lptr(%rip)
+; DARWIN-64-STATIC:    leaq    _ldst(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       leaq    ([[RAX]],%rdi,4), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movq    [[RAX]], _lptr(%rip)
 ; DARWIN-64-STATIC-NEXT:       ret
 
 ; DARWIN-64-DYNAMIC: _ind07:
-; DARWIN-64-DYNAMIC:   leaq    _ldst(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT:      leaq    (%rax,%rdi,4), %rax
-; DARWIN-64-DYNAMIC-NEXT:      movq    %rax, _lptr(%rip)
+; DARWIN-64-DYNAMIC:   leaq    _ldst(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      leaq    ([[RAX]],%rdi,4), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movq    [[RAX]], _lptr(%rip)
 ; DARWIN-64-DYNAMIC-NEXT:      ret
 
 ; DARWIN-64-PIC: _ind07:
-; DARWIN-64-PIC:       leaq    _ldst(%rip), %rax
-; DARWIN-64-PIC-NEXT:  leaq    (%rax,%rdi,4), %rax
-; DARWIN-64-PIC-NEXT:  movq    %rax, _lptr(%rip)
+; DARWIN-64-PIC:       leaq    _ldst(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT:  leaq    ([[RAX]],%rdi,4), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movq    [[RAX]], _lptr(%rip)
 ; DARWIN-64-PIC-NEXT:  ret
 }
 
 define void @ind08(i64 %i) nounwind {
 entry:
-       %0 = load i32** @lptr, align 8
-       %1 = getelementptr [131072 x i32]* @lsrc, i64 0, i64 %i
-       %2 = load i32* %1, align 4
-       %3 = getelementptr i32* %0, i64 %i
+       %0 = load i32*, i32** @lptr, align 8
+       %1 = getelementptr [131072 x i32], [131072 x i32]* @lsrc, i64 0, i64 %i
+       %2 = load i32, i32* %1, align 4
+       %3 = getelementptr i32, i32* %0, i64 %i
        store i32 %2, i32* %3, align 4
        ret void
-; LINUX-64-STATIC: ind08:
-; LINUX-64-STATIC: movl    lsrc(,%rdi,4), %eax
-; LINUX-64-STATIC: movq    lptr(%rip), %rcx
-; LINUX-64-STATIC: movl    %eax, (%rcx,%rdi,4)
+; LINUX-64-STATIC-LABEL: ind08:
+; LINUX-64-STATIC: movl    lsrc(,%rdi,4), [[EAX:%e.x]]
+; LINUX-64-STATIC: movq    lptr(%rip), [[RCX:%r.x]]
+; LINUX-64-STATIC: movl    [[EAX]], ([[RCX]],%rdi,4)
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: ind08:
-; LINUX-32-STATIC:     movl    4(%esp), %eax
-; LINUX-32-STATIC-NEXT:        movl    lsrc(,%eax,4), %ecx
-; LINUX-32-STATIC-NEXT:        movl    lptr, %edx
-; LINUX-32-STATIC-NEXT:        movl    %ecx, (%edx,%eax,4)
+; LINUX-32-STATIC-LABEL: ind08:
+; LINUX-32-STATIC:     movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT:        movl    lsrc(,[[EAX]],4), [[ECX:%e.x]]
+; LINUX-32-STATIC-NEXT:        movl    lptr, [[EDX:%e.x]]
+; LINUX-32-STATIC-NEXT:        movl    [[ECX]], ([[EDX]],[[EAX]],4)
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: ind08:
-; LINUX-32-PIC:        movl    4(%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-LABEL: ind08:
+; LINUX-32-PIC:        movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT:   movl    lsrc(,[[EAX]],4), [[ECX:%e.x]]
+; LINUX-32-PIC-NEXT:   movl    lptr, [[EDX:%e.x]]
+; LINUX-32-PIC-NEXT:   movl    [[ECX]], ([[EDX]],[[EAX]],4)
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: ind08:
-; LINUX-64-PIC:        leaq    lsrc(%rip), %rax
-; LINUX-64-PIC-NEXT:   movl    (%rax,%rdi,4), %eax
-; LINUX-64-PIC-NEXT:   movq    lptr(%rip), %rcx
-; LINUX-64-PIC-NEXT:   movl    %eax, (%rcx,%rdi,4)
+; LINUX-64-PIC-LABEL: ind08:
+; LINUX-64-PIC:        leaq    lsrc(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT:   movl    ([[RAX]],%rdi,4), [[EAX:%e.x]]
+; LINUX-64-PIC-NEXT:   movq    lptr(%rip), [[RCX:%r.x]]
+; LINUX-64-PIC-NEXT:   movl    [[EAX]], ([[RCX]],%rdi,4)
 ; LINUX-64-PIC-NEXT:   ret
 
 ; DARWIN-32-STATIC: _ind08:
-; DARWIN-32-STATIC:    movl    4(%esp), %eax
-; DARWIN-32-STATIC-NEXT:       movl    _lsrc(,%eax,4), %ecx
-; DARWIN-32-STATIC-NEXT:       movl    _lptr, %edx
-; DARWIN-32-STATIC-NEXT:       movl    %ecx, (%edx,%eax,4)
+; DARWIN-32-STATIC:    movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       movl    _lsrc(,[[EAX]],4), [[ECX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       movl    _lptr, [[EDX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       movl    [[ECX]], ([[EDX]],[[EAX]],4)
 ; DARWIN-32-STATIC-NEXT:       ret
 
 ; DARWIN-32-DYNAMIC: _ind08:
-; DARWIN-32-DYNAMIC:   movl    4(%esp), %eax
-; DARWIN-32-DYNAMIC-NEXT:      movl    _lsrc(,%eax,4), %ecx
-; DARWIN-32-DYNAMIC-NEXT:      movl    _lptr, %edx
-; DARWIN-32-DYNAMIC-NEXT:      movl    %ecx, (%edx,%eax,4)
+; DARWIN-32-DYNAMIC:   movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    _lsrc(,[[EAX]],4), [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    _lptr, [[EDX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    [[ECX]], ([[EDX]],[[EAX]],4)
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _ind08:
-; DARWIN-32-PIC:       call    "L36$pb"
-; DARWIN-32-PIC-NEXT: "L36$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  movl    4(%esp), %ecx
-; DARWIN-32-PIC-NEXT:  movl    _lsrc-"L36$pb"(%eax,%ecx,4), %edx
-; DARWIN-32-PIC-NEXT:  movl    _lptr-"L36$pb"(%eax), %eax
-; DARWIN-32-PIC-NEXT:  movl    %edx, (%eax,%ecx,4)
+; DARWIN-32-PIC:       calll   L35$pb
+; DARWIN-32-PIC-NEXT: L35$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    _lsrc-L35$pb([[EAX]],[[ECX]],4), [[EDX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    _lptr-L35$pb([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    [[EDX]], ([[EAX]],[[ECX]],4)
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _ind08:
-; DARWIN-64-STATIC:    leaq    _lsrc(%rip), %rax
-; DARWIN-64-STATIC-NEXT:       movl    (%rax,%rdi,4), %eax
-; DARWIN-64-STATIC-NEXT:       movq    _lptr(%rip), %rcx
-; DARWIN-64-STATIC-NEXT:       movl    %eax, (%rcx,%rdi,4)
+; DARWIN-64-STATIC:    leaq    _lsrc(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movl    ([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-STATIC-NEXT:       movq    _lptr(%rip), [[RCX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movl    [[EAX]], ([[RCX]],%rdi,4)
 ; DARWIN-64-STATIC-NEXT:       ret
 
 ; DARWIN-64-DYNAMIC: _ind08:
-; DARWIN-64-DYNAMIC:   leaq    _lsrc(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT:      movl    (%rax,%rdi,4), %eax
-; DARWIN-64-DYNAMIC-NEXT:      movq    _lptr(%rip), %rcx
-; DARWIN-64-DYNAMIC-NEXT:      movl    %eax, (%rcx,%rdi,4)
+; DARWIN-64-DYNAMIC:   leaq    _lsrc(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movl    ([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movq    _lptr(%rip), [[RCX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movl    [[EAX]], ([[RCX]],%rdi,4)
 ; DARWIN-64-DYNAMIC-NEXT:      ret
 
 ; DARWIN-64-PIC: _ind08:
-; DARWIN-64-PIC:       leaq    _lsrc(%rip), %rax
-; DARWIN-64-PIC-NEXT:  movl    (%rax,%rdi,4), %eax
-; DARWIN-64-PIC-NEXT:  movq    _lptr(%rip), %rcx
-; DARWIN-64-PIC-NEXT:  movl    %eax, (%rcx,%rdi,4)
+; DARWIN-64-PIC:       leaq    _lsrc(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movl    ([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-PIC-NEXT:  movq    _lptr(%rip), [[RCX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movl    [[EAX]], ([[RCX]],%rdi,4)
 ; DARWIN-64-PIC-NEXT:  ret
 }
 
 define void @off00(i64 %i) nounwind {
 entry:
        %0 = add i64 %i, 16
-       %1 = getelementptr [131072 x i32]* @src, i64 0, i64 %0
-       %2 = load i32* %1, align 4
-       %3 = getelementptr [131072 x i32]* @dst, i64 0, i64 %0
+       %1 = getelementptr [131072 x i32], [131072 x i32]* @src, i64 0, i64 %0
+       %2 = load i32, i32* %1, align 4
+       %3 = getelementptr [131072 x i32], [131072 x i32]* @dst, i64 0, i64 %0
        store i32 %2, i32* %3, align 4
        ret void
-; LINUX-64-STATIC: off00:
-; LINUX-64-STATIC: movl    src+64(,%rdi,4), %eax
-; LINUX-64-STATIC: movl    %eax, dst+64(,%rdi,4)
+; LINUX-64-STATIC-LABEL: off00:
+; LINUX-64-STATIC: movl    src+64(,%rdi,4), [[EAX:%e.x]]
+; LINUX-64-STATIC: movl    [[EAX]], dst+64(,%rdi,4)
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: off00:
-; LINUX-32-STATIC:     movl    4(%esp), %eax
-; LINUX-32-STATIC-NEXT:        movl    src+64(,%eax,4), %ecx
-; LINUX-32-STATIC-NEXT:        movl    %ecx, dst+64(,%eax,4)
+; LINUX-32-STATIC-LABEL: off00:
+; LINUX-32-STATIC:     movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT:        movl    src+64(,[[EAX]],4), [[ECX:%e.x]]
+; LINUX-32-STATIC-NEXT:        movl    [[ECX]], dst+64(,[[EAX]],4)
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: off00:
-; LINUX-32-PIC:        movl    4(%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-LABEL: off00:
+; LINUX-32-PIC:        movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT:   movl    src+64(,[[EAX]],4), [[ECX:%e.x]]
+; LINUX-32-PIC-NEXT:   movl    [[ECX]], dst+64(,[[EAX]],4)
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: off00:
-; LINUX-64-PIC:        movq    src@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT:   movl    64(%rax,%rdi,4), %eax
-; LINUX-64-PIC-NEXT:   movq    dst@GOTPCREL(%rip), %rcx
-; LINUX-64-PIC-NEXT:   movl    %eax, 64(%rcx,%rdi,4)
+; LINUX-64-PIC-LABEL: off00:
+; LINUX-64-PIC:        movq    src@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT:   movl    64([[RAX]],%rdi,4), [[EAX:%e.x]]
+; LINUX-64-PIC-NEXT:   movq    dst@GOTPCREL(%rip), [[RCX:%r.x]]
+; LINUX-64-PIC-NEXT:   movl    [[EAX]], 64([[RCX]],%rdi,4)
 ; LINUX-64-PIC-NEXT:   ret
 
 ; DARWIN-32-STATIC: _off00:
-; DARWIN-32-STATIC:    movl    4(%esp), %eax
-; DARWIN-32-STATIC-NEXT:       movl    _src+64(,%eax,4), %ecx
-; DARWIN-32-STATIC-NEXT:       movl    %ecx, _dst+64(,%eax,4)
+; DARWIN-32-STATIC:    movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       movl    _src+64(,[[EAX]],4), [[ECX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       movl    [[ECX]], _dst+64(,[[EAX]],4)
 ; DARWIN-32-STATIC-NEXT:       ret
 
 ; DARWIN-32-DYNAMIC: _off00:
-; DARWIN-32-DYNAMIC:   movl    4(%esp), %eax
-; DARWIN-32-DYNAMIC-NEXT:      movl    L_src$non_lazy_ptr, %ecx
-; DARWIN-32-DYNAMIC-NEXT:      movl    64(%ecx,%eax,4), %ecx
-; DARWIN-32-DYNAMIC-NEXT:      movl    L_dst$non_lazy_ptr, %edx
-; DARWIN-32-DYNAMIC-NEXT:      movl    %ecx, 64(%edx,%eax,4)
+; DARWIN-32-DYNAMIC:   movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    L_src$non_lazy_ptr, [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    64([[ECX]],[[EAX]],4), [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    L_dst$non_lazy_ptr, [[EDX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    [[ECX]], 64([[EDX]],[[EAX]],4)
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _off00:
-; DARWIN-32-PIC:       call    "L37$pb"
-; DARWIN-32-PIC-NEXT: "L37$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  movl    4(%esp), %ecx
-; DARWIN-32-PIC-NEXT:  movl    L_src$non_lazy_ptr-"L37$pb"(%eax), %edx
-; DARWIN-32-PIC-NEXT:  movl    64(%edx,%ecx,4), %edx
-; DARWIN-32-PIC-NEXT:  movl    L_dst$non_lazy_ptr-"L37$pb"(%eax), %eax
-; DARWIN-32-PIC-NEXT:  movl    %edx, 64(%eax,%ecx,4)
+; DARWIN-32-PIC:       calll   L36$pb
+; DARWIN-32-PIC-NEXT: L36$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    L_src$non_lazy_ptr-L36$pb([[EAX]]), [[EDX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    64([[EDX]],[[ECX]],4), [[EDX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    L_dst$non_lazy_ptr-L36$pb([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    [[EDX]], 64([[EAX]],[[ECX]],4)
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _off00:
-; DARWIN-64-STATIC:    movq    _src@GOTPCREL(%rip), %rax
-; DARWIN-64-STATIC-NEXT:       movl    64(%rax,%rdi,4), %eax
-; DARWIN-64-STATIC-NEXT:       movq    _dst@GOTPCREL(%rip), %rcx
-; DARWIN-64-STATIC-NEXT:       movl    %eax, 64(%rcx,%rdi,4)
+; DARWIN-64-STATIC:    movq    _src@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movl    64([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-STATIC-NEXT:       movq    _dst@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movl    [[EAX]], 64([[RCX]],%rdi,4)
 ; DARWIN-64-STATIC-NEXT:       ret
 
 ; DARWIN-64-DYNAMIC: _off00:
-; DARWIN-64-DYNAMIC:   movq    _src@GOTPCREL(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT:      movl    64(%rax,%rdi,4), %eax
-; DARWIN-64-DYNAMIC-NEXT:      movq    _dst@GOTPCREL(%rip), %rcx
-; DARWIN-64-DYNAMIC-NEXT:      movl    %eax, 64(%rcx,%rdi,4)
+; DARWIN-64-DYNAMIC:   movq    _src@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movl    64([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movq    _dst@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movl    [[EAX]], 64([[RCX]],%rdi,4)
 ; DARWIN-64-DYNAMIC-NEXT:      ret
 
 ; DARWIN-64-PIC: _off00:
-; DARWIN-64-PIC:       movq    _src@GOTPCREL(%rip), %rax
-; DARWIN-64-PIC-NEXT:  movl    64(%rax,%rdi,4), %eax
-; DARWIN-64-PIC-NEXT:  movq    _dst@GOTPCREL(%rip), %rcx
-; DARWIN-64-PIC-NEXT:  movl    %eax, 64(%rcx,%rdi,4)
+; DARWIN-64-PIC:       movq    _src@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movl    64([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-PIC-NEXT:  movq    _dst@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movl    [[EAX]], 64([[RCX]],%rdi,4)
 ; DARWIN-64-PIC-NEXT:  ret
 }
 
 define void @oxf00(i64 %i) nounwind {
 entry:
        %0 = add i64 %i, 16
-       %1 = getelementptr [32 x i32]* @xsrc, i64 0, i64 %0
-       %2 = load i32* %1, align 4
-       %3 = getelementptr [32 x i32]* @xdst, i64 0, i64 %0
+       %1 = getelementptr [32 x i32], [32 x i32]* @xsrc, i64 0, i64 %0
+       %2 = load i32, i32* %1, align 4
+       %3 = getelementptr [32 x i32], [32 x i32]* @xdst, i64 0, i64 %0
        store i32 %2, i32* %3, align 4
        ret void
-; LINUX-64-STATIC: oxf00:
-; LINUX-64-STATIC: movl    xsrc+64(,%rdi,4), %eax
-; LINUX-64-STATIC: movl    %eax, xdst+64(,%rdi,4)
+; LINUX-64-STATIC-LABEL: oxf00:
+; LINUX-64-STATIC: movl    xsrc+64(,%rdi,4), [[EAX:%e.x]]
+; LINUX-64-STATIC: movl    [[EAX]], xdst+64(,%rdi,4)
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: oxf00:
-; LINUX-32-STATIC:     movl    4(%esp), %eax
-; LINUX-32-STATIC-NEXT:        movl    xsrc+64(,%eax,4), %ecx
-; LINUX-32-STATIC-NEXT:        movl    %ecx, xdst+64(,%eax,4)
+; LINUX-32-STATIC-LABEL: oxf00:
+; LINUX-32-STATIC:     movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT:        movl    xsrc+64(,[[EAX]],4), [[ECX:%e.x]]
+; LINUX-32-STATIC-NEXT:        movl    [[ECX]], xdst+64(,[[EAX]],4)
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: oxf00:
-; LINUX-32-PIC:        movl    4(%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-LABEL: oxf00:
+; LINUX-32-PIC:        movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT:   movl    xsrc+64(,[[EAX]],4), [[ECX:%e.x]]
+; LINUX-32-PIC-NEXT:   movl    [[ECX]], xdst+64(,[[EAX]],4)
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: oxf00:
-; LINUX-64-PIC:        movq    xsrc@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT:   movl    64(%rax,%rdi,4), %eax
-; LINUX-64-PIC-NEXT:   movq    xdst@GOTPCREL(%rip), %rcx
-; LINUX-64-PIC-NEXT:   movl    %eax, 64(%rcx,%rdi,4)
+; LINUX-64-PIC-LABEL: oxf00:
+; LINUX-64-PIC:        movq    xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT:   movl    64([[RAX]],%rdi,4), [[EAX:%e.x]]
+; LINUX-64-PIC-NEXT:   movq    xdst@GOTPCREL(%rip), [[RCX:%r.x]]
+; LINUX-64-PIC-NEXT:   movl    [[EAX]], 64([[RCX]],%rdi,4)
 ; LINUX-64-PIC-NEXT:   ret
 
 ; DARWIN-32-STATIC: _oxf00:
-; DARWIN-32-STATIC:    movl    4(%esp), %eax
-; DARWIN-32-STATIC-NEXT:       movl    _xsrc+64(,%eax,4), %ecx
-; DARWIN-32-STATIC-NEXT:       movl    %ecx, _xdst+64(,%eax,4)
+; DARWIN-32-STATIC:    movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       movl    _xsrc+64(,[[EAX]],4), [[ECX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       movl    [[ECX]], _xdst+64(,[[EAX]],4)
 ; DARWIN-32-STATIC-NEXT:       ret
 
 ; DARWIN-32-DYNAMIC: _oxf00:
-; DARWIN-32-DYNAMIC:   movl    4(%esp), %eax
-; DARWIN-32-DYNAMIC-NEXT:      movl    L_xsrc$non_lazy_ptr, %ecx
-; DARWIN-32-DYNAMIC-NEXT:      movl    64(%ecx,%eax,4), %ecx
-; DARWIN-32-DYNAMIC-NEXT:      movl    L_xdst$non_lazy_ptr, %edx
-; DARWIN-32-DYNAMIC-NEXT:      movl    %ecx, 64(%edx,%eax,4)
+; DARWIN-32-DYNAMIC:   movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    L_xsrc$non_lazy_ptr, [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    64([[ECX]],[[EAX]],4), [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    L_xdst$non_lazy_ptr, [[EDX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    [[ECX]], 64([[EDX]],[[EAX]],4)
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _oxf00:
-; DARWIN-32-PIC:       call    "L38$pb"
-; DARWIN-32-PIC-NEXT: "L38$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  movl    4(%esp), %ecx
-; DARWIN-32-PIC-NEXT:  movl    L_xsrc$non_lazy_ptr-"L38$pb"(%eax), %edx
-; DARWIN-32-PIC-NEXT:  movl    64(%edx,%ecx,4), %edx
-; DARWIN-32-PIC-NEXT:  movl    L_xdst$non_lazy_ptr-"L38$pb"(%eax), %eax
-; DARWIN-32-PIC-NEXT:  movl    %edx, 64(%eax,%ecx,4)
+; DARWIN-32-PIC:       calll   L37$pb
+; DARWIN-32-PIC-NEXT: L37$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    L_xsrc$non_lazy_ptr-L37$pb([[EAX]]), [[EDX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    64([[EDX]],[[ECX]],4), [[EDX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    L_xdst$non_lazy_ptr-L37$pb([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    [[EDX]], 64([[EAX]],[[ECX]],4)
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _oxf00:
-; DARWIN-64-STATIC:    movq    _xsrc@GOTPCREL(%rip), %rax
-; DARWIN-64-STATIC-NEXT:       movl    64(%rax,%rdi,4), %eax
-; DARWIN-64-STATIC-NEXT:       movq    _xdst@GOTPCREL(%rip), %rcx
-; DARWIN-64-STATIC-NEXT:       movl    %eax, 64(%rcx,%rdi,4)
+; DARWIN-64-STATIC:    movq    _xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movl    64([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-STATIC-NEXT:       movq    _xdst@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movl    [[EAX]], 64([[RCX]],%rdi,4)
 ; DARWIN-64-STATIC-NEXT:       ret
 
 ; DARWIN-64-DYNAMIC: _oxf00:
-; DARWIN-64-DYNAMIC:   movq    _xsrc@GOTPCREL(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT:      movl    64(%rax,%rdi,4), %eax
-; DARWIN-64-DYNAMIC-NEXT:      movq    _xdst@GOTPCREL(%rip), %rcx
-; DARWIN-64-DYNAMIC-NEXT:      movl    %eax, 64(%rcx,%rdi,4)
+; DARWIN-64-DYNAMIC:   movq    _xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movl    64([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movq    _xdst@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movl    [[EAX]], 64([[RCX]],%rdi,4)
 ; DARWIN-64-DYNAMIC-NEXT:      ret
 
 ; DARWIN-64-PIC: _oxf00:
-; DARWIN-64-PIC:       movq    _xsrc@GOTPCREL(%rip), %rax
-; DARWIN-64-PIC-NEXT:  movl    64(%rax,%rdi,4), %eax
-; DARWIN-64-PIC-NEXT:  movq    _xdst@GOTPCREL(%rip), %rcx
-; DARWIN-64-PIC-NEXT:  movl    %eax, 64(%rcx,%rdi,4)
+; DARWIN-64-PIC:       movq    _xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movl    64([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-PIC-NEXT:  movq    _xdst@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movl    [[EAX]], 64([[RCX]],%rdi,4)
 ; DARWIN-64-PIC-NEXT:  ret
 }
 
 define void @off01(i64 %i) nounwind {
 entry:
        %.sum = add i64 %i, 16
-       %0 = getelementptr [131072 x i32]* @dst, i64 0, i64 %.sum
+       %0 = getelementptr [131072 x i32], [131072 x i32]* @dst, i64 0, i64 %.sum
        store i32* %0, i32** @ptr, align 8
        ret void
-; LINUX-64-STATIC: off01:
-; LINUX-64-STATIC: leaq    dst+64(,%rdi,4), %rax
-; LINUX-64-STATIC: movq    %rax, ptr
+; LINUX-64-STATIC-LABEL: off01:
+; LINUX-64-STATIC: leaq    dst+64(,%rdi,4), [[RAX:%r.x]]
+; LINUX-64-STATIC: movq    [[RAX]], ptr
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: off01:
-; LINUX-32-STATIC:     movl    4(%esp), %eax
-; LINUX-32-STATIC-NEXT:        leal    dst+64(,%eax,4), %eax
-; LINUX-32-STATIC-NEXT:        movl    %eax, ptr
+; LINUX-32-STATIC-LABEL: off01:
+; LINUX-32-STATIC:     movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT:        leal    dst+64(,[[EAX]],4), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT:        movl    [[EAX]], ptr
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: off01:
-; LINUX-32-PIC:        movl    4(%esp), %eax
-; LINUX-32-PIC-NEXT:   leal    dst+64(,%eax,4), %eax
-; LINUX-32-PIC-NEXT:   movl    %eax, ptr
+; LINUX-32-PIC-LABEL: off01:
+; LINUX-32-PIC:        movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT:   leal    dst+64(,[[EAX]],4), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT:   movl    [[EAX]], ptr
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: off01:
-; LINUX-64-PIC:        movq    dst@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT:   leaq    64(%rax,%rdi,4), %rax
-; LINUX-64-PIC-NEXT:   movq    ptr@GOTPCREL(%rip), %rcx
-; LINUX-64-PIC-NEXT:   movq    %rax, (%rcx)
+; LINUX-64-PIC-LABEL: off01:
+; LINUX-64-PIC:        movq    dst@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT:   leaq    64([[RAX]],%rdi,4), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT:   movq    ptr@GOTPCREL(%rip), [[RCX:%r.x]]
+; LINUX-64-PIC-NEXT:   movq    [[RAX]], ([[RCX]])
 ; LINUX-64-PIC-NEXT:   ret
 
 ; DARWIN-32-STATIC: _off01:
-; DARWIN-32-STATIC:    movl    4(%esp), %eax
-; DARWIN-32-STATIC-NEXT:       leal    _dst+64(,%eax,4), %eax
-; DARWIN-32-STATIC-NEXT:       movl    %eax, _ptr
+; DARWIN-32-STATIC:    movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       leal    _dst+64(,[[EAX]],4), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       movl    [[EAX]], _ptr
 ; DARWIN-32-STATIC-NEXT:       ret
 
 ; DARWIN-32-DYNAMIC: _off01:
-; DARWIN-32-DYNAMIC:   movl    4(%esp), %eax
-; DARWIN-32-DYNAMIC-NEXT:      movl    L_dst$non_lazy_ptr, %ecx
-; DARWIN-32-DYNAMIC-NEXT:      leal    64(%ecx,%eax,4), %eax
-; DARWIN-32-DYNAMIC-NEXT:      movl    L_ptr$non_lazy_ptr, %ecx
-; DARWIN-32-DYNAMIC-NEXT:      movl    %eax, (%ecx)
+; DARWIN-32-DYNAMIC:   movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    L_dst$non_lazy_ptr, [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      leal    64([[ECX]],[[EAX]],4), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    L_ptr$non_lazy_ptr, [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    [[EAX]], ([[ECX]])
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _off01:
-; DARWIN-32-PIC:       call    "L39$pb"
-; DARWIN-32-PIC-NEXT: "L39$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  movl    4(%esp), %ecx
-; DARWIN-32-PIC-NEXT:  movl    L_dst$non_lazy_ptr-"L39$pb"(%eax), %edx
-; DARWIN-32-PIC-NEXT:  leal    64(%edx,%ecx,4), %ecx
-; DARWIN-32-PIC-NEXT:  movl    L_ptr$non_lazy_ptr-"L39$pb"(%eax), %eax
-; DARWIN-32-PIC-NEXT:  movl    %ecx, (%eax)
+; DARWIN-32-PIC:       calll   L38$pb
+; DARWIN-32-PIC-NEXT: L38$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    L_dst$non_lazy_ptr-L38$pb([[EAX]]), [[EDX:%e.x]]
+; DARWIN-32-PIC-NEXT:  leal    64([[EDX]],[[ECX]],4), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    L_ptr$non_lazy_ptr-L38$pb([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    [[ECX]], ([[EAX]])
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _off01:
-; DARWIN-64-STATIC:    movq    _dst@GOTPCREL(%rip), %rax
-; DARWIN-64-STATIC-NEXT:       leaq    64(%rax,%rdi,4), %rax
-; DARWIN-64-STATIC-NEXT:       movq    _ptr@GOTPCREL(%rip), %rcx
-; DARWIN-64-STATIC-NEXT:       movq    %rax, (%rcx)
+; DARWIN-64-STATIC:    movq    _dst@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       leaq    64([[RAX]],%rdi,4), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movq    _ptr@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movq    [[RAX]], ([[RCX]])
 ; DARWIN-64-STATIC-NEXT:       ret
 
 ; DARWIN-64-DYNAMIC: _off01:
-; DARWIN-64-DYNAMIC:   movq    _dst@GOTPCREL(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT:      leaq    64(%rax,%rdi,4), %rax
-; DARWIN-64-DYNAMIC-NEXT:      movq    _ptr@GOTPCREL(%rip), %rcx
-; DARWIN-64-DYNAMIC-NEXT:      movq    %rax, (%rcx)
+; DARWIN-64-DYNAMIC:   movq    _dst@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      leaq    64([[RAX]],%rdi,4), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movq    _ptr@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movq    [[RAX]], ([[RCX]])
 ; DARWIN-64-DYNAMIC-NEXT:      ret
 
 ; DARWIN-64-PIC: _off01:
-; DARWIN-64-PIC:       movq    _dst@GOTPCREL(%rip), %rax
-; DARWIN-64-PIC-NEXT:  leaq    64(%rax,%rdi,4), %rax
-; DARWIN-64-PIC-NEXT:  movq    _ptr@GOTPCREL(%rip), %rcx
-; DARWIN-64-PIC-NEXT:  movq    %rax, (%rcx)
+; DARWIN-64-PIC:       movq    _dst@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT:  leaq    64([[RAX]],%rdi,4), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movq    _ptr@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movq    [[RAX]], ([[RCX]])
 ; DARWIN-64-PIC-NEXT:  ret
 }
 
 define void @oxf01(i64 %i) nounwind {
 entry:
        %.sum = add i64 %i, 16
-       %0 = getelementptr [32 x i32]* @xdst, i64 0, i64 %.sum
+       %0 = getelementptr [32 x i32], [32 x i32]* @xdst, i64 0, i64 %.sum
        store i32* %0, i32** @ptr, align 8
        ret void
-; LINUX-64-STATIC: oxf01:
-; LINUX-64-STATIC: leaq    xdst+64(,%rdi,4), %rax
-; LINUX-64-STATIC: movq    %rax, ptr
+; LINUX-64-STATIC-LABEL: oxf01:
+; LINUX-64-STATIC: leaq    xdst+64(,%rdi,4), [[RAX:%r.x]]
+; LINUX-64-STATIC: movq    [[RAX]], ptr
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: oxf01:
-; LINUX-32-STATIC:     movl    4(%esp), %eax
-; LINUX-32-STATIC-NEXT:        leal    xdst+64(,%eax,4), %eax
-; LINUX-32-STATIC-NEXT:        movl    %eax, ptr
+; LINUX-32-STATIC-LABEL: oxf01:
+; LINUX-32-STATIC:     movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT:        leal    xdst+64(,[[EAX]],4), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT:        movl    [[EAX]], ptr
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: oxf01:
-; LINUX-32-PIC:        movl    4(%esp), %eax
-; LINUX-32-PIC-NEXT:   leal    xdst+64(,%eax,4), %eax
-; LINUX-32-PIC-NEXT:   movl    %eax, ptr
+; LINUX-32-PIC-LABEL: oxf01:
+; LINUX-32-PIC:        movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT:   leal    xdst+64(,[[EAX]],4), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT:   movl    [[EAX]], ptr
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: oxf01:
-; LINUX-64-PIC:        movq    xdst@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT:   leaq    64(%rax,%rdi,4), %rax
-; LINUX-64-PIC-NEXT:   movq    ptr@GOTPCREL(%rip), %rcx
-; LINUX-64-PIC-NEXT:   movq    %rax, (%rcx)
+; LINUX-64-PIC-LABEL: oxf01:
+; LINUX-64-PIC:        movq    xdst@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT:   leaq    64([[RAX]],%rdi,4), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT:   movq    ptr@GOTPCREL(%rip), [[RCX:%r.x]]
+; LINUX-64-PIC-NEXT:   movq    [[RAX]], ([[RCX]])
 ; LINUX-64-PIC-NEXT:   ret
 
 ; DARWIN-32-STATIC: _oxf01:
-; DARWIN-32-STATIC:    movl    4(%esp), %eax
-; DARWIN-32-STATIC-NEXT:       leal    _xdst+64(,%eax,4), %eax
-; DARWIN-32-STATIC-NEXT:       movl    %eax, _ptr
+; DARWIN-32-STATIC:    movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       leal    _xdst+64(,[[EAX]],4), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       movl    [[EAX]], _ptr
 ; DARWIN-32-STATIC-NEXT:       ret
 
 ; DARWIN-32-DYNAMIC: _oxf01:
-; DARWIN-32-DYNAMIC:   movl    4(%esp), %eax
-; DARWIN-32-DYNAMIC-NEXT:      movl    L_xdst$non_lazy_ptr, %ecx
-; DARWIN-32-DYNAMIC-NEXT:      leal    64(%ecx,%eax,4), %eax
-; DARWIN-32-DYNAMIC-NEXT:      movl    L_ptr$non_lazy_ptr, %ecx
-; DARWIN-32-DYNAMIC-NEXT:      movl    %eax, (%ecx)
+; DARWIN-32-DYNAMIC:   movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    L_xdst$non_lazy_ptr, [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      leal    64([[ECX]],[[EAX]],4), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    L_ptr$non_lazy_ptr, [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    [[EAX]], ([[ECX]])
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _oxf01:
-; DARWIN-32-PIC:       call    "L40$pb"
-; DARWIN-32-PIC-NEXT: "L40$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  movl    4(%esp), %ecx
-; DARWIN-32-PIC-NEXT:  movl    L_xdst$non_lazy_ptr-"L40$pb"(%eax), %edx
-; DARWIN-32-PIC-NEXT:  leal    64(%edx,%ecx,4), %ecx
-; DARWIN-32-PIC-NEXT:  movl    L_ptr$non_lazy_ptr-"L40$pb"(%eax), %eax
-; DARWIN-32-PIC-NEXT:  movl    %ecx, (%eax)
+; DARWIN-32-PIC:       calll   L39$pb
+; DARWIN-32-PIC-NEXT: L39$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    L_xdst$non_lazy_ptr-L39$pb([[EAX]]), [[EDX:%e.x]]
+; DARWIN-32-PIC-NEXT:  leal    64([[EDX]],[[ECX]],4), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    L_ptr$non_lazy_ptr-L39$pb([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    [[ECX]], ([[EAX]])
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _oxf01:
-; DARWIN-64-STATIC:    movq    _xdst@GOTPCREL(%rip), %rax
-; DARWIN-64-STATIC-NEXT:       leaq    64(%rax,%rdi,4), %rax
-; DARWIN-64-STATIC-NEXT:       movq    _ptr@GOTPCREL(%rip), %rcx
-; DARWIN-64-STATIC-NEXT:       movq    %rax, (%rcx)
+; DARWIN-64-STATIC:    movq    _xdst@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       leaq    64([[RAX]],%rdi,4), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movq    _ptr@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movq    [[RAX]], ([[RCX]])
 ; DARWIN-64-STATIC-NEXT:       ret
 
 ; DARWIN-64-DYNAMIC: _oxf01:
-; DARWIN-64-DYNAMIC:   movq    _xdst@GOTPCREL(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT:      leaq    64(%rax,%rdi,4), %rax
-; DARWIN-64-DYNAMIC-NEXT:      movq    _ptr@GOTPCREL(%rip), %rcx
-; DARWIN-64-DYNAMIC-NEXT:      movq    %rax, (%rcx)
+; DARWIN-64-DYNAMIC:   movq    _xdst@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      leaq    64([[RAX]],%rdi,4), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movq    _ptr@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movq    [[RAX]], ([[RCX]])
 ; DARWIN-64-DYNAMIC-NEXT:      ret
 
 ; DARWIN-64-PIC: _oxf01:
-; DARWIN-64-PIC:       movq    _xdst@GOTPCREL(%rip), %rax
-; DARWIN-64-PIC-NEXT:  leaq    64(%rax,%rdi,4), %rax
-; DARWIN-64-PIC-NEXT:  movq    _ptr@GOTPCREL(%rip), %rcx
-; DARWIN-64-PIC-NEXT:  movq    %rax, (%rcx)
+; DARWIN-64-PIC:       movq    _xdst@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT:  leaq    64([[RAX]],%rdi,4), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movq    _ptr@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movq    [[RAX]], ([[RCX]])
 ; DARWIN-64-PIC-NEXT:  ret
 }
 
 define void @off02(i64 %i) nounwind {
 entry:
-       %0 = load i32** @ptr, align 8
+       %0 = load i32*, i32** @ptr, align 8
        %1 = add i64 %i, 16
-       %2 = getelementptr [131072 x i32]* @src, i64 0, i64 %1
-       %3 = load i32* %2, align 4
-       %4 = getelementptr i32* %0, i64 %1
+       %2 = getelementptr [131072 x i32], [131072 x i32]* @src, i64 0, i64 %1
+       %3 = load i32, i32* %2, align 4
+       %4 = getelementptr i32, i32* %0, i64 %1
        store i32 %3, i32* %4, align 4
        ret void
-; LINUX-64-STATIC: off02:
-; LINUX-64-STATIC: movl    src+64(,%rdi,4), %eax
-; LINUX-64-STATIC: movq    ptr(%rip), %rcx
-; LINUX-64-STATIC: movl    %eax, 64(%rcx,%rdi,4)
+; LINUX-64-STATIC-LABEL: off02:
+; LINUX-64-STATIC: movl    src+64(,%rdi,4), [[EAX:%e.x]]
+; LINUX-64-STATIC: movq    ptr(%rip), [[RCX:%r.x]]
+; LINUX-64-STATIC: movl    [[EAX]], 64([[RCX]],%rdi,4)
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: off02:
-; LINUX-32-STATIC:     movl    4(%esp), %eax
-; LINUX-32-STATIC-NEXT:        movl    src+64(,%eax,4), %ecx
-; LINUX-32-STATIC-NEXT:        movl    ptr, %edx
-; LINUX-32-STATIC-NEXT:        movl    %ecx, 64(%edx,%eax,4)
+; LINUX-32-STATIC-LABEL: off02:
+; LINUX-32-STATIC:     movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT:        movl    src+64(,[[EAX]],4), [[ECX:%e.x]]
+; LINUX-32-STATIC-NEXT:        movl    ptr, [[EDX:%e.x]]
+; LINUX-32-STATIC-NEXT:        movl    [[ECX]], 64([[EDX]],[[EAX]],4)
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: off02:
-; LINUX-32-PIC:        movl    4(%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-LABEL: off02:
+; LINUX-32-PIC:        movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT:   movl    src+64(,[[EAX]],4), [[ECX:%e.x]]
+; LINUX-32-PIC-NEXT:   movl    ptr, [[EDX:%e.x]]
+; LINUX-32-PIC-NEXT:   movl    [[ECX]], 64([[EDX]],[[EAX]],4)
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: off02:
-; LINUX-64-PIC:        movq    src@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT:   movl    64(%rax,%rdi,4), %eax
-; LINUX-64-PIC-NEXT:   movq    ptr@GOTPCREL(%rip), %rcx
-; LINUX-64-PIC-NEXT:   movq    (%rcx), %rcx
-; LINUX-64-PIC-NEXT:   movl    %eax, 64(%rcx,%rdi,4)
+; LINUX-64-PIC-LABEL: off02:
+; LINUX-64-PIC:        movq    src@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT:   movl    64([[RAX]],%rdi,4), [[EAX:%e.x]]
+; LINUX-64-PIC-NEXT:   movq    ptr@GOTPCREL(%rip), [[RCX:%r.x]]
+; LINUX-64-PIC-NEXT:   movq    ([[RCX]]), [[RCX:%r.x]]
+; LINUX-64-PIC-NEXT:   movl    [[EAX]], 64([[RCX]],%rdi,4)
 ; LINUX-64-PIC-NEXT:   ret
 
 ; DARWIN-32-STATIC: _off02:
-; DARWIN-32-STATIC:    movl    4(%esp), %eax
-; DARWIN-32-STATIC-NEXT:       movl    _src+64(,%eax,4), %ecx
-; DARWIN-32-STATIC-NEXT:       movl    _ptr, %edx
-; DARWIN-32-STATIC-NEXT:       movl    %ecx, 64(%edx,%eax,4)
+; DARWIN-32-STATIC:    movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       movl    _src+64(,[[EAX]],4), [[ECX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       movl    _ptr, [[EDX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       movl    [[ECX]], 64([[EDX]],[[EAX]],4)
 ; DARWIN-32-STATIC-NEXT:       ret
 
 ; DARWIN-32-DYNAMIC: _off02:
-; DARWIN-32-DYNAMIC:   movl    4(%esp), %eax
-; DARWIN-32-DYNAMIC-NEXT:      movl    L_src$non_lazy_ptr, %ecx
-; DARWIN-32-DYNAMIC-NEXT:      movl    64(%ecx,%eax,4), %ecx
-; DARWIN-32-DYNAMIC-NEXT:      movl    L_ptr$non_lazy_ptr, %edx
-; DARWIN-32-DYNAMIC-NEXT:      movl    (%edx), %edx
-; DARWIN-32-DYNAMIC-NEXT:      movl    %ecx, 64(%edx,%eax,4)
+; DARWIN-32-DYNAMIC:   movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    L_src$non_lazy_ptr, [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    64([[ECX]],[[EAX]],4), [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    L_ptr$non_lazy_ptr, [[EDX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    ([[EDX]]), [[EDX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    [[ECX]], 64([[EDX]],[[EAX]],4)
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _off02:
-; DARWIN-32-PIC:       call    "L41$pb"
-; DARWIN-32-PIC-NEXT: "L41$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  movl    4(%esp), %ecx
-; DARWIN-32-PIC-NEXT:  movl    L_src$non_lazy_ptr-"L41$pb"(%eax), %edx
-; DARWIN-32-PIC-NEXT:  movl    64(%edx,%ecx,4), %edx
-; DARWIN-32-PIC-NEXT:  movl    L_ptr$non_lazy_ptr-"L41$pb"(%eax), %eax
-; DARWIN-32-PIC-NEXT:  movl    (%eax), %eax
-; DARWIN-32-PIC-NEXT:  movl    %edx, 64(%eax,%ecx,4)
+; DARWIN-32-PIC:       calll   L40$pb
+; DARWIN-32-PIC-NEXT: L40$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    L_src$non_lazy_ptr-L40$pb([[EAX]]), [[EDX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    64([[EDX]],[[ECX]],4), [[EDX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    L_ptr$non_lazy_ptr-L40$pb([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    ([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    [[EDX]], 64([[EAX]],[[ECX]],4)
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _off02:
-; DARWIN-64-STATIC:    movq    _src@GOTPCREL(%rip), %rax
-; DARWIN-64-STATIC-NEXT:       movl    64(%rax,%rdi,4), %eax
-; DARWIN-64-STATIC-NEXT:       movq    _ptr@GOTPCREL(%rip), %rcx
-; DARWIN-64-STATIC-NEXT:       movq    (%rcx), %rcx
-; DARWIN-64-STATIC-NEXT:       movl    %eax, 64(%rcx,%rdi,4)
+; DARWIN-64-STATIC:    movq    _src@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movl    64([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-STATIC-NEXT:       movq    _ptr@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movq    ([[RCX]]), [[RCX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movl    [[EAX]], 64([[RCX]],%rdi,4)
 ; DARWIN-64-STATIC-NEXT:       ret
 
 ; DARWIN-64-DYNAMIC: _off02:
-; DARWIN-64-DYNAMIC:   movq    _src@GOTPCREL(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT:      movl    64(%rax,%rdi,4), %eax
-; DARWIN-64-DYNAMIC-NEXT:      movq    _ptr@GOTPCREL(%rip), %rcx
-; DARWIN-64-DYNAMIC-NEXT:      movq    (%rcx), %rcx
-; DARWIN-64-DYNAMIC-NEXT:      movl    %eax, 64(%rcx,%rdi,4)
+; DARWIN-64-DYNAMIC:   movq    _src@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movl    64([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movq    _ptr@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movq    ([[RCX]]), [[RCX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movl    [[EAX]], 64([[RCX]],%rdi,4)
 ; DARWIN-64-DYNAMIC-NEXT:      ret
 
 ; DARWIN-64-PIC: _off02:
-; DARWIN-64-PIC:       movq    _src@GOTPCREL(%rip), %rax
-; DARWIN-64-PIC-NEXT:  movl    64(%rax,%rdi,4), %eax
-; DARWIN-64-PIC-NEXT:  movq    _ptr@GOTPCREL(%rip), %rcx
-; DARWIN-64-PIC-NEXT:  movq    (%rcx), %rcx
-; DARWIN-64-PIC-NEXT:  movl    %eax, 64(%rcx,%rdi,4)
+; DARWIN-64-PIC:       movq    _src@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movl    64([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-PIC-NEXT:  movq    _ptr@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movq    ([[RCX]]), [[RCX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movl    [[EAX]], 64([[RCX]],%rdi,4)
 ; DARWIN-64-PIC-NEXT:  ret
 }
 
 define void @oxf02(i64 %i) nounwind {
 entry:
-       %0 = load i32** @ptr, align 8
+       %0 = load i32*, i32** @ptr, align 8
        %1 = add i64 %i, 16
-       %2 = getelementptr [32 x i32]* @xsrc, i64 0, i64 %1
-       %3 = load i32* %2, align 4
-       %4 = getelementptr i32* %0, i64 %1
+       %2 = getelementptr [32 x i32], [32 x i32]* @xsrc, i64 0, i64 %1
+       %3 = load i32, i32* %2, align 4
+       %4 = getelementptr i32, i32* %0, i64 %1
        store i32 %3, i32* %4, align 4
        ret void
-; LINUX-64-STATIC: oxf02:
-; LINUX-64-STATIC: movl    xsrc+64(,%rdi,4), %eax
-; LINUX-64-STATIC: movq    ptr(%rip), %rcx
-; LINUX-64-STATIC: movl    %eax, 64(%rcx,%rdi,4)
+; LINUX-64-STATIC-LABEL: oxf02:
+; LINUX-64-STATIC: movl    xsrc+64(,%rdi,4), [[EAX:%e.x]]
+; LINUX-64-STATIC: movq    ptr(%rip), [[RCX:%r.x]]
+; LINUX-64-STATIC: movl    [[EAX]], 64([[RCX]],%rdi,4)
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: oxf02:
-; LINUX-32-STATIC:     movl    4(%esp), %eax
-; LINUX-32-STATIC-NEXT:        movl    xsrc+64(,%eax,4), %ecx
-; LINUX-32-STATIC-NEXT:        movl    ptr, %edx
-; LINUX-32-STATIC-NEXT:        movl    %ecx, 64(%edx,%eax,4)
+; LINUX-32-STATIC-LABEL: oxf02:
+; LINUX-32-STATIC:     movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT:        movl    xsrc+64(,[[EAX]],4), [[ECX:%e.x]]
+; LINUX-32-STATIC-NEXT:        movl    ptr, [[EDX:%e.x]]
+; LINUX-32-STATIC-NEXT:        movl    [[ECX]], 64([[EDX]],[[EAX]],4)
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: oxf02:
-; LINUX-32-PIC:        movl    4(%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-LABEL: oxf02:
+; LINUX-32-PIC:        movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT:   movl    xsrc+64(,[[EAX]],4), [[ECX:%e.x]]
+; LINUX-32-PIC-NEXT:   movl    ptr, [[EDX:%e.x]]
+; LINUX-32-PIC-NEXT:   movl    [[ECX]], 64([[EDX]],[[EAX]],4)
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: oxf02:
-; LINUX-64-PIC:        movq    xsrc@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT:   movl    64(%rax,%rdi,4), %eax
-; LINUX-64-PIC-NEXT:   movq    ptr@GOTPCREL(%rip), %rcx
-; LINUX-64-PIC-NEXT:   movq    (%rcx), %rcx
-; LINUX-64-PIC-NEXT:   movl    %eax, 64(%rcx,%rdi,4)
+; LINUX-64-PIC-LABEL: oxf02:
+; LINUX-64-PIC:        movq    xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT:   movl    64([[RAX]],%rdi,4), [[EAX:%e.x]]
+; LINUX-64-PIC-NEXT:   movq    ptr@GOTPCREL(%rip), [[RCX:%r.x]]
+; LINUX-64-PIC-NEXT:   movq    ([[RCX]]), [[RCX:%r.x]]
+; LINUX-64-PIC-NEXT:   movl    [[EAX]], 64([[RCX]],%rdi,4)
 ; LINUX-64-PIC-NEXT:   ret
 
 ; DARWIN-32-STATIC: _oxf02:
-; DARWIN-32-STATIC:    movl    4(%esp), %eax
-; DARWIN-32-STATIC-NEXT:       movl    _xsrc+64(,%eax,4), %ecx
-; DARWIN-32-STATIC-NEXT:       movl    _ptr, %edx
-; DARWIN-32-STATIC-NEXT:       movl    %ecx, 64(%edx,%eax,4)
+; DARWIN-32-STATIC:    movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       movl    _xsrc+64(,[[EAX]],4), [[ECX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       movl    _ptr, [[EDX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       movl    [[ECX]], 64([[EDX]],[[EAX]],4)
 ; DARWIN-32-STATIC-NEXT:       ret
 
 ; DARWIN-32-DYNAMIC: _oxf02:
-; DARWIN-32-DYNAMIC:   movl    4(%esp), %eax
-; DARWIN-32-DYNAMIC-NEXT:      movl    L_xsrc$non_lazy_ptr, %ecx
-; DARWIN-32-DYNAMIC-NEXT:      movl    64(%ecx,%eax,4), %ecx
-; DARWIN-32-DYNAMIC-NEXT:      movl    L_ptr$non_lazy_ptr, %edx
-; DARWIN-32-DYNAMIC-NEXT:      movl    (%edx), %edx
-; DARWIN-32-DYNAMIC-NEXT:      movl    %ecx, 64(%edx,%eax,4)
+; DARWIN-32-DYNAMIC:   movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    L_xsrc$non_lazy_ptr, [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    64([[ECX]],[[EAX]],4), [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    L_ptr$non_lazy_ptr, [[EDX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    ([[EDX]]), [[EDX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    [[ECX]], 64([[EDX]],[[EAX]],4)
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _oxf02:
-; DARWIN-32-PIC:       call    "L42$pb"
-; DARWIN-32-PIC-NEXT: "L42$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  movl    4(%esp), %ecx
-; DARWIN-32-PIC-NEXT:  movl    L_xsrc$non_lazy_ptr-"L42$pb"(%eax), %edx
-; DARWIN-32-PIC-NEXT:  movl    64(%edx,%ecx,4), %edx
-; DARWIN-32-PIC-NEXT:  movl    L_ptr$non_lazy_ptr-"L42$pb"(%eax), %eax
-; DARWIN-32-PIC-NEXT:  movl    (%eax), %eax
-; DARWIN-32-PIC-NEXT:  movl    %edx, 64(%eax,%ecx,4)
+; DARWIN-32-PIC:       calll   L41$pb
+; DARWIN-32-PIC-NEXT: L41$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    L_xsrc$non_lazy_ptr-L41$pb([[EAX]]), [[EDX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    64([[EDX]],[[ECX]],4), [[EDX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    L_ptr$non_lazy_ptr-L41$pb([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    ([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    [[EDX]], 64([[EAX]],[[ECX]],4)
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _oxf02:
-; DARWIN-64-STATIC:    movq    _xsrc@GOTPCREL(%rip), %rax
-; DARWIN-64-STATIC-NEXT:       movl    64(%rax,%rdi,4), %eax
-; DARWIN-64-STATIC-NEXT:       movq    _ptr@GOTPCREL(%rip), %rcx
-; DARWIN-64-STATIC-NEXT:       movq    (%rcx), %rcx
-; DARWIN-64-STATIC-NEXT:       movl    %eax, 64(%rcx,%rdi,4)
+; DARWIN-64-STATIC:    movq    _xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movl    64([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-STATIC-NEXT:       movq    _ptr@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movq    ([[RCX]]), [[RCX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movl    [[EAX]], 64([[RCX]],%rdi,4)
 ; DARWIN-64-STATIC-NEXT:       ret
 
 ; DARWIN-64-DYNAMIC: _oxf02:
-; DARWIN-64-DYNAMIC:   movq    _xsrc@GOTPCREL(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT:      movl    64(%rax,%rdi,4), %eax
-; DARWIN-64-DYNAMIC-NEXT:      movq    _ptr@GOTPCREL(%rip), %rcx
-; DARWIN-64-DYNAMIC-NEXT:      movq    (%rcx), %rcx
-; DARWIN-64-DYNAMIC-NEXT:      movl    %eax, 64(%rcx,%rdi,4)
+; DARWIN-64-DYNAMIC:   movq    _xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movl    64([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movq    _ptr@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movq    ([[RCX]]), [[RCX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movl    [[EAX]], 64([[RCX]],%rdi,4)
 ; DARWIN-64-DYNAMIC-NEXT:      ret
 
 ; DARWIN-64-PIC: _oxf02:
-; DARWIN-64-PIC:       movq    _xsrc@GOTPCREL(%rip), %rax
-; DARWIN-64-PIC-NEXT:  movl    64(%rax,%rdi,4), %eax
-; DARWIN-64-PIC-NEXT:  movq    _ptr@GOTPCREL(%rip), %rcx
-; DARWIN-64-PIC-NEXT:  movq    (%rcx), %rcx
-; DARWIN-64-PIC-NEXT:  movl    %eax, 64(%rcx,%rdi,4)
+; DARWIN-64-PIC:       movq    _xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movl    64([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-PIC-NEXT:  movq    _ptr@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movq    ([[RCX]]), [[RCX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movl    [[EAX]], 64([[RCX]],%rdi,4)
 ; DARWIN-64-PIC-NEXT:  ret
 }
 
 define void @off03(i64 %i) nounwind {
 entry:
        %0 = add i64 %i, 16
-       %1 = getelementptr [131072 x i32]* @dsrc, i64 0, i64 %0
-       %2 = load i32* %1, align 4
-       %3 = getelementptr [131072 x i32]* @ddst, i64 0, i64 %0
+       %1 = getelementptr [131072 x i32], [131072 x i32]* @dsrc, i64 0, i64 %0
+       %2 = load i32, i32* %1, align 4
+       %3 = getelementptr [131072 x i32], [131072 x i32]* @ddst, i64 0, i64 %0
        store i32 %2, i32* %3, align 4
        ret void
-; LINUX-64-STATIC: off03:
-; LINUX-64-STATIC: movl    dsrc+64(,%rdi,4), %eax
-; LINUX-64-STATIC: movl    %eax, ddst+64(,%rdi,4)
+; LINUX-64-STATIC-LABEL: off03:
+; LINUX-64-STATIC: movl    dsrc+64(,%rdi,4), [[EAX:%e.x]]
+; LINUX-64-STATIC: movl    [[EAX]], ddst+64(,%rdi,4)
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: off03:
-; LINUX-32-STATIC:     movl    4(%esp), %eax
-; LINUX-32-STATIC-NEXT:        movl    dsrc+64(,%eax,4), %ecx
-; LINUX-32-STATIC-NEXT:        movl    %ecx, ddst+64(,%eax,4)
+; LINUX-32-STATIC-LABEL: off03:
+; LINUX-32-STATIC:     movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT:        movl    dsrc+64(,[[EAX]],4), [[ECX:%e.x]]
+; LINUX-32-STATIC-NEXT:        movl    [[ECX]], ddst+64(,[[EAX]],4)
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: off03:
-; LINUX-32-PIC:        movl    4(%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-LABEL: off03:
+; LINUX-32-PIC:        movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT:   movl    dsrc+64(,[[EAX]],4), [[ECX:%e.x]]
+; LINUX-32-PIC-NEXT:   movl    [[ECX]], ddst+64(,[[EAX]],4)
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: off03:
-; LINUX-64-PIC:        movq    dsrc@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT:   movl    64(%rax,%rdi,4), %eax
-; LINUX-64-PIC-NEXT:   movq    ddst@GOTPCREL(%rip), %rcx
-; LINUX-64-PIC-NEXT:   movl    %eax, 64(%rcx,%rdi,4)
+; LINUX-64-PIC-LABEL: off03:
+; LINUX-64-PIC:        movq    dsrc@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT:   movl    64([[RAX]],%rdi,4), [[EAX:%e.x]]
+; LINUX-64-PIC-NEXT:   movq    ddst@GOTPCREL(%rip), [[RCX:%r.x]]
+; LINUX-64-PIC-NEXT:   movl    [[EAX]], 64([[RCX]],%rdi,4)
 ; LINUX-64-PIC-NEXT:   ret
 
 ; DARWIN-32-STATIC: _off03:
-; DARWIN-32-STATIC:    movl    4(%esp), %eax
-; DARWIN-32-STATIC-NEXT:       movl    _dsrc+64(,%eax,4), %ecx
-; DARWIN-32-STATIC-NEXT:       movl    %ecx, _ddst+64(,%eax,4)
+; DARWIN-32-STATIC:    movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       movl    _dsrc+64(,[[EAX]],4), [[ECX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       movl    [[ECX]], _ddst+64(,[[EAX]],4)
 ; DARWIN-32-STATIC-NEXT:       ret
 
 ; DARWIN-32-DYNAMIC: _off03:
-; DARWIN-32-DYNAMIC:   movl    4(%esp), %eax
-; DARWIN-32-DYNAMIC-NEXT:      movl    _dsrc+64(,%eax,4), %ecx
-; DARWIN-32-DYNAMIC-NEXT:      movl    %ecx, _ddst+64(,%eax,4)
+; DARWIN-32-DYNAMIC:   movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    _dsrc+64(,[[EAX]],4), [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    [[ECX]], _ddst+64(,[[EAX]],4)
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _off03:
-; DARWIN-32-PIC:       call    "L43$pb"
-; DARWIN-32-PIC-NEXT: "L43$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  movl    4(%esp), %ecx
-; DARWIN-32-PIC-NEXT:  movl    _dsrc+64-"L43$pb"(%eax,%ecx,4), %edx
-; DARWIN-32-PIC-NEXT:  movl    %edx, _ddst+64-"L43$pb"(%eax,%ecx,4)
+; DARWIN-32-PIC:       calll   L42$pb
+; DARWIN-32-PIC-NEXT: L42$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    (_dsrc-L42$pb)+64([[EAX]],[[ECX]],4), [[EDX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    [[EDX]], (_ddst-L42$pb)+64([[EAX]],[[ECX]],4)
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _off03:
-; DARWIN-64-STATIC:    leaq    _dsrc(%rip), %rax
-; DARWIN-64-STATIC-NEXT:       movl    64(%rax,%rdi,4), %eax
-; DARWIN-64-STATIC-NEXT:       leaq    _ddst(%rip), %rcx
-; DARWIN-64-STATIC-NEXT:       movl    %eax, 64(%rcx,%rdi,4)
+; DARWIN-64-STATIC:    leaq    _dsrc(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movl    64([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-STATIC-NEXT:       leaq    _ddst(%rip), [[RCX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movl    [[EAX]], 64([[RCX]],%rdi,4)
 ; DARWIN-64-STATIC-NEXT:       ret
 
 ; DARWIN-64-DYNAMIC: _off03:
-; DARWIN-64-DYNAMIC:   leaq    _dsrc(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT:      movl    64(%rax,%rdi,4), %eax
-; DARWIN-64-DYNAMIC-NEXT:      leaq    _ddst(%rip), %rcx
-; DARWIN-64-DYNAMIC-NEXT:      movl    %eax, 64(%rcx,%rdi,4)
+; DARWIN-64-DYNAMIC:   leaq    _dsrc(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movl    64([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-DYNAMIC-NEXT:      leaq    _ddst(%rip), [[RCX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movl    [[EAX]], 64([[RCX]],%rdi,4)
 ; DARWIN-64-DYNAMIC-NEXT:      ret
 
 ; DARWIN-64-PIC: _off03:
-; DARWIN-64-PIC:       leaq    _dsrc(%rip), %rax
-; DARWIN-64-PIC-NEXT:  movl    64(%rax,%rdi,4), %eax
-; DARWIN-64-PIC-NEXT:  leaq    _ddst(%rip), %rcx
-; DARWIN-64-PIC-NEXT:  movl    %eax, 64(%rcx,%rdi,4)
+; DARWIN-64-PIC:       leaq    _dsrc(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movl    64([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-PIC-NEXT:  leaq    _ddst(%rip), [[RCX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movl    [[EAX]], 64([[RCX]],%rdi,4)
 ; DARWIN-64-PIC-NEXT:  ret
 }
 
 define void @off04(i64 %i) nounwind {
 entry:
        %.sum = add i64 %i, 16
-       %0 = getelementptr [131072 x i32]* @ddst, i64 0, i64 %.sum
+       %0 = getelementptr [131072 x i32], [131072 x i32]* @ddst, i64 0, i64 %.sum
        store i32* %0, i32** @dptr, align 8
        ret void
-; LINUX-64-STATIC: off04:
-; LINUX-64-STATIC: leaq    ddst+64(,%rdi,4), %rax
-; LINUX-64-STATIC: movq    %rax, dptr
+; LINUX-64-STATIC-LABEL: off04:
+; LINUX-64-STATIC: leaq    ddst+64(,%rdi,4), [[RAX:%r.x]]
+; LINUX-64-STATIC: movq    [[RAX]], dptr
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: off04:
-; LINUX-32-STATIC:     movl    4(%esp), %eax
-; LINUX-32-STATIC-NEXT:        leal    ddst+64(,%eax,4), %eax
-; LINUX-32-STATIC-NEXT:        movl    %eax, dptr
+; LINUX-32-STATIC-LABEL: off04:
+; LINUX-32-STATIC:     movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT:        leal    ddst+64(,[[EAX]],4), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT:        movl    [[EAX]], dptr
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: off04:
-; LINUX-32-PIC:        movl    4(%esp), %eax
-; LINUX-32-PIC-NEXT:   leal    ddst+64(,%eax,4), %eax
-; LINUX-32-PIC-NEXT:   movl    %eax, dptr
+; LINUX-32-PIC-LABEL: off04:
+; LINUX-32-PIC:        movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT:   leal    ddst+64(,[[EAX]],4), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT:   movl    [[EAX]], dptr
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: off04:
-; LINUX-64-PIC:        movq    ddst@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT:   leaq    64(%rax,%rdi,4), %rax
-; LINUX-64-PIC-NEXT:   movq    dptr@GOTPCREL(%rip), %rcx
-; LINUX-64-PIC-NEXT:   movq    %rax, (%rcx)
+; LINUX-64-PIC-LABEL: off04:
+; LINUX-64-PIC:        movq    ddst@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT:   leaq    64([[RAX]],%rdi,4), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT:   movq    dptr@GOTPCREL(%rip), [[RCX:%r.x]]
+; LINUX-64-PIC-NEXT:   movq    [[RAX]], ([[RCX]])
 ; LINUX-64-PIC-NEXT:   ret
 
 ; DARWIN-32-STATIC: _off04:
-; DARWIN-32-STATIC:    movl    4(%esp), %eax
-; DARWIN-32-STATIC-NEXT:       leal    _ddst+64(,%eax,4), %eax
-; DARWIN-32-STATIC-NEXT:       movl    %eax, _dptr
+; DARWIN-32-STATIC:    movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       leal    _ddst+64(,[[EAX]],4), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       movl    [[EAX]], _dptr
 ; DARWIN-32-STATIC-NEXT:       ret
 
 ; DARWIN-32-DYNAMIC: _off04:
-; DARWIN-32-DYNAMIC:   movl    4(%esp), %eax
-; DARWIN-32-DYNAMIC-NEXT:      leal    _ddst+64(,%eax,4), %eax
-; DARWIN-32-DYNAMIC-NEXT:      movl    %eax, _dptr
+; DARWIN-32-DYNAMIC:   movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      leal    _ddst+64(,[[EAX]],4), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    [[EAX]], _dptr
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _off04:
-; DARWIN-32-PIC:       call    "L44$pb"
-; DARWIN-32-PIC-NEXT: "L44$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  movl    4(%esp), %ecx
-; DARWIN-32-PIC-NEXT:  leal    _ddst+64-"L44$pb"(%eax,%ecx,4), %ecx
-; DARWIN-32-PIC-NEXT:  movl    %ecx, _dptr-"L44$pb"(%eax)
+; DARWIN-32-PIC:       calll   L43$pb
+; DARWIN-32-PIC-NEXT: L43$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  leal    (_ddst-L43$pb)+64([[EAX]],[[ECX]],4), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    [[ECX]], _dptr-L43$pb([[EAX]])
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _off04:
-; DARWIN-64-STATIC:    leaq    _ddst(%rip), %rax
-; DARWIN-64-STATIC-NEXT:       leaq    64(%rax,%rdi,4), %rax
-; DARWIN-64-STATIC-NEXT:       movq    %rax, _dptr(%rip)
+; DARWIN-64-STATIC:    leaq    _ddst(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       leaq    64([[RAX]],%rdi,4), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movq    [[RAX]], _dptr(%rip)
 ; DARWIN-64-STATIC-NEXT:       ret
 
 ; DARWIN-64-DYNAMIC: _off04:
-; DARWIN-64-DYNAMIC:   leaq    _ddst(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT:      leaq    64(%rax,%rdi,4), %rax
-; DARWIN-64-DYNAMIC-NEXT:      movq    %rax, _dptr(%rip)
+; DARWIN-64-DYNAMIC:   leaq    _ddst(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      leaq    64([[RAX]],%rdi,4), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movq    [[RAX]], _dptr(%rip)
 ; DARWIN-64-DYNAMIC-NEXT:      ret
 
 ; DARWIN-64-PIC: _off04:
-; DARWIN-64-PIC:       leaq    _ddst(%rip), %rax
-; DARWIN-64-PIC-NEXT:  leaq    64(%rax,%rdi,4), %rax
-; DARWIN-64-PIC-NEXT:  movq    %rax, _dptr(%rip)
+; DARWIN-64-PIC:       leaq    _ddst(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT:  leaq    64([[RAX]],%rdi,4), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movq    [[RAX]], _dptr(%rip)
 ; DARWIN-64-PIC-NEXT:  ret
 }
 
 define void @off05(i64 %i) nounwind {
 entry:
-       %0 = load i32** @dptr, align 8
+       %0 = load i32*, i32** @dptr, align 8
        %1 = add i64 %i, 16
-       %2 = getelementptr [131072 x i32]* @dsrc, i64 0, i64 %1
-       %3 = load i32* %2, align 4
-       %4 = getelementptr i32* %0, i64 %1
+       %2 = getelementptr [131072 x i32], [131072 x i32]* @dsrc, i64 0, i64 %1
+       %3 = load i32, i32* %2, align 4
+       %4 = getelementptr i32, i32* %0, i64 %1
        store i32 %3, i32* %4, align 4
        ret void
-; LINUX-64-STATIC: off05:
-; LINUX-64-STATIC: movl    dsrc+64(,%rdi,4), %eax
-; LINUX-64-STATIC: movq    dptr(%rip), %rcx
-; LINUX-64-STATIC: movl    %eax, 64(%rcx,%rdi,4)
+; LINUX-64-STATIC-LABEL: off05:
+; LINUX-64-STATIC: movl    dsrc+64(,%rdi,4), [[EAX:%e.x]]
+; LINUX-64-STATIC: movq    dptr(%rip), [[RCX:%r.x]]
+; LINUX-64-STATIC: movl    [[EAX]], 64([[RCX]],%rdi,4)
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: off05:
-; LINUX-32-STATIC:     movl    4(%esp), %eax
-; LINUX-32-STATIC-NEXT:        movl    dsrc+64(,%eax,4), %ecx
-; LINUX-32-STATIC-NEXT:        movl    dptr, %edx
-; LINUX-32-STATIC-NEXT:        movl    %ecx, 64(%edx,%eax,4)
+; LINUX-32-STATIC-LABEL: off05:
+; LINUX-32-STATIC:     movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT:        movl    dsrc+64(,[[EAX]],4), [[ECX:%e.x]]
+; LINUX-32-STATIC-NEXT:        movl    dptr, [[EDX:%e.x]]
+; LINUX-32-STATIC-NEXT:        movl    [[ECX]], 64([[EDX]],[[EAX]],4)
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: off05:
-; LINUX-32-PIC:        movl    4(%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-LABEL: off05:
+; LINUX-32-PIC:        movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT:   movl    dsrc+64(,[[EAX]],4), [[ECX:%e.x]]
+; LINUX-32-PIC-NEXT:   movl    dptr, [[EDX:%e.x]]
+; LINUX-32-PIC-NEXT:   movl    [[ECX]], 64([[EDX]],[[EAX]],4)
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: off05:
-; LINUX-64-PIC:        movq    dsrc@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT:   movl    64(%rax,%rdi,4), %eax
-; LINUX-64-PIC-NEXT:   movq    dptr@GOTPCREL(%rip), %rcx
-; LINUX-64-PIC-NEXT:   movq    (%rcx), %rcx
-; LINUX-64-PIC-NEXT:   movl    %eax, 64(%rcx,%rdi,4)
+; LINUX-64-PIC-LABEL: off05:
+; LINUX-64-PIC:        movq    dsrc@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT:   movl    64([[RAX]],%rdi,4), [[EAX:%e.x]]
+; LINUX-64-PIC-NEXT:   movq    dptr@GOTPCREL(%rip), [[RCX:%r.x]]
+; LINUX-64-PIC-NEXT:   movq    ([[RCX]]), [[RCX:%r.x]]
+; LINUX-64-PIC-NEXT:   movl    [[EAX]], 64([[RCX]],%rdi,4)
 ; LINUX-64-PIC-NEXT:   ret
 
 ; DARWIN-32-STATIC: _off05:
-; DARWIN-32-STATIC:    movl    4(%esp), %eax
-; DARWIN-32-STATIC-NEXT:       movl    _dsrc+64(,%eax,4), %ecx
-; DARWIN-32-STATIC-NEXT:       movl    _dptr, %edx
-; DARWIN-32-STATIC-NEXT:       movl    %ecx, 64(%edx,%eax,4)
+; DARWIN-32-STATIC:    movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       movl    _dsrc+64(,[[EAX]],4), [[ECX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       movl    _dptr, [[EDX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       movl    [[ECX]], 64([[EDX]],[[EAX]],4)
 ; DARWIN-32-STATIC-NEXT:       ret
 
 ; DARWIN-32-DYNAMIC: _off05:
-; DARWIN-32-DYNAMIC:   movl    4(%esp), %eax
-; DARWIN-32-DYNAMIC-NEXT:      movl    _dsrc+64(,%eax,4), %ecx
-; DARWIN-32-DYNAMIC-NEXT:      movl    _dptr, %edx
-; DARWIN-32-DYNAMIC-NEXT:      movl    %ecx, 64(%edx,%eax,4)
+; DARWIN-32-DYNAMIC:   movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    _dsrc+64(,[[EAX]],4), [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    _dptr, [[EDX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    [[ECX]], 64([[EDX]],[[EAX]],4)
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _off05:
-; DARWIN-32-PIC:       call    "L45$pb"
-; DARWIN-32-PIC-NEXT: "L45$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  movl    4(%esp), %ecx
-; DARWIN-32-PIC-NEXT:  movl    _dsrc+64-"L45$pb"(%eax,%ecx,4), %edx
-; DARWIN-32-PIC-NEXT:  movl    _dptr-"L45$pb"(%eax), %eax
-; DARWIN-32-PIC-NEXT:  movl    %edx, 64(%eax,%ecx,4)
+; DARWIN-32-PIC:       calll   L44$pb
+; DARWIN-32-PIC-NEXT: L44$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    (_dsrc-L44$pb)+64([[EAX]],[[ECX]],4), [[EDX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    _dptr-L44$pb([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    [[EDX]], 64([[EAX]],[[ECX]],4)
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _off05:
-; DARWIN-64-STATIC:    leaq    _dsrc(%rip), %rax
-; DARWIN-64-STATIC-NEXT:       movl    64(%rax,%rdi,4), %eax
-; DARWIN-64-STATIC-NEXT:       movq    _dptr(%rip), %rcx
-; DARWIN-64-STATIC-NEXT:       movl    %eax, 64(%rcx,%rdi,4)
+; DARWIN-64-STATIC:    leaq    _dsrc(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movl    64([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-STATIC-NEXT:       movq    _dptr(%rip), [[RCX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movl    [[EAX]], 64([[RCX]],%rdi,4)
 ; DARWIN-64-STATIC-NEXT:       ret
 
 ; DARWIN-64-DYNAMIC: _off05:
-; DARWIN-64-DYNAMIC:   leaq    _dsrc(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT:      movl    64(%rax,%rdi,4), %eax
-; DARWIN-64-DYNAMIC-NEXT:      movq    _dptr(%rip), %rcx
-; DARWIN-64-DYNAMIC-NEXT:      movl    %eax, 64(%rcx,%rdi,4)
+; DARWIN-64-DYNAMIC:   leaq    _dsrc(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movl    64([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movq    _dptr(%rip), [[RCX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movl    [[EAX]], 64([[RCX]],%rdi,4)
 ; DARWIN-64-DYNAMIC-NEXT:      ret
 
 ; DARWIN-64-PIC: _off05:
-; DARWIN-64-PIC:       leaq    _dsrc(%rip), %rax
-; DARWIN-64-PIC-NEXT:  movl    64(%rax,%rdi,4), %eax
-; DARWIN-64-PIC-NEXT:  movq    _dptr(%rip), %rcx
-; DARWIN-64-PIC-NEXT:  movl    %eax, 64(%rcx,%rdi,4)
+; DARWIN-64-PIC:       leaq    _dsrc(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movl    64([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-PIC-NEXT:  movq    _dptr(%rip), [[RCX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movl    [[EAX]], 64([[RCX]],%rdi,4)
 ; DARWIN-64-PIC-NEXT:  ret
 }
 
 define void @off06(i64 %i) nounwind {
 entry:
        %0 = add i64 %i, 16
-       %1 = getelementptr [131072 x i32]* @lsrc, i64 0, i64 %0
-       %2 = load i32* %1, align 4
-       %3 = getelementptr [131072 x i32]* @ldst, i64 0, i64 %0
+       %1 = getelementptr [131072 x i32], [131072 x i32]* @lsrc, i64 0, i64 %0
+       %2 = load i32, i32* %1, align 4
+       %3 = getelementptr [131072 x i32], [131072 x i32]* @ldst, i64 0, i64 %0
        store i32 %2, i32* %3, align 4
        ret void
-; LINUX-64-STATIC: off06:
-; LINUX-64-STATIC: movl    lsrc+64(,%rdi,4), %eax
-; LINUX-64-STATIC: movl    %eax, ldst+64(,%rdi,4)
+; LINUX-64-STATIC-LABEL: off06:
+; LINUX-64-STATIC: movl    lsrc+64(,%rdi,4), [[EAX:%e.x]]
+; LINUX-64-STATIC: movl    [[EAX]], ldst+64(,%rdi,4)
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: off06:
-; LINUX-32-STATIC:     movl    4(%esp), %eax
-; LINUX-32-STATIC-NEXT:        movl    lsrc+64(,%eax,4), %ecx
-; LINUX-32-STATIC-NEXT:        movl    %ecx, ldst+64(,%eax,4)
+; LINUX-32-STATIC-LABEL: off06:
+; LINUX-32-STATIC:     movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT:        movl    lsrc+64(,[[EAX]],4), [[ECX:%e.x]]
+; LINUX-32-STATIC-NEXT:        movl    [[ECX]], ldst+64(,[[EAX]],4)
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: off06:
-; LINUX-32-PIC:        movl    4(%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-LABEL: off06:
+; LINUX-32-PIC:        movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT:   movl    lsrc+64(,[[EAX]],4), [[ECX:%e.x]]
+; LINUX-32-PIC-NEXT:   movl    [[ECX]], ldst+64(,[[EAX]],4)
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: off06:
-; LINUX-64-PIC:        leaq    lsrc(%rip), %rax
-; LINUX-64-PIC-NEXT:   movl    64(%rax,%rdi,4), %eax
-; LINUX-64-PIC-NEXT:   leaq    ldst(%rip), %rcx
-; LINUX-64-PIC-NEXT:   movl    %eax, 64(%rcx,%rdi,4)
+; LINUX-64-PIC-LABEL: off06:
+; LINUX-64-PIC:        leaq    lsrc(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT:   movl    64([[RAX]],%rdi,4), [[EAX:%e.x]]
+; LINUX-64-PIC-NEXT:   leaq    ldst(%rip), [[RCX:%r.x]]
+; LINUX-64-PIC-NEXT:   movl    [[EAX]], 64([[RCX]],%rdi,4)
 ; LINUX-64-PIC-NEXT:   ret
 
 ; DARWIN-32-STATIC: _off06:
-; DARWIN-32-STATIC:    movl    4(%esp), %eax
-; DARWIN-32-STATIC-NEXT:       movl    _lsrc+64(,%eax,4), %ecx
-; DARWIN-32-STATIC-NEXT:       movl    %ecx, _ldst+64(,%eax,4)
+; DARWIN-32-STATIC:    movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       movl    _lsrc+64(,[[EAX]],4), [[ECX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       movl    [[ECX]], _ldst+64(,[[EAX]],4)
 ; DARWIN-32-STATIC-NEXT:       ret
 
 ; DARWIN-32-DYNAMIC: _off06:
-; DARWIN-32-DYNAMIC:   movl    4(%esp), %eax
-; DARWIN-32-DYNAMIC-NEXT:      movl    _lsrc+64(,%eax,4), %ecx
-; DARWIN-32-DYNAMIC-NEXT:      movl    %ecx, _ldst+64(,%eax,4)
+; DARWIN-32-DYNAMIC:   movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    _lsrc+64(,[[EAX]],4), [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    [[ECX]], _ldst+64(,[[EAX]],4)
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _off06:
-; DARWIN-32-PIC:       call    "L46$pb"
-; DARWIN-32-PIC-NEXT: "L46$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  movl    4(%esp), %ecx
-; DARWIN-32-PIC-NEXT:  movl    _lsrc+64-"L46$pb"(%eax,%ecx,4), %edx
-; DARWIN-32-PIC-NEXT:  movl    %edx, _ldst+64-"L46$pb"(%eax,%ecx,4)
+; DARWIN-32-PIC:       calll   L45$pb
+; DARWIN-32-PIC-NEXT: L45$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    (_lsrc-L45$pb)+64([[EAX]],[[ECX]],4), [[EDX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    [[EDX]], (_ldst-L45$pb)+64([[EAX]],[[ECX]],4)
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _off06:
-; DARWIN-64-STATIC:    leaq    _lsrc(%rip), %rax
-; DARWIN-64-STATIC-NEXT:       movl    64(%rax,%rdi,4), %eax
-; DARWIN-64-STATIC-NEXT:       leaq    _ldst(%rip), %rcx
-; DARWIN-64-STATIC-NEXT:       movl    %eax, 64(%rcx,%rdi,4)
+; DARWIN-64-STATIC:    leaq    _lsrc(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movl    64([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-STATIC-NEXT:       leaq    _ldst(%rip), [[RCX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movl    [[EAX]], 64([[RCX]],%rdi,4)
 ; DARWIN-64-STATIC-NEXT:       ret
 
 ; DARWIN-64-DYNAMIC: _off06:
-; DARWIN-64-DYNAMIC:   leaq    _lsrc(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT:      movl    64(%rax,%rdi,4), %eax
-; DARWIN-64-DYNAMIC-NEXT:      leaq    _ldst(%rip), %rcx
-; DARWIN-64-DYNAMIC-NEXT:      movl    %eax, 64(%rcx,%rdi,4)
+; DARWIN-64-DYNAMIC:   leaq    _lsrc(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movl    64([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-DYNAMIC-NEXT:      leaq    _ldst(%rip), [[RCX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movl    [[EAX]], 64([[RCX]],%rdi,4)
 ; DARWIN-64-DYNAMIC-NEXT:      ret
 
 ; DARWIN-64-PIC: _off06:
-; DARWIN-64-PIC:       leaq    _lsrc(%rip), %rax
-; DARWIN-64-PIC-NEXT:  movl    64(%rax,%rdi,4), %eax
-; DARWIN-64-PIC-NEXT:  leaq    _ldst(%rip), %rcx
-; DARWIN-64-PIC-NEXT:  movl    %eax, 64(%rcx,%rdi,4)
+; DARWIN-64-PIC:       leaq    _lsrc(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movl    64([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-PIC-NEXT:  leaq    _ldst(%rip), [[RCX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movl    [[EAX]], 64([[RCX]],%rdi,4)
 ; DARWIN-64-PIC-NEXT:  ret
 }
 
 define void @off07(i64 %i) nounwind {
 entry:
        %.sum = add i64 %i, 16
-       %0 = getelementptr [131072 x i32]* @ldst, i64 0, i64 %.sum
+       %0 = getelementptr [131072 x i32], [131072 x i32]* @ldst, i64 0, i64 %.sum
        store i32* %0, i32** @lptr, align 8
        ret void
-; LINUX-64-STATIC: off07:
-; LINUX-64-STATIC: leaq    ldst+64(,%rdi,4), %rax
-; LINUX-64-STATIC: movq    %rax, lptr
+; LINUX-64-STATIC-LABEL: off07:
+; LINUX-64-STATIC: leaq    ldst+64(,%rdi,4), [[RAX:%r.x]]
+; LINUX-64-STATIC: movq    [[RAX]], lptr
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: off07:
-; LINUX-32-STATIC:     movl    4(%esp), %eax
-; LINUX-32-STATIC-NEXT:        leal    ldst+64(,%eax,4), %eax
-; LINUX-32-STATIC-NEXT:        movl    %eax, lptr
+; LINUX-32-STATIC-LABEL: off07:
+; LINUX-32-STATIC:     movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT:        leal    ldst+64(,[[EAX]],4), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT:        movl    [[EAX]], lptr
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: off07:
-; LINUX-32-PIC:        movl    4(%esp), %eax
-; LINUX-32-PIC-NEXT:   leal    ldst+64(,%eax,4), %eax
-; LINUX-32-PIC-NEXT:   movl    %eax, lptr
+; LINUX-32-PIC-LABEL: off07:
+; LINUX-32-PIC:        movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT:   leal    ldst+64(,[[EAX]],4), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT:   movl    [[EAX]], lptr
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: off07:
-; LINUX-64-PIC:        leaq    ldst(%rip), %rax
-; LINUX-64-PIC-NEXT:   leaq    64(%rax,%rdi,4), %rax
-; LINUX-64-PIC-NEXT:   movq    %rax, lptr(%rip)
+; LINUX-64-PIC-LABEL: off07:
+; LINUX-64-PIC:        leaq    ldst(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT:   leaq    64([[RAX]],%rdi,4), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT:   movq    [[RAX]], lptr(%rip)
 ; LINUX-64-PIC-NEXT:   ret
 
 ; DARWIN-32-STATIC: _off07:
-; DARWIN-32-STATIC:    movl    4(%esp), %eax
-; DARWIN-32-STATIC-NEXT:       leal    _ldst+64(,%eax,4), %eax
-; DARWIN-32-STATIC-NEXT:       movl    %eax, _lptr
+; DARWIN-32-STATIC:    movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       leal    _ldst+64(,[[EAX]],4), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       movl    [[EAX]], _lptr
 ; DARWIN-32-STATIC-NEXT:       ret
 
 ; DARWIN-32-DYNAMIC: _off07:
-; DARWIN-32-DYNAMIC:   movl    4(%esp), %eax
-; DARWIN-32-DYNAMIC-NEXT:      leal    _ldst+64(,%eax,4), %eax
-; DARWIN-32-DYNAMIC-NEXT:      movl    %eax, _lptr
+; DARWIN-32-DYNAMIC:   movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      leal    _ldst+64(,[[EAX]],4), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    [[EAX]], _lptr
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _off07:
-; DARWIN-32-PIC:       call    "L47$pb"
-; DARWIN-32-PIC-NEXT: "L47$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  movl    4(%esp), %ecx
-; DARWIN-32-PIC-NEXT:  leal    _ldst+64-"L47$pb"(%eax,%ecx,4), %ecx
-; DARWIN-32-PIC-NEXT:  movl    %ecx, _lptr-"L47$pb"(%eax)
+; DARWIN-32-PIC:       calll   L46$pb
+; DARWIN-32-PIC-NEXT: L46$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  leal    (_ldst-L46$pb)+64([[EAX]],[[ECX]],4), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    [[ECX]], _lptr-L46$pb([[EAX]])
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _off07:
-; DARWIN-64-STATIC:    leaq    _ldst(%rip), %rax
-; DARWIN-64-STATIC-NEXT:       leaq    64(%rax,%rdi,4), %rax
-; DARWIN-64-STATIC-NEXT:       movq    %rax, _lptr(%rip)
+; DARWIN-64-STATIC:    leaq    _ldst(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       leaq    64([[RAX]],%rdi,4), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movq    [[RAX]], _lptr(%rip)
 ; DARWIN-64-STATIC-NEXT:       ret
 
 ; DARWIN-64-DYNAMIC: _off07:
-; DARWIN-64-DYNAMIC:   leaq    _ldst(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT:      leaq    64(%rax,%rdi,4), %rax
-; DARWIN-64-DYNAMIC-NEXT:      movq    %rax, _lptr(%rip)
+; DARWIN-64-DYNAMIC:   leaq    _ldst(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      leaq    64([[RAX]],%rdi,4), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movq    [[RAX]], _lptr(%rip)
 ; DARWIN-64-DYNAMIC-NEXT:      ret
 
 ; DARWIN-64-PIC: _off07:
-; DARWIN-64-PIC:       leaq    _ldst(%rip), %rax
-; DARWIN-64-PIC-NEXT:  leaq    64(%rax,%rdi,4), %rax
-; DARWIN-64-PIC-NEXT:  movq    %rax, _lptr(%rip)
+; DARWIN-64-PIC:       leaq    _ldst(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT:  leaq    64([[RAX]],%rdi,4), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movq    [[RAX]], _lptr(%rip)
 ; DARWIN-64-PIC-NEXT:  ret
 }
 
 define void @off08(i64 %i) nounwind {
 entry:
-       %0 = load i32** @lptr, align 8
+       %0 = load i32*, i32** @lptr, align 8
        %1 = add i64 %i, 16
-       %2 = getelementptr [131072 x i32]* @lsrc, i64 0, i64 %1
-       %3 = load i32* %2, align 4
-       %4 = getelementptr i32* %0, i64 %1
+       %2 = getelementptr [131072 x i32], [131072 x i32]* @lsrc, i64 0, i64 %1
+       %3 = load i32, i32* %2, align 4
+       %4 = getelementptr i32, i32* %0, i64 %1
        store i32 %3, i32* %4, align 4
        ret void
-; LINUX-64-STATIC: off08:
-; LINUX-64-STATIC: movl    lsrc+64(,%rdi,4), %eax
-; LINUX-64-STATIC: movq    lptr(%rip), %rcx
-; LINUX-64-STATIC: movl    %eax, 64(%rcx,%rdi,4)
+; LINUX-64-STATIC-LABEL: off08:
+; LINUX-64-STATIC: movl    lsrc+64(,%rdi,4), [[EAX:%e.x]]
+; LINUX-64-STATIC: movq    lptr(%rip), [[RCX:%r.x]]
+; LINUX-64-STATIC: movl    [[EAX]], 64([[RCX]],%rdi,4)
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: off08:
-; LINUX-32-STATIC:     movl    4(%esp), %eax
-; LINUX-32-STATIC-NEXT:        movl    lsrc+64(,%eax,4), %ecx
-; LINUX-32-STATIC-NEXT:        movl    lptr, %edx
-; LINUX-32-STATIC-NEXT:        movl    %ecx, 64(%edx,%eax,4)
+; LINUX-32-STATIC-LABEL: off08:
+; LINUX-32-STATIC:     movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT:        movl    lsrc+64(,[[EAX]],4), [[ECX:%e.x]]
+; LINUX-32-STATIC-NEXT:        movl    lptr, [[EDX:%e.x]]
+; LINUX-32-STATIC-NEXT:        movl    [[ECX]], 64([[EDX]],[[EAX]],4)
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: off08:
-; LINUX-32-PIC:        movl    4(%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-LABEL: off08:
+; LINUX-32-PIC:        movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT:   movl    lsrc+64(,[[EAX]],4), [[ECX:%e.x]]
+; LINUX-32-PIC-NEXT:   movl    lptr, [[EDX:%e.x]]
+; LINUX-32-PIC-NEXT:   movl    [[ECX]], 64([[EDX]],[[EAX]],4)
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: off08:
-; LINUX-64-PIC:        leaq    lsrc(%rip), %rax
-; LINUX-64-PIC-NEXT:   movl    64(%rax,%rdi,4), %eax
-; LINUX-64-PIC-NEXT:   movq    lptr(%rip), %rcx
-; LINUX-64-PIC-NEXT:   movl    %eax, 64(%rcx,%rdi,4)
+; LINUX-64-PIC-LABEL: off08:
+; LINUX-64-PIC:        leaq    lsrc(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT:   movl    64([[RAX]],%rdi,4), [[EAX:%e.x]]
+; LINUX-64-PIC-NEXT:   movq    lptr(%rip), [[RCX:%r.x]]
+; LINUX-64-PIC-NEXT:   movl    [[EAX]], 64([[RCX]],%rdi,4)
 ; LINUX-64-PIC-NEXT:   ret
 
 ; DARWIN-32-STATIC: _off08:
-; DARWIN-32-STATIC:    movl    4(%esp), %eax
-; DARWIN-32-STATIC-NEXT:       movl    _lsrc+64(,%eax,4), %ecx
-; DARWIN-32-STATIC-NEXT:       movl    _lptr, %edx
-; DARWIN-32-STATIC-NEXT:       movl    %ecx, 64(%edx,%eax,4)
+; DARWIN-32-STATIC:    movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       movl    _lsrc+64(,[[EAX]],4), [[ECX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       movl    _lptr, [[EDX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       movl    [[ECX]], 64([[EDX]],[[EAX]],4)
 ; DARWIN-32-STATIC-NEXT:       ret
 
 ; DARWIN-32-DYNAMIC: _off08:
-; DARWIN-32-DYNAMIC:   movl    4(%esp), %eax
-; DARWIN-32-DYNAMIC-NEXT:      movl    _lsrc+64(,%eax,4), %ecx
-; DARWIN-32-DYNAMIC-NEXT:      movl    _lptr, %edx
-; DARWIN-32-DYNAMIC-NEXT:      movl    %ecx, 64(%edx,%eax,4)
+; DARWIN-32-DYNAMIC:   movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    _lsrc+64(,[[EAX]],4), [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    _lptr, [[EDX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    [[ECX]], 64([[EDX]],[[EAX]],4)
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _off08:
-; DARWIN-32-PIC:       call    "L48$pb"
-; DARWIN-32-PIC-NEXT: "L48$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  movl    4(%esp), %ecx
-; DARWIN-32-PIC-NEXT:  movl    _lsrc+64-"L48$pb"(%eax,%ecx,4), %edx
-; DARWIN-32-PIC-NEXT:  movl    _lptr-"L48$pb"(%eax), %eax
-; DARWIN-32-PIC-NEXT:  movl    %edx, 64(%eax,%ecx,4)
+; DARWIN-32-PIC:       calll   L47$pb
+; DARWIN-32-PIC-NEXT: L47$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    (_lsrc-L47$pb)+64([[EAX]],[[ECX]],4), [[EDX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    _lptr-L47$pb([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    [[EDX]], 64([[EAX]],[[ECX]],4)
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _off08:
-; DARWIN-64-STATIC:    leaq    _lsrc(%rip), %rax
-; DARWIN-64-STATIC-NEXT:       movl    64(%rax,%rdi,4), %eax
-; DARWIN-64-STATIC-NEXT:       movq    _lptr(%rip), %rcx
-; DARWIN-64-STATIC-NEXT:       movl    %eax, 64(%rcx,%rdi,4)
+; DARWIN-64-STATIC:    leaq    _lsrc(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movl    64([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-STATIC-NEXT:       movq    _lptr(%rip), [[RCX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movl    [[EAX]], 64([[RCX]],%rdi,4)
 ; DARWIN-64-STATIC-NEXT:       ret
 
 ; DARWIN-64-DYNAMIC: _off08:
-; DARWIN-64-DYNAMIC:   leaq    _lsrc(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT:      movl    64(%rax,%rdi,4), %eax
-; DARWIN-64-DYNAMIC-NEXT:      movq    _lptr(%rip), %rcx
-; DARWIN-64-DYNAMIC-NEXT:      movl    %eax, 64(%rcx,%rdi,4)
+; DARWIN-64-DYNAMIC:   leaq    _lsrc(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movl    64([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movq    _lptr(%rip), [[RCX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movl    [[EAX]], 64([[RCX]],%rdi,4)
 ; DARWIN-64-DYNAMIC-NEXT:      ret
 
 ; DARWIN-64-PIC: _off08:
-; DARWIN-64-PIC:       leaq    _lsrc(%rip), %rax
-; DARWIN-64-PIC-NEXT:  movl    64(%rax,%rdi,4), %eax
-; DARWIN-64-PIC-NEXT:  movq    _lptr(%rip), %rcx
-; DARWIN-64-PIC-NEXT:  movl    %eax, 64(%rcx,%rdi,4)
+; DARWIN-64-PIC:       leaq    _lsrc(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movl    64([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-PIC-NEXT:  movq    _lptr(%rip), [[RCX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movl    [[EAX]], 64([[RCX]],%rdi,4)
 ; DARWIN-64-PIC-NEXT:  ret
 }
 
 define void @moo00(i64 %i) nounwind {
 entry:
-       %0 = load i32* getelementptr ([131072 x i32]* @src, i32 0, i64 65536), align 4
-       store i32 %0, i32* getelementptr ([131072 x i32]* @dst, i32 0, i64 65536), align 4
+       %0 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @src, i32 0, i64 65536), align 4
+       store i32 %0, i32* getelementptr ([131072 x i32], [131072 x i32]* @dst, i32 0, i64 65536), align 4
        ret void
-; LINUX-64-STATIC: moo00:
-; LINUX-64-STATIC: movl    src+262144(%rip), %eax
-; LINUX-64-STATIC: movl    %eax, dst+262144(%rip)
+; LINUX-64-STATIC-LABEL: moo00:
+; LINUX-64-STATIC: movl    src+262144(%rip), [[EAX:%e.x]]
+; LINUX-64-STATIC: movl    [[EAX]], dst+262144(%rip)
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: moo00:
-; LINUX-32-STATIC:     movl    src+262144, %eax
-; LINUX-32-STATIC-NEXT:        movl    %eax, dst+262144
+; LINUX-32-STATIC-LABEL: moo00:
+; LINUX-32-STATIC:     movl    src+262144, [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT:        movl    [[EAX]], dst+262144
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: moo00:
-; LINUX-32-PIC:        movl    src+262144, %eax
-; LINUX-32-PIC-NEXT:   movl    %eax, dst+262144
+; LINUX-32-PIC-LABEL: moo00:
+; LINUX-32-PIC:        movl    src+262144, [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT:   movl    [[EAX]], dst+262144
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: moo00:
-; LINUX-64-PIC:        movq    src@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT:   movl    262144(%rax), %eax
-; LINUX-64-PIC-NEXT:   movq    dst@GOTPCREL(%rip), %rcx
-; LINUX-64-PIC-NEXT:   movl    %eax, 262144(%rcx)
+; LINUX-64-PIC-LABEL: moo00:
+; LINUX-64-PIC:        movq    src@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT:   movl    262144([[RAX]]), [[EAX:%e.x]]
+; LINUX-64-PIC-NEXT:   movq    dst@GOTPCREL(%rip), [[RCX:%r.x]]
+; LINUX-64-PIC-NEXT:   movl    [[EAX]], 262144([[RCX]])
 ; LINUX-64-PIC-NEXT:   ret
 
 ; DARWIN-32-STATIC: _moo00:
-; DARWIN-32-STATIC:    movl    _src+262144, %eax
-; DARWIN-32-STATIC-NEXT:       movl    %eax, _dst+262144
+; DARWIN-32-STATIC:    movl    _src+262144, [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       movl    [[EAX]], _dst+262144
 ; DARWIN-32-STATIC-NEXT:       ret
 
 ; DARWIN-32-DYNAMIC: _moo00:
-; DARWIN-32-DYNAMIC:   movl    L_src$non_lazy_ptr, %eax
-; DARWIN-32-DYNAMIC-NEXT:      movl    262144(%eax), %eax
-; DARWIN-32-DYNAMIC-NEXT:      movl    L_dst$non_lazy_ptr, %ecx
-; DARWIN-32-DYNAMIC-NEXT:      movl    %eax, 262144(%ecx)
+; DARWIN-32-DYNAMIC:   movl    L_src$non_lazy_ptr, [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    262144([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    L_dst$non_lazy_ptr, [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    [[EAX]], 262144([[ECX]])
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _moo00:
-; DARWIN-32-PIC:       call    "L49$pb"
-; DARWIN-32-PIC-NEXT: "L49$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  movl    L_src$non_lazy_ptr-"L49$pb"(%eax), %ecx
-; DARWIN-32-PIC-NEXT:  movl    262144(%ecx), %ecx
-; DARWIN-32-PIC-NEXT:  movl    L_dst$non_lazy_ptr-"L49$pb"(%eax), %eax
-; DARWIN-32-PIC-NEXT:  movl    %ecx, 262144(%eax)
+; DARWIN-32-PIC:       calll   L48$pb
+; DARWIN-32-PIC-NEXT: L48$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    L_src$non_lazy_ptr-L48$pb([[EAX]]), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    262144([[ECX]]), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    L_dst$non_lazy_ptr-L48$pb([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    [[ECX]], 262144([[EAX]])
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _moo00:
-; DARWIN-64-STATIC:    movq    _src@GOTPCREL(%rip), %rax
-; DARWIN-64-STATIC-NEXT:       movl    262144(%rax), %eax
-; DARWIN-64-STATIC-NEXT:       movq    _dst@GOTPCREL(%rip), %rcx
-; DARWIN-64-STATIC-NEXT:       movl    %eax, 262144(%rcx)
+; DARWIN-64-STATIC:    movq    _src@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movl    262144([[RAX]]), [[EAX:%e.x]]
+; DARWIN-64-STATIC-NEXT:       movq    _dst@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movl    [[EAX]], 262144([[RCX]])
 ; DARWIN-64-STATIC-NEXT:       ret
 
 ; DARWIN-64-DYNAMIC: _moo00:
-; DARWIN-64-DYNAMIC:   movq    _src@GOTPCREL(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT:      movl    262144(%rax), %eax
-; DARWIN-64-DYNAMIC-NEXT:      movq    _dst@GOTPCREL(%rip), %rcx
-; DARWIN-64-DYNAMIC-NEXT:      movl    %eax, 262144(%rcx)
+; DARWIN-64-DYNAMIC:   movq    _src@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movl    262144([[RAX]]), [[EAX:%e.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movq    _dst@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movl    [[EAX]], 262144([[RCX]])
 ; DARWIN-64-DYNAMIC-NEXT:      ret
 
 ; DARWIN-64-PIC: _moo00:
-; DARWIN-64-PIC:       movq    _src@GOTPCREL(%rip), %rax
-; DARWIN-64-PIC-NEXT:  movl    262144(%rax), %eax
-; DARWIN-64-PIC-NEXT:  movq    _dst@GOTPCREL(%rip), %rcx
-; DARWIN-64-PIC-NEXT:  movl    %eax, 262144(%rcx)
+; DARWIN-64-PIC:       movq    _src@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movl    262144([[RAX]]), [[EAX:%e.x]]
+; DARWIN-64-PIC-NEXT:  movq    _dst@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movl    [[EAX]], 262144([[RCX]])
 ; DARWIN-64-PIC-NEXT:  ret
 }
 
 define void @moo01(i64 %i) nounwind {
 entry:
-       store i32* getelementptr ([131072 x i32]* @dst, i32 0, i64 65536), i32** @ptr, align 8
+       store i32* getelementptr ([131072 x i32], [131072 x i32]* @dst, i32 0, i64 65536), i32** @ptr, align 8
        ret void
-; LINUX-64-STATIC: moo01:
+; LINUX-64-STATIC-LABEL: moo01:
 ; LINUX-64-STATIC: movq    $dst+262144, ptr(%rip)
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: moo01:
+; LINUX-32-STATIC-LABEL: moo01:
 ; LINUX-32-STATIC:     movl    $dst+262144, ptr
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: moo01:
+; LINUX-32-PIC-LABEL: moo01:
 ; LINUX-32-PIC:        movl    $dst+262144, ptr
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: moo01:
-; LINUX-64-PIC:        movl    $262144, %eax
-; LINUX-64-PIC-NEXT:   addq    dst@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT:   movq    ptr@GOTPCREL(%rip), %rcx
-; LINUX-64-PIC-NEXT:   movq    %rax, (%rcx)
+; LINUX-64-PIC-LABEL: moo01:
+; LINUX-64-PIC:        movl    $262144, [[EAX:%e.x]]
+; LINUX-64-PIC-NEXT:   addq    dst@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT:   movq    ptr@GOTPCREL(%rip), [[RCX:%r.x]]
+; LINUX-64-PIC-NEXT:   movq    [[RAX]], ([[RCX]])
 ; LINUX-64-PIC-NEXT:   ret
 
 ; DARWIN-32-STATIC: _moo01:
@@ -3619,209 +3619,209 @@ entry:
 ; DARWIN-32-STATIC-NEXT:       ret
 
 ; DARWIN-32-DYNAMIC: _moo01:
-; DARWIN-32-DYNAMIC:   movl    $262144, %eax
-; DARWIN-32-DYNAMIC-NEXT:      addl    L_dst$non_lazy_ptr, %eax
-; DARWIN-32-DYNAMIC-NEXT:      movl    L_ptr$non_lazy_ptr, %ecx
-; DARWIN-32-DYNAMIC-NEXT:      movl    %eax, (%ecx)
+; DARWIN-32-DYNAMIC:   movl    $262144, [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      addl    L_dst$non_lazy_ptr, [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    L_ptr$non_lazy_ptr, [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    [[EAX]], ([[ECX]])
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _moo01:
-; DARWIN-32-PIC:       call    "L50$pb"
-; DARWIN-32-PIC-NEXT: "L50$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  movl    $262144, %ecx
-; DARWIN-32-PIC-NEXT:  addl    L_dst$non_lazy_ptr-"L50$pb"(%eax), %ecx
-; DARWIN-32-PIC-NEXT:  movl    L_ptr$non_lazy_ptr-"L50$pb"(%eax), %eax
-; DARWIN-32-PIC-NEXT:  movl    %ecx, (%eax)
+; DARWIN-32-PIC:       calll   L49$pb
+; DARWIN-32-PIC-NEXT: L49$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    $262144, [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  addl    L_dst$non_lazy_ptr-L49$pb([[EAX]]), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    L_ptr$non_lazy_ptr-L49$pb([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    [[ECX]], ([[EAX]])
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _moo01:
-; DARWIN-64-STATIC:    movl    $262144, %eax
-; DARWIN-64-STATIC-NEXT:       addq    _dst@GOTPCREL(%rip), %rax
-; DARWIN-64-STATIC-NEXT:       movq    _ptr@GOTPCREL(%rip), %rcx
-; DARWIN-64-STATIC-NEXT:       movq    %rax, (%rcx)
+; DARWIN-64-STATIC:    movl    $262144, [[EAX:%e.x]]
+; DARWIN-64-STATIC-NEXT:       addq    _dst@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movq    _ptr@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movq    [[RAX]], ([[RCX]])
 ; DARWIN-64-STATIC-NEXT:       ret
 
 ; DARWIN-64-DYNAMIC: _moo01:
-; DARWIN-64-DYNAMIC:   movl    $262144, %eax
-; DARWIN-64-DYNAMIC-NEXT:      addq    _dst@GOTPCREL(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT:      movq    _ptr@GOTPCREL(%rip), %rcx
-; DARWIN-64-DYNAMIC-NEXT:      movq    %rax, (%rcx)
+; DARWIN-64-DYNAMIC:   movl    $262144, [[EAX:%e.x]]
+; DARWIN-64-DYNAMIC-NEXT:      addq    _dst@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movq    _ptr@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movq    [[RAX]], ([[RCX]])
 ; DARWIN-64-DYNAMIC-NEXT:      ret
 
 ; DARWIN-64-PIC: _moo01:
-; DARWIN-64-PIC:       movl    $262144, %eax
-; DARWIN-64-PIC-NEXT:  addq    _dst@GOTPCREL(%rip), %rax
-; DARWIN-64-PIC-NEXT:  movq    _ptr@GOTPCREL(%rip), %rcx
-; DARWIN-64-PIC-NEXT:  movq    %rax, (%rcx)
+; DARWIN-64-PIC:       movl    $262144, [[EAX:%e.x]]
+; DARWIN-64-PIC-NEXT:  addq    _dst@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movq    _ptr@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movq    [[RAX]], ([[RCX]])
 ; DARWIN-64-PIC-NEXT:  ret
 }
 
 define void @moo02(i64 %i) nounwind {
 entry:
-       %0 = load i32** @ptr, align 8
-       %1 = load i32* getelementptr ([131072 x i32]* @src, i32 0, i64 65536), align 4
-       %2 = getelementptr i32* %0, i64 65536
+       %0 = load i32*, i32** @ptr, align 8
+       %1 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @src, i32 0, i64 65536), align 4
+       %2 = getelementptr i32, i32* %0, i64 65536
        store i32 %1, i32* %2, align 4
        ret void
-; LINUX-64-STATIC: moo02:
-; LINUX-64-STATIC: movl    src+262144(%rip), %eax
-; LINUX-64-STATIC: movq    ptr(%rip), %rcx
-; LINUX-64-STATIC: movl    %eax, 262144(%rcx)
+; LINUX-64-STATIC-LABEL: moo02:
+; LINUX-64-STATIC: movl    src+262144(%rip), [[EAX:%e.x]]
+; LINUX-64-STATIC: movq    ptr(%rip), [[RCX:%r.x]]
+; LINUX-64-STATIC: movl    [[EAX]], 262144([[RCX]])
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: moo02:
-; LINUX-32-STATIC:     movl    src+262144, %eax
-; LINUX-32-STATIC-NEXT:        movl    ptr, %ecx
-; LINUX-32-STATIC-NEXT:        movl    %eax, 262144(%ecx)
+; LINUX-32-STATIC-LABEL: moo02:
+; LINUX-32-STATIC:     movl    src+262144, [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT:        movl    ptr, [[ECX:%e.x]]
+; LINUX-32-STATIC-NEXT:        movl    [[EAX]], 262144([[ECX]])
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: moo02:
-; LINUX-32-PIC:        movl    src+262144, %eax
-; LINUX-32-PIC-NEXT:   movl    ptr, %ecx
-; LINUX-32-PIC-NEXT:   movl    %eax, 262144(%ecx)
+; LINUX-32-PIC-LABEL: moo02:
+; LINUX-32-PIC:        movl    src+262144, [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT:   movl    ptr, [[ECX:%e.x]]
+; LINUX-32-PIC-NEXT:   movl    [[EAX]], 262144([[ECX]])
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: moo02:
-; LINUX-64-PIC:        movq    src@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT:   movl    262144(%rax), %eax
-; LINUX-64-PIC-NEXT:   movq    ptr@GOTPCREL(%rip), %rcx
-; LINUX-64-PIC-NEXT:   movq    (%rcx), %rcx
-; LINUX-64-PIC-NEXT:   movl    %eax, 262144(%rcx)
+; LINUX-64-PIC-LABEL: moo02:
+; LINUX-64-PIC:        movq    src@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT:   movl    262144([[RAX]]), [[EAX:%e.x]]
+; LINUX-64-PIC-NEXT:   movq    ptr@GOTPCREL(%rip), [[RCX:%r.x]]
+; LINUX-64-PIC-NEXT:   movq    ([[RCX]]), [[RCX:%r.x]]
+; LINUX-64-PIC-NEXT:   movl    [[EAX]], 262144([[RCX]])
 ; LINUX-64-PIC-NEXT:   ret
 
 ; DARWIN-32-STATIC: _moo02:
-; DARWIN-32-STATIC:    movl    _src+262144, %eax
-; DARWIN-32-STATIC-NEXT:       movl    _ptr, %ecx
-; DARWIN-32-STATIC-NEXT:       movl    %eax, 262144(%ecx)
+; DARWIN-32-STATIC:    movl    _src+262144, [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       movl    _ptr, [[ECX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       movl    [[EAX]], 262144([[ECX]])
 ; DARWIN-32-STATIC-NEXT:       ret
 
 ; DARWIN-32-DYNAMIC: _moo02:
-; DARWIN-32-DYNAMIC:   movl    L_src$non_lazy_ptr, %eax
-; DARWIN-32-DYNAMIC-NEXT:      movl    262144(%eax), %eax
-; DARWIN-32-DYNAMIC-NEXT:      movl    L_ptr$non_lazy_ptr, %ecx
-; DARWIN-32-DYNAMIC-NEXT:      movl    (%ecx), %ecx
-; DARWIN-32-DYNAMIC-NEXT:      movl    %eax, 262144(%ecx)
+; DARWIN-32-DYNAMIC:   movl    L_src$non_lazy_ptr, [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    262144([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    L_ptr$non_lazy_ptr, [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    ([[ECX]]), [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    [[EAX]], 262144([[ECX]])
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _moo02:
-; DARWIN-32-PIC:       call    "L51$pb"
-; DARWIN-32-PIC-NEXT: "L51$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  movl    L_src$non_lazy_ptr-"L51$pb"(%eax), %ecx
-; DARWIN-32-PIC-NEXT:  movl    262144(%ecx), %ecx
-; DARWIN-32-PIC-NEXT:  movl    L_ptr$non_lazy_ptr-"L51$pb"(%eax), %eax
-; DARWIN-32-PIC-NEXT:  movl    (%eax), %eax
-; DARWIN-32-PIC-NEXT:  movl    %ecx, 262144(%eax)
+; DARWIN-32-PIC:       calll   L50$pb
+; DARWIN-32-PIC-NEXT: L50$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    L_src$non_lazy_ptr-L50$pb([[EAX]]), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    262144([[ECX]]), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    L_ptr$non_lazy_ptr-L50$pb([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    ([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    [[ECX]], 262144([[EAX]])
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _moo02:
-; DARWIN-64-STATIC:    movq    _src@GOTPCREL(%rip), %rax
-; DARWIN-64-STATIC-NEXT:       movl    262144(%rax), %eax
-; DARWIN-64-STATIC-NEXT:       movq    _ptr@GOTPCREL(%rip), %rcx
-; DARWIN-64-STATIC-NEXT:       movq    (%rcx), %rcx
-; DARWIN-64-STATIC-NEXT:       movl    %eax, 262144(%rcx)
+; DARWIN-64-STATIC:    movq    _src@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movl    262144([[RAX]]), [[EAX:%e.x]]
+; DARWIN-64-STATIC-NEXT:       movq    _ptr@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movq    ([[RCX]]), [[RCX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movl    [[EAX]], 262144([[RCX]])
 ; DARWIN-64-STATIC-NEXT:       ret
 
 ; DARWIN-64-DYNAMIC: _moo02:
-; DARWIN-64-DYNAMIC:   movq    _src@GOTPCREL(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT:      movl    262144(%rax), %eax
-; DARWIN-64-DYNAMIC-NEXT:      movq    _ptr@GOTPCREL(%rip), %rcx
-; DARWIN-64-DYNAMIC-NEXT:      movq    (%rcx), %rcx
-; DARWIN-64-DYNAMIC-NEXT:      movl    %eax, 262144(%rcx)
+; DARWIN-64-DYNAMIC:   movq    _src@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movl    262144([[RAX]]), [[EAX:%e.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movq    _ptr@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movq    ([[RCX]]), [[RCX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movl    [[EAX]], 262144([[RCX]])
 ; DARWIN-64-DYNAMIC-NEXT:      ret
 
 ; DARWIN-64-PIC: _moo02:
-; DARWIN-64-PIC:       movq    _src@GOTPCREL(%rip), %rax
-; DARWIN-64-PIC-NEXT:  movl    262144(%rax), %eax
-; DARWIN-64-PIC-NEXT:  movq    _ptr@GOTPCREL(%rip), %rcx
-; DARWIN-64-PIC-NEXT:  movq    (%rcx), %rcx
-; DARWIN-64-PIC-NEXT:  movl    %eax, 262144(%rcx)
+; DARWIN-64-PIC:       movq    _src@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movl    262144([[RAX]]), [[EAX:%e.x]]
+; DARWIN-64-PIC-NEXT:  movq    _ptr@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movq    ([[RCX]]), [[RCX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movl    [[EAX]], 262144([[RCX]])
 ; DARWIN-64-PIC-NEXT:  ret
 }
 
 define void @moo03(i64 %i) nounwind {
 entry:
-       %0 = load i32* getelementptr ([131072 x i32]* @dsrc, i32 0, i64 65536), align 32
-       store i32 %0, i32* getelementptr ([131072 x i32]* @ddst, i32 0, i64 65536), align 32
+       %0 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @dsrc, i32 0, i64 65536), align 32
+       store i32 %0, i32* getelementptr ([131072 x i32], [131072 x i32]* @ddst, i32 0, i64 65536), align 32
        ret void
-; LINUX-64-STATIC: moo03:
-; LINUX-64-STATIC: movl    dsrc+262144(%rip), %eax
-; LINUX-64-STATIC: movl    %eax, ddst+262144(%rip)
+; LINUX-64-STATIC-LABEL: moo03:
+; LINUX-64-STATIC: movl    dsrc+262144(%rip), [[EAX:%e.x]]
+; LINUX-64-STATIC: movl    [[EAX]], ddst+262144(%rip)
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: moo03:
-; LINUX-32-STATIC:     movl    dsrc+262144, %eax
-; LINUX-32-STATIC-NEXT:        movl    %eax, ddst+262144
+; LINUX-32-STATIC-LABEL: moo03:
+; LINUX-32-STATIC:     movl    dsrc+262144, [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT:        movl    [[EAX]], ddst+262144
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: moo03:
-; LINUX-32-PIC:        movl    dsrc+262144, %eax
-; LINUX-32-PIC-NEXT:   movl    %eax, ddst+262144
+; LINUX-32-PIC-LABEL: moo03:
+; LINUX-32-PIC:        movl    dsrc+262144, [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT:   movl    [[EAX]], ddst+262144
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: moo03:
-; LINUX-64-PIC:        movq    dsrc@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT:   movl    262144(%rax), %eax
-; LINUX-64-PIC-NEXT:   movq    ddst@GOTPCREL(%rip), %rcx
-; LINUX-64-PIC-NEXT:   movl    %eax, 262144(%rcx)
+; LINUX-64-PIC-LABEL: moo03:
+; LINUX-64-PIC:        movq    dsrc@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT:   movl    262144([[RAX]]), [[EAX:%e.x]]
+; LINUX-64-PIC-NEXT:   movq    ddst@GOTPCREL(%rip), [[RCX:%r.x]]
+; LINUX-64-PIC-NEXT:   movl    [[EAX]], 262144([[RCX]])
 ; LINUX-64-PIC-NEXT:   ret
 
 ; DARWIN-32-STATIC: _moo03:
-; DARWIN-32-STATIC:    movl    _dsrc+262144, %eax
-; DARWIN-32-STATIC-NEXT:       movl    %eax, _ddst+262144
+; DARWIN-32-STATIC:    movl    _dsrc+262144, [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       movl    [[EAX]], _ddst+262144
 ; DARWIN-32-STATIC-NEXT:       ret
 
 ; DARWIN-32-DYNAMIC: _moo03:
-; DARWIN-32-DYNAMIC:   movl    _dsrc+262144, %eax
-; DARWIN-32-DYNAMIC-NEXT:      movl    %eax, _ddst+262144
+; DARWIN-32-DYNAMIC:   movl    _dsrc+262144, [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    [[EAX]], _ddst+262144
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _moo03:
-; DARWIN-32-PIC:       call    "L52$pb"
-; DARWIN-32-PIC-NEXT: "L52$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  movl    _dsrc+262144-"L52$pb"(%eax), %ecx
-; DARWIN-32-PIC-NEXT:  movl    %ecx, _ddst+262144-"L52$pb"(%eax)
+; DARWIN-32-PIC:       calll   L51$pb
+; DARWIN-32-PIC-NEXT: L51$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    (_dsrc-L51$pb)+262144([[EAX]]), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    [[ECX]], (_ddst-L51$pb)+262144([[EAX]])
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _moo03:
-; DARWIN-64-STATIC:    movl    _dsrc+262144(%rip), %eax
-; DARWIN-64-STATIC-NEXT:       movl    %eax, _ddst+262144(%rip)
+; DARWIN-64-STATIC:    movl    _dsrc+262144(%rip), [[EAX:%e.x]]
+; DARWIN-64-STATIC-NEXT:       movl    [[EAX]], _ddst+262144(%rip)
 ; DARWIN-64-STATIC-NEXT:       ret
 
 ; DARWIN-64-DYNAMIC: _moo03:
-; DARWIN-64-DYNAMIC:   movl    _dsrc+262144(%rip), %eax
-; DARWIN-64-DYNAMIC-NEXT:      movl    %eax, _ddst+262144(%rip)
+; DARWIN-64-DYNAMIC:   movl    _dsrc+262144(%rip), [[EAX:%e.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movl    [[EAX]], _ddst+262144(%rip)
 ; DARWIN-64-DYNAMIC-NEXT:      ret
 
 ; DARWIN-64-PIC: _moo03:
-; DARWIN-64-PIC:       movl    _dsrc+262144(%rip), %eax
-; DARWIN-64-PIC-NEXT:  movl    %eax, _ddst+262144(%rip)
+; DARWIN-64-PIC:       movl    _dsrc+262144(%rip), [[EAX:%e.x]]
+; DARWIN-64-PIC-NEXT:  movl    [[EAX]], _ddst+262144(%rip)
 ; DARWIN-64-PIC-NEXT:  ret
 }
 
 define void @moo04(i64 %i) nounwind {
 entry:
-       store i32* getelementptr ([131072 x i32]* @ddst, i32 0, i64 65536), i32** @dptr, align 8
+       store i32* getelementptr ([131072 x i32], [131072 x i32]* @ddst, i32 0, i64 65536), i32** @dptr, align 8
        ret void
-; LINUX-64-STATIC: moo04:
+; LINUX-64-STATIC-LABEL: moo04:
 ; LINUX-64-STATIC: movq    $ddst+262144, dptr
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: moo04:
+; LINUX-32-STATIC-LABEL: moo04:
 ; LINUX-32-STATIC:     movl    $ddst+262144, dptr
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: moo04:
+; LINUX-32-PIC-LABEL: moo04:
 ; LINUX-32-PIC:        movl    $ddst+262144, dptr
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: moo04:
-; LINUX-64-PIC:        movl    $262144, %eax
-; LINUX-64-PIC-NEXT:   addq    ddst@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT:   movq    dptr@GOTPCREL(%rip), %rcx
-; LINUX-64-PIC-NEXT:   movq    %rax, (%rcx)
+; LINUX-64-PIC-LABEL: moo04:
+; LINUX-64-PIC:        movl    $262144, [[EAX:%e.x]]
+; LINUX-64-PIC-NEXT:   addq    ddst@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT:   movq    dptr@GOTPCREL(%rip), [[RCX:%r.x]]
+; LINUX-64-PIC-NEXT:   movq    [[RAX]], ([[RCX]])
 ; LINUX-64-PIC-NEXT:   ret
 
 ; DARWIN-32-STATIC: _moo04:
@@ -3833,180 +3833,180 @@ entry:
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _moo04:
-; DARWIN-32-PIC:       call    "L53$pb"
-; DARWIN-32-PIC-NEXT: "L53$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  leal    _ddst+262144-"L53$pb"(%eax), %ecx
-; DARWIN-32-PIC-NEXT:  movl    %ecx, _dptr-"L53$pb"(%eax)
+; DARWIN-32-PIC:       calll   L52$pb
+; DARWIN-32-PIC-NEXT: L52$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  leal    (_ddst-L52$pb)+262144([[EAX]]), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    [[ECX]], _dptr-L52$pb([[EAX]])
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _moo04:
-; DARWIN-64-STATIC:    leaq    _ddst+262144(%rip), %rax
-; DARWIN-64-STATIC-NEXT:       movq    %rax, _dptr(%rip)
+; DARWIN-64-STATIC:    leaq    _ddst+262144(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movq    [[RAX]], _dptr(%rip)
 ; DARWIN-64-STATIC-NEXT:       ret
 
 ; DARWIN-64-DYNAMIC: _moo04:
-; DARWIN-64-DYNAMIC:   leaq    _ddst+262144(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT:      movq    %rax, _dptr(%rip)
+; DARWIN-64-DYNAMIC:   leaq    _ddst+262144(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movq    [[RAX]], _dptr(%rip)
 ; DARWIN-64-DYNAMIC-NEXT:      ret
 
 ; DARWIN-64-PIC: _moo04:
-; DARWIN-64-PIC:       leaq    _ddst+262144(%rip), %rax
-; DARWIN-64-PIC-NEXT:  movq    %rax, _dptr(%rip)
+; DARWIN-64-PIC:       leaq    _ddst+262144(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movq    [[RAX]], _dptr(%rip)
 ; DARWIN-64-PIC-NEXT:  ret
 }
 
 define void @moo05(i64 %i) nounwind {
 entry:
-       %0 = load i32** @dptr, align 8
-       %1 = load i32* getelementptr ([131072 x i32]* @dsrc, i32 0, i64 65536), align 32
-       %2 = getelementptr i32* %0, i64 65536
+       %0 = load i32*, i32** @dptr, align 8
+       %1 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @dsrc, i32 0, i64 65536), align 32
+       %2 = getelementptr i32, i32* %0, i64 65536
        store i32 %1, i32* %2, align 4
        ret void
-; LINUX-64-STATIC: moo05:
-; LINUX-64-STATIC: movl    dsrc+262144(%rip), %eax
-; LINUX-64-STATIC: movq    dptr(%rip), %rcx
-; LINUX-64-STATIC: movl    %eax, 262144(%rcx)
+; LINUX-64-STATIC-LABEL: moo05:
+; LINUX-64-STATIC: movl    dsrc+262144(%rip), [[EAX:%e.x]]
+; LINUX-64-STATIC: movq    dptr(%rip), [[RCX:%r.x]]
+; LINUX-64-STATIC: movl    [[EAX]], 262144([[RCX]])
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: moo05:
-; LINUX-32-STATIC:     movl    dsrc+262144, %eax
-; LINUX-32-STATIC-NEXT:        movl    dptr, %ecx
-; LINUX-32-STATIC-NEXT:        movl    %eax, 262144(%ecx)
+; LINUX-32-STATIC-LABEL: moo05:
+; LINUX-32-STATIC:     movl    dsrc+262144, [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT:        movl    dptr, [[ECX:%e.x]]
+; LINUX-32-STATIC-NEXT:        movl    [[EAX]], 262144([[ECX]])
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: moo05:
-; LINUX-32-PIC:        movl    dsrc+262144, %eax
-; LINUX-32-PIC-NEXT:   movl    dptr, %ecx
-; LINUX-32-PIC-NEXT:   movl    %eax, 262144(%ecx)
+; LINUX-32-PIC-LABEL: moo05:
+; LINUX-32-PIC:        movl    dsrc+262144, [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT:   movl    dptr, [[ECX:%e.x]]
+; LINUX-32-PIC-NEXT:   movl    [[EAX]], 262144([[ECX]])
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: moo05:
-; LINUX-64-PIC:        movq    dsrc@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT:   movl    262144(%rax), %eax
-; LINUX-64-PIC-NEXT:   movq    dptr@GOTPCREL(%rip), %rcx
-; LINUX-64-PIC-NEXT:   movq    (%rcx), %rcx
-; LINUX-64-PIC-NEXT:   movl    %eax, 262144(%rcx)
+; LINUX-64-PIC-LABEL: moo05:
+; LINUX-64-PIC:        movq    dsrc@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT:   movl    262144([[RAX]]), [[EAX:%e.x]]
+; LINUX-64-PIC-NEXT:   movq    dptr@GOTPCREL(%rip), [[RCX:%r.x]]
+; LINUX-64-PIC-NEXT:   movq    ([[RCX]]), [[RCX:%r.x]]
+; LINUX-64-PIC-NEXT:   movl    [[EAX]], 262144([[RCX]])
 ; LINUX-64-PIC-NEXT:   ret
 
 ; DARWIN-32-STATIC: _moo05:
-; DARWIN-32-STATIC:    movl    _dsrc+262144, %eax
-; DARWIN-32-STATIC-NEXT:       movl    _dptr, %ecx
-; DARWIN-32-STATIC-NEXT:       movl    %eax, 262144(%ecx)
+; DARWIN-32-STATIC:    movl    _dsrc+262144, [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       movl    _dptr, [[ECX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       movl    [[EAX]], 262144([[ECX]])
 ; DARWIN-32-STATIC-NEXT:       ret
 
 ; DARWIN-32-DYNAMIC: _moo05:
-; DARWIN-32-DYNAMIC:   movl    _dsrc+262144, %eax
-; DARWIN-32-DYNAMIC-NEXT:      movl    _dptr, %ecx
-; DARWIN-32-DYNAMIC-NEXT:      movl    %eax, 262144(%ecx)
+; DARWIN-32-DYNAMIC:   movl    _dsrc+262144, [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    _dptr, [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    [[EAX]], 262144([[ECX]])
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _moo05:
-; DARWIN-32-PIC:       call    "L54$pb"
-; DARWIN-32-PIC-NEXT: "L54$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  movl    _dsrc+262144-"L54$pb"(%eax), %ecx
-; DARWIN-32-PIC-NEXT:  movl    _dptr-"L54$pb"(%eax), %eax
-; DARWIN-32-PIC-NEXT:  movl    %ecx, 262144(%eax)
+; DARWIN-32-PIC:       calll   L53$pb
+; DARWIN-32-PIC-NEXT: L53$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    (_dsrc-L53$pb)+262144([[EAX]]), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    _dptr-L53$pb([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    [[ECX]], 262144([[EAX]])
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _moo05:
-; DARWIN-64-STATIC:    movl    _dsrc+262144(%rip), %eax
-; DARWIN-64-STATIC-NEXT:       movq    _dptr(%rip), %rcx
-; DARWIN-64-STATIC-NEXT:       movl    %eax, 262144(%rcx)
+; DARWIN-64-STATIC:    movl    _dsrc+262144(%rip), [[EAX:%e.x]]
+; DARWIN-64-STATIC-NEXT:       movq    _dptr(%rip), [[RCX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movl    [[EAX]], 262144([[RCX]])
 ; DARWIN-64-STATIC-NEXT:       ret
 
 ; DARWIN-64-DYNAMIC: _moo05:
-; DARWIN-64-DYNAMIC:   movl    _dsrc+262144(%rip), %eax
-; DARWIN-64-DYNAMIC-NEXT:      movq    _dptr(%rip), %rcx
-; DARWIN-64-DYNAMIC-NEXT:      movl    %eax, 262144(%rcx)
+; DARWIN-64-DYNAMIC:   movl    _dsrc+262144(%rip), [[EAX:%e.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movq    _dptr(%rip), [[RCX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movl    [[EAX]], 262144([[RCX]])
 ; DARWIN-64-DYNAMIC-NEXT:      ret
 
 ; DARWIN-64-PIC: _moo05:
-; DARWIN-64-PIC:       movl    _dsrc+262144(%rip), %eax
-; DARWIN-64-PIC-NEXT:  movq    _dptr(%rip), %rcx
-; DARWIN-64-PIC-NEXT:  movl    %eax, 262144(%rcx)
+; DARWIN-64-PIC:       movl    _dsrc+262144(%rip), [[EAX:%e.x]]
+; DARWIN-64-PIC-NEXT:  movq    _dptr(%rip), [[RCX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movl    [[EAX]], 262144([[RCX]])
 ; DARWIN-64-PIC-NEXT:  ret
 }
 
 define void @moo06(i64 %i) nounwind {
 entry:
-       %0 = load i32* getelementptr ([131072 x i32]* @lsrc, i32 0, i64 65536), align 4
-       store i32 %0, i32* getelementptr ([131072 x i32]* @ldst, i32 0, i64 65536), align 4
+       %0 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @lsrc, i32 0, i64 65536), align 4
+       store i32 %0, i32* getelementptr ([131072 x i32], [131072 x i32]* @ldst, i32 0, i64 65536), align 4
        ret void
-; LINUX-64-STATIC: moo06:
-; LINUX-64-STATIC: movl    lsrc+262144(%rip), %eax
-; LINUX-64-STATIC: movl    %eax, ldst+262144(%rip)
+; LINUX-64-STATIC-LABEL: moo06:
+; LINUX-64-STATIC: movl    lsrc+262144(%rip), [[EAX:%e.x]]
+; LINUX-64-STATIC: movl    [[EAX]], ldst+262144(%rip)
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: moo06:
-; LINUX-32-STATIC:     movl    lsrc+262144, %eax
-; LINUX-32-STATIC-NEXT:        movl    %eax, ldst+262144
+; LINUX-32-STATIC-LABEL: moo06:
+; LINUX-32-STATIC:     movl    lsrc+262144, [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT:        movl    [[EAX]], ldst+262144
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: moo06:
-; LINUX-32-PIC:        movl    lsrc+262144, %eax
-; LINUX-32-PIC-NEXT:   movl    %eax, ldst+262144
+; LINUX-32-PIC-LABEL: moo06:
+; LINUX-32-PIC:        movl    lsrc+262144, [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT:   movl    [[EAX]], ldst+262144
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: moo06:
-; LINUX-64-PIC:        movl    lsrc+262144(%rip), %eax
-; LINUX-64-PIC-NEXT:   movl    %eax, ldst+262144(%rip)
+; LINUX-64-PIC-LABEL: moo06:
+; LINUX-64-PIC:        movl    lsrc+262144(%rip), [[EAX:%e.x]]
+; LINUX-64-PIC-NEXT:   movl    [[EAX]], ldst+262144(%rip)
 ; LINUX-64-PIC-NEXT:   ret
 
 ; DARWIN-32-STATIC: _moo06:
-; DARWIN-32-STATIC:    movl    _lsrc+262144, %eax
-; DARWIN-32-STATIC-NEXT:       movl    %eax, _ldst+262144
+; DARWIN-32-STATIC:    movl    _lsrc+262144, [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       movl    [[EAX]], _ldst+262144
 ; DARWIN-32-STATIC-NEXT:       ret
 
 ; DARWIN-32-DYNAMIC: _moo06:
-; DARWIN-32-DYNAMIC:   movl    _lsrc+262144, %eax
-; DARWIN-32-DYNAMIC-NEXT:      movl    %eax, _ldst+262144
+; DARWIN-32-DYNAMIC:   movl    _lsrc+262144, [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    [[EAX]], _ldst+262144
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _moo06:
-; DARWIN-32-PIC:       call    "L55$pb"
-; DARWIN-32-PIC-NEXT: "L55$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  movl    _lsrc+262144-"L55$pb"(%eax), %ecx
-; DARWIN-32-PIC-NEXT:  movl    %ecx, _ldst+262144-"L55$pb"(%eax)
+; DARWIN-32-PIC:       calll   L54$pb
+; DARWIN-32-PIC-NEXT: L54$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    (_lsrc-L54$pb)+262144([[EAX]]), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    [[ECX]], (_ldst-L54$pb)+262144([[EAX]])
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _moo06:
-; DARWIN-64-STATIC:    movl    _lsrc+262144(%rip), %eax
-; DARWIN-64-STATIC-NEXT:       movl    %eax, _ldst+262144(%rip)
+; DARWIN-64-STATIC:    movl    _lsrc+262144(%rip), [[EAX:%e.x]]
+; DARWIN-64-STATIC-NEXT:       movl    [[EAX]], _ldst+262144(%rip)
 ; DARWIN-64-STATIC-NEXT:       ret
 
 ; DARWIN-64-DYNAMIC: _moo06:
-; DARWIN-64-DYNAMIC:   movl    _lsrc+262144(%rip), %eax
-; DARWIN-64-DYNAMIC-NEXT:      movl    %eax, _ldst+262144(%rip)
+; DARWIN-64-DYNAMIC:   movl    _lsrc+262144(%rip), [[EAX:%e.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movl    [[EAX]], _ldst+262144(%rip)
 ; DARWIN-64-DYNAMIC-NEXT:      ret
 
 ; DARWIN-64-PIC: _moo06:
-; DARWIN-64-PIC:       movl    _lsrc+262144(%rip), %eax
-; DARWIN-64-PIC-NEXT:  movl    %eax, _ldst+262144(%rip)
+; DARWIN-64-PIC:       movl    _lsrc+262144(%rip), [[EAX:%e.x]]
+; DARWIN-64-PIC-NEXT:  movl    [[EAX]], _ldst+262144(%rip)
 ; DARWIN-64-PIC-NEXT:  ret
 }
 
 define void @moo07(i64 %i) nounwind {
 entry:
-       store i32* getelementptr ([131072 x i32]* @ldst, i32 0, i64 65536), i32** @lptr, align 8
+       store i32* getelementptr ([131072 x i32], [131072 x i32]* @ldst, i32 0, i64 65536), i32** @lptr, align 8
        ret void
-; LINUX-64-STATIC: moo07:
+; LINUX-64-STATIC-LABEL: moo07:
 ; LINUX-64-STATIC: movq    $ldst+262144, lptr
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: moo07:
+; LINUX-32-STATIC-LABEL: moo07:
 ; LINUX-32-STATIC:     movl    $ldst+262144, lptr
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: moo07:
+; LINUX-32-PIC-LABEL: moo07:
 ; LINUX-32-PIC:        movl    $ldst+262144, lptr
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: moo07:
-; LINUX-64-PIC:        leaq    ldst+262144(%rip), %rax
-; LINUX-64-PIC-NEXT:   movq    %rax, lptr(%rip)
+; LINUX-64-PIC-LABEL: moo07:
+; LINUX-64-PIC:        leaq    ldst+262144(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT:   movq    [[RAX]], lptr(%rip)
 ; LINUX-64-PIC-NEXT:   ret
 
 ; DARWIN-32-STATIC: _moo07:
@@ -4018,816 +4018,816 @@ entry:
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _moo07:
-; DARWIN-32-PIC:       call    "L56$pb"
-; DARWIN-32-PIC-NEXT: "L56$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  leal    _ldst+262144-"L56$pb"(%eax), %ecx
-; DARWIN-32-PIC-NEXT:  movl    %ecx, _lptr-"L56$pb"(%eax)
+; DARWIN-32-PIC:       calll   L55$pb
+; DARWIN-32-PIC-NEXT: L55$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  leal    (_ldst-L55$pb)+262144([[EAX]]), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    [[ECX]], _lptr-L55$pb([[EAX]])
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _moo07:
-; DARWIN-64-STATIC:    leaq    _ldst+262144(%rip), %rax
-; DARWIN-64-STATIC-NEXT:       movq    %rax, _lptr(%rip)
+; DARWIN-64-STATIC:    leaq    _ldst+262144(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movq    [[RAX]], _lptr(%rip)
 ; DARWIN-64-STATIC-NEXT:       ret
 
 ; DARWIN-64-DYNAMIC: _moo07:
-; DARWIN-64-DYNAMIC:   leaq    _ldst+262144(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT:      movq    %rax, _lptr(%rip)
+; DARWIN-64-DYNAMIC:   leaq    _ldst+262144(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movq    [[RAX]], _lptr(%rip)
 ; DARWIN-64-DYNAMIC-NEXT:      ret
 
 ; DARWIN-64-PIC: _moo07:
-; DARWIN-64-PIC:       leaq    _ldst+262144(%rip), %rax
-; DARWIN-64-PIC-NEXT:  movq    %rax, _lptr(%rip)
+; DARWIN-64-PIC:       leaq    _ldst+262144(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movq    [[RAX]], _lptr(%rip)
 ; DARWIN-64-PIC-NEXT:  ret
 }
 
 define void @moo08(i64 %i) nounwind {
 entry:
-       %0 = load i32** @lptr, align 8
-       %1 = load i32* getelementptr ([131072 x i32]* @lsrc, i32 0, i64 65536), align 4
-       %2 = getelementptr i32* %0, i64 65536
+       %0 = load i32*, i32** @lptr, align 8
+       %1 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @lsrc, i32 0, i64 65536), align 4
+       %2 = getelementptr i32, i32* %0, i64 65536
        store i32 %1, i32* %2, align 4
        ret void
-; LINUX-64-STATIC: moo08:
-; LINUX-64-STATIC: movl    lsrc+262144(%rip), %eax
-; LINUX-64-STATIC: movq    lptr(%rip), %rcx
-; LINUX-64-STATIC: movl    %eax, 262144(%rcx)
+; LINUX-64-STATIC-LABEL: moo08:
+; LINUX-64-STATIC: movl    lsrc+262144(%rip), [[EAX:%e.x]]
+; LINUX-64-STATIC: movq    lptr(%rip), [[RCX:%r.x]]
+; LINUX-64-STATIC: movl    [[EAX]], 262144([[RCX]])
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: moo08:
-; LINUX-32-STATIC:     movl    lsrc+262144, %eax
-; LINUX-32-STATIC-NEXT:        movl    lptr, %ecx
-; LINUX-32-STATIC-NEXT:        movl    %eax, 262144(%ecx)
+; LINUX-32-STATIC-LABEL: moo08:
+; LINUX-32-STATIC:     movl    lsrc+262144, [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT:        movl    lptr, [[ECX:%e.x]]
+; LINUX-32-STATIC-NEXT:        movl    [[EAX]], 262144([[ECX]])
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: moo08:
-; LINUX-32-PIC:        movl    lsrc+262144, %eax
-; LINUX-32-PIC-NEXT:   movl    lptr, %ecx
-; LINUX-32-PIC-NEXT:   movl    %eax, 262144(%ecx)
+; LINUX-32-PIC-LABEL: moo08:
+; LINUX-32-PIC:        movl    lsrc+262144, [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT:   movl    lptr, [[ECX:%e.x]]
+; LINUX-32-PIC-NEXT:   movl    [[EAX]], 262144([[ECX]])
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: moo08:
-; LINUX-64-PIC:        movl    lsrc+262144(%rip), %eax
-; LINUX-64-PIC-NEXT:   movq    lptr(%rip), %rcx
-; LINUX-64-PIC-NEXT:   movl    %eax, 262144(%rcx)
+; LINUX-64-PIC-LABEL: moo08:
+; LINUX-64-PIC:        movl    lsrc+262144(%rip), [[EAX:%e.x]]
+; LINUX-64-PIC-NEXT:   movq    lptr(%rip), [[RCX:%r.x]]
+; LINUX-64-PIC-NEXT:   movl    [[EAX]], 262144([[RCX]])
 ; LINUX-64-PIC-NEXT:   ret
 
 ; DARWIN-32-STATIC: _moo08:
-; DARWIN-32-STATIC:    movl    _lsrc+262144, %eax
-; DARWIN-32-STATIC-NEXT:       movl    _lptr, %ecx
-; DARWIN-32-STATIC-NEXT:       movl    %eax, 262144(%ecx)
+; DARWIN-32-STATIC:    movl    _lsrc+262144, [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       movl    _lptr, [[ECX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       movl    [[EAX]], 262144([[ECX]])
 ; DARWIN-32-STATIC-NEXT:       ret
 
 ; DARWIN-32-DYNAMIC: _moo08:
-; DARWIN-32-DYNAMIC:   movl    _lsrc+262144, %eax
-; DARWIN-32-DYNAMIC-NEXT:      movl    _lptr, %ecx
-; DARWIN-32-DYNAMIC-NEXT:      movl    %eax, 262144(%ecx)
+; DARWIN-32-DYNAMIC:   movl    _lsrc+262144, [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    _lptr, [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    [[EAX]], 262144([[ECX]])
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _moo08:
-; DARWIN-32-PIC:       call    "L57$pb"
-; DARWIN-32-PIC-NEXT: "L57$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  movl    _lsrc+262144-"L57$pb"(%eax), %ecx
-; DARWIN-32-PIC-NEXT:  movl    _lptr-"L57$pb"(%eax), %eax
-; DARWIN-32-PIC-NEXT:  movl    %ecx, 262144(%eax)
+; DARWIN-32-PIC:       calll   L56$pb
+; DARWIN-32-PIC-NEXT: L56$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    (_lsrc-L56$pb)+262144([[EAX]]), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    _lptr-L56$pb([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    [[ECX]], 262144([[EAX]])
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _moo08:
-; DARWIN-64-STATIC:    movl    _lsrc+262144(%rip), %eax
-; DARWIN-64-STATIC-NEXT:       movq    _lptr(%rip), %rcx
-; DARWIN-64-STATIC-NEXT:       movl    %eax, 262144(%rcx)
+; DARWIN-64-STATIC:    movl    _lsrc+262144(%rip), [[EAX:%e.x]]
+; DARWIN-64-STATIC-NEXT:       movq    _lptr(%rip), [[RCX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movl    [[EAX]], 262144([[RCX]])
 ; DARWIN-64-STATIC-NEXT:       ret
 
 ; DARWIN-64-DYNAMIC: _moo08:
-; DARWIN-64-DYNAMIC:   movl    _lsrc+262144(%rip), %eax
-; DARWIN-64-DYNAMIC-NEXT:      movq    _lptr(%rip), %rcx
-; DARWIN-64-DYNAMIC-NEXT:      movl    %eax, 262144(%rcx)
+; DARWIN-64-DYNAMIC:   movl    _lsrc+262144(%rip), [[EAX:%e.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movq    _lptr(%rip), [[RCX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movl    [[EAX]], 262144([[RCX]])
 ; DARWIN-64-DYNAMIC-NEXT:      ret
 
 ; DARWIN-64-PIC: _moo08:
-; DARWIN-64-PIC:       movl    _lsrc+262144(%rip), %eax
-; DARWIN-64-PIC-NEXT:  movq    _lptr(%rip), %rcx
-; DARWIN-64-PIC-NEXT:  movl    %eax, 262144(%rcx)
+; DARWIN-64-PIC:       movl    _lsrc+262144(%rip), [[EAX:%e.x]]
+; DARWIN-64-PIC-NEXT:  movq    _lptr(%rip), [[RCX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movl    [[EAX]], 262144([[RCX]])
 ; DARWIN-64-PIC-NEXT:  ret
 }
 
 define void @big00(i64 %i) nounwind {
 entry:
        %0 = add i64 %i, 65536
-       %1 = getelementptr [131072 x i32]* @src, i64 0, i64 %0
-       %2 = load i32* %1, align 4
-       %3 = getelementptr [131072 x i32]* @dst, i64 0, i64 %0
+       %1 = getelementptr [131072 x i32], [131072 x i32]* @src, i64 0, i64 %0
+       %2 = load i32, i32* %1, align 4
+       %3 = getelementptr [131072 x i32], [131072 x i32]* @dst, i64 0, i64 %0
        store i32 %2, i32* %3, align 4
        ret void
-; LINUX-64-STATIC: big00:
-; LINUX-64-STATIC: movl    src+262144(,%rdi,4), %eax
-; LINUX-64-STATIC: movl    %eax, dst+262144(,%rdi,4)
+; LINUX-64-STATIC-LABEL: big00:
+; LINUX-64-STATIC: movl    src+262144(,%rdi,4), [[EAX:%e.x]]
+; LINUX-64-STATIC: movl    [[EAX]], dst+262144(,%rdi,4)
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: big00:
-; LINUX-32-STATIC:     movl    4(%esp), %eax
-; LINUX-32-STATIC-NEXT:        movl    src+262144(,%eax,4), %ecx
-; LINUX-32-STATIC-NEXT:        movl    %ecx, dst+262144(,%eax,4)
+; LINUX-32-STATIC-LABEL: big00:
+; LINUX-32-STATIC:     movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT:        movl    src+262144(,[[EAX]],4), [[ECX:%e.x]]
+; LINUX-32-STATIC-NEXT:        movl    [[ECX]], dst+262144(,[[EAX]],4)
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: big00:
-; LINUX-32-PIC:        movl    4(%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-LABEL: big00:
+; LINUX-32-PIC:        movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT:   movl    src+262144(,[[EAX]],4), [[ECX:%e.x]]
+; LINUX-32-PIC-NEXT:   movl    [[ECX]], dst+262144(,[[EAX]],4)
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: big00:
-; LINUX-64-PIC:        movq    src@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT:   movl    262144(%rax,%rdi,4), %eax
-; LINUX-64-PIC-NEXT:   movq    dst@GOTPCREL(%rip), %rcx
-; LINUX-64-PIC-NEXT:   movl    %eax, 262144(%rcx,%rdi,4)
+; LINUX-64-PIC-LABEL: big00:
+; LINUX-64-PIC:        movq    src@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT:   movl    262144([[RAX]],%rdi,4), [[EAX:%e.x]]
+; LINUX-64-PIC-NEXT:   movq    dst@GOTPCREL(%rip), [[RCX:%r.x]]
+; LINUX-64-PIC-NEXT:   movl    [[EAX]], 262144([[RCX]],%rdi,4)
 ; LINUX-64-PIC-NEXT:   ret
 
 ; DARWIN-32-STATIC: _big00:
-; DARWIN-32-STATIC:    movl    4(%esp), %eax
-; DARWIN-32-STATIC-NEXT:       movl    _src+262144(,%eax,4), %ecx
-; DARWIN-32-STATIC-NEXT:       movl    %ecx, _dst+262144(,%eax,4)
+; DARWIN-32-STATIC:    movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       movl    _src+262144(,[[EAX]],4), [[ECX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       movl    [[ECX]], _dst+262144(,[[EAX]],4)
 ; DARWIN-32-STATIC-NEXT:       ret
 
 ; DARWIN-32-DYNAMIC: _big00:
-; DARWIN-32-DYNAMIC:   movl    4(%esp), %eax
-; DARWIN-32-DYNAMIC-NEXT:      movl    L_src$non_lazy_ptr, %ecx
-; DARWIN-32-DYNAMIC-NEXT:      movl    262144(%ecx,%eax,4), %ecx
-; DARWIN-32-DYNAMIC-NEXT:      movl    L_dst$non_lazy_ptr, %edx
-; DARWIN-32-DYNAMIC-NEXT:      movl    %ecx, 262144(%edx,%eax,4)
+; DARWIN-32-DYNAMIC:   movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    L_src$non_lazy_ptr, [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    262144([[ECX]],[[EAX]],4), [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    L_dst$non_lazy_ptr, [[EDX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    [[ECX]], 262144([[EDX]],[[EAX]],4)
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _big00:
-; DARWIN-32-PIC:       call    "L58$pb"
-; DARWIN-32-PIC-NEXT: "L58$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  movl    4(%esp), %ecx
-; DARWIN-32-PIC-NEXT:  movl    L_src$non_lazy_ptr-"L58$pb"(%eax), %edx
-; DARWIN-32-PIC-NEXT:  movl    262144(%edx,%ecx,4), %edx
-; DARWIN-32-PIC-NEXT:  movl    L_dst$non_lazy_ptr-"L58$pb"(%eax), %eax
-; DARWIN-32-PIC-NEXT:  movl    %edx, 262144(%eax,%ecx,4)
+; DARWIN-32-PIC:       calll   L57$pb
+; DARWIN-32-PIC-NEXT: L57$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    L_src$non_lazy_ptr-L57$pb([[EAX]]), [[EDX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    262144([[EDX]],[[ECX]],4), [[EDX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    L_dst$non_lazy_ptr-L57$pb([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    [[EDX]], 262144([[EAX]],[[ECX]],4)
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _big00:
-; DARWIN-64-STATIC:    movq    _src@GOTPCREL(%rip), %rax
-; DARWIN-64-STATIC-NEXT:       movl    262144(%rax,%rdi,4), %eax
-; DARWIN-64-STATIC-NEXT:       movq    _dst@GOTPCREL(%rip), %rcx
-; DARWIN-64-STATIC-NEXT:       movl    %eax, 262144(%rcx,%rdi,4)
+; DARWIN-64-STATIC:    movq    _src@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movl    262144([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-STATIC-NEXT:       movq    _dst@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movl    [[EAX]], 262144([[RCX]],%rdi,4)
 ; DARWIN-64-STATIC-NEXT:       ret
 
 ; DARWIN-64-DYNAMIC: _big00:
-; DARWIN-64-DYNAMIC:   movq    _src@GOTPCREL(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT:      movl    262144(%rax,%rdi,4), %eax
-; DARWIN-64-DYNAMIC-NEXT:      movq    _dst@GOTPCREL(%rip), %rcx
-; DARWIN-64-DYNAMIC-NEXT:      movl    %eax, 262144(%rcx,%rdi,4)
+; DARWIN-64-DYNAMIC:   movq    _src@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movl    262144([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movq    _dst@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movl    [[EAX]], 262144([[RCX]],%rdi,4)
 ; DARWIN-64-DYNAMIC-NEXT:      ret
 
 ; DARWIN-64-PIC: _big00:
-; DARWIN-64-PIC:       movq    _src@GOTPCREL(%rip), %rax
-; DARWIN-64-PIC-NEXT:  movl    262144(%rax,%rdi,4), %eax
-; DARWIN-64-PIC-NEXT:  movq    _dst@GOTPCREL(%rip), %rcx
-; DARWIN-64-PIC-NEXT:  movl    %eax, 262144(%rcx,%rdi,4)
+; DARWIN-64-PIC:       movq    _src@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movl    262144([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-PIC-NEXT:  movq    _dst@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movl    [[EAX]], 262144([[RCX]],%rdi,4)
 ; DARWIN-64-PIC-NEXT:  ret
 }
 
 define void @big01(i64 %i) nounwind {
 entry:
        %.sum = add i64 %i, 65536
-       %0 = getelementptr [131072 x i32]* @dst, i64 0, i64 %.sum
+       %0 = getelementptr [131072 x i32], [131072 x i32]* @dst, i64 0, i64 %.sum
        store i32* %0, i32** @ptr, align 8
        ret void
-; LINUX-64-STATIC: big01:
-; LINUX-64-STATIC: leaq    dst+262144(,%rdi,4), %rax
-; LINUX-64-STATIC: movq    %rax, ptr(%rip)
+; LINUX-64-STATIC-LABEL: big01:
+; LINUX-64-STATIC: leaq    dst+262144(,%rdi,4), [[RAX:%r.x]]
+; LINUX-64-STATIC: movq    [[RAX]], ptr(%rip)
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: big01:
-; LINUX-32-STATIC:     movl    4(%esp), %eax
-; LINUX-32-STATIC-NEXT:        leal    dst+262144(,%eax,4), %eax
-; LINUX-32-STATIC-NEXT:        movl    %eax, ptr
+; LINUX-32-STATIC-LABEL: big01:
+; LINUX-32-STATIC:     movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT:        leal    dst+262144(,[[EAX]],4), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT:        movl    [[EAX]], ptr
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: big01:
-; LINUX-32-PIC:        movl    4(%esp), %eax
-; LINUX-32-PIC-NEXT:   leal    dst+262144(,%eax,4), %eax
-; LINUX-32-PIC-NEXT:   movl    %eax, ptr
+; LINUX-32-PIC-LABEL: big01:
+; LINUX-32-PIC:        movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT:   leal    dst+262144(,[[EAX]],4), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT:   movl    [[EAX]], ptr
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: big01:
-; LINUX-64-PIC:        movq    dst@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT:   leaq    262144(%rax,%rdi,4), %rax
-; LINUX-64-PIC-NEXT:   movq    ptr@GOTPCREL(%rip), %rcx
-; LINUX-64-PIC-NEXT:   movq    %rax, (%rcx)
+; LINUX-64-PIC-LABEL: big01:
+; LINUX-64-PIC:        movq    dst@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT:   leaq    262144([[RAX]],%rdi,4), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT:   movq    ptr@GOTPCREL(%rip), [[RCX:%r.x]]
+; LINUX-64-PIC-NEXT:   movq    [[RAX]], ([[RCX]])
 ; LINUX-64-PIC-NEXT:   ret
 
 ; DARWIN-32-STATIC: _big01:
-; DARWIN-32-STATIC:    movl    4(%esp), %eax
-; DARWIN-32-STATIC-NEXT:       leal    _dst+262144(,%eax,4), %eax
-; DARWIN-32-STATIC-NEXT:       movl    %eax, _ptr
+; DARWIN-32-STATIC:    movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       leal    _dst+262144(,[[EAX]],4), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       movl    [[EAX]], _ptr
 ; DARWIN-32-STATIC-NEXT:       ret
 
 ; DARWIN-32-DYNAMIC: _big01:
-; DARWIN-32-DYNAMIC:   movl    4(%esp), %eax
-; DARWIN-32-DYNAMIC-NEXT:      movl    L_dst$non_lazy_ptr, %ecx
-; DARWIN-32-DYNAMIC-NEXT:      leal    262144(%ecx,%eax,4), %eax
-; DARWIN-32-DYNAMIC-NEXT:      movl    L_ptr$non_lazy_ptr, %ecx
-; DARWIN-32-DYNAMIC-NEXT:      movl    %eax, (%ecx)
+; DARWIN-32-DYNAMIC:   movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    L_dst$non_lazy_ptr, [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      leal    262144([[ECX]],[[EAX]],4), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    L_ptr$non_lazy_ptr, [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    [[EAX]], ([[ECX]])
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _big01:
-; DARWIN-32-PIC:       call    "L59$pb"
-; DARWIN-32-PIC-NEXT: "L59$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  movl    4(%esp), %ecx
-; DARWIN-32-PIC-NEXT:  movl    L_dst$non_lazy_ptr-"L59$pb"(%eax), %edx
-; DARWIN-32-PIC-NEXT:  leal    262144(%edx,%ecx,4), %ecx
-; DARWIN-32-PIC-NEXT:  movl    L_ptr$non_lazy_ptr-"L59$pb"(%eax), %eax
-; DARWIN-32-PIC-NEXT:  movl    %ecx, (%eax)
+; DARWIN-32-PIC:       calll   L58$pb
+; DARWIN-32-PIC-NEXT: L58$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    L_dst$non_lazy_ptr-L58$pb([[EAX]]), [[EDX:%e.x]]
+; DARWIN-32-PIC-NEXT:  leal    262144([[EDX]],[[ECX]],4), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    L_ptr$non_lazy_ptr-L58$pb([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    [[ECX]], ([[EAX]])
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _big01:
-; DARWIN-64-STATIC:    movq    _dst@GOTPCREL(%rip), %rax
-; DARWIN-64-STATIC-NEXT:       leaq    262144(%rax,%rdi,4), %rax
-; DARWIN-64-STATIC-NEXT:       movq    _ptr@GOTPCREL(%rip), %rcx
-; DARWIN-64-STATIC-NEXT:       movq    %rax, (%rcx)
+; DARWIN-64-STATIC:    movq    _dst@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       leaq    262144([[RAX]],%rdi,4), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movq    _ptr@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movq    [[RAX]], ([[RCX]])
 ; DARWIN-64-STATIC-NEXT:       ret
 
 ; DARWIN-64-DYNAMIC: _big01:
-; DARWIN-64-DYNAMIC:   movq    _dst@GOTPCREL(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT:      leaq    262144(%rax,%rdi,4), %rax
-; DARWIN-64-DYNAMIC-NEXT:      movq    _ptr@GOTPCREL(%rip), %rcx
-; DARWIN-64-DYNAMIC-NEXT:      movq    %rax, (%rcx)
+; DARWIN-64-DYNAMIC:   movq    _dst@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      leaq    262144([[RAX]],%rdi,4), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movq    _ptr@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movq    [[RAX]], ([[RCX]])
 ; DARWIN-64-DYNAMIC-NEXT:      ret
 
 ; DARWIN-64-PIC: _big01:
-; DARWIN-64-PIC:       movq    _dst@GOTPCREL(%rip), %rax
-; DARWIN-64-PIC-NEXT:  leaq    262144(%rax,%rdi,4), %rax
-; DARWIN-64-PIC-NEXT:  movq    _ptr@GOTPCREL(%rip), %rcx
-; DARWIN-64-PIC-NEXT:  movq    %rax, (%rcx)
+; DARWIN-64-PIC:       movq    _dst@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT:  leaq    262144([[RAX]],%rdi,4), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movq    _ptr@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movq    [[RAX]], ([[RCX]])
 ; DARWIN-64-PIC-NEXT:  ret
 }
 
 define void @big02(i64 %i) nounwind {
 entry:
-       %0 = load i32** @ptr, align 8
+       %0 = load i32*, i32** @ptr, align 8
        %1 = add i64 %i, 65536
-       %2 = getelementptr [131072 x i32]* @src, i64 0, i64 %1
-       %3 = load i32* %2, align 4
-       %4 = getelementptr i32* %0, i64 %1
+       %2 = getelementptr [131072 x i32], [131072 x i32]* @src, i64 0, i64 %1
+       %3 = load i32, i32* %2, align 4
+       %4 = getelementptr i32, i32* %0, i64 %1
        store i32 %3, i32* %4, align 4
        ret void
-; LINUX-64-STATIC: big02:
-; LINUX-64-STATIC: movl    src+262144(,%rdi,4), %eax
-; LINUX-64-STATIC: movq    ptr(%rip), %rcx
-; LINUX-64-STATIC: movl    %eax, 262144(%rcx,%rdi,4)
+; LINUX-64-STATIC-LABEL: big02:
+; LINUX-64-STATIC: movl    src+262144(,%rdi,4), [[EAX:%e.x]]
+; LINUX-64-STATIC: movq    ptr(%rip), [[RCX:%r.x]]
+; LINUX-64-STATIC: movl    [[EAX]], 262144([[RCX]],%rdi,4)
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: big02:
-; LINUX-32-STATIC:     movl    4(%esp), %eax
-; LINUX-32-STATIC-NEXT:        movl    src+262144(,%eax,4), %ecx
-; LINUX-32-STATIC-NEXT:        movl    ptr, %edx
-; LINUX-32-STATIC-NEXT:        movl    %ecx, 262144(%edx,%eax,4)
+; LINUX-32-STATIC-LABEL: big02:
+; LINUX-32-STATIC:     movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT:        movl    src+262144(,[[EAX]],4), [[ECX:%e.x]]
+; LINUX-32-STATIC-NEXT:        movl    ptr, [[EDX:%e.x]]
+; LINUX-32-STATIC-NEXT:        movl    [[ECX]], 262144([[EDX]],[[EAX]],4)
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: big02:
-; LINUX-32-PIC:        movl    4(%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-LABEL: big02:
+; LINUX-32-PIC:        movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT:   movl    src+262144(,[[EAX]],4), [[ECX:%e.x]]
+; LINUX-32-PIC-NEXT:   movl    ptr, [[EDX:%e.x]]
+; LINUX-32-PIC-NEXT:   movl    [[ECX]], 262144([[EDX]],[[EAX]],4)
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: big02:
-; LINUX-64-PIC:        movq    src@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT:   movl    262144(%rax,%rdi,4), %eax
-; LINUX-64-PIC-NEXT:   movq    ptr@GOTPCREL(%rip), %rcx
-; LINUX-64-PIC-NEXT:   movq    (%rcx), %rcx
-; LINUX-64-PIC-NEXT:   movl    %eax, 262144(%rcx,%rdi,4)
+; LINUX-64-PIC-LABEL: big02:
+; LINUX-64-PIC:        movq    src@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT:   movl    262144([[RAX]],%rdi,4), [[EAX:%e.x]]
+; LINUX-64-PIC-NEXT:   movq    ptr@GOTPCREL(%rip), [[RCX:%r.x]]
+; LINUX-64-PIC-NEXT:   movq    ([[RCX]]), [[RCX:%r.x]]
+; LINUX-64-PIC-NEXT:   movl    [[EAX]], 262144([[RCX]],%rdi,4)
 ; LINUX-64-PIC-NEXT:   ret
 
 ; DARWIN-32-STATIC: _big02:
-; DARWIN-32-STATIC:    movl    4(%esp), %eax
-; DARWIN-32-STATIC-NEXT:       movl    _src+262144(,%eax,4), %ecx
-; DARWIN-32-STATIC-NEXT:       movl    _ptr, %edx
-; DARWIN-32-STATIC-NEXT:       movl    %ecx, 262144(%edx,%eax,4)
+; DARWIN-32-STATIC:    movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       movl    _src+262144(,[[EAX]],4), [[ECX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       movl    _ptr, [[EDX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       movl    [[ECX]], 262144([[EDX]],[[EAX]],4)
 ; DARWIN-32-STATIC-NEXT:       ret
 
 ; DARWIN-32-DYNAMIC: _big02:
-; DARWIN-32-DYNAMIC:   movl    4(%esp), %eax
-; DARWIN-32-DYNAMIC-NEXT:      movl    L_src$non_lazy_ptr, %ecx
-; DARWIN-32-DYNAMIC-NEXT:      movl    262144(%ecx,%eax,4), %ecx
-; DARWIN-32-DYNAMIC-NEXT:      movl    L_ptr$non_lazy_ptr, %edx
-; DARWIN-32-DYNAMIC-NEXT:      movl    (%edx), %edx
-; DARWIN-32-DYNAMIC-NEXT:      movl    %ecx, 262144(%edx,%eax,4)
+; DARWIN-32-DYNAMIC:   movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    L_src$non_lazy_ptr, [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    262144([[ECX]],[[EAX]],4), [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    L_ptr$non_lazy_ptr, [[EDX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    ([[EDX]]), [[EDX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    [[ECX]], 262144([[EDX]],[[EAX]],4)
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _big02:
-; DARWIN-32-PIC:       call    "L60$pb"
-; DARWIN-32-PIC-NEXT: "L60$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  movl    4(%esp), %ecx
-; DARWIN-32-PIC-NEXT:  movl    L_src$non_lazy_ptr-"L60$pb"(%eax), %edx
-; DARWIN-32-PIC-NEXT:  movl    262144(%edx,%ecx,4), %edx
-; DARWIN-32-PIC-NEXT:  movl    L_ptr$non_lazy_ptr-"L60$pb"(%eax), %eax
-; DARWIN-32-PIC-NEXT:  movl    (%eax), %eax
-; DARWIN-32-PIC-NEXT:  movl    %edx, 262144(%eax,%ecx,4)
+; DARWIN-32-PIC:       calll   L59$pb
+; DARWIN-32-PIC-NEXT: L59$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    L_src$non_lazy_ptr-L59$pb([[EAX]]), [[EDX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    262144([[EDX]],[[ECX]],4), [[EDX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    L_ptr$non_lazy_ptr-L59$pb([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    ([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    [[EDX]], 262144([[EAX]],[[ECX]],4)
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _big02:
-; DARWIN-64-STATIC:    movq    _src@GOTPCREL(%rip), %rax
-; DARWIN-64-STATIC-NEXT:       movl    262144(%rax,%rdi,4), %eax
-; DARWIN-64-STATIC-NEXT:       movq    _ptr@GOTPCREL(%rip), %rcx
-; DARWIN-64-STATIC-NEXT:       movq    (%rcx), %rcx
-; DARWIN-64-STATIC-NEXT:       movl    %eax, 262144(%rcx,%rdi,4)
+; DARWIN-64-STATIC:    movq    _src@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movl    262144([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-STATIC-NEXT:       movq    _ptr@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movq    ([[RCX]]), [[RCX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movl    [[EAX]], 262144([[RCX]],%rdi,4)
 ; DARWIN-64-STATIC-NEXT:       ret
 
 ; DARWIN-64-DYNAMIC: _big02:
-; DARWIN-64-DYNAMIC:   movq    _src@GOTPCREL(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT:      movl    262144(%rax,%rdi,4), %eax
-; DARWIN-64-DYNAMIC-NEXT:      movq    _ptr@GOTPCREL(%rip), %rcx
-; DARWIN-64-DYNAMIC-NEXT:      movq    (%rcx), %rcx
-; DARWIN-64-DYNAMIC-NEXT:      movl    %eax, 262144(%rcx,%rdi,4)
+; DARWIN-64-DYNAMIC:   movq    _src@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movl    262144([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movq    _ptr@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movq    ([[RCX]]), [[RCX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movl    [[EAX]], 262144([[RCX]],%rdi,4)
 ; DARWIN-64-DYNAMIC-NEXT:      ret
 
 ; DARWIN-64-PIC: _big02:
-; DARWIN-64-PIC:       movq    _src@GOTPCREL(%rip), %rax
-; DARWIN-64-PIC-NEXT:  movl    262144(%rax,%rdi,4), %eax
-; DARWIN-64-PIC-NEXT:  movq    _ptr@GOTPCREL(%rip), %rcx
-; DARWIN-64-PIC-NEXT:  movq    (%rcx), %rcx
-; DARWIN-64-PIC-NEXT:  movl    %eax, 262144(%rcx,%rdi,4)
+; DARWIN-64-PIC:       movq    _src@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movl    262144([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-PIC-NEXT:  movq    _ptr@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movq    ([[RCX]]), [[RCX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movl    [[EAX]], 262144([[RCX]],%rdi,4)
 ; DARWIN-64-PIC-NEXT:  ret
 }
 
 define void @big03(i64 %i) nounwind {
 entry:
        %0 = add i64 %i, 65536
-       %1 = getelementptr [131072 x i32]* @dsrc, i64 0, i64 %0
-       %2 = load i32* %1, align 4
-       %3 = getelementptr [131072 x i32]* @ddst, i64 0, i64 %0
+       %1 = getelementptr [131072 x i32], [131072 x i32]* @dsrc, i64 0, i64 %0
+       %2 = load i32, i32* %1, align 4
+       %3 = getelementptr [131072 x i32], [131072 x i32]* @ddst, i64 0, i64 %0
        store i32 %2, i32* %3, align 4
        ret void
-; LINUX-64-STATIC: big03:
-; LINUX-64-STATIC: movl    dsrc+262144(,%rdi,4), %eax
-; LINUX-64-STATIC: movl    %eax, ddst+262144(,%rdi,4)
+; LINUX-64-STATIC-LABEL: big03:
+; LINUX-64-STATIC: movl    dsrc+262144(,%rdi,4), [[EAX:%e.x]]
+; LINUX-64-STATIC: movl    [[EAX]], ddst+262144(,%rdi,4)
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: big03:
-; LINUX-32-STATIC:     movl    4(%esp), %eax
-; LINUX-32-STATIC-NEXT:        movl    dsrc+262144(,%eax,4), %ecx
-; LINUX-32-STATIC-NEXT:        movl    %ecx, ddst+262144(,%eax,4)
+; LINUX-32-STATIC-LABEL: big03:
+; LINUX-32-STATIC:     movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT:        movl    dsrc+262144(,[[EAX]],4), [[ECX:%e.x]]
+; LINUX-32-STATIC-NEXT:        movl    [[ECX]], ddst+262144(,[[EAX]],4)
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: big03:
-; LINUX-32-PIC:        movl    4(%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-LABEL: big03:
+; LINUX-32-PIC:        movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT:   movl    dsrc+262144(,[[EAX]],4), [[ECX:%e.x]]
+; LINUX-32-PIC-NEXT:   movl    [[ECX]], ddst+262144(,[[EAX]],4)
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: big03:
-; LINUX-64-PIC:        movq    dsrc@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT:   movl    262144(%rax,%rdi,4), %eax
-; LINUX-64-PIC-NEXT:   movq    ddst@GOTPCREL(%rip), %rcx
-; LINUX-64-PIC-NEXT:   movl    %eax, 262144(%rcx,%rdi,4)
+; LINUX-64-PIC-LABEL: big03:
+; LINUX-64-PIC:        movq    dsrc@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT:   movl    262144([[RAX]],%rdi,4), [[EAX:%e.x]]
+; LINUX-64-PIC-NEXT:   movq    ddst@GOTPCREL(%rip), [[RCX:%r.x]]
+; LINUX-64-PIC-NEXT:   movl    [[EAX]], 262144([[RCX]],%rdi,4)
 ; LINUX-64-PIC-NEXT:   ret
 
 ; DARWIN-32-STATIC: _big03:
-; DARWIN-32-STATIC:    movl    4(%esp), %eax
-; DARWIN-32-STATIC-NEXT:       movl    _dsrc+262144(,%eax,4), %ecx
-; DARWIN-32-STATIC-NEXT:       movl    %ecx, _ddst+262144(,%eax,4)
+; DARWIN-32-STATIC:    movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       movl    _dsrc+262144(,[[EAX]],4), [[ECX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       movl    [[ECX]], _ddst+262144(,[[EAX]],4)
 ; DARWIN-32-STATIC-NEXT:       ret
 
 ; DARWIN-32-DYNAMIC: _big03:
-; DARWIN-32-DYNAMIC:   movl    4(%esp), %eax
-; DARWIN-32-DYNAMIC-NEXT:      movl    _dsrc+262144(,%eax,4), %ecx
-; DARWIN-32-DYNAMIC-NEXT:      movl    %ecx, _ddst+262144(,%eax,4)
+; DARWIN-32-DYNAMIC:   movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    _dsrc+262144(,[[EAX]],4), [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    [[ECX]], _ddst+262144(,[[EAX]],4)
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _big03:
-; DARWIN-32-PIC:       call    "L61$pb"
-; DARWIN-32-PIC-NEXT: "L61$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  movl    4(%esp), %ecx
-; DARWIN-32-PIC-NEXT:  movl    _dsrc+262144-"L61$pb"(%eax,%ecx,4), %edx
-; DARWIN-32-PIC-NEXT:  movl    %edx, _ddst+262144-"L61$pb"(%eax,%ecx,4)
+; DARWIN-32-PIC:       calll   L60$pb
+; DARWIN-32-PIC-NEXT: L60$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    (_dsrc-L60$pb)+262144([[EAX]],[[ECX]],4), [[EDX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    [[EDX]], (_ddst-L60$pb)+262144([[EAX]],[[ECX]],4)
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _big03:
-; DARWIN-64-STATIC:    leaq    _dsrc(%rip), %rax
-; DARWIN-64-STATIC-NEXT:       movl    262144(%rax,%rdi,4), %eax
-; DARWIN-64-STATIC-NEXT:       leaq    _ddst(%rip), %rcx
-; DARWIN-64-STATIC-NEXT:       movl    %eax, 262144(%rcx,%rdi,4)
+; DARWIN-64-STATIC:    leaq    _dsrc(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movl    262144([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-STATIC-NEXT:       leaq    _ddst(%rip), [[RCX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movl    [[EAX]], 262144([[RCX]],%rdi,4)
 ; DARWIN-64-STATIC-NEXT:       ret
 
 ; DARWIN-64-DYNAMIC: _big03:
-; DARWIN-64-DYNAMIC:   leaq    _dsrc(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT:      movl    262144(%rax,%rdi,4), %eax
-; DARWIN-64-DYNAMIC-NEXT:      leaq    _ddst(%rip), %rcx
-; DARWIN-64-DYNAMIC-NEXT:      movl    %eax, 262144(%rcx,%rdi,4)
+; DARWIN-64-DYNAMIC:   leaq    _dsrc(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movl    262144([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-DYNAMIC-NEXT:      leaq    _ddst(%rip), [[RCX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movl    [[EAX]], 262144([[RCX]],%rdi,4)
 ; DARWIN-64-DYNAMIC-NEXT:      ret
 
 ; DARWIN-64-PIC: _big03:
-; DARWIN-64-PIC:       leaq    _dsrc(%rip), %rax
-; DARWIN-64-PIC-NEXT:  movl    262144(%rax,%rdi,4), %eax
-; DARWIN-64-PIC-NEXT:  leaq    _ddst(%rip), %rcx
-; DARWIN-64-PIC-NEXT:  movl    %eax, 262144(%rcx,%rdi,4)
+; DARWIN-64-PIC:       leaq    _dsrc(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movl    262144([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-PIC-NEXT:  leaq    _ddst(%rip), [[RCX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movl    [[EAX]], 262144([[RCX]],%rdi,4)
 ; DARWIN-64-PIC-NEXT:  ret
 }
 
 define void @big04(i64 %i) nounwind {
 entry:
        %.sum = add i64 %i, 65536
-       %0 = getelementptr [131072 x i32]* @ddst, i64 0, i64 %.sum
+       %0 = getelementptr [131072 x i32], [131072 x i32]* @ddst, i64 0, i64 %.sum
        store i32* %0, i32** @dptr, align 8
        ret void
-; LINUX-64-STATIC: big04:
-; LINUX-64-STATIC: leaq    ddst+262144(,%rdi,4), %rax
-; LINUX-64-STATIC: movq    %rax, dptr
+; LINUX-64-STATIC-LABEL: big04:
+; LINUX-64-STATIC: leaq    ddst+262144(,%rdi,4), [[RAX:%r.x]]
+; LINUX-64-STATIC: movq    [[RAX]], dptr
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: big04:
-; LINUX-32-STATIC:     movl    4(%esp), %eax
-; LINUX-32-STATIC-NEXT:        leal    ddst+262144(,%eax,4), %eax
-; LINUX-32-STATIC-NEXT:        movl    %eax, dptr
+; LINUX-32-STATIC-LABEL: big04:
+; LINUX-32-STATIC:     movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT:        leal    ddst+262144(,[[EAX]],4), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT:        movl    [[EAX]], dptr
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: big04:
-; LINUX-32-PIC:        movl    4(%esp), %eax
-; LINUX-32-PIC-NEXT:   leal    ddst+262144(,%eax,4), %eax
-; LINUX-32-PIC-NEXT:   movl    %eax, dptr
+; LINUX-32-PIC-LABEL: big04:
+; LINUX-32-PIC:        movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT:   leal    ddst+262144(,[[EAX]],4), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT:   movl    [[EAX]], dptr
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: big04:
-; LINUX-64-PIC:        movq    ddst@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT:   leaq    262144(%rax,%rdi,4), %rax
-; LINUX-64-PIC-NEXT:   movq    dptr@GOTPCREL(%rip), %rcx
-; LINUX-64-PIC-NEXT:   movq    %rax, (%rcx)
+; LINUX-64-PIC-LABEL: big04:
+; LINUX-64-PIC:        movq    ddst@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT:   leaq    262144([[RAX]],%rdi,4), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT:   movq    dptr@GOTPCREL(%rip), [[RCX:%r.x]]
+; LINUX-64-PIC-NEXT:   movq    [[RAX]], ([[RCX]])
 ; LINUX-64-PIC-NEXT:   ret
 
 ; DARWIN-32-STATIC: _big04:
-; DARWIN-32-STATIC:    movl    4(%esp), %eax
-; DARWIN-32-STATIC-NEXT:       leal    _ddst+262144(,%eax,4), %eax
-; DARWIN-32-STATIC-NEXT:       movl    %eax, _dptr
+; DARWIN-32-STATIC:    movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       leal    _ddst+262144(,[[EAX]],4), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       movl    [[EAX]], _dptr
 ; DARWIN-32-STATIC-NEXT:       ret
 
 ; DARWIN-32-DYNAMIC: _big04:
-; DARWIN-32-DYNAMIC:   movl    4(%esp), %eax
-; DARWIN-32-DYNAMIC-NEXT:      leal    _ddst+262144(,%eax,4), %eax
-; DARWIN-32-DYNAMIC-NEXT:      movl    %eax, _dptr
+; DARWIN-32-DYNAMIC:   movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      leal    _ddst+262144(,[[EAX]],4), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    [[EAX]], _dptr
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _big04:
-; DARWIN-32-PIC:       call    "L62$pb"
-; DARWIN-32-PIC-NEXT: "L62$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  movl    4(%esp), %ecx
-; DARWIN-32-PIC-NEXT:  leal    _ddst+262144-"L62$pb"(%eax,%ecx,4), %ecx
-; DARWIN-32-PIC-NEXT:  movl    %ecx, _dptr-"L62$pb"(%eax)
+; DARWIN-32-PIC:       calll   L61$pb
+; DARWIN-32-PIC-NEXT: L61$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  leal    (_ddst-L61$pb)+262144([[EAX]],[[ECX]],4), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    [[ECX]], _dptr-L61$pb([[EAX]])
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _big04:
-; DARWIN-64-STATIC:    leaq    _ddst(%rip), %rax
-; DARWIN-64-STATIC-NEXT:       leaq    262144(%rax,%rdi,4), %rax
-; DARWIN-64-STATIC-NEXT:       movq    %rax, _dptr(%rip)
+; DARWIN-64-STATIC:    leaq    _ddst(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       leaq    262144([[RAX]],%rdi,4), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movq    [[RAX]], _dptr(%rip)
 ; DARWIN-64-STATIC-NEXT:       ret
 
 ; DARWIN-64-DYNAMIC: _big04:
-; DARWIN-64-DYNAMIC:   leaq    _ddst(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT:      leaq    262144(%rax,%rdi,4), %rax
-; DARWIN-64-DYNAMIC-NEXT:      movq    %rax, _dptr(%rip)
+; DARWIN-64-DYNAMIC:   leaq    _ddst(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      leaq    262144([[RAX]],%rdi,4), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movq    [[RAX]], _dptr(%rip)
 ; DARWIN-64-DYNAMIC-NEXT:      ret
 
 ; DARWIN-64-PIC: _big04:
-; DARWIN-64-PIC:       leaq    _ddst(%rip), %rax
-; DARWIN-64-PIC-NEXT:  leaq    262144(%rax,%rdi,4), %rax
-; DARWIN-64-PIC-NEXT:  movq    %rax, _dptr(%rip)
+; DARWIN-64-PIC:       leaq    _ddst(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT:  leaq    262144([[RAX]],%rdi,4), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movq    [[RAX]], _dptr(%rip)
 ; DARWIN-64-PIC-NEXT:  ret
 }
 
 define void @big05(i64 %i) nounwind {
 entry:
-       %0 = load i32** @dptr, align 8
+       %0 = load i32*, i32** @dptr, align 8
        %1 = add i64 %i, 65536
-       %2 = getelementptr [131072 x i32]* @dsrc, i64 0, i64 %1
-       %3 = load i32* %2, align 4
-       %4 = getelementptr i32* %0, i64 %1
+       %2 = getelementptr [131072 x i32], [131072 x i32]* @dsrc, i64 0, i64 %1
+       %3 = load i32, i32* %2, align 4
+       %4 = getelementptr i32, i32* %0, i64 %1
        store i32 %3, i32* %4, align 4
        ret void
-; LINUX-64-STATIC: big05:
-; LINUX-64-STATIC: movl    dsrc+262144(,%rdi,4), %eax
-; LINUX-64-STATIC: movq    dptr(%rip), %rcx
-; LINUX-64-STATIC: movl    %eax, 262144(%rcx,%rdi,4)
+; LINUX-64-STATIC-LABEL: big05:
+; LINUX-64-STATIC: movl    dsrc+262144(,%rdi,4), [[EAX:%e.x]]
+; LINUX-64-STATIC: movq    dptr(%rip), [[RCX:%r.x]]
+; LINUX-64-STATIC: movl    [[EAX]], 262144([[RCX]],%rdi,4)
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: big05:
-; LINUX-32-STATIC:     movl    4(%esp), %eax
-; LINUX-32-STATIC-NEXT:        movl    dsrc+262144(,%eax,4), %ecx
-; LINUX-32-STATIC-NEXT:        movl    dptr, %edx
-; LINUX-32-STATIC-NEXT:        movl    %ecx, 262144(%edx,%eax,4)
+; LINUX-32-STATIC-LABEL: big05:
+; LINUX-32-STATIC:     movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT:        movl    dsrc+262144(,[[EAX]],4), [[ECX:%e.x]]
+; LINUX-32-STATIC-NEXT:        movl    dptr, [[EDX:%e.x]]
+; LINUX-32-STATIC-NEXT:        movl    [[ECX]], 262144([[EDX]],[[EAX]],4)
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: big05:
-; LINUX-32-PIC:        movl    4(%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-LABEL: big05:
+; LINUX-32-PIC:        movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT:   movl    dsrc+262144(,[[EAX]],4), [[ECX:%e.x]]
+; LINUX-32-PIC-NEXT:   movl    dptr, [[EDX:%e.x]]
+; LINUX-32-PIC-NEXT:   movl    [[ECX]], 262144([[EDX]],[[EAX]],4)
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: big05:
-; LINUX-64-PIC:        movq    dsrc@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT:   movl    262144(%rax,%rdi,4), %eax
-; LINUX-64-PIC-NEXT:   movq    dptr@GOTPCREL(%rip), %rcx
-; LINUX-64-PIC-NEXT:   movq    (%rcx), %rcx
-; LINUX-64-PIC-NEXT:   movl    %eax, 262144(%rcx,%rdi,4)
+; LINUX-64-PIC-LABEL: big05:
+; LINUX-64-PIC:        movq    dsrc@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT:   movl    262144([[RAX]],%rdi,4), [[EAX:%e.x]]
+; LINUX-64-PIC-NEXT:   movq    dptr@GOTPCREL(%rip), [[RCX:%r.x]]
+; LINUX-64-PIC-NEXT:   movq    ([[RCX]]), [[RCX:%r.x]]
+; LINUX-64-PIC-NEXT:   movl    [[EAX]], 262144([[RCX]],%rdi,4)
 ; LINUX-64-PIC-NEXT:   ret
 
 ; DARWIN-32-STATIC: _big05:
-; DARWIN-32-STATIC:    movl    4(%esp), %eax
-; DARWIN-32-STATIC-NEXT:       movl    _dsrc+262144(,%eax,4), %ecx
-; DARWIN-32-STATIC-NEXT:       movl    _dptr, %edx
-; DARWIN-32-STATIC-NEXT:       movl    %ecx, 262144(%edx,%eax,4)
+; DARWIN-32-STATIC:    movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       movl    _dsrc+262144(,[[EAX]],4), [[ECX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       movl    _dptr, [[EDX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       movl    [[ECX]], 262144([[EDX]],[[EAX]],4)
 ; DARWIN-32-STATIC-NEXT:       ret
 
 ; DARWIN-32-DYNAMIC: _big05:
-; DARWIN-32-DYNAMIC:   movl    4(%esp), %eax
-; DARWIN-32-DYNAMIC-NEXT:      movl    _dsrc+262144(,%eax,4), %ecx
-; DARWIN-32-DYNAMIC-NEXT:      movl    _dptr, %edx
-; DARWIN-32-DYNAMIC-NEXT:      movl    %ecx, 262144(%edx,%eax,4)
+; DARWIN-32-DYNAMIC:   movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    _dsrc+262144(,[[EAX]],4), [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    _dptr, [[EDX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    [[ECX]], 262144([[EDX]],[[EAX]],4)
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _big05:
-; DARWIN-32-PIC:       call    "L63$pb"
-; DARWIN-32-PIC-NEXT: "L63$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  movl    4(%esp), %ecx
-; DARWIN-32-PIC-NEXT:  movl    _dsrc+262144-"L63$pb"(%eax,%ecx,4), %edx
-; DARWIN-32-PIC-NEXT:  movl    _dptr-"L63$pb"(%eax), %eax
-; DARWIN-32-PIC-NEXT:  movl    %edx, 262144(%eax,%ecx,4)
+; DARWIN-32-PIC:       calll   L62$pb
+; DARWIN-32-PIC-NEXT: L62$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    (_dsrc-L62$pb)+262144([[EAX]],[[ECX]],4), [[EDX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    _dptr-L62$pb([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    [[EDX]], 262144([[EAX]],[[ECX]],4)
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _big05:
-; DARWIN-64-STATIC:    leaq    _dsrc(%rip), %rax
-; DARWIN-64-STATIC-NEXT:       movl    262144(%rax,%rdi,4), %eax
-; DARWIN-64-STATIC-NEXT:       movq    _dptr(%rip), %rcx
-; DARWIN-64-STATIC-NEXT:       movl    %eax, 262144(%rcx,%rdi,4)
+; DARWIN-64-STATIC:    leaq    _dsrc(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movl    262144([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-STATIC-NEXT:       movq    _dptr(%rip), [[RCX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movl    [[EAX]], 262144([[RCX]],%rdi,4)
 ; DARWIN-64-STATIC-NEXT:       ret
 
 ; DARWIN-64-DYNAMIC: _big05:
-; DARWIN-64-DYNAMIC:   leaq    _dsrc(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT:      movl    262144(%rax,%rdi,4), %eax
-; DARWIN-64-DYNAMIC-NEXT:      movq    _dptr(%rip), %rcx
-; DARWIN-64-DYNAMIC-NEXT:      movl    %eax, 262144(%rcx,%rdi,4)
+; DARWIN-64-DYNAMIC:   leaq    _dsrc(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movl    262144([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movq    _dptr(%rip), [[RCX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movl    [[EAX]], 262144([[RCX]],%rdi,4)
 ; DARWIN-64-DYNAMIC-NEXT:      ret
 
 ; DARWIN-64-PIC: _big05:
-; DARWIN-64-PIC:       leaq    _dsrc(%rip), %rax
-; DARWIN-64-PIC-NEXT:  movl    262144(%rax,%rdi,4), %eax
-; DARWIN-64-PIC-NEXT:  movq    _dptr(%rip), %rcx
-; DARWIN-64-PIC-NEXT:  movl    %eax, 262144(%rcx,%rdi,4)
+; DARWIN-64-PIC:       leaq    _dsrc(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movl    262144([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-PIC-NEXT:  movq    _dptr(%rip), [[RCX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movl    [[EAX]], 262144([[RCX]],%rdi,4)
 ; DARWIN-64-PIC-NEXT:  ret
 }
 
 define void @big06(i64 %i) nounwind {
 entry:
        %0 = add i64 %i, 65536
-       %1 = getelementptr [131072 x i32]* @lsrc, i64 0, i64 %0
-       %2 = load i32* %1, align 4
-       %3 = getelementptr [131072 x i32]* @ldst, i64 0, i64 %0
+       %1 = getelementptr [131072 x i32], [131072 x i32]* @lsrc, i64 0, i64 %0
+       %2 = load i32, i32* %1, align 4
+       %3 = getelementptr [131072 x i32], [131072 x i32]* @ldst, i64 0, i64 %0
        store i32 %2, i32* %3, align 4
        ret void
-; LINUX-64-STATIC: big06:
-; LINUX-64-STATIC: movl    lsrc+262144(,%rdi,4), %eax
-; LINUX-64-STATIC: movl    %eax, ldst+262144(,%rdi,4)
+; LINUX-64-STATIC-LABEL: big06:
+; LINUX-64-STATIC: movl    lsrc+262144(,%rdi,4), [[EAX:%e.x]]
+; LINUX-64-STATIC: movl    [[EAX]], ldst+262144(,%rdi,4)
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: big06:
-; LINUX-32-STATIC:     movl    4(%esp), %eax
-; LINUX-32-STATIC-NEXT:        movl    lsrc+262144(,%eax,4), %ecx
-; LINUX-32-STATIC-NEXT:        movl    %ecx, ldst+262144(,%eax,4)
+; LINUX-32-STATIC-LABEL: big06:
+; LINUX-32-STATIC:     movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT:        movl    lsrc+262144(,[[EAX]],4), [[ECX:%e.x]]
+; LINUX-32-STATIC-NEXT:        movl    [[ECX]], ldst+262144(,[[EAX]],4)
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: big06:
-; LINUX-32-PIC:        movl    4(%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-LABEL: big06:
+; LINUX-32-PIC:        movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT:   movl    lsrc+262144(,[[EAX]],4), [[ECX:%e.x]]
+; LINUX-32-PIC-NEXT:   movl    [[ECX]], ldst+262144(,[[EAX]],4)
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: big06:
-; LINUX-64-PIC:        leaq    lsrc(%rip), %rax
-; LINUX-64-PIC-NEXT:   movl    262144(%rax,%rdi,4), %eax
-; LINUX-64-PIC-NEXT:   leaq    ldst(%rip), %rcx
-; LINUX-64-PIC-NEXT:   movl    %eax, 262144(%rcx,%rdi,4)
+; LINUX-64-PIC-LABEL: big06:
+; LINUX-64-PIC:        leaq    lsrc(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT:   movl    262144([[RAX]],%rdi,4), [[EAX:%e.x]]
+; LINUX-64-PIC-NEXT:   leaq    ldst(%rip), [[RCX:%r.x]]
+; LINUX-64-PIC-NEXT:   movl    [[EAX]], 262144([[RCX]],%rdi,4)
 ; LINUX-64-PIC-NEXT:   ret
 
 ; DARWIN-32-STATIC: _big06:
-; DARWIN-32-STATIC:    movl    4(%esp), %eax
-; DARWIN-32-STATIC-NEXT:       movl    _lsrc+262144(,%eax,4), %ecx
-; DARWIN-32-STATIC-NEXT:       movl    %ecx, _ldst+262144(,%eax,4)
+; DARWIN-32-STATIC:    movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       movl    _lsrc+262144(,[[EAX]],4), [[ECX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       movl    [[ECX]], _ldst+262144(,[[EAX]],4)
 ; DARWIN-32-STATIC-NEXT:       ret
 
 ; DARWIN-32-DYNAMIC: _big06:
-; DARWIN-32-DYNAMIC:   movl    4(%esp), %eax
-; DARWIN-32-DYNAMIC-NEXT:      movl    _lsrc+262144(,%eax,4), %ecx
-; DARWIN-32-DYNAMIC-NEXT:      movl    %ecx, _ldst+262144(,%eax,4)
+; DARWIN-32-DYNAMIC:   movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    _lsrc+262144(,[[EAX]],4), [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    [[ECX]], _ldst+262144(,[[EAX]],4)
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _big06:
-; DARWIN-32-PIC:       call    "L64$pb"
-; DARWIN-32-PIC-NEXT: "L64$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  movl    4(%esp), %ecx
-; DARWIN-32-PIC-NEXT:  movl    _lsrc+262144-"L64$pb"(%eax,%ecx,4), %edx
-; DARWIN-32-PIC-NEXT:  movl    %edx, _ldst+262144-"L64$pb"(%eax,%ecx,4)
+; DARWIN-32-PIC:       calll   L63$pb
+; DARWIN-32-PIC-NEXT: L63$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    (_lsrc-L63$pb)+262144([[EAX]],[[ECX]],4), [[EDX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    [[EDX]], (_ldst-L63$pb)+262144([[EAX]],[[ECX]],4)
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _big06:
-; DARWIN-64-STATIC:    leaq    _lsrc(%rip), %rax
-; DARWIN-64-STATIC-NEXT:       movl    262144(%rax,%rdi,4), %eax
-; DARWIN-64-STATIC-NEXT:       leaq    _ldst(%rip), %rcx
-; DARWIN-64-STATIC-NEXT:       movl    %eax, 262144(%rcx,%rdi,4)
+; DARWIN-64-STATIC:    leaq    _lsrc(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movl    262144([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-STATIC-NEXT:       leaq    _ldst(%rip), [[RCX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movl    [[EAX]], 262144([[RCX]],%rdi,4)
 ; DARWIN-64-STATIC-NEXT:       ret
 
 ; DARWIN-64-DYNAMIC: _big06:
-; DARWIN-64-DYNAMIC:   leaq    _lsrc(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT:      movl    262144(%rax,%rdi,4), %eax
-; DARWIN-64-DYNAMIC-NEXT:      leaq    _ldst(%rip), %rcx
-; DARWIN-64-DYNAMIC-NEXT:      movl    %eax, 262144(%rcx,%rdi,4)
+; DARWIN-64-DYNAMIC:   leaq    _lsrc(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movl    262144([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-DYNAMIC-NEXT:      leaq    _ldst(%rip), [[RCX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movl    [[EAX]], 262144([[RCX]],%rdi,4)
 ; DARWIN-64-DYNAMIC-NEXT:      ret
 
 ; DARWIN-64-PIC: _big06:
-; DARWIN-64-PIC:       leaq    _lsrc(%rip), %rax
-; DARWIN-64-PIC-NEXT:  movl    262144(%rax,%rdi,4), %eax
-; DARWIN-64-PIC-NEXT:  leaq    _ldst(%rip), %rcx
-; DARWIN-64-PIC-NEXT:  movl    %eax, 262144(%rcx,%rdi,4)
+; DARWIN-64-PIC:       leaq    _lsrc(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movl    262144([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-PIC-NEXT:  leaq    _ldst(%rip), [[RCX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movl    [[EAX]], 262144([[RCX]],%rdi,4)
 ; DARWIN-64-PIC-NEXT:  ret
 }
 
 define void @big07(i64 %i) nounwind {
 entry:
        %.sum = add i64 %i, 65536
-       %0 = getelementptr [131072 x i32]* @ldst, i64 0, i64 %.sum
+       %0 = getelementptr [131072 x i32], [131072 x i32]* @ldst, i64 0, i64 %.sum
        store i32* %0, i32** @lptr, align 8
        ret void
-; LINUX-64-STATIC: big07:
-; LINUX-64-STATIC: leaq    ldst+262144(,%rdi,4), %rax
-; LINUX-64-STATIC: movq    %rax, lptr
+; LINUX-64-STATIC-LABEL: big07:
+; LINUX-64-STATIC: leaq    ldst+262144(,%rdi,4), [[RAX:%r.x]]
+; LINUX-64-STATIC: movq    [[RAX]], lptr
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: big07:
-; LINUX-32-STATIC:     movl    4(%esp), %eax
-; LINUX-32-STATIC-NEXT:        leal    ldst+262144(,%eax,4), %eax
-; LINUX-32-STATIC-NEXT:        movl    %eax, lptr
+; LINUX-32-STATIC-LABEL: big07:
+; LINUX-32-STATIC:     movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT:        leal    ldst+262144(,[[EAX]],4), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT:        movl    [[EAX]], lptr
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: big07:
-; LINUX-32-PIC:        movl    4(%esp), %eax
-; LINUX-32-PIC-NEXT:   leal    ldst+262144(,%eax,4), %eax
-; LINUX-32-PIC-NEXT:   movl    %eax, lptr
+; LINUX-32-PIC-LABEL: big07:
+; LINUX-32-PIC:        movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT:   leal    ldst+262144(,[[EAX]],4), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT:   movl    [[EAX]], lptr
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: big07:
-; LINUX-64-PIC:        leaq    ldst(%rip), %rax
-; LINUX-64-PIC-NEXT:   leaq    262144(%rax,%rdi,4), %rax
-; LINUX-64-PIC-NEXT:   movq    %rax, lptr(%rip)
+; LINUX-64-PIC-LABEL: big07:
+; LINUX-64-PIC:        leaq    ldst(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT:   leaq    262144([[RAX]],%rdi,4), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT:   movq    [[RAX]], lptr(%rip)
 ; LINUX-64-PIC-NEXT:   ret
 
 ; DARWIN-32-STATIC: _big07:
-; DARWIN-32-STATIC:    movl    4(%esp), %eax
-; DARWIN-32-STATIC-NEXT:       leal    _ldst+262144(,%eax,4), %eax
-; DARWIN-32-STATIC-NEXT:       movl    %eax, _lptr
+; DARWIN-32-STATIC:    movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       leal    _ldst+262144(,[[EAX]],4), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       movl    [[EAX]], _lptr
 ; DARWIN-32-STATIC-NEXT:       ret
 
 ; DARWIN-32-DYNAMIC: _big07:
-; DARWIN-32-DYNAMIC:   movl    4(%esp), %eax
-; DARWIN-32-DYNAMIC-NEXT:      leal    _ldst+262144(,%eax,4), %eax
-; DARWIN-32-DYNAMIC-NEXT:      movl    %eax, _lptr
+; DARWIN-32-DYNAMIC:   movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      leal    _ldst+262144(,[[EAX]],4), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    [[EAX]], _lptr
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _big07:
-; DARWIN-32-PIC:       call    "L65$pb"
-; DARWIN-32-PIC-NEXT: "L65$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  movl    4(%esp), %ecx
-; DARWIN-32-PIC-NEXT:  leal    _ldst+262144-"L65$pb"(%eax,%ecx,4), %ecx
-; DARWIN-32-PIC-NEXT:  movl    %ecx, _lptr-"L65$pb"(%eax)
+; DARWIN-32-PIC:       calll   L64$pb
+; DARWIN-32-PIC-NEXT: L64$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  leal    (_ldst-L64$pb)+262144([[EAX]],[[ECX]],4), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    [[ECX]], _lptr-L64$pb([[EAX]])
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _big07:
-; DARWIN-64-STATIC:    leaq    _ldst(%rip), %rax
-; DARWIN-64-STATIC-NEXT:       leaq    262144(%rax,%rdi,4), %rax
-; DARWIN-64-STATIC-NEXT:       movq    %rax, _lptr(%rip)
+; DARWIN-64-STATIC:    leaq    _ldst(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       leaq    262144([[RAX]],%rdi,4), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movq    [[RAX]], _lptr(%rip)
 ; DARWIN-64-STATIC-NEXT:       ret
 
 ; DARWIN-64-DYNAMIC: _big07:
-; DARWIN-64-DYNAMIC:   leaq    _ldst(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT:      leaq    262144(%rax,%rdi,4), %rax
-; DARWIN-64-DYNAMIC-NEXT:      movq    %rax, _lptr(%rip)
+; DARWIN-64-DYNAMIC:   leaq    _ldst(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      leaq    262144([[RAX]],%rdi,4), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movq    [[RAX]], _lptr(%rip)
 ; DARWIN-64-DYNAMIC-NEXT:      ret
 
 ; DARWIN-64-PIC: _big07:
-; DARWIN-64-PIC:       leaq    _ldst(%rip), %rax
-; DARWIN-64-PIC-NEXT:  leaq    262144(%rax,%rdi,4), %rax
-; DARWIN-64-PIC-NEXT:  movq    %rax, _lptr(%rip)
+; DARWIN-64-PIC:       leaq    _ldst(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT:  leaq    262144([[RAX]],%rdi,4), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movq    [[RAX]], _lptr(%rip)
 ; DARWIN-64-PIC-NEXT:  ret
 }
 
 define void @big08(i64 %i) nounwind {
 entry:
-       %0 = load i32** @lptr, align 8
+       %0 = load i32*, i32** @lptr, align 8
        %1 = add i64 %i, 65536
-       %2 = getelementptr [131072 x i32]* @lsrc, i64 0, i64 %1
-       %3 = load i32* %2, align 4
-       %4 = getelementptr i32* %0, i64 %1
+       %2 = getelementptr [131072 x i32], [131072 x i32]* @lsrc, i64 0, i64 %1
+       %3 = load i32, i32* %2, align 4
+       %4 = getelementptr i32, i32* %0, i64 %1
        store i32 %3, i32* %4, align 4
        ret void
-; LINUX-64-STATIC: big08:
-; LINUX-64-STATIC: movl    lsrc+262144(,%rdi,4), %eax
-; LINUX-64-STATIC: movq    lptr(%rip), %rcx
-; LINUX-64-STATIC: movl    %eax, 262144(%rcx,%rdi,4)
+; LINUX-64-STATIC-LABEL: big08:
+; LINUX-64-STATIC: movl    lsrc+262144(,%rdi,4), [[EAX:%e.x]]
+; LINUX-64-STATIC: movq    lptr(%rip), [[RCX:%r.x]]
+; LINUX-64-STATIC: movl    [[EAX]], 262144([[RCX]],%rdi,4)
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: big08:
-; LINUX-32-STATIC:     movl    4(%esp), %eax
-; LINUX-32-STATIC-NEXT:        movl    lsrc+262144(,%eax,4), %ecx
-; LINUX-32-STATIC-NEXT:        movl    lptr, %edx
-; LINUX-32-STATIC-NEXT:        movl    %ecx, 262144(%edx,%eax,4)
+; LINUX-32-STATIC-LABEL: big08:
+; LINUX-32-STATIC:     movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT:        movl    lsrc+262144(,[[EAX]],4), [[ECX:%e.x]]
+; LINUX-32-STATIC-NEXT:        movl    lptr, [[EDX:%e.x]]
+; LINUX-32-STATIC-NEXT:        movl    [[ECX]], 262144([[EDX]],[[EAX]],4)
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: big08:
-; LINUX-32-PIC:        movl    4(%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-LABEL: big08:
+; LINUX-32-PIC:        movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT:   movl    lsrc+262144(,[[EAX]],4), [[ECX:%e.x]]
+; LINUX-32-PIC-NEXT:   movl    lptr, [[EDX:%e.x]]
+; LINUX-32-PIC-NEXT:   movl    [[ECX]], 262144([[EDX]],[[EAX]],4)
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: big08:
-; LINUX-64-PIC:        leaq    lsrc(%rip), %rax
-; LINUX-64-PIC-NEXT:   movl    262144(%rax,%rdi,4), %eax
-; LINUX-64-PIC-NEXT:   movq    lptr(%rip), %rcx
-; LINUX-64-PIC-NEXT:   movl    %eax, 262144(%rcx,%rdi,4)
+; LINUX-64-PIC-LABEL: big08:
+; LINUX-64-PIC:        leaq    lsrc(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT:   movl    262144([[RAX]],%rdi,4), [[EAX:%e.x]]
+; LINUX-64-PIC-NEXT:   movq    lptr(%rip), [[RCX:%r.x]]
+; LINUX-64-PIC-NEXT:   movl    [[EAX]], 262144([[RCX]],%rdi,4)
 ; LINUX-64-PIC-NEXT:   ret
 
 ; DARWIN-32-STATIC: _big08:
-; DARWIN-32-STATIC:    movl    4(%esp), %eax
-; DARWIN-32-STATIC-NEXT:       movl    _lsrc+262144(,%eax,4), %ecx
-; DARWIN-32-STATIC-NEXT:       movl    _lptr, %edx
-; DARWIN-32-STATIC-NEXT:       movl    %ecx, 262144(%edx,%eax,4)
+; DARWIN-32-STATIC:    movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       movl    _lsrc+262144(,[[EAX]],4), [[ECX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       movl    _lptr, [[EDX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       movl    [[ECX]], 262144([[EDX]],[[EAX]],4)
 ; DARWIN-32-STATIC-NEXT:       ret
 
 ; DARWIN-32-DYNAMIC: _big08:
-; DARWIN-32-DYNAMIC:   movl    4(%esp), %eax
-; DARWIN-32-DYNAMIC-NEXT:      movl    _lsrc+262144(,%eax,4), %ecx
-; DARWIN-32-DYNAMIC-NEXT:      movl    _lptr, %edx
-; DARWIN-32-DYNAMIC-NEXT:      movl    %ecx, 262144(%edx,%eax,4)
+; DARWIN-32-DYNAMIC:   movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    _lsrc+262144(,[[EAX]],4), [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    _lptr, [[EDX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    [[ECX]], 262144([[EDX]],[[EAX]],4)
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _big08:
-; DARWIN-32-PIC:       call    "L66$pb"
-; DARWIN-32-PIC-NEXT: "L66$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  movl    4(%esp), %ecx
-; DARWIN-32-PIC-NEXT:  movl    _lsrc+262144-"L66$pb"(%eax,%ecx,4), %edx
-; DARWIN-32-PIC-NEXT:  movl    _lptr-"L66$pb"(%eax), %eax
-; DARWIN-32-PIC-NEXT:  movl    %edx, 262144(%eax,%ecx,4)
+; DARWIN-32-PIC:       calll   L65$pb
+; DARWIN-32-PIC-NEXT: L65$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    (_lsrc-L65$pb)+262144([[EAX]],[[ECX]],4), [[EDX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    _lptr-L65$pb([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    [[EDX]], 262144([[EAX]],[[ECX]],4)
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _big08:
-; DARWIN-64-STATIC:    leaq    _lsrc(%rip), %rax
-; DARWIN-64-STATIC-NEXT:       movl    262144(%rax,%rdi,4), %eax
-; DARWIN-64-STATIC-NEXT:       movq    _lptr(%rip), %rcx
-; DARWIN-64-STATIC-NEXT:       movl    %eax, 262144(%rcx,%rdi,4)
+; DARWIN-64-STATIC:    leaq    _lsrc(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movl    262144([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-STATIC-NEXT:       movq    _lptr(%rip), [[RCX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movl    [[EAX]], 262144([[RCX]],%rdi,4)
 ; DARWIN-64-STATIC-NEXT:       ret
 
 ; DARWIN-64-DYNAMIC: _big08:
-; DARWIN-64-DYNAMIC:   leaq    _lsrc(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT:      movl    262144(%rax,%rdi,4), %eax
-; DARWIN-64-DYNAMIC-NEXT:      movq    _lptr(%rip), %rcx
-; DARWIN-64-DYNAMIC-NEXT:      movl    %eax, 262144(%rcx,%rdi,4)
+; DARWIN-64-DYNAMIC:   leaq    _lsrc(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movl    262144([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movq    _lptr(%rip), [[RCX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movl    [[EAX]], 262144([[RCX]],%rdi,4)
 ; DARWIN-64-DYNAMIC-NEXT:      ret
 
 ; DARWIN-64-PIC: _big08:
-; DARWIN-64-PIC:       leaq    _lsrc(%rip), %rax
-; DARWIN-64-PIC-NEXT:  movl    262144(%rax,%rdi,4), %eax
-; DARWIN-64-PIC-NEXT:  movq    _lptr(%rip), %rcx
-; DARWIN-64-PIC-NEXT:  movl    %eax, 262144(%rcx,%rdi,4)
+; DARWIN-64-PIC:       leaq    _lsrc(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movl    262144([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-PIC-NEXT:  movq    _lptr(%rip), [[RCX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movl    [[EAX]], 262144([[RCX]],%rdi,4)
 ; DARWIN-64-PIC-NEXT:  ret
 }
 
 define i8* @bar00() nounwind {
 entry:
        ret i8* bitcast ([131072 x i32]* @src to i8*)
-; LINUX-64-STATIC: bar00:
+; LINUX-64-STATIC-LABEL: bar00:
 ; LINUX-64-STATIC: movl    $src, %eax
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: bar00:
+; LINUX-32-STATIC-LABEL: bar00:
 ; LINUX-32-STATIC:     movl    $src, %eax
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: bar00:
+; LINUX-32-PIC-LABEL: bar00:
 ; LINUX-32-PIC:        movl    $src, %eax
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: bar00:
+; LINUX-64-PIC-LABEL: bar00:
 ; LINUX-64-PIC:        movq    src@GOTPCREL(%rip), %rax
 ; LINUX-64-PIC-NEXT:   ret
 
@@ -4840,10 +4840,10 @@ entry:
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _bar00:
-; DARWIN-32-PIC:       call    "L67$pb"
-; DARWIN-32-PIC-NEXT: "L67$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  movl    L_src$non_lazy_ptr-"L67$pb"(%eax), %eax
+; DARWIN-32-PIC:       calll   L66$pb
+; DARWIN-32-PIC-NEXT: L66$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    L_src$non_lazy_ptr-L66$pb([[EAX]]), %eax
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _bar00:
@@ -4862,19 +4862,19 @@ entry:
 define i8* @bxr00() nounwind {
 entry:
        ret i8* bitcast ([32 x i32]* @xsrc to i8*)
-; LINUX-64-STATIC: bxr00:
+; LINUX-64-STATIC-LABEL: bxr00:
 ; LINUX-64-STATIC: movl    $xsrc, %eax
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: bxr00:
+; LINUX-32-STATIC-LABEL: bxr00:
 ; LINUX-32-STATIC:     movl    $xsrc, %eax
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: bxr00:
+; LINUX-32-PIC-LABEL: bxr00:
 ; LINUX-32-PIC:        movl    $xsrc, %eax
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: bxr00:
+; LINUX-64-PIC-LABEL: bxr00:
 ; LINUX-64-PIC:        movq    xsrc@GOTPCREL(%rip), %rax
 ; LINUX-64-PIC-NEXT:   ret
 
@@ -4887,10 +4887,10 @@ entry:
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _bxr00:
-; DARWIN-32-PIC:       call    "L68$pb"
-; DARWIN-32-PIC-NEXT: "L68$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  movl    L_xsrc$non_lazy_ptr-"L68$pb"(%eax), %eax
+; DARWIN-32-PIC:       calll   L67$pb
+; DARWIN-32-PIC-NEXT: L67$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    L_xsrc$non_lazy_ptr-L67$pb([[EAX]]), %eax
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _bxr00:
@@ -4909,19 +4909,19 @@ entry:
 define i8* @bar01() nounwind {
 entry:
        ret i8* bitcast ([131072 x i32]* @dst to i8*)
-; LINUX-64-STATIC: bar01:
+; LINUX-64-STATIC-LABEL: bar01:
 ; LINUX-64-STATIC: movl    $dst, %eax
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: bar01:
+; LINUX-32-STATIC-LABEL: bar01:
 ; LINUX-32-STATIC:     movl    $dst, %eax
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: bar01:
+; LINUX-32-PIC-LABEL: bar01:
 ; LINUX-32-PIC:        movl    $dst, %eax
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: bar01:
+; LINUX-64-PIC-LABEL: bar01:
 ; LINUX-64-PIC:        movq    dst@GOTPCREL(%rip), %rax
 ; LINUX-64-PIC-NEXT:   ret
 
@@ -4934,10 +4934,10 @@ entry:
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _bar01:
-; DARWIN-32-PIC:       call    "L69$pb"
-; DARWIN-32-PIC-NEXT: "L69$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  movl    L_dst$non_lazy_ptr-"L69$pb"(%eax), %eax
+; DARWIN-32-PIC:       calll   L68$pb
+; DARWIN-32-PIC-NEXT: L68$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    L_dst$non_lazy_ptr-L68$pb([[EAX]]), %eax
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _bar01:
@@ -4956,19 +4956,19 @@ entry:
 define i8* @bxr01() nounwind {
 entry:
        ret i8* bitcast ([32 x i32]* @xdst to i8*)
-; LINUX-64-STATIC: bxr01:
+; LINUX-64-STATIC-LABEL: bxr01:
 ; LINUX-64-STATIC: movl    $xdst, %eax
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: bxr01:
+; LINUX-32-STATIC-LABEL: bxr01:
 ; LINUX-32-STATIC:     movl    $xdst, %eax
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: bxr01:
+; LINUX-32-PIC-LABEL: bxr01:
 ; LINUX-32-PIC:        movl    $xdst, %eax
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: bxr01:
+; LINUX-64-PIC-LABEL: bxr01:
 ; LINUX-64-PIC:        movq    xdst@GOTPCREL(%rip), %rax
 ; LINUX-64-PIC-NEXT:   ret
 
@@ -4981,10 +4981,10 @@ entry:
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _bxr01:
-; DARWIN-32-PIC:       call    "L70$pb"
-; DARWIN-32-PIC-NEXT: "L70$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  movl    L_xdst$non_lazy_ptr-"L70$pb"(%eax), %eax
+; DARWIN-32-PIC:       calll   L69$pb
+; DARWIN-32-PIC-NEXT: L69$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    L_xdst$non_lazy_ptr-L69$pb([[EAX]]), %eax
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _bxr01:
@@ -5003,19 +5003,19 @@ entry:
 define i8* @bar02() nounwind {
 entry:
        ret i8* bitcast (i32** @ptr to i8*)
-; LINUX-64-STATIC: bar02:
+; LINUX-64-STATIC-LABEL: bar02:
 ; LINUX-64-STATIC: movl    $ptr, %eax
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: bar02:
+; LINUX-32-STATIC-LABEL: bar02:
 ; LINUX-32-STATIC:     movl    $ptr, %eax
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: bar02:
+; LINUX-32-PIC-LABEL: bar02:
 ; LINUX-32-PIC:        movl    $ptr, %eax
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: bar02:
+; LINUX-64-PIC-LABEL: bar02:
 ; LINUX-64-PIC:        movq    ptr@GOTPCREL(%rip), %rax
 ; LINUX-64-PIC-NEXT:   ret
 
@@ -5028,10 +5028,10 @@ entry:
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _bar02:
-; DARWIN-32-PIC:       call    "L71$pb"
-; DARWIN-32-PIC-NEXT: "L71$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  movl    L_ptr$non_lazy_ptr-"L71$pb"(%eax), %eax
+; DARWIN-32-PIC:       calll   L70$pb
+; DARWIN-32-PIC-NEXT: L70$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    L_ptr$non_lazy_ptr-L70$pb([[EAX]]), %eax
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _bar02:
@@ -5050,19 +5050,19 @@ entry:
 define i8* @bar03() nounwind {
 entry:
        ret i8* bitcast ([131072 x i32]* @dsrc to i8*)
-; LINUX-64-STATIC: bar03:
+; LINUX-64-STATIC-LABEL: bar03:
 ; LINUX-64-STATIC: movl    $dsrc, %eax
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: bar03:
+; LINUX-32-STATIC-LABEL: bar03:
 ; LINUX-32-STATIC:     movl    $dsrc, %eax
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: bar03:
+; LINUX-32-PIC-LABEL: bar03:
 ; LINUX-32-PIC:        movl    $dsrc, %eax
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: bar03:
+; LINUX-64-PIC-LABEL: bar03:
 ; LINUX-64-PIC:        movq    dsrc@GOTPCREL(%rip), %rax
 ; LINUX-64-PIC-NEXT:   ret
 
@@ -5075,10 +5075,10 @@ entry:
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _bar03:
-; DARWIN-32-PIC:       call    "L72$pb"
-; DARWIN-32-PIC-NEXT: "L72$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  leal    _dsrc-"L72$pb"(%eax), %eax
+; DARWIN-32-PIC:       calll   L71$pb
+; DARWIN-32-PIC-NEXT: L71$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  leal    _dsrc-L71$pb([[EAX]]), %eax
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _bar03:
@@ -5097,19 +5097,19 @@ entry:
 define i8* @bar04() nounwind {
 entry:
        ret i8* bitcast ([131072 x i32]* @ddst to i8*)
-; LINUX-64-STATIC: bar04:
+; LINUX-64-STATIC-LABEL: bar04:
 ; LINUX-64-STATIC: movl    $ddst, %eax
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: bar04:
+; LINUX-32-STATIC-LABEL: bar04:
 ; LINUX-32-STATIC:     movl    $ddst, %eax
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: bar04:
+; LINUX-32-PIC-LABEL: bar04:
 ; LINUX-32-PIC:        movl    $ddst, %eax
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: bar04:
+; LINUX-64-PIC-LABEL: bar04:
 ; LINUX-64-PIC:        movq    ddst@GOTPCREL(%rip), %rax
 ; LINUX-64-PIC-NEXT:   ret
 
@@ -5122,10 +5122,10 @@ entry:
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _bar04:
-; DARWIN-32-PIC:       call    "L73$pb"
-; DARWIN-32-PIC-NEXT: "L73$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  leal    _ddst-"L73$pb"(%eax), %eax
+; DARWIN-32-PIC:       calll   L72$pb
+; DARWIN-32-PIC-NEXT: L72$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  leal    _ddst-L72$pb([[EAX]]), %eax
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _bar04:
@@ -5144,19 +5144,19 @@ entry:
 define i8* @bar05() nounwind {
 entry:
        ret i8* bitcast (i32** @dptr to i8*)
-; LINUX-64-STATIC: bar05:
+; LINUX-64-STATIC-LABEL: bar05:
 ; LINUX-64-STATIC: movl    $dptr, %eax
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: bar05:
+; LINUX-32-STATIC-LABEL: bar05:
 ; LINUX-32-STATIC:     movl    $dptr, %eax
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: bar05:
+; LINUX-32-PIC-LABEL: bar05:
 ; LINUX-32-PIC:        movl    $dptr, %eax
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: bar05:
+; LINUX-64-PIC-LABEL: bar05:
 ; LINUX-64-PIC:        movq    dptr@GOTPCREL(%rip), %rax
 ; LINUX-64-PIC-NEXT:   ret
 
@@ -5169,10 +5169,10 @@ entry:
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _bar05:
-; DARWIN-32-PIC:       call    "L74$pb"
-; DARWIN-32-PIC-NEXT: "L74$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  leal    _dptr-"L74$pb"(%eax), %eax
+; DARWIN-32-PIC:       calll   L73$pb
+; DARWIN-32-PIC-NEXT: L73$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  leal    _dptr-L73$pb([[EAX]]), %eax
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _bar05:
@@ -5191,19 +5191,19 @@ entry:
 define i8* @bar06() nounwind {
 entry:
        ret i8* bitcast ([131072 x i32]* @lsrc to i8*)
-; LINUX-64-STATIC: bar06:
+; LINUX-64-STATIC-LABEL: bar06:
 ; LINUX-64-STATIC: movl    $lsrc, %eax
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: bar06:
+; LINUX-32-STATIC-LABEL: bar06:
 ; LINUX-32-STATIC:     movl    $lsrc, %eax
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: bar06:
+; LINUX-32-PIC-LABEL: bar06:
 ; LINUX-32-PIC:        movl    $lsrc, %eax
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: bar06:
+; LINUX-64-PIC-LABEL: bar06:
 ; LINUX-64-PIC:        leaq    lsrc(%rip), %rax
 ; LINUX-64-PIC-NEXT:   ret
 
@@ -5216,10 +5216,10 @@ entry:
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _bar06:
-; DARWIN-32-PIC:       call    "L75$pb"
-; DARWIN-32-PIC-NEXT: "L75$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  leal    _lsrc-"L75$pb"(%eax), %eax
+; DARWIN-32-PIC:       calll   L74$pb
+; DARWIN-32-PIC-NEXT: L74$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  leal    _lsrc-L74$pb([[EAX]]), %eax
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _bar06:
@@ -5238,19 +5238,19 @@ entry:
 define i8* @bar07() nounwind {
 entry:
        ret i8* bitcast ([131072 x i32]* @ldst to i8*)
-; LINUX-64-STATIC: bar07:
+; LINUX-64-STATIC-LABEL: bar07:
 ; LINUX-64-STATIC: movl    $ldst, %eax
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: bar07:
+; LINUX-32-STATIC-LABEL: bar07:
 ; LINUX-32-STATIC:     movl    $ldst, %eax
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: bar07:
+; LINUX-32-PIC-LABEL: bar07:
 ; LINUX-32-PIC:        movl    $ldst, %eax
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: bar07:
+; LINUX-64-PIC-LABEL: bar07:
 ; LINUX-64-PIC:        leaq    ldst(%rip), %rax
 ; LINUX-64-PIC-NEXT:   ret
 
@@ -5263,10 +5263,10 @@ entry:
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _bar07:
-; DARWIN-32-PIC:       call    "L76$pb"
-; DARWIN-32-PIC-NEXT: "L76$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  leal    _ldst-"L76$pb"(%eax), %eax
+; DARWIN-32-PIC:       calll   L75$pb
+; DARWIN-32-PIC-NEXT: L75$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  leal    _ldst-L75$pb([[EAX]]), %eax
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _bar07:
@@ -5285,19 +5285,19 @@ entry:
 define i8* @bar08() nounwind {
 entry:
        ret i8* bitcast (i32** @lptr to i8*)
-; LINUX-64-STATIC: bar08:
+; LINUX-64-STATIC-LABEL: bar08:
 ; LINUX-64-STATIC: movl    $lptr, %eax
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: bar08:
+; LINUX-32-STATIC-LABEL: bar08:
 ; LINUX-32-STATIC:     movl    $lptr, %eax
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: bar08:
+; LINUX-32-PIC-LABEL: bar08:
 ; LINUX-32-PIC:        movl    $lptr, %eax
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: bar08:
+; LINUX-64-PIC-LABEL: bar08:
 ; LINUX-64-PIC:        leaq    lptr(%rip), %rax
 ; LINUX-64-PIC-NEXT:   ret
 
@@ -5310,10 +5310,10 @@ entry:
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _bar08:
-; DARWIN-32-PIC:       call    "L77$pb"
-; DARWIN-32-PIC-NEXT: "L77$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  leal    _lptr-"L77$pb"(%eax), %eax
+; DARWIN-32-PIC:       calll   L76$pb
+; DARWIN-32-PIC-NEXT: L76$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  leal    _lptr-L76$pb([[EAX]]), %eax
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _bar08:
@@ -5332,19 +5332,19 @@ entry:
 define i8* @har00() nounwind {
 entry:
        ret i8* bitcast ([131072 x i32]* @src to i8*)
-; LINUX-64-STATIC: har00:
+; LINUX-64-STATIC-LABEL: har00:
 ; LINUX-64-STATIC: movl    $src, %eax
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: har00:
+; LINUX-32-STATIC-LABEL: har00:
 ; LINUX-32-STATIC:     movl    $src, %eax
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: har00:
+; LINUX-32-PIC-LABEL: har00:
 ; LINUX-32-PIC:        movl    $src, %eax
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: har00:
+; LINUX-64-PIC-LABEL: har00:
 ; LINUX-64-PIC:        movq    src@GOTPCREL(%rip), %rax
 ; LINUX-64-PIC-NEXT:   ret
 
@@ -5357,10 +5357,10 @@ entry:
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _har00:
-; DARWIN-32-PIC:       call    "L78$pb"
-; DARWIN-32-PIC-NEXT: "L78$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  movl    L_src$non_lazy_ptr-"L78$pb"(%eax), %eax
+; DARWIN-32-PIC:       calll   L77$pb
+; DARWIN-32-PIC-NEXT: L77$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    L_src$non_lazy_ptr-L77$pb([[EAX]]), %eax
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _har00:
@@ -5379,19 +5379,19 @@ entry:
 define i8* @hxr00() nounwind {
 entry:
        ret i8* bitcast ([32 x i32]* @xsrc to i8*)
-; LINUX-64-STATIC: hxr00:
+; LINUX-64-STATIC-LABEL: hxr00:
 ; LINUX-64-STATIC: movl    $xsrc, %eax
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: hxr00:
+; LINUX-32-STATIC-LABEL: hxr00:
 ; LINUX-32-STATIC:     movl    $xsrc, %eax
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: hxr00:
+; LINUX-32-PIC-LABEL: hxr00:
 ; LINUX-32-PIC:        movl    $xsrc, %eax
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: hxr00:
+; LINUX-64-PIC-LABEL: hxr00:
 ; LINUX-64-PIC:        movq    xsrc@GOTPCREL(%rip), %rax
 ; LINUX-64-PIC-NEXT:   ret
 
@@ -5404,10 +5404,10 @@ entry:
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _hxr00:
-; DARWIN-32-PIC:       call    "L79$pb"
-; DARWIN-32-PIC-NEXT: "L79$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  movl    L_xsrc$non_lazy_ptr-"L79$pb"(%eax), %eax
+; DARWIN-32-PIC:       calll   L78$pb
+; DARWIN-32-PIC-NEXT: L78$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    L_xsrc$non_lazy_ptr-L78$pb([[EAX]]), %eax
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _hxr00:
@@ -5426,19 +5426,19 @@ entry:
 define i8* @har01() nounwind {
 entry:
        ret i8* bitcast ([131072 x i32]* @dst to i8*)
-; LINUX-64-STATIC: har01:
+; LINUX-64-STATIC-LABEL: har01:
 ; LINUX-64-STATIC: movl    $dst, %eax
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: har01:
+; LINUX-32-STATIC-LABEL: har01:
 ; LINUX-32-STATIC:     movl    $dst, %eax
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: har01:
+; LINUX-32-PIC-LABEL: har01:
 ; LINUX-32-PIC:        movl    $dst, %eax
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: har01:
+; LINUX-64-PIC-LABEL: har01:
 ; LINUX-64-PIC:        movq    dst@GOTPCREL(%rip), %rax
 ; LINUX-64-PIC-NEXT:   ret
 
@@ -5451,10 +5451,10 @@ entry:
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _har01:
-; DARWIN-32-PIC:       call    "L80$pb"
-; DARWIN-32-PIC-NEXT: "L80$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  movl    L_dst$non_lazy_ptr-"L80$pb"(%eax), %eax
+; DARWIN-32-PIC:       calll   L79$pb
+; DARWIN-32-PIC-NEXT: L79$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    L_dst$non_lazy_ptr-L79$pb([[EAX]]), %eax
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _har01:
@@ -5473,19 +5473,19 @@ entry:
 define i8* @hxr01() nounwind {
 entry:
        ret i8* bitcast ([32 x i32]* @xdst to i8*)
-; LINUX-64-STATIC: hxr01:
+; LINUX-64-STATIC-LABEL: hxr01:
 ; LINUX-64-STATIC: movl    $xdst, %eax
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: hxr01:
+; LINUX-32-STATIC-LABEL: hxr01:
 ; LINUX-32-STATIC:     movl    $xdst, %eax
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: hxr01:
+; LINUX-32-PIC-LABEL: hxr01:
 ; LINUX-32-PIC:        movl    $xdst, %eax
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: hxr01:
+; LINUX-64-PIC-LABEL: hxr01:
 ; LINUX-64-PIC:        movq    xdst@GOTPCREL(%rip), %rax
 ; LINUX-64-PIC-NEXT:   ret
 
@@ -5498,10 +5498,10 @@ entry:
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _hxr01:
-; DARWIN-32-PIC:       call    "L81$pb"
-; DARWIN-32-PIC-NEXT: "L81$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  movl    L_xdst$non_lazy_ptr-"L81$pb"(%eax), %eax
+; DARWIN-32-PIC:       calll   L80$pb
+; DARWIN-32-PIC-NEXT: L80$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    L_xdst$non_lazy_ptr-L80$pb([[EAX]]), %eax
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _hxr01:
@@ -5519,24 +5519,24 @@ entry:
 
 define i8* @har02() nounwind {
 entry:
-       %0 = load i32** @ptr, align 8
+       %0 = load i32*, i32** @ptr, align 8
        %1 = bitcast i32* %0 to i8*
        ret i8* %1
-; LINUX-64-STATIC: har02:
+; LINUX-64-STATIC-LABEL: har02:
 ; LINUX-64-STATIC: movq    ptr(%rip), %rax
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: har02:
+; LINUX-32-STATIC-LABEL: har02:
 ; LINUX-32-STATIC:     movl    ptr, %eax
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: har02:
+; LINUX-32-PIC-LABEL: har02:
 ; LINUX-32-PIC:        movl    ptr, %eax
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: har02:
-; LINUX-64-PIC:        movq    ptr@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT:   movq    (%rax), %rax
+; LINUX-64-PIC-LABEL: har02:
+; LINUX-64-PIC:        movq    ptr@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT:   movq    ([[RAX]]), %rax
 ; LINUX-64-PIC-NEXT:   ret
 
 ; DARWIN-32-STATIC: _har02:
@@ -5544,50 +5544,50 @@ entry:
 ; DARWIN-32-STATIC-NEXT:       ret
 
 ; DARWIN-32-DYNAMIC: _har02:
-; DARWIN-32-DYNAMIC:   movl    L_ptr$non_lazy_ptr, %eax
-; DARWIN-32-DYNAMIC-NEXT:      movl    (%eax), %eax
+; DARWIN-32-DYNAMIC:   movl    L_ptr$non_lazy_ptr, [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    ([[EAX]]), %eax
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _har02:
-; DARWIN-32-PIC:       call    "L82$pb"
-; DARWIN-32-PIC-NEXT: "L82$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  movl    L_ptr$non_lazy_ptr-"L82$pb"(%eax), %eax
-; DARWIN-32-PIC-NEXT:  movl    (%eax), %eax
+; DARWIN-32-PIC:       calll   L81$pb
+; DARWIN-32-PIC-NEXT: L81$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    L_ptr$non_lazy_ptr-L81$pb([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    ([[EAX]]), %eax
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _har02:
-; DARWIN-64-STATIC:    movq    _ptr@GOTPCREL(%rip), %rax
-; DARWIN-64-STATIC-NEXT:       movq    (%rax), %rax
+; DARWIN-64-STATIC:    movq    _ptr@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movq    ([[RAX]]), %rax
 ; DARWIN-64-STATIC-NEXT:       ret
 
 ; DARWIN-64-DYNAMIC: _har02:
-; DARWIN-64-DYNAMIC:   movq    _ptr@GOTPCREL(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT:      movq    (%rax), %rax
+; DARWIN-64-DYNAMIC:   movq    _ptr@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movq    ([[RAX]]), %rax
 ; DARWIN-64-DYNAMIC-NEXT:      ret
 
 ; DARWIN-64-PIC: _har02:
-; DARWIN-64-PIC:       movq    _ptr@GOTPCREL(%rip), %rax
-; DARWIN-64-PIC-NEXT:  movq    (%rax), %rax
+; DARWIN-64-PIC:       movq    _ptr@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movq    ([[RAX]]), %rax
 ; DARWIN-64-PIC-NEXT:  ret
 }
 
 define i8* @har03() nounwind {
 entry:
        ret i8* bitcast ([131072 x i32]* @dsrc to i8*)
-; LINUX-64-STATIC: har03:
+; LINUX-64-STATIC-LABEL: har03:
 ; LINUX-64-STATIC: movl    $dsrc, %eax
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: har03:
+; LINUX-32-STATIC-LABEL: har03:
 ; LINUX-32-STATIC:     movl    $dsrc, %eax
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: har03:
+; LINUX-32-PIC-LABEL: har03:
 ; LINUX-32-PIC:        movl    $dsrc, %eax
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: har03:
+; LINUX-64-PIC-LABEL: har03:
 ; LINUX-64-PIC:        movq    dsrc@GOTPCREL(%rip), %rax
 ; LINUX-64-PIC-NEXT:   ret
 
@@ -5600,10 +5600,10 @@ entry:
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _har03:
-; DARWIN-32-PIC:       call    "L83$pb"
-; DARWIN-32-PIC-NEXT: "L83$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  leal    _dsrc-"L83$pb"(%eax), %eax
+; DARWIN-32-PIC:       calll   L82$pb
+; DARWIN-32-PIC-NEXT: L82$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  leal    _dsrc-L82$pb([[EAX]]), %eax
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _har03:
@@ -5622,19 +5622,19 @@ entry:
 define i8* @har04() nounwind {
 entry:
        ret i8* bitcast ([131072 x i32]* @ddst to i8*)
-; LINUX-64-STATIC: har04:
+; LINUX-64-STATIC-LABEL: har04:
 ; LINUX-64-STATIC: movl    $ddst, %eax
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: har04:
+; LINUX-32-STATIC-LABEL: har04:
 ; LINUX-32-STATIC:     movl    $ddst, %eax
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: har04:
+; LINUX-32-PIC-LABEL: har04:
 ; LINUX-32-PIC:        movl    $ddst, %eax
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: har04:
+; LINUX-64-PIC-LABEL: har04:
 ; LINUX-64-PIC:        movq    ddst@GOTPCREL(%rip), %rax
 ; LINUX-64-PIC-NEXT:   ret
 
@@ -5647,10 +5647,10 @@ entry:
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _har04:
-; DARWIN-32-PIC:       call    "L84$pb"
-; DARWIN-32-PIC-NEXT: "L84$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  leal    _ddst-"L84$pb"(%eax), %eax
+; DARWIN-32-PIC:       calll   L83$pb
+; DARWIN-32-PIC-NEXT: L83$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  leal    _ddst-L83$pb([[EAX]]), %eax
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _har04:
@@ -5668,24 +5668,24 @@ entry:
 
 define i8* @har05() nounwind {
 entry:
-       %0 = load i32** @dptr, align 8
+       %0 = load i32*, i32** @dptr, align 8
        %1 = bitcast i32* %0 to i8*
        ret i8* %1
-; LINUX-64-STATIC: har05:
+; LINUX-64-STATIC-LABEL: har05:
 ; LINUX-64-STATIC: movq    dptr(%rip), %rax
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: har05:
+; LINUX-32-STATIC-LABEL: har05:
 ; LINUX-32-STATIC:     movl    dptr, %eax
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: har05:
+; LINUX-32-PIC-LABEL: har05:
 ; LINUX-32-PIC:        movl    dptr, %eax
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: har05:
-; LINUX-64-PIC:        movq    dptr@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT:   movq    (%rax), %rax
+; LINUX-64-PIC-LABEL: har05:
+; LINUX-64-PIC:        movq    dptr@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT:   movq    ([[RAX]]), %rax
 ; LINUX-64-PIC-NEXT:   ret
 
 ; DARWIN-32-STATIC: _har05:
@@ -5697,10 +5697,10 @@ entry:
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _har05:
-; DARWIN-32-PIC:       call    "L85$pb"
-; DARWIN-32-PIC-NEXT: "L85$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  movl    _dptr-"L85$pb"(%eax), %eax
+; DARWIN-32-PIC:       calll   L84$pb
+; DARWIN-32-PIC-NEXT: L84$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    _dptr-L84$pb([[EAX]]), %eax
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _har05:
@@ -5719,19 +5719,19 @@ entry:
 define i8* @har06() nounwind {
 entry:
        ret i8* bitcast ([131072 x i32]* @lsrc to i8*)
-; LINUX-64-STATIC: har06:
+; LINUX-64-STATIC-LABEL: har06:
 ; LINUX-64-STATIC: movl    $lsrc, %eax
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: har06:
+; LINUX-32-STATIC-LABEL: har06:
 ; LINUX-32-STATIC:     movl    $lsrc, %eax
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: har06:
+; LINUX-32-PIC-LABEL: har06:
 ; LINUX-32-PIC:        movl    $lsrc, %eax
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: har06:
+; LINUX-64-PIC-LABEL: har06:
 ; LINUX-64-PIC:        leaq    lsrc(%rip), %rax
 ; LINUX-64-PIC-NEXT:   ret
 
@@ -5744,10 +5744,10 @@ entry:
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _har06:
-; DARWIN-32-PIC:       call    "L86$pb"
-; DARWIN-32-PIC-NEXT: "L86$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  leal    _lsrc-"L86$pb"(%eax), %eax
+; DARWIN-32-PIC:       calll   L85$pb
+; DARWIN-32-PIC-NEXT: L85$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  leal    _lsrc-L85$pb([[EAX]]), %eax
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _har06:
@@ -5766,19 +5766,19 @@ entry:
 define i8* @har07() nounwind {
 entry:
        ret i8* bitcast ([131072 x i32]* @ldst to i8*)
-; LINUX-64-STATIC: har07:
+; LINUX-64-STATIC-LABEL: har07:
 ; LINUX-64-STATIC: movl    $ldst, %eax
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: har07:
+; LINUX-32-STATIC-LABEL: har07:
 ; LINUX-32-STATIC:     movl    $ldst, %eax
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: har07:
+; LINUX-32-PIC-LABEL: har07:
 ; LINUX-32-PIC:        movl    $ldst, %eax
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: har07:
+; LINUX-64-PIC-LABEL: har07:
 ; LINUX-64-PIC:        leaq    ldst(%rip), %rax
 ; LINUX-64-PIC-NEXT:   ret
 
@@ -5791,10 +5791,10 @@ entry:
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _har07:
-; DARWIN-32-PIC:       call    "L87$pb"
-; DARWIN-32-PIC-NEXT: "L87$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  leal    _ldst-"L87$pb"(%eax), %eax
+; DARWIN-32-PIC:       calll   L86$pb
+; DARWIN-32-PIC-NEXT: L86$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  leal    _ldst-L86$pb([[EAX]]), %eax
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _har07:
@@ -5812,22 +5812,22 @@ entry:
 
 define i8* @har08() nounwind {
 entry:
-       %0 = load i32** @lptr, align 8
+       %0 = load i32*, i32** @lptr, align 8
        %1 = bitcast i32* %0 to i8*
        ret i8* %1
-; LINUX-64-STATIC: har08:
+; LINUX-64-STATIC-LABEL: har08:
 ; LINUX-64-STATIC: movq    lptr(%rip), %rax
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: har08:
+; LINUX-32-STATIC-LABEL: har08:
 ; LINUX-32-STATIC:     movl    lptr, %eax
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: har08:
+; LINUX-32-PIC-LABEL: har08:
 ; LINUX-32-PIC:        movl    lptr, %eax
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: har08:
+; LINUX-64-PIC-LABEL: har08:
 ; LINUX-64-PIC:        movq    lptr(%rip), %rax
 ; LINUX-64-PIC-NEXT:   ret
 
@@ -5840,10 +5840,10 @@ entry:
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _har08:
-; DARWIN-32-PIC:       call    "L88$pb"
-; DARWIN-32-PIC-NEXT: "L88$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  movl    _lptr-"L88$pb"(%eax), %eax
+; DARWIN-32-PIC:       calll   L87$pb
+; DARWIN-32-PIC-NEXT: L87$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    _lptr-L87$pb([[EAX]]), %eax
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _har08:
@@ -5861,20 +5861,20 @@ entry:
 
 define i8* @bat00() nounwind {
 entry:
-       ret i8* bitcast (i32* getelementptr ([131072 x i32]* @src, i32 0, i64 16) to i8*)
-; LINUX-64-STATIC: bat00:
+       ret i8* bitcast (i32* getelementptr ([131072 x i32], [131072 x i32]* @src, i32 0, i64 16) to i8*)
+; LINUX-64-STATIC-LABEL: bat00:
 ; LINUX-64-STATIC: movl    $src+64, %eax
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: bat00:
+; LINUX-32-STATIC-LABEL: bat00:
 ; LINUX-32-STATIC:     movl    $src+64, %eax
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: bat00:
+; LINUX-32-PIC-LABEL: bat00:
 ; LINUX-32-PIC:        movl    $src+64, %eax
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: bat00:
+; LINUX-64-PIC-LABEL: bat00:
 ; LINUX-64-PIC:        movq    src@GOTPCREL(%rip), %rax
 ; LINUX-64-PIC-NEXT:   addq    $64, %rax
 ; LINUX-64-PIC-NEXT:   ret
@@ -5889,10 +5889,10 @@ entry:
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _bat00:
-; DARWIN-32-PIC:       call    "L89$pb"
-; DARWIN-32-PIC-NEXT: "L89$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  movl    L_src$non_lazy_ptr-"L89$pb"(%eax), %eax
+; DARWIN-32-PIC:       calll   L88$pb
+; DARWIN-32-PIC-NEXT: L88$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    L_src$non_lazy_ptr-L88$pb([[EAX]]), %eax
 ; DARWIN-32-PIC-NEXT:  addl    $64, %eax
 ; DARWIN-32-PIC-NEXT:  ret
 
@@ -5914,20 +5914,20 @@ entry:
 
 define i8* @bxt00() nounwind {
 entry:
-       ret i8* bitcast (i32* getelementptr ([32 x i32]* @xsrc, i32 0, i64 16) to i8*)
-; LINUX-64-STATIC: bxt00:
+       ret i8* bitcast (i32* getelementptr ([32 x i32], [32 x i32]* @xsrc, i32 0, i64 16) to i8*)
+; LINUX-64-STATIC-LABEL: bxt00:
 ; LINUX-64-STATIC: movl    $xsrc+64, %eax
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: bxt00:
+; LINUX-32-STATIC-LABEL: bxt00:
 ; LINUX-32-STATIC:     movl    $xsrc+64, %eax
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: bxt00:
+; LINUX-32-PIC-LABEL: bxt00:
 ; LINUX-32-PIC:        movl    $xsrc+64, %eax
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: bxt00:
+; LINUX-64-PIC-LABEL: bxt00:
 ; LINUX-64-PIC:        movq    xsrc@GOTPCREL(%rip), %rax
 ; LINUX-64-PIC-NEXT:   addq    $64, %rax
 ; LINUX-64-PIC-NEXT:   ret
@@ -5942,10 +5942,10 @@ entry:
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _bxt00:
-; DARWIN-32-PIC:       call    "L90$pb"
-; DARWIN-32-PIC-NEXT: "L90$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  movl    L_xsrc$non_lazy_ptr-"L90$pb"(%eax), %eax
+; DARWIN-32-PIC:       calll   L89$pb
+; DARWIN-32-PIC-NEXT: L89$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    L_xsrc$non_lazy_ptr-L89$pb([[EAX]]), %eax
 ; DARWIN-32-PIC-NEXT:  addl    $64, %eax
 ; DARWIN-32-PIC-NEXT:  ret
 
@@ -5967,20 +5967,20 @@ entry:
 
 define i8* @bat01() nounwind {
 entry:
-       ret i8* bitcast (i32* getelementptr ([131072 x i32]* @dst, i32 0, i64 16) to i8*)
-; LINUX-64-STATIC: bat01:
+       ret i8* bitcast (i32* getelementptr ([131072 x i32], [131072 x i32]* @dst, i32 0, i64 16) to i8*)
+; LINUX-64-STATIC-LABEL: bat01:
 ; LINUX-64-STATIC: movl    $dst+64, %eax
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: bat01:
+; LINUX-32-STATIC-LABEL: bat01:
 ; LINUX-32-STATIC:     movl    $dst+64, %eax
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: bat01:
+; LINUX-32-PIC-LABEL: bat01:
 ; LINUX-32-PIC:        movl    $dst+64, %eax
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: bat01:
+; LINUX-64-PIC-LABEL: bat01:
 ; LINUX-64-PIC:        movq    dst@GOTPCREL(%rip), %rax
 ; LINUX-64-PIC-NEXT:   addq    $64, %rax
 ; LINUX-64-PIC-NEXT:   ret
@@ -5995,10 +5995,10 @@ entry:
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _bat01:
-; DARWIN-32-PIC:       call    "L91$pb"
-; DARWIN-32-PIC-NEXT: "L91$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  movl    L_dst$non_lazy_ptr-"L91$pb"(%eax), %eax
+; DARWIN-32-PIC:       calll   L90$pb
+; DARWIN-32-PIC-NEXT: L90$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    L_dst$non_lazy_ptr-L90$pb([[EAX]]), %eax
 ; DARWIN-32-PIC-NEXT:  addl    $64, %eax
 ; DARWIN-32-PIC-NEXT:  ret
 
@@ -6020,20 +6020,20 @@ entry:
 
 define i8* @bxt01() nounwind {
 entry:
-       ret i8* bitcast (i32* getelementptr ([32 x i32]* @xdst, i32 0, i64 16) to i8*)
-; LINUX-64-STATIC: bxt01:
+       ret i8* bitcast (i32* getelementptr ([32 x i32], [32 x i32]* @xdst, i32 0, i64 16) to i8*)
+; LINUX-64-STATIC-LABEL: bxt01:
 ; LINUX-64-STATIC: movl    $xdst+64, %eax
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: bxt01:
+; LINUX-32-STATIC-LABEL: bxt01:
 ; LINUX-32-STATIC:     movl    $xdst+64, %eax
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: bxt01:
+; LINUX-32-PIC-LABEL: bxt01:
 ; LINUX-32-PIC:        movl    $xdst+64, %eax
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: bxt01:
+; LINUX-64-PIC-LABEL: bxt01:
 ; LINUX-64-PIC:        movq    xdst@GOTPCREL(%rip), %rax
 ; LINUX-64-PIC-NEXT:   addq    $64, %rax
 ; LINUX-64-PIC-NEXT:   ret
@@ -6048,10 +6048,10 @@ entry:
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _bxt01:
-; DARWIN-32-PIC:       call    "L92$pb"
-; DARWIN-32-PIC-NEXT: "L92$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  movl    L_xdst$non_lazy_ptr-"L92$pb"(%eax), %eax
+; DARWIN-32-PIC:       calll   L91$pb
+; DARWIN-32-PIC-NEXT: L91$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    L_xdst$non_lazy_ptr-L91$pb([[EAX]]), %eax
 ; DARWIN-32-PIC-NEXT:  addl    $64, %eax
 ; DARWIN-32-PIC-NEXT:  ret
 
@@ -6073,28 +6073,28 @@ entry:
 
 define i8* @bat02() nounwind {
 entry:
-       %0 = load i32** @ptr, align 8
-       %1 = getelementptr i32* %0, i64 16
+       %0 = load i32*, i32** @ptr, align 8
+       %1 = getelementptr i32, i32* %0, i64 16
        %2 = bitcast i32* %1 to i8*
        ret i8* %2
-; LINUX-64-STATIC: bat02:
+; LINUX-64-STATIC-LABEL: bat02:
 ; LINUX-64-STATIC: movq    ptr(%rip), %rax
 ; LINUX-64-STATIC: addq    $64, %rax
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: bat02:
+; LINUX-32-STATIC-LABEL: bat02:
 ; LINUX-32-STATIC:     movl    ptr, %eax
 ; LINUX-32-STATIC-NEXT:        addl    $64, %eax
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: bat02:
+; LINUX-32-PIC-LABEL: bat02:
 ; LINUX-32-PIC:        movl    ptr, %eax
 ; LINUX-32-PIC-NEXT:   addl    $64, %eax
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: bat02:
-; LINUX-64-PIC:        movq    ptr@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT:   movq    (%rax), %rax
+; LINUX-64-PIC-LABEL: bat02:
+; LINUX-64-PIC:        movq    ptr@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT:   movq    ([[RAX]]), %rax
 ; LINUX-64-PIC-NEXT:   addq    $64, %rax
 ; LINUX-64-PIC-NEXT:   ret
 
@@ -6104,55 +6104,55 @@ entry:
 ; DARWIN-32-STATIC-NEXT:       ret
 
 ; DARWIN-32-DYNAMIC: _bat02:
-; DARWIN-32-DYNAMIC:   movl    L_ptr$non_lazy_ptr, %eax
-; DARWIN-32-DYNAMIC-NEXT:      movl    (%eax), %eax
+; DARWIN-32-DYNAMIC:   movl    L_ptr$non_lazy_ptr, [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    ([[EAX]]), [[EAX:%e.x]]
 ; DARWIN-32-DYNAMIC-NEXT:      addl    $64, %eax
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _bat02:
-; DARWIN-32-PIC:       call    "L93$pb"
-; DARWIN-32-PIC-NEXT: "L93$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  movl    L_ptr$non_lazy_ptr-"L93$pb"(%eax), %eax
-; DARWIN-32-PIC-NEXT:  movl    (%eax), %eax
+; DARWIN-32-PIC:       calll   L92$pb
+; DARWIN-32-PIC-NEXT: L92$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    L_ptr$non_lazy_ptr-L92$pb([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    ([[EAX]]), %eax
 ; DARWIN-32-PIC-NEXT:  addl    $64, %eax
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _bat02:
-; DARWIN-64-STATIC:    movq    _ptr@GOTPCREL(%rip), %rax
-; DARWIN-64-STATIC-NEXT:       movq    (%rax), %rax
+; DARWIN-64-STATIC:    movq    _ptr@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movq    ([[RAX]]), %rax
 ; DARWIN-64-STATIC-NEXT:       addq    $64, %rax
 ; DARWIN-64-STATIC-NEXT:       ret
 
 ; DARWIN-64-DYNAMIC: _bat02:
-; DARWIN-64-DYNAMIC:   movq    _ptr@GOTPCREL(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT:      movq    (%rax), %rax
+; DARWIN-64-DYNAMIC:   movq    _ptr@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movq    ([[RAX]]), [[RAX:%r.x]]
 ; DARWIN-64-DYNAMIC-NEXT:      addq    $64, %rax
 ; DARWIN-64-DYNAMIC-NEXT:      ret
 
 ; DARWIN-64-PIC: _bat02:
-; DARWIN-64-PIC:       movq    _ptr@GOTPCREL(%rip), %rax
-; DARWIN-64-PIC-NEXT:  movq    (%rax), %rax
+; DARWIN-64-PIC:       movq    _ptr@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movq    ([[RAX]]), %rax
 ; DARWIN-64-PIC-NEXT:  addq    $64, %rax
 ; DARWIN-64-PIC-NEXT:  ret
 }
 
 define i8* @bat03() nounwind {
 entry:
-       ret i8* bitcast (i32* getelementptr ([131072 x i32]* @dsrc, i32 0, i64 16) to i8*)
-; LINUX-64-STATIC: bat03:
+       ret i8* bitcast (i32* getelementptr ([131072 x i32], [131072 x i32]* @dsrc, i32 0, i64 16) to i8*)
+; LINUX-64-STATIC-LABEL: bat03:
 ; LINUX-64-STATIC: movl    $dsrc+64, %eax
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: bat03:
+; LINUX-32-STATIC-LABEL: bat03:
 ; LINUX-32-STATIC:     movl    $dsrc+64, %eax
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: bat03:
+; LINUX-32-PIC-LABEL: bat03:
 ; LINUX-32-PIC:        movl    $dsrc+64, %eax
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: bat03:
+; LINUX-64-PIC-LABEL: bat03:
 ; LINUX-64-PIC:        movq    dsrc@GOTPCREL(%rip), %rax
 ; LINUX-64-PIC-NEXT:   addq    $64, %rax
 ; LINUX-64-PIC-NEXT:   ret
@@ -6166,10 +6166,10 @@ entry:
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _bat03:
-; DARWIN-32-PIC:       call    "L94$pb"
-; DARWIN-32-PIC-NEXT: "L94$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  leal    _dsrc+64-"L94$pb"(%eax), %eax
+; DARWIN-32-PIC:       calll   L93$pb
+; DARWIN-32-PIC-NEXT: L93$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  leal    (_dsrc-L93$pb)+64([[EAX]]), %eax
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _bat03:
@@ -6187,20 +6187,20 @@ entry:
 
 define i8* @bat04() nounwind {
 entry:
-       ret i8* bitcast (i32* getelementptr ([131072 x i32]* @ddst, i32 0, i64 16) to i8*)
-; LINUX-64-STATIC: bat04:
+       ret i8* bitcast (i32* getelementptr ([131072 x i32], [131072 x i32]* @ddst, i32 0, i64 16) to i8*)
+; LINUX-64-STATIC-LABEL: bat04:
 ; LINUX-64-STATIC: movl    $ddst+64, %eax
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: bat04:
+; LINUX-32-STATIC-LABEL: bat04:
 ; LINUX-32-STATIC:     movl    $ddst+64, %eax
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: bat04:
+; LINUX-32-PIC-LABEL: bat04:
 ; LINUX-32-PIC:        movl    $ddst+64, %eax
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: bat04:
+; LINUX-64-PIC-LABEL: bat04:
 ; LINUX-64-PIC:        movq    ddst@GOTPCREL(%rip), %rax
 ; LINUX-64-PIC-NEXT:   addq    $64, %rax
 ; LINUX-64-PIC-NEXT:   ret
@@ -6214,10 +6214,10 @@ entry:
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _bat04:
-; DARWIN-32-PIC:       call    "L95$pb"
-; DARWIN-32-PIC-NEXT: "L95$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  leal    _ddst+64-"L95$pb"(%eax), %eax
+; DARWIN-32-PIC:       calll   L94$pb
+; DARWIN-32-PIC-NEXT: L94$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  leal    (_ddst-L94$pb)+64([[EAX]]), %eax
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _bat04:
@@ -6235,28 +6235,28 @@ entry:
 
 define i8* @bat05() nounwind {
 entry:
-       %0 = load i32** @dptr, align 8
-       %1 = getelementptr i32* %0, i64 16
+       %0 = load i32*, i32** @dptr, align 8
+       %1 = getelementptr i32, i32* %0, i64 16
        %2 = bitcast i32* %1 to i8*
        ret i8* %2
-; LINUX-64-STATIC: bat05:
+; LINUX-64-STATIC-LABEL: bat05:
 ; LINUX-64-STATIC: movq    dptr(%rip), %rax
 ; LINUX-64-STATIC: addq    $64, %rax
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: bat05:
+; LINUX-32-STATIC-LABEL: bat05:
 ; LINUX-32-STATIC:     movl    dptr, %eax
 ; LINUX-32-STATIC-NEXT:        addl    $64, %eax
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: bat05:
+; LINUX-32-PIC-LABEL: bat05:
 ; LINUX-32-PIC:        movl    dptr, %eax
 ; LINUX-32-PIC-NEXT:   addl    $64, %eax
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: bat05:
-; LINUX-64-PIC:        movq    dptr@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT:   movq    (%rax), %rax
+; LINUX-64-PIC-LABEL: bat05:
+; LINUX-64-PIC:        movq    dptr@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT:   movq    ([[RAX]]), %rax
 ; LINUX-64-PIC-NEXT:   addq    $64, %rax
 ; LINUX-64-PIC-NEXT:   ret
 
@@ -6271,10 +6271,10 @@ entry:
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _bat05:
-; DARWIN-32-PIC:       call    "L96$pb"
-; DARWIN-32-PIC-NEXT: "L96$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  movl    _dptr-"L96$pb"(%eax), %eax
+; DARWIN-32-PIC:       calll   L95$pb
+; DARWIN-32-PIC-NEXT: L95$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    _dptr-L95$pb([[EAX]]), %eax
 ; DARWIN-32-PIC-NEXT:  addl    $64, %eax
 ; DARWIN-32-PIC-NEXT:  ret
 
@@ -6296,20 +6296,20 @@ entry:
 
 define i8* @bat06() nounwind {
 entry:
-       ret i8* bitcast (i32* getelementptr ([131072 x i32]* @lsrc, i32 0, i64 16) to i8*)
-; LINUX-64-STATIC: bat06:
+       ret i8* bitcast (i32* getelementptr ([131072 x i32], [131072 x i32]* @lsrc, i32 0, i64 16) to i8*)
+; LINUX-64-STATIC-LABEL: bat06:
 ; LINUX-64-STATIC: movl    $lsrc+64, %eax
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: bat06:
+; LINUX-32-STATIC-LABEL: bat06:
 ; LINUX-32-STATIC:     movl    $lsrc+64, %eax
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: bat06:
+; LINUX-32-PIC-LABEL: bat06:
 ; LINUX-32-PIC:        movl    $lsrc+64, %eax
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: bat06:
+; LINUX-64-PIC-LABEL: bat06:
 ; LINUX-64-PIC:        leaq    lsrc+64(%rip), %rax
 ; LINUX-64-PIC-NEXT:   ret
 
@@ -6322,10 +6322,10 @@ entry:
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _bat06:
-; DARWIN-32-PIC:       call    "L97$pb"
-; DARWIN-32-PIC-NEXT: "L97$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  leal    _lsrc+64-"L97$pb"(%eax), %eax
+; DARWIN-32-PIC:       calll   L96$pb
+; DARWIN-32-PIC-NEXT: L96$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  leal    (_lsrc-L96$pb)+64([[EAX]]), %eax
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _bat06:
@@ -6343,20 +6343,20 @@ entry:
 
 define i8* @bat07() nounwind {
 entry:
-       ret i8* bitcast (i32* getelementptr ([131072 x i32]* @ldst, i32 0, i64 16) to i8*)
-; LINUX-64-STATIC: bat07:
+       ret i8* bitcast (i32* getelementptr ([131072 x i32], [131072 x i32]* @ldst, i32 0, i64 16) to i8*)
+; LINUX-64-STATIC-LABEL: bat07:
 ; LINUX-64-STATIC: movl    $ldst+64, %eax
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: bat07:
+; LINUX-32-STATIC-LABEL: bat07:
 ; LINUX-32-STATIC:     movl    $ldst+64, %eax
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: bat07:
+; LINUX-32-PIC-LABEL: bat07:
 ; LINUX-32-PIC:        movl    $ldst+64, %eax
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: bat07:
+; LINUX-64-PIC-LABEL: bat07:
 ; LINUX-64-PIC:        leaq    ldst+64(%rip), %rax
 ; LINUX-64-PIC-NEXT:   ret
 
@@ -6369,10 +6369,10 @@ entry:
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _bat07:
-; DARWIN-32-PIC:       call    "L98$pb"
-; DARWIN-32-PIC-NEXT: "L98$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  leal    _ldst+64-"L98$pb"(%eax), %eax
+; DARWIN-32-PIC:       calll   L97$pb
+; DARWIN-32-PIC-NEXT: L97$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  leal    (_ldst-L97$pb)+64([[EAX]]), %eax
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _bat07:
@@ -6390,26 +6390,26 @@ entry:
 
 define i8* @bat08() nounwind {
 entry:
-       %0 = load i32** @lptr, align 8
-       %1 = getelementptr i32* %0, i64 16
+       %0 = load i32*, i32** @lptr, align 8
+       %1 = getelementptr i32, i32* %0, i64 16
        %2 = bitcast i32* %1 to i8*
        ret i8* %2
-; LINUX-64-STATIC: bat08:
+; LINUX-64-STATIC-LABEL: bat08:
 ; LINUX-64-STATIC: movq    lptr(%rip), %rax
 ; LINUX-64-STATIC: addq    $64, %rax
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: bat08:
+; LINUX-32-STATIC-LABEL: bat08:
 ; LINUX-32-STATIC:     movl    lptr, %eax
 ; LINUX-32-STATIC-NEXT:        addl    $64, %eax
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: bat08:
+; LINUX-32-PIC-LABEL: bat08:
 ; LINUX-32-PIC:        movl    lptr, %eax
 ; LINUX-32-PIC-NEXT:   addl    $64, %eax
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: bat08:
+; LINUX-64-PIC-LABEL: bat08:
 ; LINUX-64-PIC:        movq    lptr(%rip), %rax
 ; LINUX-64-PIC-NEXT:   addq    $64, %rax
 ; LINUX-64-PIC-NEXT:   ret
@@ -6425,10 +6425,10 @@ entry:
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _bat08:
-; DARWIN-32-PIC:       call    "L99$pb"
-; DARWIN-32-PIC-NEXT: "L99$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  movl    _lptr-"L99$pb"(%eax), %eax
+; DARWIN-32-PIC:       calll   L98$pb
+; DARWIN-32-PIC-NEXT: L98$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    _lptr-L98$pb([[EAX]]), %eax
 ; DARWIN-32-PIC-NEXT:  addl    $64, %eax
 ; DARWIN-32-PIC-NEXT:  ret
 
@@ -6450,20 +6450,20 @@ entry:
 
 define i8* @bam00() nounwind {
 entry:
-       ret i8* bitcast (i32* getelementptr ([131072 x i32]* @src, i32 0, i64 65536) to i8*)
-; LINUX-64-STATIC: bam00:
+       ret i8* bitcast (i32* getelementptr ([131072 x i32], [131072 x i32]* @src, i32 0, i64 65536) to i8*)
+; LINUX-64-STATIC-LABEL: bam00:
 ; LINUX-64-STATIC: movl    $src+262144, %eax
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: bam00:
+; LINUX-32-STATIC-LABEL: bam00:
 ; LINUX-32-STATIC:     movl    $src+262144, %eax
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: bam00:
+; LINUX-32-PIC-LABEL: bam00:
 ; LINUX-32-PIC:        movl    $src+262144, %eax
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: bam00:
+; LINUX-64-PIC-LABEL: bam00:
 ; LINUX-64-PIC:        movl    $262144, %eax
 ; LINUX-64-PIC-NEXT:   addq    src@GOTPCREL(%rip), %rax
 ; LINUX-64-PIC-NEXT:   ret
@@ -6478,11 +6478,11 @@ entry:
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _bam00:
-; DARWIN-32-PIC:       call    "L100$pb"
-; DARWIN-32-PIC-NEXT: "L100$pb":
-; DARWIN-32-PIC-NEXT:  popl    %ecx
+; DARWIN-32-PIC:       calll   L99$pb
+; DARWIN-32-PIC-NEXT: L99$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[ECX:%e.x]]
 ; DARWIN-32-PIC-NEXT:  movl    $262144, %eax
-; DARWIN-32-PIC-NEXT:  addl    L_src$non_lazy_ptr-"L100$pb"(%ecx), %eax
+; DARWIN-32-PIC-NEXT:  addl    L_src$non_lazy_ptr-L99$pb([[ECX]]), %eax
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _bam00:
@@ -6503,20 +6503,20 @@ entry:
 
 define i8* @bam01() nounwind {
 entry:
-       ret i8* bitcast (i32* getelementptr ([131072 x i32]* @dst, i32 0, i64 65536) to i8*)
-; LINUX-64-STATIC: bam01:
+       ret i8* bitcast (i32* getelementptr ([131072 x i32], [131072 x i32]* @dst, i32 0, i64 65536) to i8*)
+; LINUX-64-STATIC-LABEL: bam01:
 ; LINUX-64-STATIC: movl    $dst+262144, %eax
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: bam01:
+; LINUX-32-STATIC-LABEL: bam01:
 ; LINUX-32-STATIC:     movl    $dst+262144, %eax
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: bam01:
+; LINUX-32-PIC-LABEL: bam01:
 ; LINUX-32-PIC:        movl    $dst+262144, %eax
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: bam01:
+; LINUX-64-PIC-LABEL: bam01:
 ; LINUX-64-PIC:        movl    $262144, %eax
 ; LINUX-64-PIC-NEXT:   addq    dst@GOTPCREL(%rip), %rax
 ; LINUX-64-PIC-NEXT:   ret
@@ -6531,11 +6531,11 @@ entry:
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _bam01:
-; DARWIN-32-PIC:       call    "L101$pb"
-; DARWIN-32-PIC-NEXT: "L101$pb":
-; DARWIN-32-PIC-NEXT:  popl    %ecx
+; DARWIN-32-PIC:       calll   L100$pb
+; DARWIN-32-PIC-NEXT: L100$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[ECX:%e.x]]
 ; DARWIN-32-PIC-NEXT:  movl    $262144, %eax
-; DARWIN-32-PIC-NEXT:  addl    L_dst$non_lazy_ptr-"L101$pb"(%ecx), %eax
+; DARWIN-32-PIC-NEXT:  addl    L_dst$non_lazy_ptr-L100$pb([[ECX]]), %eax
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _bam01:
@@ -6556,20 +6556,20 @@ entry:
 
 define i8* @bxm01() nounwind {
 entry:
-       ret i8* bitcast (i32* getelementptr ([32 x i32]* @xdst, i32 0, i64 65536) to i8*)
-; LINUX-64-STATIC: bxm01:
+       ret i8* bitcast (i32* getelementptr ([32 x i32], [32 x i32]* @xdst, i32 0, i64 65536) to i8*)
+; LINUX-64-STATIC-LABEL: bxm01:
 ; LINUX-64-STATIC: movl    $xdst+262144, %eax
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: bxm01:
+; LINUX-32-STATIC-LABEL: bxm01:
 ; LINUX-32-STATIC:     movl    $xdst+262144, %eax
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: bxm01:
+; LINUX-32-PIC-LABEL: bxm01:
 ; LINUX-32-PIC:        movl    $xdst+262144, %eax
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: bxm01:
+; LINUX-64-PIC-LABEL: bxm01:
 ; LINUX-64-PIC:        movl    $262144, %eax
 ; LINUX-64-PIC-NEXT:   addq    xdst@GOTPCREL(%rip), %rax
 ; LINUX-64-PIC-NEXT:   ret
@@ -6584,11 +6584,11 @@ entry:
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _bxm01:
-; DARWIN-32-PIC:       call    "L102$pb"
-; DARWIN-32-PIC-NEXT: "L102$pb":
-; DARWIN-32-PIC-NEXT:  popl    %ecx
+; DARWIN-32-PIC:       calll   L101$pb
+; DARWIN-32-PIC-NEXT: L101$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[ECX:%e.x]]
 ; DARWIN-32-PIC-NEXT:  movl    $262144, %eax
-; DARWIN-32-PIC-NEXT:  addl    L_xdst$non_lazy_ptr-"L102$pb"(%ecx), %eax
+; DARWIN-32-PIC-NEXT:  addl    L_xdst$non_lazy_ptr-L101$pb([[ECX]]), %eax
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _bxm01:
@@ -6609,29 +6609,29 @@ entry:
 
 define i8* @bam02() nounwind {
 entry:
-       %0 = load i32** @ptr, align 8
-       %1 = getelementptr i32* %0, i64 65536
+       %0 = load i32*, i32** @ptr, align 8
+       %1 = getelementptr i32, i32* %0, i64 65536
        %2 = bitcast i32* %1 to i8*
        ret i8* %2
-; LINUX-64-STATIC: bam02:
+; LINUX-64-STATIC-LABEL: bam02:
 ; LINUX-64-STATIC: movl    $262144, %eax
 ; LINUX-64-STATIC: addq    ptr(%rip), %rax
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: bam02:
+; LINUX-32-STATIC-LABEL: bam02:
 ; LINUX-32-STATIC:     movl    $262144, %eax
 ; LINUX-32-STATIC-NEXT:        addl    ptr, %eax
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: bam02:
+; LINUX-32-PIC-LABEL: bam02:
 ; LINUX-32-PIC:        movl    $262144, %eax
 ; LINUX-32-PIC-NEXT:   addl    ptr, %eax
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: bam02:
-; LINUX-64-PIC:        movq    ptr@GOTPCREL(%rip), %rcx
-; LINUX-64-PIC-NEXT:   movl    $262144, %eax
-; LINUX-64-PIC-NEXT:   addq    (%rcx), %rax
+; LINUX-64-PIC-LABEL: bam02:
+; LINUX-64-PIC:        movl    $262144, %eax
+; LINUX-64-PIC-NEXT:   movq    ptr@GOTPCREL(%rip), [[RCX:%r.x]]
+; LINUX-64-PIC-NEXT:   addq    ([[RCX]]), %rax
 ; LINUX-64-PIC-NEXT:   ret
 
 ; DARWIN-32-STATIC: _bam02:
@@ -6640,55 +6640,55 @@ entry:
 ; DARWIN-32-STATIC-NEXT:       ret
 
 ; DARWIN-32-DYNAMIC: _bam02:
-; DARWIN-32-DYNAMIC:   movl    L_ptr$non_lazy_ptr, %ecx
+; DARWIN-32-DYNAMIC:   movl    L_ptr$non_lazy_ptr, [[ECX:%e.x]]
 ; DARWIN-32-DYNAMIC-NEXT:      movl    $262144, %eax
-; DARWIN-32-DYNAMIC-NEXT:      addl    (%ecx), %eax
+; DARWIN-32-DYNAMIC-NEXT:      addl    ([[ECX]]), %eax
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _bam02:
-; DARWIN-32-PIC:       call    "L103$pb"
-; DARWIN-32-PIC-NEXT: "L103$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  movl    L_ptr$non_lazy_ptr-"L103$pb"(%eax), %ecx
+; DARWIN-32-PIC:       calll   L102$pb
+; DARWIN-32-PIC-NEXT: L102$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    L_ptr$non_lazy_ptr-L102$pb([[EAX]]), [[ECX:%e.x]]
 ; DARWIN-32-PIC-NEXT:  movl    $262144, %eax
-; DARWIN-32-PIC-NEXT:  addl    (%ecx), %eax
+; DARWIN-32-PIC-NEXT:  addl    ([[ECX]]), %eax
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _bam02:
-; DARWIN-64-STATIC:    movq    _ptr@GOTPCREL(%rip), %rcx
-; DARWIN-64-STATIC-NEXT:       movl    $262144, %eax
-; DARWIN-64-STATIC-NEXT:       addq    (%rcx), %rax
+; DARWIN-64-STATIC:    movl    $262144, %eax
+; DARWIN-64-STATIC-NEXT:       movq    _ptr@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       addq    ([[RCX]]), %rax
 ; DARWIN-64-STATIC-NEXT:       ret
 
 ; DARWIN-64-DYNAMIC: _bam02:
-; DARWIN-64-DYNAMIC:   movq    _ptr@GOTPCREL(%rip), %rcx
-; DARWIN-64-DYNAMIC-NEXT:      movl    $262144, %eax
-; DARWIN-64-DYNAMIC-NEXT:      addq    (%rcx), %rax
+; DARWIN-64-DYNAMIC:   movl    $262144, %eax
+; DARWIN-64-DYNAMIC-NEXT:      movq    _ptr@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      addq    ([[RCX]]), %rax
 ; DARWIN-64-DYNAMIC-NEXT:      ret
 
 ; DARWIN-64-PIC: _bam02:
-; DARWIN-64-PIC:       movq    _ptr@GOTPCREL(%rip), %rcx
-; DARWIN-64-PIC-NEXT:  movl    $262144, %eax
-; DARWIN-64-PIC-NEXT:  addq    (%rcx), %rax
+; DARWIN-64-PIC:       movl    $262144, %eax
+; DARWIN-64-PIC-NEXT:  movq    _ptr@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-PIC-NEXT:  addq    ([[RCX]]), %rax
 ; DARWIN-64-PIC-NEXT:  ret
 }
 
 define i8* @bam03() nounwind {
 entry:
-       ret i8* bitcast (i32* getelementptr ([131072 x i32]* @dsrc, i32 0, i64 65536) to i8*)
-; LINUX-64-STATIC: bam03:
+       ret i8* bitcast (i32* getelementptr ([131072 x i32], [131072 x i32]* @dsrc, i32 0, i64 65536) to i8*)
+; LINUX-64-STATIC-LABEL: bam03:
 ; LINUX-64-STATIC: movl    $dsrc+262144, %eax
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: bam03:
+; LINUX-32-STATIC-LABEL: bam03:
 ; LINUX-32-STATIC:     movl    $dsrc+262144, %eax
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: bam03:
+; LINUX-32-PIC-LABEL: bam03:
 ; LINUX-32-PIC:        movl    $dsrc+262144, %eax
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: bam03:
+; LINUX-64-PIC-LABEL: bam03:
 ; LINUX-64-PIC:        movl    $262144, %eax
 ; LINUX-64-PIC-NEXT:   addq    dsrc@GOTPCREL(%rip), %rax
 ; LINUX-64-PIC-NEXT:   ret
@@ -6702,10 +6702,10 @@ entry:
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _bam03:
-; DARWIN-32-PIC:       call    "L104$pb"
-; DARWIN-32-PIC-NEXT: "L104$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  leal    _dsrc+262144-"L104$pb"(%eax), %eax
+; DARWIN-32-PIC:       calll   L103$pb
+; DARWIN-32-PIC-NEXT: L103$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  leal    (_dsrc-L103$pb)+262144([[EAX]]), %eax
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _bam03:
@@ -6723,20 +6723,20 @@ entry:
 
 define i8* @bam04() nounwind {
 entry:
-       ret i8* bitcast (i32* getelementptr ([131072 x i32]* @ddst, i32 0, i64 65536) to i8*)
-; LINUX-64-STATIC: bam04:
+       ret i8* bitcast (i32* getelementptr ([131072 x i32], [131072 x i32]* @ddst, i32 0, i64 65536) to i8*)
+; LINUX-64-STATIC-LABEL: bam04:
 ; LINUX-64-STATIC: movl    $ddst+262144, %eax
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: bam04:
+; LINUX-32-STATIC-LABEL: bam04:
 ; LINUX-32-STATIC:     movl    $ddst+262144, %eax
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: bam04:
+; LINUX-32-PIC-LABEL: bam04:
 ; LINUX-32-PIC:        movl    $ddst+262144, %eax
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: bam04:
+; LINUX-64-PIC-LABEL: bam04:
 ; LINUX-64-PIC:        movl    $262144, %eax
 ; LINUX-64-PIC-NEXT:   addq    ddst@GOTPCREL(%rip), %rax
 ; LINUX-64-PIC-NEXT:   ret
@@ -6750,10 +6750,10 @@ entry:
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _bam04:
-; DARWIN-32-PIC:       call    "L105$pb"
-; DARWIN-32-PIC-NEXT: "L105$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  leal    _ddst+262144-"L105$pb"(%eax), %eax
+; DARWIN-32-PIC:       calll   L104$pb
+; DARWIN-32-PIC-NEXT: L104$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  leal    (_ddst-L104$pb)+262144([[EAX]]), %eax
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _bam04:
@@ -6771,29 +6771,29 @@ entry:
 
 define i8* @bam05() nounwind {
 entry:
-       %0 = load i32** @dptr, align 8
-       %1 = getelementptr i32* %0, i64 65536
+       %0 = load i32*, i32** @dptr, align 8
+       %1 = getelementptr i32, i32* %0, i64 65536
        %2 = bitcast i32* %1 to i8*
        ret i8* %2
-; LINUX-64-STATIC: bam05:
+; LINUX-64-STATIC-LABEL: bam05:
 ; LINUX-64-STATIC: movl    $262144, %eax
 ; LINUX-64-STATIC: addq    dptr(%rip), %rax
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: bam05:
+; LINUX-32-STATIC-LABEL: bam05:
 ; LINUX-32-STATIC:     movl    $262144, %eax
 ; LINUX-32-STATIC-NEXT:        addl    dptr, %eax
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: bam05:
+; LINUX-32-PIC-LABEL: bam05:
 ; LINUX-32-PIC:        movl    $262144, %eax
 ; LINUX-32-PIC-NEXT:   addl    dptr, %eax
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: bam05:
-; LINUX-64-PIC:        movq    dptr@GOTPCREL(%rip), %rcx
-; LINUX-64-PIC-NEXT:   movl    $262144, %eax
-; LINUX-64-PIC-NEXT:   addq    (%rcx), %rax
+; LINUX-64-PIC-LABEL: bam05:
+; LINUX-64-PIC:        movl    $262144, %eax
+; LINUX-64-PIC-NEXT:   movq    dptr@GOTPCREL(%rip), [[RCX:%r.x]]
+; LINUX-64-PIC-NEXT:   addq    ([[RCX]]), %rax
 ; LINUX-64-PIC-NEXT:   ret
 
 ; DARWIN-32-STATIC: _bam05:
@@ -6807,11 +6807,11 @@ entry:
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _bam05:
-; DARWIN-32-PIC:       call    "L106$pb"
-; DARWIN-32-PIC-NEXT: "L106$pb":
-; DARWIN-32-PIC-NEXT:  popl    %ecx
+; DARWIN-32-PIC:       calll   L105$pb
+; DARWIN-32-PIC-NEXT: L105$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[ECX:%e.x]]
 ; DARWIN-32-PIC-NEXT:  movl    $262144, %eax
-; DARWIN-32-PIC-NEXT:  addl    _dptr-"L106$pb"(%ecx), %eax
+; DARWIN-32-PIC-NEXT:  addl    _dptr-L105$pb([[ECX]]), %eax
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _bam05:
@@ -6832,20 +6832,20 @@ entry:
 
 define i8* @bam06() nounwind {
 entry:
-       ret i8* bitcast (i32* getelementptr ([131072 x i32]* @lsrc, i32 0, i64 65536) to i8*)
-; LINUX-64-STATIC: bam06:
+       ret i8* bitcast (i32* getelementptr ([131072 x i32], [131072 x i32]* @lsrc, i32 0, i64 65536) to i8*)
+; LINUX-64-STATIC-LABEL: bam06:
 ; LINUX-64-STATIC: movl    $lsrc+262144, %eax
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: bam06:
+; LINUX-32-STATIC-LABEL: bam06:
 ; LINUX-32-STATIC:     movl    $lsrc+262144, %eax
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: bam06:
+; LINUX-32-PIC-LABEL: bam06:
 ; LINUX-32-PIC:        movl    $lsrc+262144, %eax
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: bam06:
+; LINUX-64-PIC-LABEL: bam06:
 ; LINUX-64-PIC:        leaq    lsrc+262144(%rip), %rax
 ; LINUX-64-PIC-NEXT:   ret
 
@@ -6858,10 +6858,10 @@ entry:
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _bam06:
-; DARWIN-32-PIC:       call    "L107$pb"
-; DARWIN-32-PIC-NEXT: "L107$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  leal    _lsrc+262144-"L107$pb"(%eax), %eax
+; DARWIN-32-PIC:       calll   L106$pb
+; DARWIN-32-PIC-NEXT: L106$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  leal    (_lsrc-L106$pb)+262144([[EAX]]), %eax
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _bam06:
@@ -6879,20 +6879,20 @@ entry:
 
 define i8* @bam07() nounwind {
 entry:
-       ret i8* bitcast (i32* getelementptr ([131072 x i32]* @ldst, i32 0, i64 65536) to i8*)
-; LINUX-64-STATIC: bam07:
+       ret i8* bitcast (i32* getelementptr ([131072 x i32], [131072 x i32]* @ldst, i32 0, i64 65536) to i8*)
+; LINUX-64-STATIC-LABEL: bam07:
 ; LINUX-64-STATIC: movl    $ldst+262144, %eax
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: bam07:
+; LINUX-32-STATIC-LABEL: bam07:
 ; LINUX-32-STATIC:     movl    $ldst+262144, %eax
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: bam07:
+; LINUX-32-PIC-LABEL: bam07:
 ; LINUX-32-PIC:        movl    $ldst+262144, %eax
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: bam07:
+; LINUX-64-PIC-LABEL: bam07:
 ; LINUX-64-PIC:        leaq    ldst+262144(%rip), %rax
 ; LINUX-64-PIC-NEXT:   ret
 
@@ -6905,10 +6905,10 @@ entry:
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _bam07:
-; DARWIN-32-PIC:       call    "L108$pb"
-; DARWIN-32-PIC-NEXT: "L108$pb":
+; DARWIN-32-PIC:       calll   L107$pb
+; DARWIN-32-PIC-NEXT: L107$pb:
 ; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  leal    _ldst+262144-"L108$pb"(%eax), %eax
+; DARWIN-32-PIC-NEXT:  leal    (_ldst-L107$pb)+262144([[EAX]]), %eax
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _bam07:
@@ -6926,26 +6926,26 @@ entry:
 
 define i8* @bam08() nounwind {
 entry:
-       %0 = load i32** @lptr, align 8
-       %1 = getelementptr i32* %0, i64 65536
+       %0 = load i32*, i32** @lptr, align 8
+       %1 = getelementptr i32, i32* %0, i64 65536
        %2 = bitcast i32* %1 to i8*
        ret i8* %2
-; LINUX-64-STATIC: bam08:
+; LINUX-64-STATIC-LABEL: bam08:
 ; LINUX-64-STATIC: movl    $262144, %eax
 ; LINUX-64-STATIC: addq    lptr(%rip), %rax
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: bam08:
+; LINUX-32-STATIC-LABEL: bam08:
 ; LINUX-32-STATIC:     movl    $262144, %eax
 ; LINUX-32-STATIC-NEXT:        addl    lptr, %eax
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: bam08:
+; LINUX-32-PIC-LABEL: bam08:
 ; LINUX-32-PIC:        movl    $262144, %eax
 ; LINUX-32-PIC-NEXT:   addl    lptr, %eax
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: bam08:
+; LINUX-64-PIC-LABEL: bam08:
 ; LINUX-64-PIC:        movl    $262144, %eax
 ; LINUX-64-PIC-NEXT:   addq    lptr(%rip), %rax
 ; LINUX-64-PIC-NEXT:   ret
@@ -6961,11 +6961,11 @@ entry:
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _bam08:
-; DARWIN-32-PIC:       call    "L109$pb"
-; DARWIN-32-PIC-NEXT: "L109$pb":
-; DARWIN-32-PIC-NEXT:  popl    %ecx
+; DARWIN-32-PIC:       calll   L108$pb
+; DARWIN-32-PIC-NEXT: L108$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[ECX:%e.x]]
 ; DARWIN-32-PIC-NEXT:  movl    $262144, %eax
-; DARWIN-32-PIC-NEXT:  addl    _lptr-"L109$pb"(%ecx), %eax
+; DARWIN-32-PIC-NEXT:  addl    _lptr-L108$pb([[ECX]]), %eax
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _bam08:
@@ -6987,1499 +6987,1500 @@ entry:
 define i8* @cat00(i64 %i) nounwind {
 entry:
        %0 = add i64 %i, 16
-       %1 = getelementptr [131072 x i32]* @src, i64 0, i64 %0
+       %1 = getelementptr [131072 x i32], [131072 x i32]* @src, i64 0, i64 %0
        %2 = bitcast i32* %1 to i8*
        ret i8* %2
-; LINUX-64-STATIC: cat00:
+; LINUX-64-STATIC-LABEL: cat00:
 ; LINUX-64-STATIC: leaq    src+64(,%rdi,4), %rax
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: cat00:
-; LINUX-32-STATIC:     movl    4(%esp), %eax
-; LINUX-32-STATIC-NEXT:        leal    src+64(,%eax,4), %eax
+; LINUX-32-STATIC-LABEL: cat00:
+; LINUX-32-STATIC:     movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT:        leal    src+64(,[[EAX]],4), %eax
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: cat00:
-; LINUX-32-PIC:        movl    4(%esp), %eax
-; LINUX-32-PIC-NEXT:   leal    src+64(,%eax,4), %eax
+; LINUX-32-PIC-LABEL: cat00:
+; LINUX-32-PIC:        movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT:   leal    src+64(,[[EAX]],4), %eax
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: cat00:
-; LINUX-64-PIC:        movq    src@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT:   leaq    64(%rax,%rdi,4), %rax
+; LINUX-64-PIC-LABEL: cat00:
+; LINUX-64-PIC:        movq    src@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT:   leaq    64([[RAX]],%rdi,4), %rax
 ; LINUX-64-PIC-NEXT:   ret
 
 ; DARWIN-32-STATIC: _cat00:
-; DARWIN-32-STATIC:    movl    4(%esp), %eax
-; DARWIN-32-STATIC-NEXT:       leal    _src+64(,%eax,4), %eax
+; DARWIN-32-STATIC:    movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       leal    _src+64(,[[EAX]],4), %eax
 ; DARWIN-32-STATIC-NEXT:       ret
 
 ; DARWIN-32-DYNAMIC: _cat00:
-; DARWIN-32-DYNAMIC:   movl    4(%esp), %eax
-; DARWIN-32-DYNAMIC-NEXT:      movl    L_src$non_lazy_ptr, %ecx
-; DARWIN-32-DYNAMIC-NEXT:      leal    64(%ecx,%eax,4), %eax
+; DARWIN-32-DYNAMIC:   movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    L_src$non_lazy_ptr, [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      leal    64([[ECX]],[[EAX]],4), %eax
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _cat00:
-; DARWIN-32-PIC:       call    "L110$pb"
-; DARWIN-32-PIC-NEXT: "L110$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  movl    4(%esp), %ecx
-; DARWIN-32-PIC-NEXT:  movl    L_src$non_lazy_ptr-"L110$pb"(%eax), %eax
-; DARWIN-32-PIC-NEXT:  leal    64(%eax,%ecx,4), %eax
+; DARWIN-32-PIC:       calll   L109$pb
+; DARWIN-32-PIC-NEXT: L109$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    L_src$non_lazy_ptr-L109$pb([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  leal    64([[EAX]],[[ECX]],4), %eax
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _cat00:
-; DARWIN-64-STATIC:    movq    _src@GOTPCREL(%rip), %rax
-; DARWIN-64-STATIC-NEXT:       leaq    64(%rax,%rdi,4), %rax
+; DARWIN-64-STATIC:    movq    _src@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       leaq    64([[RAX]],%rdi,4), %rax
 ; DARWIN-64-STATIC-NEXT:       ret
 
 ; DARWIN-64-DYNAMIC: _cat00:
-; DARWIN-64-DYNAMIC:   movq    _src@GOTPCREL(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT:      leaq    64(%rax,%rdi,4), %rax
+; DARWIN-64-DYNAMIC:   movq    _src@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      leaq    64([[RAX]],%rdi,4), %rax
 ; DARWIN-64-DYNAMIC-NEXT:      ret
 
 ; DARWIN-64-PIC: _cat00:
-; DARWIN-64-PIC:       movq    _src@GOTPCREL(%rip), %rax
-; DARWIN-64-PIC-NEXT:  leaq    64(%rax,%rdi,4), %rax
+; DARWIN-64-PIC:       movq    _src@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT:  leaq    64([[RAX]],%rdi,4), %rax
 ; DARWIN-64-PIC-NEXT:  ret
 }
 
 define i8* @cxt00(i64 %i) nounwind {
 entry:
        %0 = add i64 %i, 16
-       %1 = getelementptr [32 x i32]* @xsrc, i64 0, i64 %0
+       %1 = getelementptr [32 x i32], [32 x i32]* @xsrc, i64 0, i64 %0
        %2 = bitcast i32* %1 to i8*
        ret i8* %2
-; LINUX-64-STATIC: cxt00:
+; LINUX-64-STATIC-LABEL: cxt00:
 ; LINUX-64-STATIC: leaq    xsrc+64(,%rdi,4), %rax
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: cxt00:
-; LINUX-32-STATIC:     movl    4(%esp), %eax
-; LINUX-32-STATIC-NEXT:        leal    xsrc+64(,%eax,4), %eax
+; LINUX-32-STATIC-LABEL: cxt00:
+; LINUX-32-STATIC:     movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT:        leal    xsrc+64(,[[EAX]],4), %eax
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: cxt00:
-; LINUX-32-PIC:        movl    4(%esp), %eax
-; LINUX-32-PIC-NEXT:   leal    xsrc+64(,%eax,4), %eax
+; LINUX-32-PIC-LABEL: cxt00:
+; LINUX-32-PIC:        movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT:   leal    xsrc+64(,[[EAX]],4), %eax
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: cxt00:
-; LINUX-64-PIC:        movq    xsrc@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT:   leaq    64(%rax,%rdi,4), %rax
+; LINUX-64-PIC-LABEL: cxt00:
+; LINUX-64-PIC:        movq    xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT:   leaq    64([[RAX]],%rdi,4), %rax
 ; LINUX-64-PIC-NEXT:   ret
 
 ; DARWIN-32-STATIC: _cxt00:
-; DARWIN-32-STATIC:    movl    4(%esp), %eax
-; DARWIN-32-STATIC-NEXT:       leal    _xsrc+64(,%eax,4), %eax
+; DARWIN-32-STATIC:    movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       leal    _xsrc+64(,[[EAX]],4), %eax
 ; DARWIN-32-STATIC-NEXT:       ret
 
 ; DARWIN-32-DYNAMIC: _cxt00:
-; DARWIN-32-DYNAMIC:   movl    4(%esp), %eax
-; DARWIN-32-DYNAMIC-NEXT:      movl    L_xsrc$non_lazy_ptr, %ecx
-; DARWIN-32-DYNAMIC-NEXT:      leal    64(%ecx,%eax,4), %eax
+; DARWIN-32-DYNAMIC:   movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    L_xsrc$non_lazy_ptr, [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      leal    64([[ECX]],[[EAX]],4), %eax
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _cxt00:
-; DARWIN-32-PIC:       call    "L111$pb"
-; DARWIN-32-PIC-NEXT: "L111$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  movl    4(%esp), %ecx
-; DARWIN-32-PIC-NEXT:  movl    L_xsrc$non_lazy_ptr-"L111$pb"(%eax), %eax
-; DARWIN-32-PIC-NEXT:  leal    64(%eax,%ecx,4), %eax
+; DARWIN-32-PIC:       calll   L110$pb
+; DARWIN-32-PIC-NEXT: L110$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    L_xsrc$non_lazy_ptr-L110$pb([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  leal    64([[EAX]],[[ECX]],4), %eax
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _cxt00:
-; DARWIN-64-STATIC:    movq    _xsrc@GOTPCREL(%rip), %rax
-; DARWIN-64-STATIC-NEXT:       leaq    64(%rax,%rdi,4), %rax
+; DARWIN-64-STATIC:    movq    _xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       leaq    64([[RAX]],%rdi,4), %rax
 ; DARWIN-64-STATIC-NEXT:       ret
 
 ; DARWIN-64-DYNAMIC: _cxt00:
-; DARWIN-64-DYNAMIC:   movq    _xsrc@GOTPCREL(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT:      leaq    64(%rax,%rdi,4), %rax
+; DARWIN-64-DYNAMIC:   movq    _xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      leaq    64([[RAX]],%rdi,4), %rax
 ; DARWIN-64-DYNAMIC-NEXT:      ret
 
 ; DARWIN-64-PIC: _cxt00:
-; DARWIN-64-PIC:       movq    _xsrc@GOTPCREL(%rip), %rax
-; DARWIN-64-PIC-NEXT:  leaq    64(%rax,%rdi,4), %rax
+; DARWIN-64-PIC:       movq    _xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT:  leaq    64([[RAX]],%rdi,4), %rax
 ; DARWIN-64-PIC-NEXT:  ret
 }
 
 define i8* @cat01(i64 %i) nounwind {
 entry:
        %0 = add i64 %i, 16
-       %1 = getelementptr [131072 x i32]* @dst, i64 0, i64 %0
+       %1 = getelementptr [131072 x i32], [131072 x i32]* @dst, i64 0, i64 %0
        %2 = bitcast i32* %1 to i8*
        ret i8* %2
-; LINUX-64-STATIC: cat01:
+; LINUX-64-STATIC-LABEL: cat01:
 ; LINUX-64-STATIC: leaq    dst+64(,%rdi,4), %rax
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: cat01:
-; LINUX-32-STATIC:     movl    4(%esp), %eax
-; LINUX-32-STATIC-NEXT:        leal    dst+64(,%eax,4), %eax
+; LINUX-32-STATIC-LABEL: cat01:
+; LINUX-32-STATIC:     movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT:        leal    dst+64(,[[EAX]],4), %eax
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: cat01:
-; LINUX-32-PIC:        movl    4(%esp), %eax
-; LINUX-32-PIC-NEXT:   leal    dst+64(,%eax,4), %eax
+; LINUX-32-PIC-LABEL: cat01:
+; LINUX-32-PIC:        movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT:   leal    dst+64(,[[EAX]],4), %eax
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: cat01:
-; LINUX-64-PIC:        movq    dst@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT:   leaq    64(%rax,%rdi,4), %rax
+; LINUX-64-PIC-LABEL: cat01:
+; LINUX-64-PIC:        movq    dst@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT:   leaq    64([[RAX]],%rdi,4), %rax
 ; LINUX-64-PIC-NEXT:   ret
 
 ; DARWIN-32-STATIC: _cat01:
-; DARWIN-32-STATIC:    movl    4(%esp), %eax
-; DARWIN-32-STATIC-NEXT:       leal    _dst+64(,%eax,4), %eax
+; DARWIN-32-STATIC:    movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       leal    _dst+64(,[[EAX]],4), %eax
 ; DARWIN-32-STATIC-NEXT:       ret
 
 ; DARWIN-32-DYNAMIC: _cat01:
-; DARWIN-32-DYNAMIC:   movl    4(%esp), %eax
-; DARWIN-32-DYNAMIC-NEXT:      movl    L_dst$non_lazy_ptr, %ecx
-; DARWIN-32-DYNAMIC-NEXT:      leal    64(%ecx,%eax,4), %eax
+; DARWIN-32-DYNAMIC:   movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    L_dst$non_lazy_ptr, [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      leal    64([[ECX]],[[EAX]],4), %eax
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _cat01:
-; DARWIN-32-PIC:       call    "L112$pb"
-; DARWIN-32-PIC-NEXT: "L112$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  movl    4(%esp), %ecx
-; DARWIN-32-PIC-NEXT:  movl    L_dst$non_lazy_ptr-"L112$pb"(%eax), %eax
-; DARWIN-32-PIC-NEXT:  leal    64(%eax,%ecx,4), %eax
+; DARWIN-32-PIC:       calll   L111$pb
+; DARWIN-32-PIC-NEXT: L111$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    L_dst$non_lazy_ptr-L111$pb([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  leal    64([[EAX]],[[ECX]],4), %eax
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _cat01:
-; DARWIN-64-STATIC:    movq    _dst@GOTPCREL(%rip), %rax
-; DARWIN-64-STATIC-NEXT:       leaq    64(%rax,%rdi,4), %rax
+; DARWIN-64-STATIC:    movq    _dst@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       leaq    64([[RAX]],%rdi,4), %rax
 ; DARWIN-64-STATIC-NEXT:       ret
 
 ; DARWIN-64-DYNAMIC: _cat01:
-; DARWIN-64-DYNAMIC:   movq    _dst@GOTPCREL(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT:      leaq    64(%rax,%rdi,4), %rax
+; DARWIN-64-DYNAMIC:   movq    _dst@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      leaq    64([[RAX]],%rdi,4), %rax
 ; DARWIN-64-DYNAMIC-NEXT:      ret
 
 ; DARWIN-64-PIC: _cat01:
-; DARWIN-64-PIC:       movq    _dst@GOTPCREL(%rip), %rax
-; DARWIN-64-PIC-NEXT:  leaq    64(%rax,%rdi,4), %rax
+; DARWIN-64-PIC:       movq    _dst@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT:  leaq    64([[RAX]],%rdi,4), %rax
 ; DARWIN-64-PIC-NEXT:  ret
 }
 
 define i8* @cxt01(i64 %i) nounwind {
 entry:
        %0 = add i64 %i, 16
-       %1 = getelementptr [32 x i32]* @xdst, i64 0, i64 %0
+       %1 = getelementptr [32 x i32], [32 x i32]* @xdst, i64 0, i64 %0
        %2 = bitcast i32* %1 to i8*
        ret i8* %2
-; LINUX-64-STATIC: cxt01:
+; LINUX-64-STATIC-LABEL: cxt01:
 ; LINUX-64-STATIC: leaq    xdst+64(,%rdi,4), %rax
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: cxt01:
-; LINUX-32-STATIC:     movl    4(%esp), %eax
-; LINUX-32-STATIC-NEXT:        leal    xdst+64(,%eax,4), %eax
+; LINUX-32-STATIC-LABEL: cxt01:
+; LINUX-32-STATIC:     movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT:        leal    xdst+64(,[[EAX]],4), %eax
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: cxt01:
-; LINUX-32-PIC:        movl    4(%esp), %eax
-; LINUX-32-PIC-NEXT:   leal    xdst+64(,%eax,4), %eax
+; LINUX-32-PIC-LABEL: cxt01:
+; LINUX-32-PIC:        movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT:   leal    xdst+64(,[[EAX]],4), %eax
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: cxt01:
-; LINUX-64-PIC:        movq    xdst@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT:   leaq    64(%rax,%rdi,4), %rax
+; LINUX-64-PIC-LABEL: cxt01:
+; LINUX-64-PIC:        movq    xdst@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT:   leaq    64([[RAX]],%rdi,4), %rax
 ; LINUX-64-PIC-NEXT:   ret
 
 ; DARWIN-32-STATIC: _cxt01:
-; DARWIN-32-STATIC:    movl    4(%esp), %eax
-; DARWIN-32-STATIC-NEXT:       leal    _xdst+64(,%eax,4), %eax
+; DARWIN-32-STATIC:    movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       leal    _xdst+64(,[[EAX]],4), %eax
 ; DARWIN-32-STATIC-NEXT:       ret
 
 ; DARWIN-32-DYNAMIC: _cxt01:
-; DARWIN-32-DYNAMIC:   movl    4(%esp), %eax
-; DARWIN-32-DYNAMIC-NEXT:      movl    L_xdst$non_lazy_ptr, %ecx
-; DARWIN-32-DYNAMIC-NEXT:      leal    64(%ecx,%eax,4), %eax
+; DARWIN-32-DYNAMIC:   movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    L_xdst$non_lazy_ptr, [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      leal    64([[ECX]],[[EAX]],4), %eax
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _cxt01:
-; DARWIN-32-PIC:       call    "L113$pb"
-; DARWIN-32-PIC-NEXT: "L113$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  movl    4(%esp), %ecx
-; DARWIN-32-PIC-NEXT:  movl    L_xdst$non_lazy_ptr-"L113$pb"(%eax), %eax
-; DARWIN-32-PIC-NEXT:  leal    64(%eax,%ecx,4), %eax
+; DARWIN-32-PIC:       calll   L112$pb
+; DARWIN-32-PIC-NEXT: L112$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    L_xdst$non_lazy_ptr-L112$pb([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  leal    64([[EAX]],[[ECX]],4), %eax
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _cxt01:
-; DARWIN-64-STATIC:    movq    _xdst@GOTPCREL(%rip), %rax
-; DARWIN-64-STATIC-NEXT:       leaq    64(%rax,%rdi,4), %rax
+; DARWIN-64-STATIC:    movq    _xdst@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       leaq    64([[RAX]],%rdi,4), %rax
 ; DARWIN-64-STATIC-NEXT:       ret
 
 ; DARWIN-64-DYNAMIC: _cxt01:
-; DARWIN-64-DYNAMIC:   movq    _xdst@GOTPCREL(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT:      leaq    64(%rax,%rdi,4), %rax
+; DARWIN-64-DYNAMIC:   movq    _xdst@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      leaq    64([[RAX]],%rdi,4), %rax
 ; DARWIN-64-DYNAMIC-NEXT:      ret
 
 ; DARWIN-64-PIC: _cxt01:
-; DARWIN-64-PIC:       movq    _xdst@GOTPCREL(%rip), %rax
-; DARWIN-64-PIC-NEXT:  leaq    64(%rax,%rdi,4), %rax
+; DARWIN-64-PIC:       movq    _xdst@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT:  leaq    64([[RAX]],%rdi,4), %rax
 ; DARWIN-64-PIC-NEXT:  ret
 }
 
 define i8* @cat02(i64 %i) nounwind {
 entry:
-       %0 = load i32** @ptr, align 8
+       %0 = load i32*, i32** @ptr, align 8
        %1 = add i64 %i, 16
-       %2 = getelementptr i32* %0, i64 %1
+       %2 = getelementptr i32, i32* %0, i64 %1
        %3 = bitcast i32* %2 to i8*
        ret i8* %3
-; LINUX-64-STATIC: cat02:
-; LINUX-64-STATIC: movq    ptr(%rip), %rax
-; LINUX-64-STATIC: leaq    64(%rax,%rdi,4), %rax
+; LINUX-64-STATIC-LABEL: cat02:
+; LINUX-64-STATIC: movq    ptr(%rip), [[RAX:%r.x]]
+; LINUX-64-STATIC: leaq    64([[RAX]],%rdi,4), %rax
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: cat02:
-; LINUX-32-STATIC:     movl    4(%esp), %eax
-; LINUX-32-STATIC-NEXT:        movl    ptr, %ecx
-; LINUX-32-STATIC-NEXT:        leal    64(%ecx,%eax,4), %eax
+; LINUX-32-STATIC-LABEL: cat02:
+; LINUX-32-STATIC:     movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT:        movl    ptr, [[ECX:%e.x]]
+; LINUX-32-STATIC-NEXT:        leal    64([[ECX]],[[EAX]],4), %eax
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: cat02:
-; LINUX-32-PIC:        movl    4(%esp), %eax
-; LINUX-32-PIC-NEXT:   movl    ptr, %ecx
-; LINUX-32-PIC-NEXT:   leal    64(%ecx,%eax,4), %eax
+; LINUX-32-PIC-LABEL: cat02:
+; LINUX-32-PIC:        movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT:   movl    ptr, [[ECX:%e.x]]
+; LINUX-32-PIC-NEXT:   leal    64([[ECX]],[[EAX]],4), %eax
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: cat02:
-; LINUX-64-PIC:        movq    ptr@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT:   movq    (%rax), %rax
-; LINUX-64-PIC-NEXT:   leaq    64(%rax,%rdi,4), %rax
+; LINUX-64-PIC-LABEL: cat02:
+; LINUX-64-PIC:        movq    ptr@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT:   movq    ([[RAX]]), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT:   leaq    64([[RAX]],%rdi,4), %rax
 ; LINUX-64-PIC-NEXT:   ret
 
 ; DARWIN-32-STATIC: _cat02:
-; DARWIN-32-STATIC:    movl    4(%esp), %eax
-; DARWIN-32-STATIC-NEXT:       movl    _ptr, %ecx
-; DARWIN-32-STATIC-NEXT:       leal    64(%ecx,%eax,4), %eax
+; DARWIN-32-STATIC:    movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       movl    _ptr, [[ECX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       leal    64([[ECX]],[[EAX]],4), %eax
 ; DARWIN-32-STATIC-NEXT:       ret
 
 ; DARWIN-32-DYNAMIC: _cat02:
-; DARWIN-32-DYNAMIC:   movl    L_ptr$non_lazy_ptr, %eax
-; DARWIN-32-DYNAMIC-NEXT:      movl    (%eax), %eax
-; DARWIN-32-DYNAMIC-NEXT:      movl    4(%esp), %ecx
-; DARWIN-32-DYNAMIC-NEXT:      leal    64(%eax,%ecx,4), %eax
+; DARWIN-32-DYNAMIC:   movl    L_ptr$non_lazy_ptr, [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    ([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    4(%esp), [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      leal    64([[EAX]],[[ECX]],4), %eax
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _cat02:
-; DARWIN-32-PIC:       call    "L114$pb"
-; DARWIN-32-PIC-NEXT: "L114$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  movl    L_ptr$non_lazy_ptr-"L114$pb"(%eax), %eax
-; DARWIN-32-PIC-NEXT:  movl    (%eax), %eax
-; DARWIN-32-PIC-NEXT:  movl    4(%esp), %ecx
-; DARWIN-32-PIC-NEXT:  leal    64(%eax,%ecx,4), %eax
+; DARWIN-32-PIC:       calll   L113$pb
+; DARWIN-32-PIC-NEXT: L113$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    L_ptr$non_lazy_ptr-L113$pb([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    ([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  leal    64([[EAX]],[[ECX]],4), %eax
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _cat02:
-; DARWIN-64-STATIC:    movq    _ptr@GOTPCREL(%rip), %rax
-; DARWIN-64-STATIC-NEXT:       movq    (%rax), %rax
-; DARWIN-64-STATIC-NEXT:       leaq    64(%rax,%rdi,4), %rax
+; DARWIN-64-STATIC:    movq    _ptr@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movq    ([[RAX]]), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       leaq    64([[RAX]],%rdi,4), %rax
 ; DARWIN-64-STATIC-NEXT:       ret
 
 ; DARWIN-64-DYNAMIC: _cat02:
-; DARWIN-64-DYNAMIC:   movq    _ptr@GOTPCREL(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT:      movq    (%rax), %rax
-; DARWIN-64-DYNAMIC-NEXT:      leaq    64(%rax,%rdi,4), %rax
+; DARWIN-64-DYNAMIC:   movq    _ptr@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movq    ([[RAX]]), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      leaq    64([[RAX]],%rdi,4), %rax
 ; DARWIN-64-DYNAMIC-NEXT:      ret
 
 ; DARWIN-64-PIC: _cat02:
-; DARWIN-64-PIC:       movq    _ptr@GOTPCREL(%rip), %rax
-; DARWIN-64-PIC-NEXT:  movq    (%rax), %rax
-; DARWIN-64-PIC-NEXT:  leaq    64(%rax,%rdi,4), %rax
+; DARWIN-64-PIC:       movq    _ptr@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movq    ([[RAX]]), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT:  leaq    64([[RAX]],%rdi,4), %rax
 ; DARWIN-64-PIC-NEXT:  ret
 }
 
 define i8* @cat03(i64 %i) nounwind {
 entry:
        %0 = add i64 %i, 16
-       %1 = getelementptr [131072 x i32]* @dsrc, i64 0, i64 %0
+       %1 = getelementptr [131072 x i32], [131072 x i32]* @dsrc, i64 0, i64 %0
        %2 = bitcast i32* %1 to i8*
        ret i8* %2
-; LINUX-64-STATIC: cat03:
+; LINUX-64-STATIC-LABEL: cat03:
 ; LINUX-64-STATIC: leaq    dsrc+64(,%rdi,4), %rax
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: cat03:
-; LINUX-32-STATIC:     movl    4(%esp), %eax
-; LINUX-32-STATIC-NEXT:        leal    dsrc+64(,%eax,4), %eax
+; LINUX-32-STATIC-LABEL: cat03:
+; LINUX-32-STATIC:     movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT:        leal    dsrc+64(,[[EAX]],4), %eax
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: cat03:
-; LINUX-32-PIC:        movl    4(%esp), %eax
-; LINUX-32-PIC-NEXT:   leal    dsrc+64(,%eax,4), %eax
+; LINUX-32-PIC-LABEL: cat03:
+; LINUX-32-PIC:        movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT:   leal    dsrc+64(,[[EAX]],4), %eax
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: cat03:
-; LINUX-64-PIC:        movq    dsrc@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT:   leaq    64(%rax,%rdi,4), %rax
+; LINUX-64-PIC-LABEL: cat03:
+; LINUX-64-PIC:        movq    dsrc@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT:   leaq    64([[RAX]],%rdi,4), %rax
 ; LINUX-64-PIC-NEXT:   ret
 
 ; DARWIN-32-STATIC: _cat03:
-; DARWIN-32-STATIC:    movl    4(%esp), %eax
-; DARWIN-32-STATIC-NEXT:       leal    _dsrc+64(,%eax,4), %eax
+; DARWIN-32-STATIC:    movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       leal    _dsrc+64(,[[EAX]],4), %eax
 ; DARWIN-32-STATIC-NEXT:       ret
 
 ; DARWIN-32-DYNAMIC: _cat03:
-; DARWIN-32-DYNAMIC:   movl    4(%esp), %eax
-; DARWIN-32-DYNAMIC-NEXT:      leal    _dsrc+64(,%eax,4), %eax
+; DARWIN-32-DYNAMIC:   movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      leal    _dsrc+64(,[[EAX]],4), %eax
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _cat03:
-; DARWIN-32-PIC:       call    "L115$pb"
-; DARWIN-32-PIC-NEXT: "L115$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  movl    4(%esp), %ecx
-; DARWIN-32-PIC-NEXT:  leal    _dsrc+64-"L115$pb"(%eax,%ecx,4), %eax
+; DARWIN-32-PIC:       calll   L114$pb
+; DARWIN-32-PIC-NEXT: L114$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  leal    (_dsrc-L114$pb)+64([[EAX]],[[ECX]],4), %eax
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _cat03:
-; DARWIN-64-STATIC:    leaq    _dsrc(%rip), %rax
-; DARWIN-64-STATIC-NEXT:       leaq    64(%rax,%rdi,4), %rax
+; DARWIN-64-STATIC:    leaq    _dsrc(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       leaq    64([[RAX]],%rdi,4), %rax
 ; DARWIN-64-STATIC-NEXT:       ret
 
 ; DARWIN-64-DYNAMIC: _cat03:
-; DARWIN-64-DYNAMIC:   leaq    _dsrc(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT:      leaq    64(%rax,%rdi,4), %rax
+; DARWIN-64-DYNAMIC:   leaq    _dsrc(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      leaq    64([[RAX]],%rdi,4), %rax
 ; DARWIN-64-DYNAMIC-NEXT:      ret
 
 ; DARWIN-64-PIC: _cat03:
-; DARWIN-64-PIC:       leaq    _dsrc(%rip), %rax
-; DARWIN-64-PIC-NEXT:  leaq    64(%rax,%rdi,4), %rax
+; DARWIN-64-PIC:       leaq    _dsrc(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT:  leaq    64([[RAX]],%rdi,4), %rax
 ; DARWIN-64-PIC-NEXT:  ret
 }
 
 define i8* @cat04(i64 %i) nounwind {
 entry:
        %0 = add i64 %i, 16
-       %1 = getelementptr [131072 x i32]* @ddst, i64 0, i64 %0
+       %1 = getelementptr [131072 x i32], [131072 x i32]* @ddst, i64 0, i64 %0
        %2 = bitcast i32* %1 to i8*
        ret i8* %2
-; LINUX-64-STATIC: cat04:
+; LINUX-64-STATIC-LABEL: cat04:
 ; LINUX-64-STATIC: leaq    ddst+64(,%rdi,4), %rax
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: cat04:
-; LINUX-32-STATIC:     movl    4(%esp), %eax
-; LINUX-32-STATIC-NEXT:        leal    ddst+64(,%eax,4), %eax
+; LINUX-32-STATIC-LABEL: cat04:
+; LINUX-32-STATIC:     movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT:        leal    ddst+64(,[[EAX]],4), %eax
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: cat04:
-; LINUX-32-PIC:        movl    4(%esp), %eax
-; LINUX-32-PIC-NEXT:   leal    ddst+64(,%eax,4), %eax
+; LINUX-32-PIC-LABEL: cat04:
+; LINUX-32-PIC:        movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT:   leal    ddst+64(,[[EAX]],4), %eax
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: cat04:
-; LINUX-64-PIC:        movq    ddst@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT:   leaq    64(%rax,%rdi,4), %rax
+; LINUX-64-PIC-LABEL: cat04:
+; LINUX-64-PIC:        movq    ddst@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT:   leaq    64([[RAX]],%rdi,4), %rax
 ; LINUX-64-PIC-NEXT:   ret
 
 ; DARWIN-32-STATIC: _cat04:
-; DARWIN-32-STATIC:    movl    4(%esp), %eax
-; DARWIN-32-STATIC-NEXT:       leal    _ddst+64(,%eax,4), %eax
+; DARWIN-32-STATIC:    movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       leal    _ddst+64(,[[EAX]],4), %eax
 ; DARWIN-32-STATIC-NEXT:       ret
 
 ; DARWIN-32-DYNAMIC: _cat04:
-; DARWIN-32-DYNAMIC:   movl    4(%esp), %eax
-; DARWIN-32-DYNAMIC-NEXT:      leal    _ddst+64(,%eax,4), %eax
+; DARWIN-32-DYNAMIC:   movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      leal    _ddst+64(,[[EAX]],4), %eax
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _cat04:
-; DARWIN-32-PIC:       call    "L116$pb"
-; DARWIN-32-PIC-NEXT: "L116$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  movl    4(%esp), %ecx
-; DARWIN-32-PIC-NEXT:  leal    _ddst+64-"L116$pb"(%eax,%ecx,4), %eax
+; DARWIN-32-PIC:       calll   L115$pb
+; DARWIN-32-PIC-NEXT: L115$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  leal    (_ddst-L115$pb)+64([[EAX]],[[ECX]],4), %eax
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _cat04:
-; DARWIN-64-STATIC:    leaq    _ddst(%rip), %rax
-; DARWIN-64-STATIC-NEXT:       leaq    64(%rax,%rdi,4), %rax
+; DARWIN-64-STATIC:    leaq    _ddst(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       leaq    64([[RAX]],%rdi,4), %rax
 ; DARWIN-64-STATIC-NEXT:       ret
 
 ; DARWIN-64-DYNAMIC: _cat04:
-; DARWIN-64-DYNAMIC:   leaq    _ddst(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT:      leaq    64(%rax,%rdi,4), %rax
+; DARWIN-64-DYNAMIC:   leaq    _ddst(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      leaq    64([[RAX]],%rdi,4), %rax
 ; DARWIN-64-DYNAMIC-NEXT:      ret
 
 ; DARWIN-64-PIC: _cat04:
-; DARWIN-64-PIC:       leaq    _ddst(%rip), %rax
-; DARWIN-64-PIC-NEXT:  leaq    64(%rax,%rdi,4), %rax
+; DARWIN-64-PIC:       leaq    _ddst(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT:  leaq    64([[RAX]],%rdi,4), %rax
 ; DARWIN-64-PIC-NEXT:  ret
 }
 
 define i8* @cat05(i64 %i) nounwind {
 entry:
-       %0 = load i32** @dptr, align 8
+       %0 = load i32*, i32** @dptr, align 8
        %1 = add i64 %i, 16
-       %2 = getelementptr i32* %0, i64 %1
+       %2 = getelementptr i32, i32* %0, i64 %1
        %3 = bitcast i32* %2 to i8*
        ret i8* %3
-; LINUX-64-STATIC: cat05:
-; LINUX-64-STATIC: movq    dptr(%rip), %rax
-; LINUX-64-STATIC: leaq    64(%rax,%rdi,4), %rax
+; LINUX-64-STATIC-LABEL: cat05:
+; LINUX-64-STATIC: movq    dptr(%rip), [[RAX:%r.x]]
+; LINUX-64-STATIC: leaq    64([[RAX]],%rdi,4), %rax
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: cat05:
-; LINUX-32-STATIC:     movl    4(%esp), %eax
-; LINUX-32-STATIC-NEXT:        movl    dptr, %ecx
-; LINUX-32-STATIC-NEXT:        leal    64(%ecx,%eax,4), %eax
+; LINUX-32-STATIC-LABEL: cat05:
+; LINUX-32-STATIC:     movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT:        movl    dptr, [[ECX:%e.x]]
+; LINUX-32-STATIC-NEXT:        leal    64([[ECX]],[[EAX]],4), %eax
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: cat05:
-; LINUX-32-PIC:        movl    4(%esp), %eax
-; LINUX-32-PIC-NEXT:   movl    dptr, %ecx
-; LINUX-32-PIC-NEXT:   leal    64(%ecx,%eax,4), %eax
+; LINUX-32-PIC-LABEL: cat05:
+; LINUX-32-PIC:        movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT:   movl    dptr, [[ECX:%e.x]]
+; LINUX-32-PIC-NEXT:   leal    64([[ECX]],[[EAX]],4), %eax
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: cat05:
-; LINUX-64-PIC:        movq    dptr@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT:   movq    (%rax), %rax
-; LINUX-64-PIC-NEXT:   leaq    64(%rax,%rdi,4), %rax
+; LINUX-64-PIC-LABEL: cat05:
+; LINUX-64-PIC:        movq    dptr@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT:   movq    ([[RAX]]), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT:   leaq    64([[RAX]],%rdi,4), %rax
 ; LINUX-64-PIC-NEXT:   ret
 
 ; DARWIN-32-STATIC: _cat05:
-; DARWIN-32-STATIC:    movl    4(%esp), %eax
-; DARWIN-32-STATIC-NEXT:       movl    _dptr, %ecx
-; DARWIN-32-STATIC-NEXT:       leal    64(%ecx,%eax,4), %eax
+; DARWIN-32-STATIC:    movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       movl    _dptr, [[ECX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       leal    64([[ECX]],[[EAX]],4), %eax
 ; DARWIN-32-STATIC-NEXT:       ret
 
 ; DARWIN-32-DYNAMIC: _cat05:
-; DARWIN-32-DYNAMIC:   movl    4(%esp), %eax
-; DARWIN-32-DYNAMIC-NEXT:      movl    _dptr, %ecx
-; DARWIN-32-DYNAMIC-NEXT:      leal    64(%ecx,%eax,4), %eax
+; DARWIN-32-DYNAMIC:   movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    _dptr, [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      leal    64([[ECX]],[[EAX]],4), %eax
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _cat05:
-; DARWIN-32-PIC:       call    "L117$pb"
-; DARWIN-32-PIC-NEXT: "L117$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  movl    4(%esp), %ecx
-; DARWIN-32-PIC-NEXT:  movl    _dptr-"L117$pb"(%eax), %eax
-; DARWIN-32-PIC-NEXT:  leal    64(%eax,%ecx,4), %eax
+; DARWIN-32-PIC:       calll   L116$pb
+; DARWIN-32-PIC-NEXT: L116$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    _dptr-L116$pb([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  leal    64([[EAX]],[[ECX]],4), %eax
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _cat05:
-; DARWIN-64-STATIC:    movq    _dptr(%rip), %rax
-; DARWIN-64-STATIC-NEXT:       leaq    64(%rax,%rdi,4), %rax
+; DARWIN-64-STATIC:    movq    _dptr(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       leaq    64([[RAX]],%rdi,4), %rax
 ; DARWIN-64-STATIC-NEXT:       ret
 
 ; DARWIN-64-DYNAMIC: _cat05:
-; DARWIN-64-DYNAMIC:   movq    _dptr(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT:      leaq    64(%rax,%rdi,4), %rax
+; DARWIN-64-DYNAMIC:   movq    _dptr(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      leaq    64([[RAX]],%rdi,4), %rax
 ; DARWIN-64-DYNAMIC-NEXT:      ret
 
 ; DARWIN-64-PIC: _cat05:
-; DARWIN-64-PIC:       movq    _dptr(%rip), %rax
-; DARWIN-64-PIC-NEXT:  leaq    64(%rax,%rdi,4), %rax
+; DARWIN-64-PIC:       movq    _dptr(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT:  leaq    64([[RAX]],%rdi,4), %rax
 ; DARWIN-64-PIC-NEXT:  ret
 }
 
 define i8* @cat06(i64 %i) nounwind {
 entry:
        %0 = add i64 %i, 16
-       %1 = getelementptr [131072 x i32]* @lsrc, i64 0, i64 %0
+       %1 = getelementptr [131072 x i32], [131072 x i32]* @lsrc, i64 0, i64 %0
        %2 = bitcast i32* %1 to i8*
        ret i8* %2
-; LINUX-64-STATIC: cat06:
+; LINUX-64-STATIC-LABEL: cat06:
 ; LINUX-64-STATIC: leaq    lsrc+64(,%rdi,4), %rax
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: cat06:
-; LINUX-32-STATIC:     movl    4(%esp), %eax
-; LINUX-32-STATIC-NEXT:        leal    lsrc+64(,%eax,4), %eax
+; LINUX-32-STATIC-LABEL: cat06:
+; LINUX-32-STATIC:     movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT:        leal    lsrc+64(,[[EAX]],4), %eax
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: cat06:
-; LINUX-32-PIC:        movl    4(%esp), %eax
-; LINUX-32-PIC-NEXT:   leal    lsrc+64(,%eax,4), %eax
+; LINUX-32-PIC-LABEL: cat06:
+; LINUX-32-PIC:        movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT:   leal    lsrc+64(,[[EAX]],4), %eax
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: cat06:
-; LINUX-64-PIC:        leaq    lsrc(%rip), %rax
-; LINUX-64-PIC-NEXT:   leaq    64(%rax,%rdi,4), %rax
+; LINUX-64-PIC-LABEL: cat06:
+; LINUX-64-PIC:        leaq    lsrc(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT:   leaq    64([[RAX]],%rdi,4), %rax
 ; LINUX-64-PIC-NEXT:   ret
 
 ; DARWIN-32-STATIC: _cat06:
-; DARWIN-32-STATIC:    movl    4(%esp), %eax
-; DARWIN-32-STATIC-NEXT:       leal    _lsrc+64(,%eax,4), %eax
+; DARWIN-32-STATIC:    movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       leal    _lsrc+64(,[[EAX]],4), %eax
 ; DARWIN-32-STATIC-NEXT:       ret
 
 ; DARWIN-32-DYNAMIC: _cat06:
-; DARWIN-32-DYNAMIC:   movl    4(%esp), %eax
-; DARWIN-32-DYNAMIC-NEXT:      leal    _lsrc+64(,%eax,4), %eax
+; DARWIN-32-DYNAMIC:   movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      leal    _lsrc+64(,[[EAX]],4), %eax
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _cat06:
-; DARWIN-32-PIC:       call    "L118$pb"
-; DARWIN-32-PIC-NEXT: "L118$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  movl    4(%esp), %ecx
-; DARWIN-32-PIC-NEXT:  leal    _lsrc+64-"L118$pb"(%eax,%ecx,4), %eax
+; DARWIN-32-PIC:       calll   L117$pb
+; DARWIN-32-PIC-NEXT: L117$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  leal    (_lsrc-L117$pb)+64([[EAX]],[[ECX]],4), %eax
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _cat06:
-; DARWIN-64-STATIC:    leaq    _lsrc(%rip), %rax
-; DARWIN-64-STATIC-NEXT:       leaq    64(%rax,%rdi,4), %rax
+; DARWIN-64-STATIC:    leaq    _lsrc(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       leaq    64([[RAX]],%rdi,4), %rax
 ; DARWIN-64-STATIC-NEXT:       ret
 
 ; DARWIN-64-DYNAMIC: _cat06:
-; DARWIN-64-DYNAMIC:   leaq    _lsrc(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT:      leaq    64(%rax,%rdi,4), %rax
+; DARWIN-64-DYNAMIC:   leaq    _lsrc(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      leaq    64([[RAX]],%rdi,4), %rax
 ; DARWIN-64-DYNAMIC-NEXT:      ret
 
 ; DARWIN-64-PIC: _cat06:
-; DARWIN-64-PIC:       leaq    _lsrc(%rip), %rax
-; DARWIN-64-PIC-NEXT:  leaq    64(%rax,%rdi,4), %rax
+; DARWIN-64-PIC:       leaq    _lsrc(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT:  leaq    64([[RAX]],%rdi,4), %rax
 ; DARWIN-64-PIC-NEXT:  ret
 }
 
 define i8* @cat07(i64 %i) nounwind {
 entry:
        %0 = add i64 %i, 16
-       %1 = getelementptr [131072 x i32]* @ldst, i64 0, i64 %0
+       %1 = getelementptr [131072 x i32], [131072 x i32]* @ldst, i64 0, i64 %0
        %2 = bitcast i32* %1 to i8*
        ret i8* %2
-; LINUX-64-STATIC: cat07:
+; LINUX-64-STATIC-LABEL: cat07:
 ; LINUX-64-STATIC: leaq    ldst+64(,%rdi,4), %rax
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: cat07:
-; LINUX-32-STATIC:     movl    4(%esp), %eax
-; LINUX-32-STATIC-NEXT:        leal    ldst+64(,%eax,4), %eax
+; LINUX-32-STATIC-LABEL: cat07:
+; LINUX-32-STATIC:     movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT:        leal    ldst+64(,[[EAX]],4), %eax
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: cat07:
-; LINUX-32-PIC:        movl    4(%esp), %eax
-; LINUX-32-PIC-NEXT:   leal    ldst+64(,%eax,4), %eax
+; LINUX-32-PIC-LABEL: cat07:
+; LINUX-32-PIC:        movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT:   leal    ldst+64(,[[EAX]],4), %eax
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: cat07:
-; LINUX-64-PIC:        leaq    ldst(%rip), %rax
-; LINUX-64-PIC-NEXT:   leaq    64(%rax,%rdi,4), %rax
+; LINUX-64-PIC-LABEL: cat07:
+; LINUX-64-PIC:        leaq    ldst(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT:   leaq    64([[RAX]],%rdi,4), %rax
 ; LINUX-64-PIC-NEXT:   ret
 
 ; DARWIN-32-STATIC: _cat07:
-; DARWIN-32-STATIC:    movl    4(%esp), %eax
-; DARWIN-32-STATIC-NEXT:       leal    _ldst+64(,%eax,4), %eax
+; DARWIN-32-STATIC:    movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       leal    _ldst+64(,[[EAX]],4), %eax
 ; DARWIN-32-STATIC-NEXT:       ret
 
 ; DARWIN-32-DYNAMIC: _cat07:
-; DARWIN-32-DYNAMIC:   movl    4(%esp), %eax
-; DARWIN-32-DYNAMIC-NEXT:      leal    _ldst+64(,%eax,4), %eax
+; DARWIN-32-DYNAMIC:   movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      leal    _ldst+64(,[[EAX]],4), %eax
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _cat07:
-; DARWIN-32-PIC:       call    "L119$pb"
-; DARWIN-32-PIC-NEXT: "L119$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  movl    4(%esp), %ecx
-; DARWIN-32-PIC-NEXT:  leal    _ldst+64-"L119$pb"(%eax,%ecx,4), %eax
+; DARWIN-32-PIC:       calll   L118$pb
+; DARWIN-32-PIC-NEXT: L118$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  leal    (_ldst-L118$pb)+64([[EAX]],[[ECX]],4), %eax
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _cat07:
-; DARWIN-64-STATIC:    leaq    _ldst(%rip), %rax
-; DARWIN-64-STATIC-NEXT:       leaq    64(%rax,%rdi,4), %rax
+; DARWIN-64-STATIC:    leaq    _ldst(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       leaq    64([[RAX]],%rdi,4), %rax
 ; DARWIN-64-STATIC-NEXT:       ret
 
 ; DARWIN-64-DYNAMIC: _cat07:
-; DARWIN-64-DYNAMIC:   leaq    _ldst(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT:      leaq    64(%rax,%rdi,4), %rax
+; DARWIN-64-DYNAMIC:   leaq    _ldst(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      leaq    64([[RAX]],%rdi,4), %rax
 ; DARWIN-64-DYNAMIC-NEXT:      ret
 
 ; DARWIN-64-PIC: _cat07:
-; DARWIN-64-PIC:       leaq    _ldst(%rip), %rax
-; DARWIN-64-PIC-NEXT:  leaq    64(%rax,%rdi,4), %rax
+; DARWIN-64-PIC:       leaq    _ldst(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT:  leaq    64([[RAX]],%rdi,4), %rax
 ; DARWIN-64-PIC-NEXT:  ret
 }
 
 define i8* @cat08(i64 %i) nounwind {
 entry:
-       %0 = load i32** @lptr, align 8
+       %0 = load i32*, i32** @lptr, align 8
        %1 = add i64 %i, 16
-       %2 = getelementptr i32* %0, i64 %1
+       %2 = getelementptr i32, i32* %0, i64 %1
        %3 = bitcast i32* %2 to i8*
        ret i8* %3
-; LINUX-64-STATIC: cat08:
-; LINUX-64-STATIC: movq    lptr(%rip), %rax
-; LINUX-64-STATIC: leaq    64(%rax,%rdi,4), %rax
+; LINUX-64-STATIC-LABEL: cat08:
+; LINUX-64-STATIC: movq    lptr(%rip), [[RAX:%r.x]]
+; LINUX-64-STATIC: leaq    64([[RAX]],%rdi,4), %rax
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: cat08:
-; LINUX-32-STATIC:     movl    4(%esp), %eax
-; LINUX-32-STATIC-NEXT:        movl    lptr, %ecx
-; LINUX-32-STATIC-NEXT:        leal    64(%ecx,%eax,4), %eax
+; LINUX-32-STATIC-LABEL: cat08:
+; LINUX-32-STATIC:     movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT:        movl    lptr, [[ECX:%e.x]]
+; LINUX-32-STATIC-NEXT:        leal    64([[ECX]],[[EAX]],4), %eax
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: cat08:
-; LINUX-32-PIC:        movl    4(%esp), %eax
-; LINUX-32-PIC-NEXT:   movl    lptr, %ecx
-; LINUX-32-PIC-NEXT:   leal    64(%ecx,%eax,4), %eax
+; LINUX-32-PIC-LABEL: cat08:
+; LINUX-32-PIC:        movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT:   movl    lptr, [[ECX:%e.x]]
+; LINUX-32-PIC-NEXT:   leal    64([[ECX]],[[EAX]],4), %eax
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: cat08:
-; LINUX-64-PIC:        movq    lptr(%rip), %rax
-; LINUX-64-PIC-NEXT:   leaq    64(%rax,%rdi,4), %rax
+; LINUX-64-PIC-LABEL: cat08:
+; LINUX-64-PIC:        movq    lptr(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT:   leaq    64([[RAX]],%rdi,4), %rax
 ; LINUX-64-PIC-NEXT:   ret
 
 ; DARWIN-32-STATIC: _cat08:
-; DARWIN-32-STATIC:    movl    4(%esp), %eax
-; DARWIN-32-STATIC-NEXT:       movl    _lptr, %ecx
-; DARWIN-32-STATIC-NEXT:       leal    64(%ecx,%eax,4), %eax
+; DARWIN-32-STATIC:    movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       movl    _lptr, [[ECX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       leal    64([[ECX]],[[EAX]],4), %eax
 ; DARWIN-32-STATIC-NEXT:       ret
 
 ; DARWIN-32-DYNAMIC: _cat08:
-; DARWIN-32-DYNAMIC:   movl    4(%esp), %eax
-; DARWIN-32-DYNAMIC-NEXT:      movl    _lptr, %ecx
-; DARWIN-32-DYNAMIC-NEXT:      leal    64(%ecx,%eax,4), %eax
+; DARWIN-32-DYNAMIC:   movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    _lptr, [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      leal    64([[ECX]],[[EAX]],4), %eax
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _cat08:
-; DARWIN-32-PIC:       call    "L120$pb"
-; DARWIN-32-PIC-NEXT: "L120$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  movl    4(%esp), %ecx
-; DARWIN-32-PIC-NEXT:  movl    _lptr-"L120$pb"(%eax), %eax
-; DARWIN-32-PIC-NEXT:  leal    64(%eax,%ecx,4), %eax
+; DARWIN-32-PIC:       calll   L119$pb
+; DARWIN-32-PIC-NEXT: L119$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    _lptr-L119$pb([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  leal    64([[EAX]],[[ECX]],4), %eax
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _cat08:
-; DARWIN-64-STATIC:    movq    _lptr(%rip), %rax
-; DARWIN-64-STATIC-NEXT:       leaq    64(%rax,%rdi,4), %rax
+; DARWIN-64-STATIC:    movq    _lptr(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       leaq    64([[RAX]],%rdi,4), %rax
 ; DARWIN-64-STATIC-NEXT:       ret
 
 ; DARWIN-64-DYNAMIC: _cat08:
-; DARWIN-64-DYNAMIC:   movq    _lptr(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT:      leaq    64(%rax,%rdi,4), %rax
+; DARWIN-64-DYNAMIC:   movq    _lptr(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      leaq    64([[RAX]],%rdi,4), %rax
 ; DARWIN-64-DYNAMIC-NEXT:      ret
 
 ; DARWIN-64-PIC: _cat08:
-; DARWIN-64-PIC:       movq    _lptr(%rip), %rax
-; DARWIN-64-PIC-NEXT:  leaq    64(%rax,%rdi,4), %rax
+; DARWIN-64-PIC:       movq    _lptr(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT:  leaq    64([[RAX]],%rdi,4), %rax
 ; DARWIN-64-PIC-NEXT:  ret
 }
 
 define i8* @cam00(i64 %i) nounwind {
 entry:
        %0 = add i64 %i, 65536
-       %1 = getelementptr [131072 x i32]* @src, i64 0, i64 %0
+       %1 = getelementptr [131072 x i32], [131072 x i32]* @src, i64 0, i64 %0
        %2 = bitcast i32* %1 to i8*
        ret i8* %2
-; LINUX-64-STATIC: cam00:
+; LINUX-64-STATIC-LABEL: cam00:
 ; LINUX-64-STATIC: leaq    src+262144(,%rdi,4), %rax
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: cam00:
-; LINUX-32-STATIC:     movl    4(%esp), %eax
-; LINUX-32-STATIC-NEXT:        leal    src+262144(,%eax,4), %eax
+; LINUX-32-STATIC-LABEL: cam00:
+; LINUX-32-STATIC:     movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT:        leal    src+262144(,[[EAX]],4), %eax
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: cam00:
-; LINUX-32-PIC:        movl    4(%esp), %eax
-; LINUX-32-PIC-NEXT:   leal    src+262144(,%eax,4), %eax
+; LINUX-32-PIC-LABEL: cam00:
+; LINUX-32-PIC:        movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT:   leal    src+262144(,[[EAX]],4), %eax
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: cam00:
-; LINUX-64-PIC:        movq    src@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT:   leaq    262144(%rax,%rdi,4), %rax
+; LINUX-64-PIC-LABEL: cam00:
+; LINUX-64-PIC:        movq    src@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT:   leaq    262144([[RAX]],%rdi,4), %rax
 ; LINUX-64-PIC-NEXT:   ret
 
 ; DARWIN-32-STATIC: _cam00:
-; DARWIN-32-STATIC:    movl    4(%esp), %eax
-; DARWIN-32-STATIC-NEXT:       leal    _src+262144(,%eax,4), %eax
+; DARWIN-32-STATIC:    movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       leal    _src+262144(,[[EAX]],4), %eax
 ; DARWIN-32-STATIC-NEXT:       ret
 
 ; DARWIN-32-DYNAMIC: _cam00:
-; DARWIN-32-DYNAMIC:   movl    4(%esp), %eax
-; DARWIN-32-DYNAMIC-NEXT:      movl    L_src$non_lazy_ptr, %ecx
-; DARWIN-32-DYNAMIC-NEXT:      leal    262144(%ecx,%eax,4), %eax
+; DARWIN-32-DYNAMIC:   movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    L_src$non_lazy_ptr, [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      leal    262144([[ECX]],[[EAX]],4), %eax
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _cam00:
-; DARWIN-32-PIC:       call    "L121$pb"
-; DARWIN-32-PIC-NEXT: "L121$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  movl    4(%esp), %ecx
-; DARWIN-32-PIC-NEXT:  movl    L_src$non_lazy_ptr-"L121$pb"(%eax), %eax
-; DARWIN-32-PIC-NEXT:  leal    262144(%eax,%ecx,4), %eax
+; DARWIN-32-PIC:       calll   L120$pb
+; DARWIN-32-PIC-NEXT: L120$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    L_src$non_lazy_ptr-L120$pb([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  leal    262144([[EAX]],[[ECX]],4), %eax
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _cam00:
-; DARWIN-64-STATIC:    movq    _src@GOTPCREL(%rip), %rax
-; DARWIN-64-STATIC-NEXT:       leaq    262144(%rax,%rdi,4), %rax
+; DARWIN-64-STATIC:    movq    _src@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       leaq    262144([[RAX]],%rdi,4), %rax
 ; DARWIN-64-STATIC-NEXT:       ret
 
 ; DARWIN-64-DYNAMIC: _cam00:
-; DARWIN-64-DYNAMIC:   movq    _src@GOTPCREL(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT:      leaq    262144(%rax,%rdi,4), %rax
+; DARWIN-64-DYNAMIC:   movq    _src@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      leaq    262144([[RAX]],%rdi,4), %rax
 ; DARWIN-64-DYNAMIC-NEXT:      ret
 
 ; DARWIN-64-PIC: _cam00:
-; DARWIN-64-PIC:       movq    _src@GOTPCREL(%rip), %rax
-; DARWIN-64-PIC-NEXT:  leaq    262144(%rax,%rdi,4), %rax
+; DARWIN-64-PIC:       movq    _src@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT:  leaq    262144([[RAX]],%rdi,4), %rax
 ; DARWIN-64-PIC-NEXT:  ret
 }
 
 define i8* @cxm00(i64 %i) nounwind {
 entry:
        %0 = add i64 %i, 65536
-       %1 = getelementptr [32 x i32]* @xsrc, i64 0, i64 %0
+       %1 = getelementptr [32 x i32], [32 x i32]* @xsrc, i64 0, i64 %0
        %2 = bitcast i32* %1 to i8*
        ret i8* %2
-; LINUX-64-STATIC: cxm00:
+; LINUX-64-STATIC-LABEL: cxm00:
 ; LINUX-64-STATIC: leaq    xsrc+262144(,%rdi,4), %rax
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: cxm00:
-; LINUX-32-STATIC:     movl    4(%esp), %eax
-; LINUX-32-STATIC-NEXT:        leal    xsrc+262144(,%eax,4), %eax
+; LINUX-32-STATIC-LABEL: cxm00:
+; LINUX-32-STATIC:     movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT:        leal    xsrc+262144(,[[EAX]],4), %eax
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: cxm00:
-; LINUX-32-PIC:        movl    4(%esp), %eax
-; LINUX-32-PIC-NEXT:   leal    xsrc+262144(,%eax,4), %eax
+; LINUX-32-PIC-LABEL: cxm00:
+; LINUX-32-PIC:        movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT:   leal    xsrc+262144(,[[EAX]],4), %eax
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: cxm00:
-; LINUX-64-PIC:        movq    xsrc@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT:   leaq    262144(%rax,%rdi,4), %rax
+; LINUX-64-PIC-LABEL: cxm00:
+; LINUX-64-PIC:        movq    xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT:   leaq    262144([[RAX]],%rdi,4), %rax
 ; LINUX-64-PIC-NEXT:   ret
 
 ; DARWIN-32-STATIC: _cxm00:
-; DARWIN-32-STATIC:    movl    4(%esp), %eax
-; DARWIN-32-STATIC-NEXT:       leal    _xsrc+262144(,%eax,4), %eax
+; DARWIN-32-STATIC:    movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       leal    _xsrc+262144(,[[EAX]],4), %eax
 ; DARWIN-32-STATIC-NEXT:       ret
 
 ; DARWIN-32-DYNAMIC: _cxm00:
-; DARWIN-32-DYNAMIC:   movl    4(%esp), %eax
-; DARWIN-32-DYNAMIC-NEXT:      movl    L_xsrc$non_lazy_ptr, %ecx
-; DARWIN-32-DYNAMIC-NEXT:      leal    262144(%ecx,%eax,4), %eax
+; DARWIN-32-DYNAMIC:   movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    L_xsrc$non_lazy_ptr, [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      leal    262144([[ECX]],[[EAX]],4), %eax
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _cxm00:
-; DARWIN-32-PIC:       call    "L122$pb"
-; DARWIN-32-PIC-NEXT: "L122$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  movl    4(%esp), %ecx
-; DARWIN-32-PIC-NEXT:  movl    L_xsrc$non_lazy_ptr-"L122$pb"(%eax), %eax
-; DARWIN-32-PIC-NEXT:  leal    262144(%eax,%ecx,4), %eax
+; DARWIN-32-PIC:       calll   L121$pb
+; DARWIN-32-PIC-NEXT: L121$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    L_xsrc$non_lazy_ptr-L121$pb([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  leal    262144([[EAX]],[[ECX]],4), %eax
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _cxm00:
-; DARWIN-64-STATIC:    movq    _xsrc@GOTPCREL(%rip), %rax
-; DARWIN-64-STATIC-NEXT:       leaq    262144(%rax,%rdi,4), %rax
+; DARWIN-64-STATIC:    movq    _xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       leaq    262144([[RAX]],%rdi,4), %rax
 ; DARWIN-64-STATIC-NEXT:       ret
 
 ; DARWIN-64-DYNAMIC: _cxm00:
-; DARWIN-64-DYNAMIC:   movq    _xsrc@GOTPCREL(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT:      leaq    262144(%rax,%rdi,4), %rax
+; DARWIN-64-DYNAMIC:   movq    _xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      leaq    262144([[RAX]],%rdi,4), %rax
 ; DARWIN-64-DYNAMIC-NEXT:      ret
 
 ; DARWIN-64-PIC: _cxm00:
-; DARWIN-64-PIC:       movq    _xsrc@GOTPCREL(%rip), %rax
-; DARWIN-64-PIC-NEXT:  leaq    262144(%rax,%rdi,4), %rax
+; DARWIN-64-PIC:       movq    _xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT:  leaq    262144([[RAX]],%rdi,4), %rax
 ; DARWIN-64-PIC-NEXT:  ret
 }
 
 define i8* @cam01(i64 %i) nounwind {
 entry:
        %0 = add i64 %i, 65536
-       %1 = getelementptr [131072 x i32]* @dst, i64 0, i64 %0
+       %1 = getelementptr [131072 x i32], [131072 x i32]* @dst, i64 0, i64 %0
        %2 = bitcast i32* %1 to i8*
        ret i8* %2
-; LINUX-64-STATIC: cam01:
+; LINUX-64-STATIC-LABEL: cam01:
 ; LINUX-64-STATIC: leaq    dst+262144(,%rdi,4), %rax
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: cam01:
-; LINUX-32-STATIC:     movl    4(%esp), %eax
-; LINUX-32-STATIC-NEXT:        leal    dst+262144(,%eax,4), %eax
+; LINUX-32-STATIC-LABEL: cam01:
+; LINUX-32-STATIC:     movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT:        leal    dst+262144(,[[EAX]],4), %eax
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: cam01:
-; LINUX-32-PIC:        movl    4(%esp), %eax
-; LINUX-32-PIC-NEXT:   leal    dst+262144(,%eax,4), %eax
+; LINUX-32-PIC-LABEL: cam01:
+; LINUX-32-PIC:        movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT:   leal    dst+262144(,[[EAX]],4), %eax
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: cam01:
-; LINUX-64-PIC:        movq    dst@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT:   leaq    262144(%rax,%rdi,4), %rax
+; LINUX-64-PIC-LABEL: cam01:
+; LINUX-64-PIC:        movq    dst@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT:   leaq    262144([[RAX]],%rdi,4), %rax
 ; LINUX-64-PIC-NEXT:   ret
 
 ; DARWIN-32-STATIC: _cam01:
-; DARWIN-32-STATIC:    movl    4(%esp), %eax
-; DARWIN-32-STATIC-NEXT:       leal    _dst+262144(,%eax,4), %eax
+; DARWIN-32-STATIC:    movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       leal    _dst+262144(,[[EAX]],4), %eax
 ; DARWIN-32-STATIC-NEXT:       ret
 
 ; DARWIN-32-DYNAMIC: _cam01:
-; DARWIN-32-DYNAMIC:   movl    4(%esp), %eax
-; DARWIN-32-DYNAMIC-NEXT:      movl    L_dst$non_lazy_ptr, %ecx
-; DARWIN-32-DYNAMIC-NEXT:      leal    262144(%ecx,%eax,4), %eax
+; DARWIN-32-DYNAMIC:   movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    L_dst$non_lazy_ptr, [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      leal    262144([[ECX]],[[EAX]],4), %eax
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _cam01:
-; DARWIN-32-PIC:       call    "L123$pb"
-; DARWIN-32-PIC-NEXT: "L123$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  movl    4(%esp), %ecx
-; DARWIN-32-PIC-NEXT:  movl    L_dst$non_lazy_ptr-"L123$pb"(%eax), %eax
-; DARWIN-32-PIC-NEXT:  leal    262144(%eax,%ecx,4), %eax
+; DARWIN-32-PIC:       calll   L122$pb
+; DARWIN-32-PIC-NEXT: L122$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    L_dst$non_lazy_ptr-L122$pb([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  leal    262144([[EAX]],[[ECX]],4), %eax
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _cam01:
-; DARWIN-64-STATIC:    movq    _dst@GOTPCREL(%rip), %rax
-; DARWIN-64-STATIC-NEXT:       leaq    262144(%rax,%rdi,4), %rax
+; DARWIN-64-STATIC:    movq    _dst@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       leaq    262144([[RAX]],%rdi,4), %rax
 ; DARWIN-64-STATIC-NEXT:       ret
 
 ; DARWIN-64-DYNAMIC: _cam01:
-; DARWIN-64-DYNAMIC:   movq    _dst@GOTPCREL(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT:      leaq    262144(%rax,%rdi,4), %rax
+; DARWIN-64-DYNAMIC:   movq    _dst@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      leaq    262144([[RAX]],%rdi,4), %rax
 ; DARWIN-64-DYNAMIC-NEXT:      ret
 
 ; DARWIN-64-PIC: _cam01:
-; DARWIN-64-PIC:       movq    _dst@GOTPCREL(%rip), %rax
-; DARWIN-64-PIC-NEXT:  leaq    262144(%rax,%rdi,4), %rax
+; DARWIN-64-PIC:       movq    _dst@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT:  leaq    262144([[RAX]],%rdi,4), %rax
 ; DARWIN-64-PIC-NEXT:  ret
 }
 
 define i8* @cxm01(i64 %i) nounwind {
 entry:
        %0 = add i64 %i, 65536
-       %1 = getelementptr [32 x i32]* @xdst, i64 0, i64 %0
+       %1 = getelementptr [32 x i32], [32 x i32]* @xdst, i64 0, i64 %0
        %2 = bitcast i32* %1 to i8*
        ret i8* %2
-; LINUX-64-STATIC: cxm01:
+; LINUX-64-STATIC-LABEL: cxm01:
 ; LINUX-64-STATIC: leaq    xdst+262144(,%rdi,4), %rax
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: cxm01:
+; LINUX-32-STATIC-LABEL: cxm01:
 ; LINUX-32-STATIC:     movl    4(%esp), %eax
-; LINUX-32-STATIC-NEXT:        leal    xdst+262144(,%eax,4), %eax
+; LINUX-32-STATIC-NEXT:        leal    xdst+262144(,[[EAX]],4), %eax
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: cxm01:
-; LINUX-32-PIC:        movl    4(%esp), %eax
-; LINUX-32-PIC-NEXT:   leal    xdst+262144(,%eax,4), %eax
+; LINUX-32-PIC-LABEL: cxm01:
+; LINUX-32-PIC:        movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT:   leal    xdst+262144(,[[EAX]],4), %eax
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: cxm01:
-; LINUX-64-PIC:        movq    xdst@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT:   leaq    262144(%rax,%rdi,4), %rax
+; LINUX-64-PIC-LABEL: cxm01:
+; LINUX-64-PIC:        movq    xdst@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT:   leaq    262144([[RAX]],%rdi,4), %rax
 ; LINUX-64-PIC-NEXT:   ret
 
 ; DARWIN-32-STATIC: _cxm01:
-; DARWIN-32-STATIC:    movl    4(%esp), %eax
-; DARWIN-32-STATIC-NEXT:       leal    _xdst+262144(,%eax,4), %eax
+; DARWIN-32-STATIC:    movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       leal    _xdst+262144(,[[EAX]],4), %eax
 ; DARWIN-32-STATIC-NEXT:       ret
 
 ; DARWIN-32-DYNAMIC: _cxm01:
-; DARWIN-32-DYNAMIC:   movl    4(%esp), %eax
-; DARWIN-32-DYNAMIC-NEXT:      movl    L_xdst$non_lazy_ptr, %ecx
-; DARWIN-32-DYNAMIC-NEXT:      leal    262144(%ecx,%eax,4), %eax
+; DARWIN-32-DYNAMIC:   movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    L_xdst$non_lazy_ptr, [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      leal    262144([[ECX]],[[EAX]],4), %eax
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _cxm01:
-; DARWIN-32-PIC:       call    "L124$pb"
-; DARWIN-32-PIC-NEXT: "L124$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  movl    4(%esp), %ecx
-; DARWIN-32-PIC-NEXT:  movl    L_xdst$non_lazy_ptr-"L124$pb"(%eax), %eax
-; DARWIN-32-PIC-NEXT:  leal    262144(%eax,%ecx,4), %eax
+; DARWIN-32-PIC:       calll   L123$pb
+; DARWIN-32-PIC-NEXT: L123$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    L_xdst$non_lazy_ptr-L123$pb([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  leal    262144([[EAX]],[[ECX]],4), %eax
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _cxm01:
-; DARWIN-64-STATIC:    movq    _xdst@GOTPCREL(%rip), %rax
-; DARWIN-64-STATIC-NEXT:       leaq    262144(%rax,%rdi,4), %rax
+; DARWIN-64-STATIC:    movq    _xdst@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       leaq    262144([[RAX]],%rdi,4), %rax
 ; DARWIN-64-STATIC-NEXT:       ret
 
 ; DARWIN-64-DYNAMIC: _cxm01:
-; DARWIN-64-DYNAMIC:   movq    _xdst@GOTPCREL(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT:      leaq    262144(%rax,%rdi,4), %rax
+; DARWIN-64-DYNAMIC:   movq    _xdst@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      leaq    262144([[RAX]],%rdi,4), %rax
 ; DARWIN-64-DYNAMIC-NEXT:      ret
 
 ; DARWIN-64-PIC: _cxm01:
-; DARWIN-64-PIC:       movq    _xdst@GOTPCREL(%rip), %rax
-; DARWIN-64-PIC-NEXT:  leaq    262144(%rax,%rdi,4), %rax
+; DARWIN-64-PIC:       movq    _xdst@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT:  leaq    262144([[RAX]],%rdi,4), %rax
 ; DARWIN-64-PIC-NEXT:  ret
 }
 
 define i8* @cam02(i64 %i) nounwind {
 entry:
-       %0 = load i32** @ptr, align 8
+       %0 = load i32*, i32** @ptr, align 8
        %1 = add i64 %i, 65536
-       %2 = getelementptr i32* %0, i64 %1
+       %2 = getelementptr i32, i32* %0, i64 %1
        %3 = bitcast i32* %2 to i8*
        ret i8* %3
-; LINUX-64-STATIC: cam02:
-; LINUX-64-STATIC: movq    ptr(%rip), %rax
-; LINUX-64-STATIC: leaq    262144(%rax,%rdi,4), %rax
+; LINUX-64-STATIC-LABEL: cam02:
+; LINUX-64-STATIC: movq    ptr(%rip), [[RAX:%r.x]]
+; LINUX-64-STATIC: leaq    262144([[RAX]],%rdi,4), %rax
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: cam02:
-; LINUX-32-STATIC:     movl    4(%esp), %eax
-; LINUX-32-STATIC-NEXT:        movl    ptr, %ecx
-; LINUX-32-STATIC-NEXT:        leal    262144(%ecx,%eax,4), %eax
+; LINUX-32-STATIC-LABEL: cam02:
+; LINUX-32-STATIC:     movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT:        movl    ptr, [[ECX:%e.x]]
+; LINUX-32-STATIC-NEXT:        leal    262144([[ECX]],[[EAX]],4), %eax
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: cam02:
-; LINUX-32-PIC:        movl    4(%esp), %eax
-; LINUX-32-PIC-NEXT:   movl    ptr, %ecx
-; LINUX-32-PIC-NEXT:   leal    262144(%ecx,%eax,4), %eax
+; LINUX-32-PIC-LABEL: cam02:
+; LINUX-32-PIC:        movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT:   movl    ptr, [[ECX:%e.x]]
+; LINUX-32-PIC-NEXT:   leal    262144([[ECX]],[[EAX]],4), %eax
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: cam02:
-; LINUX-64-PIC:        movq    ptr@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT:   movq    (%rax), %rax
-; LINUX-64-PIC-NEXT:   leaq    262144(%rax,%rdi,4), %rax
+; LINUX-64-PIC-LABEL: cam02:
+; LINUX-64-PIC:        movq    ptr@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT:   movq    ([[RAX]]), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT:   leaq    262144([[RAX]],%rdi,4), %rax
 ; LINUX-64-PIC-NEXT:   ret
 
 ; DARWIN-32-STATIC: _cam02:
-; DARWIN-32-STATIC:    movl    4(%esp), %eax
-; DARWIN-32-STATIC-NEXT:       movl    _ptr, %ecx
-; DARWIN-32-STATIC-NEXT:       leal    262144(%ecx,%eax,4), %eax
+; DARWIN-32-STATIC:    movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       movl    _ptr, [[ECX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       leal    262144([[ECX]],[[EAX]],4), %eax
 ; DARWIN-32-STATIC-NEXT:       ret
 
 ; DARWIN-32-DYNAMIC: _cam02:
-; DARWIN-32-DYNAMIC:   movl    L_ptr$non_lazy_ptr, %eax
-; DARWIN-32-DYNAMIC-NEXT:      movl    (%eax), %eax
-; DARWIN-32-DYNAMIC-NEXT:      movl    4(%esp), %ecx
-; DARWIN-32-DYNAMIC-NEXT:      leal    262144(%eax,%ecx,4), %eax
+; DARWIN-32-DYNAMIC:   movl    L_ptr$non_lazy_ptr, [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    ([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    4(%esp), [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      leal    262144([[EAX]],[[ECX]],4), %eax
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _cam02:
-; DARWIN-32-PIC:       call    "L125$pb"
-; DARWIN-32-PIC-NEXT: "L125$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  movl    L_ptr$non_lazy_ptr-"L125$pb"(%eax), %eax
-; DARWIN-32-PIC-NEXT:  movl    (%eax), %eax
-; DARWIN-32-PIC-NEXT:  movl    4(%esp), %ecx
-; DARWIN-32-PIC-NEXT:  leal    262144(%eax,%ecx,4), %eax
+; DARWIN-32-PIC:       calll   L124$pb
+; DARWIN-32-PIC-NEXT: L124$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    L_ptr$non_lazy_ptr-L124$pb([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    ([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  leal    262144([[EAX]],[[ECX]],4), %eax
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _cam02:
-; DARWIN-64-STATIC:    movq    _ptr@GOTPCREL(%rip), %rax
-; DARWIN-64-STATIC-NEXT:       movq    (%rax), %rax
-; DARWIN-64-STATIC-NEXT:       leaq    262144(%rax,%rdi,4), %rax
+; DARWIN-64-STATIC:    movq    _ptr@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movq    ([[RAX]]), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       leaq    262144([[RAX]],%rdi,4), %rax
 ; DARWIN-64-STATIC-NEXT:       ret
 
 ; DARWIN-64-DYNAMIC: _cam02:
-; DARWIN-64-DYNAMIC:   movq    _ptr@GOTPCREL(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT:      movq    (%rax), %rax
-; DARWIN-64-DYNAMIC-NEXT:      leaq    262144(%rax,%rdi,4), %rax
+; DARWIN-64-DYNAMIC:   movq    _ptr@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movq    ([[RAX]]), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      leaq    262144([[RAX]],%rdi,4), %rax
 ; DARWIN-64-DYNAMIC-NEXT:      ret
 
 ; DARWIN-64-PIC: _cam02:
-; DARWIN-64-PIC:       movq    _ptr@GOTPCREL(%rip), %rax
-; DARWIN-64-PIC-NEXT:  movq    (%rax), %rax
-; DARWIN-64-PIC-NEXT:  leaq    262144(%rax,%rdi,4), %rax
+; DARWIN-64-PIC:       movq    _ptr@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movq    ([[RAX]]), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT:  leaq    262144([[RAX]],%rdi,4), %rax
 ; DARWIN-64-PIC-NEXT:  ret
 }
 
 define i8* @cam03(i64 %i) nounwind {
 entry:
        %0 = add i64 %i, 65536
-       %1 = getelementptr [131072 x i32]* @dsrc, i64 0, i64 %0
+       %1 = getelementptr [131072 x i32], [131072 x i32]* @dsrc, i64 0, i64 %0
        %2 = bitcast i32* %1 to i8*
        ret i8* %2
-; LINUX-64-STATIC: cam03:
+; LINUX-64-STATIC-LABEL: cam03:
 ; LINUX-64-STATIC: leaq    dsrc+262144(,%rdi,4), %rax
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: cam03:
-; LINUX-32-STATIC:     movl    4(%esp), %eax
-; LINUX-32-STATIC-NEXT:        leal    dsrc+262144(,%eax,4), %eax
+; LINUX-32-STATIC-LABEL: cam03:
+; LINUX-32-STATIC:     movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT:        leal    dsrc+262144(,[[EAX]],4), %eax
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: cam03:
-; LINUX-32-PIC:        movl    4(%esp), %eax
-; LINUX-32-PIC-NEXT:   leal    dsrc+262144(,%eax,4), %eax
+; LINUX-32-PIC-LABEL: cam03:
+; LINUX-32-PIC:        movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT:   leal    dsrc+262144(,[[EAX]],4), %eax
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: cam03:
-; LINUX-64-PIC:        movq    dsrc@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT:   leaq    262144(%rax,%rdi,4), %rax
+; LINUX-64-PIC-LABEL: cam03:
+; LINUX-64-PIC:        movq    dsrc@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT:   leaq    262144([[RAX]],%rdi,4), %rax
 ; LINUX-64-PIC-NEXT:   ret
 
 ; DARWIN-32-STATIC: _cam03:
-; DARWIN-32-STATIC:    movl    4(%esp), %eax
-; DARWIN-32-STATIC-NEXT:       leal    _dsrc+262144(,%eax,4), %eax
+; DARWIN-32-STATIC:    movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       leal    _dsrc+262144(,[[EAX]],4), %eax
 ; DARWIN-32-STATIC-NEXT:       ret
 
 ; DARWIN-32-DYNAMIC: _cam03:
-; DARWIN-32-DYNAMIC:   movl    4(%esp), %eax
-; DARWIN-32-DYNAMIC-NEXT:      leal    _dsrc+262144(,%eax,4), %eax
+; DARWIN-32-DYNAMIC:   movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      leal    _dsrc+262144(,[[EAX]],4), %eax
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _cam03:
-; DARWIN-32-PIC:       call    "L126$pb"
-; DARWIN-32-PIC-NEXT: "L126$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  movl    4(%esp), %ecx
-; DARWIN-32-PIC-NEXT:  leal    _dsrc+262144-"L126$pb"(%eax,%ecx,4), %eax
+; DARWIN-32-PIC:       calll   L125$pb
+; DARWIN-32-PIC-NEXT: L125$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  leal    (_dsrc-L125$pb)+262144([[EAX]],[[ECX]],4), %eax
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _cam03:
-; DARWIN-64-STATIC:    leaq    _dsrc(%rip), %rax
-; DARWIN-64-STATIC-NEXT:       leaq    262144(%rax,%rdi,4), %rax
+; DARWIN-64-STATIC:    leaq    _dsrc(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       leaq    262144([[RAX]],%rdi,4), %rax
 ; DARWIN-64-STATIC-NEXT:       ret
 
 ; DARWIN-64-DYNAMIC: _cam03:
-; DARWIN-64-DYNAMIC:   leaq    _dsrc(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT:      leaq    262144(%rax,%rdi,4), %rax
+; DARWIN-64-DYNAMIC:   leaq    _dsrc(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      leaq    262144([[RAX]],%rdi,4), %rax
 ; DARWIN-64-DYNAMIC-NEXT:      ret
 
 ; DARWIN-64-PIC: _cam03:
-; DARWIN-64-PIC:       leaq    _dsrc(%rip), %rax
-; DARWIN-64-PIC-NEXT:  leaq    262144(%rax,%rdi,4), %rax
+; DARWIN-64-PIC:       leaq    _dsrc(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT:  leaq    262144([[RAX]],%rdi,4), %rax
 ; DARWIN-64-PIC-NEXT:  ret
 }
 
 define i8* @cam04(i64 %i) nounwind {
 entry:
        %0 = add i64 %i, 65536
-       %1 = getelementptr [131072 x i32]* @ddst, i64 0, i64 %0
+       %1 = getelementptr [131072 x i32], [131072 x i32]* @ddst, i64 0, i64 %0
        %2 = bitcast i32* %1 to i8*
        ret i8* %2
-; LINUX-64-STATIC: cam04:
+; LINUX-64-STATIC-LABEL: cam04:
 ; LINUX-64-STATIC: leaq    ddst+262144(,%rdi,4), %rax
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: cam04:
-; LINUX-32-STATIC:     movl    4(%esp), %eax
-; LINUX-32-STATIC-NEXT:        leal    ddst+262144(,%eax,4), %eax
+; LINUX-32-STATIC-LABEL: cam04:
+; LINUX-32-STATIC:     movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT:        leal    ddst+262144(,[[EAX]],4), %eax
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: cam04:
-; LINUX-32-PIC:        movl    4(%esp), %eax
-; LINUX-32-PIC-NEXT:   leal    ddst+262144(,%eax,4), %eax
+; LINUX-32-PIC-LABEL: cam04:
+; LINUX-32-PIC:        movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT:   leal    ddst+262144(,[[EAX]],4), %eax
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: cam04:
-; LINUX-64-PIC:        movq    ddst@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT:   leaq    262144(%rax,%rdi,4), %rax
+; LINUX-64-PIC-LABEL: cam04:
+; LINUX-64-PIC:        movq    ddst@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT:   leaq    262144([[RAX]],%rdi,4), %rax
 ; LINUX-64-PIC-NEXT:   ret
 
 ; DARWIN-32-STATIC: _cam04:
-; DARWIN-32-STATIC:    movl    4(%esp), %eax
-; DARWIN-32-STATIC-NEXT:       leal    _ddst+262144(,%eax,4), %eax
+; DARWIN-32-STATIC:    movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       leal    _ddst+262144(,[[EAX]],4), %eax
 ; DARWIN-32-STATIC-NEXT:       ret
 
 ; DARWIN-32-DYNAMIC: _cam04:
-; DARWIN-32-DYNAMIC:   movl    4(%esp), %eax
-; DARWIN-32-DYNAMIC-NEXT:      leal    _ddst+262144(,%eax,4), %eax
+; DARWIN-32-DYNAMIC:   movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      leal    _ddst+262144(,[[EAX]],4), %eax
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _cam04:
-; DARWIN-32-PIC:       call    "L127$pb"
-; DARWIN-32-PIC-NEXT: "L127$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  movl    4(%esp), %ecx
-; DARWIN-32-PIC-NEXT:  leal    _ddst+262144-"L127$pb"(%eax,%ecx,4), %eax
+; DARWIN-32-PIC:       calll   L126$pb
+; DARWIN-32-PIC-NEXT: L126$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  leal    (_ddst-L126$pb)+262144([[EAX]],[[ECX]],4), %eax
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _cam04:
-; DARWIN-64-STATIC:    leaq    _ddst(%rip), %rax
-; DARWIN-64-STATIC-NEXT:       leaq    262144(%rax,%rdi,4), %rax
+; DARWIN-64-STATIC:    leaq    _ddst(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       leaq    262144([[RAX]],%rdi,4), %rax
 ; DARWIN-64-STATIC-NEXT:       ret
 
 ; DARWIN-64-DYNAMIC: _cam04:
-; DARWIN-64-DYNAMIC:   leaq    _ddst(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT:      leaq    262144(%rax,%rdi,4), %rax
+; DARWIN-64-DYNAMIC:   leaq    _ddst(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      leaq    262144([[RAX]],%rdi,4), %rax
 ; DARWIN-64-DYNAMIC-NEXT:      ret
 
 ; DARWIN-64-PIC: _cam04:
-; DARWIN-64-PIC:       leaq    _ddst(%rip), %rax
-; DARWIN-64-PIC-NEXT:  leaq    262144(%rax,%rdi,4), %rax
+; DARWIN-64-PIC:       leaq    _ddst(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT:  leaq    262144([[RAX]],%rdi,4), %rax
 ; DARWIN-64-PIC-NEXT:  ret
 }
 
 define i8* @cam05(i64 %i) nounwind {
 entry:
-       %0 = load i32** @dptr, align 8
+       %0 = load i32*, i32** @dptr, align 8
        %1 = add i64 %i, 65536
-       %2 = getelementptr i32* %0, i64 %1
+       %2 = getelementptr i32, i32* %0, i64 %1
        %3 = bitcast i32* %2 to i8*
        ret i8* %3
-; LINUX-64-STATIC: cam05:
-; LINUX-64-STATIC: movq    dptr(%rip), %rax
-; LINUX-64-STATIC: leaq    262144(%rax,%rdi,4), %rax
+; LINUX-64-STATIC-LABEL: cam05:
+; LINUX-64-STATIC: movq    dptr(%rip), [[RAX:%r.x]]
+; LINUX-64-STATIC: leaq    262144([[RAX]],%rdi,4), %rax
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: cam05:
-; LINUX-32-STATIC:     movl    4(%esp), %eax
-; LINUX-32-STATIC-NEXT:        movl    dptr, %ecx
-; LINUX-32-STATIC-NEXT:        leal    262144(%ecx,%eax,4), %eax
+; LINUX-32-STATIC-LABEL: cam05:
+; LINUX-32-STATIC:     movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT:        movl    dptr, [[ECX:%e.x]]
+; LINUX-32-STATIC-NEXT:        leal    262144([[ECX]],[[EAX]],4), %eax
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: cam05:
-; LINUX-32-PIC:        movl    4(%esp), %eax
-; LINUX-32-PIC-NEXT:   movl    dptr, %ecx
-; LINUX-32-PIC-NEXT:   leal    262144(%ecx,%eax,4), %eax
+; LINUX-32-PIC-LABEL: cam05:
+; LINUX-32-PIC:        movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT:   movl    dptr, [[ECX:%e.x]]
+; LINUX-32-PIC-NEXT:   leal    262144([[ECX]],[[EAX]],4), %eax
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: cam05:
-; LINUX-64-PIC:        movq    dptr@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT:   movq    (%rax), %rax
-; LINUX-64-PIC-NEXT:   leaq    262144(%rax,%rdi,4), %rax
+; LINUX-64-PIC-LABEL: cam05:
+; LINUX-64-PIC:        movq    dptr@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT:   movq    ([[RAX]]), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT:   leaq    262144([[RAX]],%rdi,4), %rax
 ; LINUX-64-PIC-NEXT:   ret
 
 ; DARWIN-32-STATIC: _cam05:
-; DARWIN-32-STATIC:    movl    4(%esp), %eax
-; DARWIN-32-STATIC-NEXT:       movl    _dptr, %ecx
-; DARWIN-32-STATIC-NEXT:       leal    262144(%ecx,%eax,4), %eax
+; DARWIN-32-STATIC:    movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       movl    _dptr, [[ECX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       leal    262144([[ECX]],[[EAX]],4), %eax
 ; DARWIN-32-STATIC-NEXT:       ret
 
 ; DARWIN-32-DYNAMIC: _cam05:
-; DARWIN-32-DYNAMIC:   movl    4(%esp), %eax
-; DARWIN-32-DYNAMIC-NEXT:      movl    _dptr, %ecx
-; DARWIN-32-DYNAMIC-NEXT:      leal    262144(%ecx,%eax,4), %eax
+; DARWIN-32-DYNAMIC:   movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    _dptr, [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      leal    262144([[ECX]],[[EAX]],4), %eax
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _cam05:
-; DARWIN-32-PIC:       call    "L128$pb"
-; DARWIN-32-PIC-NEXT: "L128$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  movl    4(%esp), %ecx
-; DARWIN-32-PIC-NEXT:  movl    _dptr-"L128$pb"(%eax), %eax
-; DARWIN-32-PIC-NEXT:  leal    262144(%eax,%ecx,4), %eax
+; DARWIN-32-PIC:       calll   L127$pb
+; DARWIN-32-PIC-NEXT: L127$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    _dptr-L127$pb([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  leal    262144([[EAX]],[[ECX]],4), %eax
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _cam05:
-; DARWIN-64-STATIC:    movq    _dptr(%rip), %rax
-; DARWIN-64-STATIC-NEXT:       leaq    262144(%rax,%rdi,4), %rax
+; DARWIN-64-STATIC:    movq    _dptr(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       leaq    262144([[RAX]],%rdi,4), %rax
 ; DARWIN-64-STATIC-NEXT:       ret
 
 ; DARWIN-64-DYNAMIC: _cam05:
-; DARWIN-64-DYNAMIC:   movq    _dptr(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT:      leaq    262144(%rax,%rdi,4), %rax
+; DARWIN-64-DYNAMIC:   movq    _dptr(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      leaq    262144([[RAX]],%rdi,4), %rax
 ; DARWIN-64-DYNAMIC-NEXT:      ret
 
 ; DARWIN-64-PIC: _cam05:
-; DARWIN-64-PIC:       movq    _dptr(%rip), %rax
-; DARWIN-64-PIC-NEXT:  leaq    262144(%rax,%rdi,4), %rax
+; DARWIN-64-PIC:       movq    _dptr(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT:  leaq    262144([[RAX]],%rdi,4), %rax
 ; DARWIN-64-PIC-NEXT:  ret
 }
 
 define i8* @cam06(i64 %i) nounwind {
 entry:
        %0 = add i64 %i, 65536
-       %1 = getelementptr [131072 x i32]* @lsrc, i64 0, i64 %0
+       %1 = getelementptr [131072 x i32], [131072 x i32]* @lsrc, i64 0, i64 %0
        %2 = bitcast i32* %1 to i8*
        ret i8* %2
-; LINUX-64-STATIC: cam06:
+; LINUX-64-STATIC-LABEL: cam06:
 ; LINUX-64-STATIC: leaq    lsrc+262144(,%rdi,4), %rax
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: cam06:
-; LINUX-32-STATIC:     movl    4(%esp), %eax
-; LINUX-32-STATIC-NEXT:        leal    lsrc+262144(,%eax,4), %eax
+; LINUX-32-STATIC-LABEL: cam06:
+; LINUX-32-STATIC:     movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT:        leal    lsrc+262144(,[[EAX]],4), %eax
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: cam06:
-; LINUX-32-PIC:        movl    4(%esp), %eax
-; LINUX-32-PIC-NEXT:   leal    lsrc+262144(,%eax,4), %eax
+; LINUX-32-PIC-LABEL: cam06:
+; LINUX-32-PIC:        movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT:   leal    lsrc+262144(,[[EAX]],4), %eax
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: cam06:
-; LINUX-64-PIC:        leaq    lsrc(%rip), %rax
-; LINUX-64-PIC-NEXT:   leaq    262144(%rax,%rdi,4), %rax
+; LINUX-64-PIC-LABEL: cam06:
+; LINUX-64-PIC:        leaq    lsrc(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT:   leaq    262144([[RAX]],%rdi,4), %rax
 ; LINUX-64-PIC-NEXT:   ret
 
 ; DARWIN-32-STATIC: _cam06:
-; DARWIN-32-STATIC:    movl    4(%esp), %eax
-; DARWIN-32-STATIC-NEXT:       leal    _lsrc+262144(,%eax,4), %eax
+; DARWIN-32-STATIC:    movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       leal    _lsrc+262144(,[[EAX]],4), %eax
 ; DARWIN-32-STATIC-NEXT:       ret
 
 ; DARWIN-32-DYNAMIC: _cam06:
-; DARWIN-32-DYNAMIC:   movl    4(%esp), %eax
-; DARWIN-32-DYNAMIC-NEXT:      leal    _lsrc+262144(,%eax,4), %eax
+; DARWIN-32-DYNAMIC:   movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      leal    _lsrc+262144(,[[EAX]],4), %eax
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _cam06:
-; DARWIN-32-PIC:       call    "L129$pb"
-; DARWIN-32-PIC-NEXT: "L129$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  movl    4(%esp), %ecx
-; DARWIN-32-PIC-NEXT:  leal    _lsrc+262144-"L129$pb"(%eax,%ecx,4), %eax
+; DARWIN-32-PIC:       calll   L128$pb
+; DARWIN-32-PIC-NEXT: L128$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  leal    (_lsrc-L128$pb)+262144([[EAX]],[[ECX]],4), %eax
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _cam06:
-; DARWIN-64-STATIC:    leaq    _lsrc(%rip), %rax
-; DARWIN-64-STATIC-NEXT:       leaq    262144(%rax,%rdi,4), %rax
+; DARWIN-64-STATIC:    leaq    _lsrc(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       leaq    262144([[RAX]],%rdi,4), %rax
 ; DARWIN-64-STATIC-NEXT:       ret
 
 ; DARWIN-64-DYNAMIC: _cam06:
-; DARWIN-64-DYNAMIC:   leaq    _lsrc(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT:      leaq    262144(%rax,%rdi,4), %rax
+; DARWIN-64-DYNAMIC:   leaq    _lsrc(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      leaq    262144([[RAX]],%rdi,4), %rax
 ; DARWIN-64-DYNAMIC-NEXT:      ret
 
 ; DARWIN-64-PIC: _cam06:
-; DARWIN-64-PIC:       leaq    _lsrc(%rip), %rax
-; DARWIN-64-PIC-NEXT:  leaq    262144(%rax,%rdi,4), %rax
+; DARWIN-64-PIC:       leaq    _lsrc(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT:  leaq    262144([[RAX]],%rdi,4), %rax
 ; DARWIN-64-PIC-NEXT:  ret
 }
 
 define i8* @cam07(i64 %i) nounwind {
 entry:
        %0 = add i64 %i, 65536
-       %1 = getelementptr [131072 x i32]* @ldst, i64 0, i64 %0
+       %1 = getelementptr [131072 x i32], [131072 x i32]* @ldst, i64 0, i64 %0
        %2 = bitcast i32* %1 to i8*
        ret i8* %2
-; LINUX-64-STATIC: cam07:
+; LINUX-64-STATIC-LABEL: cam07:
 ; LINUX-64-STATIC: leaq    ldst+262144(,%rdi,4), %rax
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: cam07:
-; LINUX-32-STATIC:     movl    4(%esp), %eax
-; LINUX-32-STATIC-NEXT:        leal    ldst+262144(,%eax,4), %eax
+; LINUX-32-STATIC-LABEL: cam07:
+; LINUX-32-STATIC:     movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT:        leal    ldst+262144(,[[EAX]],4), %eax
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: cam07:
-; LINUX-32-PIC:        movl    4(%esp), %eax
-; LINUX-32-PIC-NEXT:   leal    ldst+262144(,%eax,4), %eax
+; LINUX-32-PIC-LABEL: cam07:
+; LINUX-32-PIC:        movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT:   leal    ldst+262144(,[[EAX]],4), %eax
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: cam07:
-; LINUX-64-PIC:        leaq    ldst(%rip), %rax
-; LINUX-64-PIC-NEXT:   leaq    262144(%rax,%rdi,4), %rax
+; LINUX-64-PIC-LABEL: cam07:
+; LINUX-64-PIC:        leaq    ldst(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT:   leaq    262144([[RAX]],%rdi,4), %rax
 ; LINUX-64-PIC-NEXT:   ret
 
 ; DARWIN-32-STATIC: _cam07:
-; DARWIN-32-STATIC:    movl    4(%esp), %eax
-; DARWIN-32-STATIC-NEXT:       leal    _ldst+262144(,%eax,4), %eax
+; DARWIN-32-STATIC:    movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       leal    _ldst+262144(,[[EAX]],4), %eax
 ; DARWIN-32-STATIC-NEXT:       ret
 
 ; DARWIN-32-DYNAMIC: _cam07:
-; DARWIN-32-DYNAMIC:   movl    4(%esp), %eax
-; DARWIN-32-DYNAMIC-NEXT:      leal    _ldst+262144(,%eax,4), %eax
+; DARWIN-32-DYNAMIC:   movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      leal    _ldst+262144(,[[EAX]],4), %eax
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _cam07:
-; DARWIN-32-PIC:       call    "L130$pb"
-; DARWIN-32-PIC-NEXT: "L130$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  movl    4(%esp), %ecx
-; DARWIN-32-PIC-NEXT:  leal    _ldst+262144-"L130$pb"(%eax,%ecx,4), %eax
+; DARWIN-32-PIC:       calll   L129$pb
+; DARWIN-32-PIC-NEXT: L129$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  leal    (_ldst-L129$pb)+262144([[EAX]],[[ECX]],4), %eax
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _cam07:
-; DARWIN-64-STATIC:    leaq    _ldst(%rip), %rax
-; DARWIN-64-STATIC-NEXT:       leaq    262144(%rax,%rdi,4), %rax
+; DARWIN-64-STATIC:    leaq    _ldst(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       leaq    262144([[RAX]],%rdi,4), %rax
 ; DARWIN-64-STATIC-NEXT:       ret
 
 ; DARWIN-64-DYNAMIC: _cam07:
-; DARWIN-64-DYNAMIC:   leaq    _ldst(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT:      leaq    262144(%rax,%rdi,4), %rax
+; DARWIN-64-DYNAMIC:   leaq    _ldst(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      leaq    262144([[RAX]],%rdi,4), %rax
 ; DARWIN-64-DYNAMIC-NEXT:      ret
 
 ; DARWIN-64-PIC: _cam07:
-; DARWIN-64-PIC:       leaq    _ldst(%rip), %rax
-; DARWIN-64-PIC-NEXT:  leaq    262144(%rax,%rdi,4), %rax
+; DARWIN-64-PIC:       leaq    _ldst(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT:  leaq    262144([[RAX]],%rdi,4), %rax
 ; DARWIN-64-PIC-NEXT:  ret
 }
 
 define i8* @cam08(i64 %i) nounwind {
 entry:
-       %0 = load i32** @lptr, align 8
+       %0 = load i32*, i32** @lptr, align 8
        %1 = add i64 %i, 65536
-       %2 = getelementptr i32* %0, i64 %1
+       %2 = getelementptr i32, i32* %0, i64 %1
        %3 = bitcast i32* %2 to i8*
        ret i8* %3
-; LINUX-64-STATIC: cam08:
-; LINUX-64-STATIC: movq    lptr(%rip), %rax
-; LINUX-64-STATIC: leaq    262144(%rax,%rdi,4), %rax
+; LINUX-64-STATIC-LABEL: cam08:
+; LINUX-64-STATIC: movq    lptr(%rip), [[RAX:%r.x]]
+; LINUX-64-STATIC: leaq    262144([[RAX]],%rdi,4), %rax
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: cam08:
-; LINUX-32-STATIC:     movl    4(%esp), %eax
-; LINUX-32-STATIC-NEXT:        movl    lptr, %ecx
-; LINUX-32-STATIC-NEXT:        leal    262144(%ecx,%eax,4), %eax
+; LINUX-32-STATIC-LABEL: cam08:
+; LINUX-32-STATIC:     movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT:        movl    lptr, [[ECX:%e.x]]
+; LINUX-32-STATIC-NEXT:        leal    262144([[ECX]],[[EAX]],4), %eax
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: cam08:
-; LINUX-32-PIC:        movl    4(%esp), %eax
-; LINUX-32-PIC-NEXT:   movl    lptr, %ecx
-; LINUX-32-PIC-NEXT:   leal    262144(%ecx,%eax,4), %eax
+; LINUX-32-PIC-LABEL: cam08:
+; LINUX-32-PIC:        movl    4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT:   movl    lptr, [[ECX:%e.x]]
+; LINUX-32-PIC-NEXT:   leal    262144([[ECX]],[[EAX]],4), %eax
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: cam08:
-; LINUX-64-PIC:        movq    lptr(%rip), %rax
-; LINUX-64-PIC-NEXT:   leaq    262144(%rax,%rdi,4), %rax
+; LINUX-64-PIC-LABEL: cam08:
+; LINUX-64-PIC:        movq    lptr(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT:   leaq    262144([[RAX]],%rdi,4), %rax
 ; LINUX-64-PIC-NEXT:   ret
 
 ; DARWIN-32-STATIC: _cam08:
-; DARWIN-32-STATIC:    movl    4(%esp), %eax
-; DARWIN-32-STATIC-NEXT:       movl    _lptr, %ecx
-; DARWIN-32-STATIC-NEXT:       leal    262144(%ecx,%eax,4), %eax
+; DARWIN-32-STATIC:    movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       movl    _lptr, [[ECX:%e.x]]
+; DARWIN-32-STATIC-NEXT:       leal    262144([[ECX]],[[EAX]],4), %eax
 ; DARWIN-32-STATIC-NEXT:       ret
 
 ; DARWIN-32-DYNAMIC: _cam08:
-; DARWIN-32-DYNAMIC:   movl    4(%esp), %eax
-; DARWIN-32-DYNAMIC-NEXT:      movl    _lptr, %ecx
-; DARWIN-32-DYNAMIC-NEXT:      leal    262144(%ecx,%eax,4), %eax
+; DARWIN-32-DYNAMIC:   movl    4(%esp), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      movl    _lptr, [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT:      leal    262144([[ECX]],[[EAX]],4), %eax
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _cam08:
-; DARWIN-32-PIC:       call    "L131$pb"
-; DARWIN-32-PIC-NEXT: "L131$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  movl    4(%esp), %ecx
-; DARWIN-32-PIC-NEXT:  movl    _lptr-"L131$pb"(%eax), %eax
-; DARWIN-32-PIC-NEXT:  leal    262144(%eax,%ecx,4), %eax
+; DARWIN-32-PIC:       calll   L130$pb
+; DARWIN-32-PIC-NEXT: L130$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    _lptr-L130$pb([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  leal    262144([[EAX]],[[ECX]],4), %eax
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _cam08:
-; DARWIN-64-STATIC:    movq    _lptr(%rip), %rax
-; DARWIN-64-STATIC-NEXT:       leaq    262144(%rax,%rdi,4), %rax
+; DARWIN-64-STATIC:    movq    _lptr(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       leaq    262144([[RAX]],%rdi,4), %rax
 ; DARWIN-64-STATIC-NEXT:       ret
 
 ; DARWIN-64-DYNAMIC: _cam08:
-; DARWIN-64-DYNAMIC:   movq    _lptr(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT:      leaq    262144(%rax,%rdi,4), %rax
+; DARWIN-64-DYNAMIC:   movq    _lptr(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      leaq    262144([[RAX]],%rdi,4), %rax
 ; DARWIN-64-DYNAMIC-NEXT:      ret
 
 ; DARWIN-64-PIC: _cam08:
-; DARWIN-64-PIC:       movq    _lptr(%rip), %rax
-; DARWIN-64-PIC-NEXT:  leaq    262144(%rax,%rdi,4), %rax
+; DARWIN-64-PIC:       movq    _lptr(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT:  leaq    262144([[RAX]],%rdi,4), %rax
 ; DARWIN-64-PIC-NEXT:  ret
 }
 
 define void @lcallee() nounwind {
 entry:
-       tail call void @x() nounwind
-       tail call void @x() nounwind
-       tail call void @x() nounwind
-       tail call void @x() nounwind
-       tail call void @x() nounwind
-       tail call void @x() nounwind
-       tail call void @x() nounwind
+       call void @x() nounwind
+       call void @x() nounwind
+       call void @x() nounwind
+       call void @x() nounwind
+       call void @x() nounwind
+       call void @x() nounwind
+       call void @x() nounwind
        ret void
-; LINUX-64-STATIC: lcallee:
-; LINUX-64-STATIC: call    x
-; LINUX-64-STATIC: call    x
-; LINUX-64-STATIC: call    x
-; LINUX-64-STATIC: call    x
-; LINUX-64-STATIC: call    x
-; LINUX-64-STATIC: call    x
-; LINUX-64-STATIC: call    x
-; LINUX-64-STATIC: ret
-
-; LINUX-32-STATIC: lcallee:
-; LINUX-32-STATIC:     subl    $4, %esp
-; LINUX-32-STATIC-NEXT:        call    x
-; LINUX-32-STATIC-NEXT:        call    x
-; LINUX-32-STATIC-NEXT:        call    x
-; LINUX-32-STATIC-NEXT:        call    x
-; LINUX-32-STATIC-NEXT:        call    x
-; LINUX-32-STATIC-NEXT:        call    x
-; LINUX-32-STATIC-NEXT:        call    x
-; LINUX-32-STATIC-NEXT:        addl    $4, %esp
-; LINUX-32-STATIC-NEXT:        ret
-
-; LINUX-32-PIC: lcallee:
-; LINUX-32-PIC:        subl    $4, %esp
-; LINUX-32-PIC-NEXT:   call    x
-; LINUX-32-PIC-NEXT:   call    x
-; LINUX-32-PIC-NEXT:   call    x
-; LINUX-32-PIC-NEXT:   call    x
-; LINUX-32-PIC-NEXT:   call    x
-; LINUX-32-PIC-NEXT:   call    x
-; LINUX-32-PIC-NEXT:   call    x
-; LINUX-32-PIC-NEXT:   addl    $4, %esp
-; LINUX-32-PIC-NEXT:   ret
-
-; LINUX-64-PIC: lcallee:
-; LINUX-64-PIC:        subq    $8, %rsp
-; LINUX-64-PIC-NEXT:   call    x@PLT
-; LINUX-64-PIC-NEXT:   call    x@PLT
-; LINUX-64-PIC-NEXT:   call    x@PLT
-; LINUX-64-PIC-NEXT:   call    x@PLT
-; LINUX-64-PIC-NEXT:   call    x@PLT
-; LINUX-64-PIC-NEXT:   call    x@PLT
-; LINUX-64-PIC-NEXT:   call    x@PLT
-; LINUX-64-PIC-NEXT:   addq    $8, %rsp
+; LINUX-64-STATIC-LABEL: lcallee:
+; LINUX-64-STATIC: callq   x
+; LINUX-64-STATIC: callq   x
+; LINUX-64-STATIC: callq   x
+; LINUX-64-STATIC: callq   x
+; LINUX-64-STATIC: callq   x
+; LINUX-64-STATIC: callq   x
+; LINUX-64-STATIC: callq   x
+; LINUX-64-STATIC: ret
+
+; LINUX-32-STATIC-LABEL: lcallee:
+; LINUX-32-STATIC:     subl
+; LINUX-32-STATIC-NEXT:        calll   x
+; LINUX-32-STATIC-NEXT:        calll   x
+; LINUX-32-STATIC-NEXT:        calll   x
+; LINUX-32-STATIC-NEXT:        calll   x
+; LINUX-32-STATIC-NEXT:        calll   x
+; LINUX-32-STATIC-NEXT:        calll   x
+; LINUX-32-STATIC-NEXT:        calll   x
+; LINUX-32-STATIC-NEXT:        addl
+; LINUX-32-STATIC-NEXT:        ret
+
+; LINUX-32-PIC-LABEL: lcallee:
+; LINUX-32-PIC:        subl
+; 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
+
+; LINUX-32-PIC-NEXT:   ret
+
+; LINUX-64-PIC-LABEL: lcallee:
+; LINUX-64-PIC:        pushq
+; LINUX-64-PIC-NEXT:   callq   x@PLT
+; LINUX-64-PIC-NEXT:   callq   x@PLT
+; LINUX-64-PIC-NEXT:   callq   x@PLT
+; LINUX-64-PIC-NEXT:   callq   x@PLT
+; LINUX-64-PIC-NEXT:   callq   x@PLT
+; LINUX-64-PIC-NEXT:   callq   x@PLT
+; LINUX-64-PIC-NEXT:   callq   x@PLT
+; LINUX-64-PIC-NEXT:   popq
 ; LINUX-64-PIC-NEXT:   ret
 
 ; DARWIN-32-STATIC: _lcallee:
 ; DARWIN-32-STATIC:    subl    $12, %esp
-; DARWIN-32-STATIC-NEXT:       call    _x
-; DARWIN-32-STATIC-NEXT:       call    _x
-; DARWIN-32-STATIC-NEXT:       call    _x
-; DARWIN-32-STATIC-NEXT:       call    _x
-; DARWIN-32-STATIC-NEXT:       call    _x
-; DARWIN-32-STATIC-NEXT:       call    _x
-; DARWIN-32-STATIC-NEXT:       call    _x
+; DARWIN-32-STATIC-NEXT:       calll   _x
+; DARWIN-32-STATIC-NEXT:       calll   _x
+; DARWIN-32-STATIC-NEXT:       calll   _x
+; DARWIN-32-STATIC-NEXT:       calll   _x
+; DARWIN-32-STATIC-NEXT:       calll   _x
+; DARWIN-32-STATIC-NEXT:       calll   _x
+; DARWIN-32-STATIC-NEXT:       calll   _x
 ; DARWIN-32-STATIC-NEXT:       addl    $12, %esp
 ; DARWIN-32-STATIC-NEXT:       ret
 
 ; DARWIN-32-DYNAMIC: _lcallee:
 ; DARWIN-32-DYNAMIC:   subl    $12, %esp
-; DARWIN-32-DYNAMIC-NEXT:      call    L_x$stub
-; DARWIN-32-DYNAMIC-NEXT:      call    L_x$stub
-; DARWIN-32-DYNAMIC-NEXT:      call    L_x$stub
-; DARWIN-32-DYNAMIC-NEXT:      call    L_x$stub
-; DARWIN-32-DYNAMIC-NEXT:      call    L_x$stub
-; DARWIN-32-DYNAMIC-NEXT:      call    L_x$stub
-; DARWIN-32-DYNAMIC-NEXT:      call    L_x$stub
+; DARWIN-32-DYNAMIC-NEXT:      calll   L_x$stub
+; DARWIN-32-DYNAMIC-NEXT:      calll   L_x$stub
+; DARWIN-32-DYNAMIC-NEXT:      calll   L_x$stub
+; DARWIN-32-DYNAMIC-NEXT:      calll   L_x$stub
+; DARWIN-32-DYNAMIC-NEXT:      calll   L_x$stub
+; DARWIN-32-DYNAMIC-NEXT:      calll   L_x$stub
+; DARWIN-32-DYNAMIC-NEXT:      calll   L_x$stub
 ; DARWIN-32-DYNAMIC-NEXT:      addl    $12, %esp
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _lcallee:
 ; DARWIN-32-PIC:       subl    $12, %esp
-; DARWIN-32-PIC-NEXT:  call    L_x$stub
-; DARWIN-32-PIC-NEXT:  call    L_x$stub
-; DARWIN-32-PIC-NEXT:  call    L_x$stub
-; DARWIN-32-PIC-NEXT:  call    L_x$stub
-; DARWIN-32-PIC-NEXT:  call    L_x$stub
-; DARWIN-32-PIC-NEXT:  call    L_x$stub
-; DARWIN-32-PIC-NEXT:  call    L_x$stub
+; DARWIN-32-PIC-NEXT:  calll   L_x$stub
+; DARWIN-32-PIC-NEXT:  calll   L_x$stub
+; DARWIN-32-PIC-NEXT:  calll   L_x$stub
+; DARWIN-32-PIC-NEXT:  calll   L_x$stub
+; DARWIN-32-PIC-NEXT:  calll   L_x$stub
+; DARWIN-32-PIC-NEXT:  calll   L_x$stub
+; DARWIN-32-PIC-NEXT:  calll   L_x$stub
 ; DARWIN-32-PIC-NEXT:  addl    $12, %esp
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _lcallee:
-; DARWIN-64-STATIC:    subq    $8, %rsp
-; DARWIN-64-STATIC-NEXT:       call    _x
-; DARWIN-64-STATIC-NEXT:       call    _x
-; DARWIN-64-STATIC-NEXT:       call    _x
-; DARWIN-64-STATIC-NEXT:       call    _x
-; DARWIN-64-STATIC-NEXT:       call    _x
-; DARWIN-64-STATIC-NEXT:       call    _x
-; DARWIN-64-STATIC-NEXT:       call    _x
-; DARWIN-64-STATIC-NEXT:       addq    $8, %rsp
+; DARWIN-64-STATIC:    pushq
+; DARWIN-64-STATIC-NEXT:       callq   _x
+; DARWIN-64-STATIC-NEXT:       callq   _x
+; DARWIN-64-STATIC-NEXT:       callq   _x
+; DARWIN-64-STATIC-NEXT:       callq   _x
+; DARWIN-64-STATIC-NEXT:       callq   _x
+; DARWIN-64-STATIC-NEXT:       callq   _x
+; DARWIN-64-STATIC-NEXT:       callq   _x
+; DARWIN-64-STATIC-NEXT:       popq
 ; DARWIN-64-STATIC-NEXT:       ret
 
 ; DARWIN-64-DYNAMIC: _lcallee:
-; DARWIN-64-DYNAMIC:   subq    $8, %rsp
-; DARWIN-64-DYNAMIC-NEXT:      call    _x
-; DARWIN-64-DYNAMIC-NEXT:      call    _x
-; DARWIN-64-DYNAMIC-NEXT:      call    _x
-; DARWIN-64-DYNAMIC-NEXT:      call    _x
-; DARWIN-64-DYNAMIC-NEXT:      call    _x
-; DARWIN-64-DYNAMIC-NEXT:      call    _x
-; DARWIN-64-DYNAMIC-NEXT:      call    _x
-; DARWIN-64-DYNAMIC-NEXT:      addq    $8, %rsp
+; DARWIN-64-DYNAMIC:   pushq
+; DARWIN-64-DYNAMIC-NEXT:      callq   _x
+; DARWIN-64-DYNAMIC-NEXT:      callq   _x
+; DARWIN-64-DYNAMIC-NEXT:      callq   _x
+; DARWIN-64-DYNAMIC-NEXT:      callq   _x
+; DARWIN-64-DYNAMIC-NEXT:      callq   _x
+; DARWIN-64-DYNAMIC-NEXT:      callq   _x
+; DARWIN-64-DYNAMIC-NEXT:      callq   _x
+; DARWIN-64-DYNAMIC-NEXT:      popq
 ; DARWIN-64-DYNAMIC-NEXT:      ret
 
 ; DARWIN-64-PIC: _lcallee:
-; DARWIN-64-PIC:       subq    $8, %rsp
-; DARWIN-64-PIC-NEXT:  call    _x
-; DARWIN-64-PIC-NEXT:  call    _x
-; DARWIN-64-PIC-NEXT:  call    _x
-; DARWIN-64-PIC-NEXT:  call    _x
-; DARWIN-64-PIC-NEXT:  call    _x
-; DARWIN-64-PIC-NEXT:  call    _x
-; DARWIN-64-PIC-NEXT:  call    _x
-; DARWIN-64-PIC-NEXT:  addq    $8, %rsp
+; DARWIN-64-PIC:       pushq
+; DARWIN-64-PIC-NEXT:  callq   _x
+; DARWIN-64-PIC-NEXT:  callq   _x
+; DARWIN-64-PIC-NEXT:  callq   _x
+; DARWIN-64-PIC-NEXT:  callq   _x
+; DARWIN-64-PIC-NEXT:  callq   _x
+; DARWIN-64-PIC-NEXT:  callq   _x
+; DARWIN-64-PIC-NEXT:  callq   _x
+; DARWIN-64-PIC-NEXT:  popq
 ; DARWIN-64-PIC-NEXT:  ret
 }
 
@@ -8487,130 +8488,131 @@ declare void @x()
 
 define internal void @dcallee() nounwind {
 entry:
-       tail call void @y() nounwind
-       tail call void @y() nounwind
-       tail call void @y() nounwind
-       tail call void @y() nounwind
-       tail call void @y() nounwind
-       tail call void @y() nounwind
-       tail call void @y() nounwind
+       call void @y() nounwind
+       call void @y() nounwind
+       call void @y() nounwind
+       call void @y() nounwind
+       call void @y() nounwind
+       call void @y() nounwind
+       call void @y() nounwind
        ret void
-; LINUX-64-STATIC: dcallee:
-; LINUX-64-STATIC: call    y
-; LINUX-64-STATIC: call    y
-; LINUX-64-STATIC: call    y
-; LINUX-64-STATIC: call    y
-; LINUX-64-STATIC: call    y
-; LINUX-64-STATIC: call    y
-; LINUX-64-STATIC: call    y
-; LINUX-64-STATIC: ret
-
-; LINUX-32-STATIC: dcallee:
-; LINUX-32-STATIC:     subl    $4, %esp
-; LINUX-32-STATIC-NEXT:        call    y
-; LINUX-32-STATIC-NEXT:        call    y
-; LINUX-32-STATIC-NEXT:        call    y
-; LINUX-32-STATIC-NEXT:        call    y
-; LINUX-32-STATIC-NEXT:        call    y
-; LINUX-32-STATIC-NEXT:        call    y
-; LINUX-32-STATIC-NEXT:        call    y
-; LINUX-32-STATIC-NEXT:        addl    $4, %esp
-; LINUX-32-STATIC-NEXT:        ret
-
-; LINUX-32-PIC: dcallee:
-; LINUX-32-PIC:        subl    $4, %esp
-; LINUX-32-PIC-NEXT:   call    y
-; LINUX-32-PIC-NEXT:   call    y
-; LINUX-32-PIC-NEXT:   call    y
-; LINUX-32-PIC-NEXT:   call    y
-; LINUX-32-PIC-NEXT:   call    y
-; LINUX-32-PIC-NEXT:   call    y
-; LINUX-32-PIC-NEXT:   call    y
-; LINUX-32-PIC-NEXT:   addl    $4, %esp
-; LINUX-32-PIC-NEXT:   ret
-
-; LINUX-64-PIC: dcallee:
-; LINUX-64-PIC:        subq    $8, %rsp
-; LINUX-64-PIC-NEXT:   call    y@PLT
-; LINUX-64-PIC-NEXT:   call    y@PLT
-; LINUX-64-PIC-NEXT:   call    y@PLT
-; LINUX-64-PIC-NEXT:   call    y@PLT
-; LINUX-64-PIC-NEXT:   call    y@PLT
-; LINUX-64-PIC-NEXT:   call    y@PLT
-; LINUX-64-PIC-NEXT:   call    y@PLT
-; LINUX-64-PIC-NEXT:   addq    $8, %rsp
+; LINUX-64-STATIC-LABEL: dcallee:
+; LINUX-64-STATIC: callq   y
+; LINUX-64-STATIC: callq   y
+; LINUX-64-STATIC: callq   y
+; LINUX-64-STATIC: callq   y
+; LINUX-64-STATIC: callq   y
+; LINUX-64-STATIC: callq   y
+; LINUX-64-STATIC: callq   y
+; LINUX-64-STATIC: ret
+
+; LINUX-32-STATIC-LABEL: dcallee:
+; LINUX-32-STATIC:     subl
+; LINUX-32-STATIC-NEXT:        calll   y
+; LINUX-32-STATIC-NEXT:        calll   y
+; LINUX-32-STATIC-NEXT:        calll   y
+; LINUX-32-STATIC-NEXT:        calll   y
+; LINUX-32-STATIC-NEXT:        calll   y
+; LINUX-32-STATIC-NEXT:        calll   y
+; LINUX-32-STATIC-NEXT:        calll   y
+; LINUX-32-STATIC-NEXT:        addl
+; LINUX-32-STATIC-NEXT:        ret
+
+; LINUX-32-PIC-LABEL: dcallee:
+; LINUX-32-PIC:        subl
+; 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
+
+; LINUX-32-PIC-NEXT:   ret
+
+; LINUX-64-PIC-LABEL: dcallee:
+; LINUX-64-PIC:        pushq
+; LINUX-64-PIC-NEXT:   callq   y@PLT
+; LINUX-64-PIC-NEXT:   callq   y@PLT
+; LINUX-64-PIC-NEXT:   callq   y@PLT
+; LINUX-64-PIC-NEXT:   callq   y@PLT
+; LINUX-64-PIC-NEXT:   callq   y@PLT
+; LINUX-64-PIC-NEXT:   callq   y@PLT
+; LINUX-64-PIC-NEXT:   callq   y@PLT
+; LINUX-64-PIC-NEXT:   popq
 ; LINUX-64-PIC-NEXT:   ret
 
 ; DARWIN-32-STATIC: _dcallee:
 ; DARWIN-32-STATIC:    subl    $12, %esp
-; DARWIN-32-STATIC-NEXT:       call    _y
-; DARWIN-32-STATIC-NEXT:       call    _y
-; DARWIN-32-STATIC-NEXT:       call    _y
-; DARWIN-32-STATIC-NEXT:       call    _y
-; DARWIN-32-STATIC-NEXT:       call    _y
-; DARWIN-32-STATIC-NEXT:       call    _y
-; DARWIN-32-STATIC-NEXT:       call    _y
+; DARWIN-32-STATIC-NEXT:       calll   _y
+; DARWIN-32-STATIC-NEXT:       calll   _y
+; DARWIN-32-STATIC-NEXT:       calll   _y
+; DARWIN-32-STATIC-NEXT:       calll   _y
+; DARWIN-32-STATIC-NEXT:       calll   _y
+; DARWIN-32-STATIC-NEXT:       calll   _y
+; DARWIN-32-STATIC-NEXT:       calll   _y
 ; DARWIN-32-STATIC-NEXT:       addl    $12, %esp
 ; DARWIN-32-STATIC-NEXT:       ret
 
 ; DARWIN-32-DYNAMIC: _dcallee:
 ; DARWIN-32-DYNAMIC:   subl    $12, %esp
-; DARWIN-32-DYNAMIC-NEXT:      call    L_y$stub
-; DARWIN-32-DYNAMIC-NEXT:      call    L_y$stub
-; DARWIN-32-DYNAMIC-NEXT:      call    L_y$stub
-; DARWIN-32-DYNAMIC-NEXT:      call    L_y$stub
-; DARWIN-32-DYNAMIC-NEXT:      call    L_y$stub
-; DARWIN-32-DYNAMIC-NEXT:      call    L_y$stub
-; DARWIN-32-DYNAMIC-NEXT:      call    L_y$stub
+; DARWIN-32-DYNAMIC-NEXT:      calll   L_y$stub
+; DARWIN-32-DYNAMIC-NEXT:      calll   L_y$stub
+; DARWIN-32-DYNAMIC-NEXT:      calll   L_y$stub
+; DARWIN-32-DYNAMIC-NEXT:      calll   L_y$stub
+; DARWIN-32-DYNAMIC-NEXT:      calll   L_y$stub
+; DARWIN-32-DYNAMIC-NEXT:      calll   L_y$stub
+; DARWIN-32-DYNAMIC-NEXT:      calll   L_y$stub
 ; DARWIN-32-DYNAMIC-NEXT:      addl    $12, %esp
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _dcallee:
 ; DARWIN-32-PIC:       subl    $12, %esp
-; DARWIN-32-PIC-NEXT:  call    L_y$stub
-; DARWIN-32-PIC-NEXT:  call    L_y$stub
-; DARWIN-32-PIC-NEXT:  call    L_y$stub
-; DARWIN-32-PIC-NEXT:  call    L_y$stub
-; DARWIN-32-PIC-NEXT:  call    L_y$stub
-; DARWIN-32-PIC-NEXT:  call    L_y$stub
-; DARWIN-32-PIC-NEXT:  call    L_y$stub
+; DARWIN-32-PIC-NEXT:  calll   L_y$stub
+; DARWIN-32-PIC-NEXT:  calll   L_y$stub
+; DARWIN-32-PIC-NEXT:  calll   L_y$stub
+; DARWIN-32-PIC-NEXT:  calll   L_y$stub
+; DARWIN-32-PIC-NEXT:  calll   L_y$stub
+; DARWIN-32-PIC-NEXT:  calll   L_y$stub
+; DARWIN-32-PIC-NEXT:  calll   L_y$stub
 ; DARWIN-32-PIC-NEXT:  addl    $12, %esp
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _dcallee:
-; DARWIN-64-STATIC:    subq    $8, %rsp
-; DARWIN-64-STATIC-NEXT:       call    _y
-; DARWIN-64-STATIC-NEXT:       call    _y
-; DARWIN-64-STATIC-NEXT:       call    _y
-; DARWIN-64-STATIC-NEXT:       call    _y
-; DARWIN-64-STATIC-NEXT:       call    _y
-; DARWIN-64-STATIC-NEXT:       call    _y
-; DARWIN-64-STATIC-NEXT:       call    _y
-; DARWIN-64-STATIC-NEXT:       addq    $8, %rsp
+; DARWIN-64-STATIC:    pushq
+; DARWIN-64-STATIC-NEXT:       callq   _y
+; DARWIN-64-STATIC-NEXT:       callq   _y
+; DARWIN-64-STATIC-NEXT:       callq   _y
+; DARWIN-64-STATIC-NEXT:       callq   _y
+; DARWIN-64-STATIC-NEXT:       callq   _y
+; DARWIN-64-STATIC-NEXT:       callq   _y
+; DARWIN-64-STATIC-NEXT:       callq   _y
+; DARWIN-64-STATIC-NEXT:       popq
 ; DARWIN-64-STATIC-NEXT:       ret
 
 ; DARWIN-64-DYNAMIC: _dcallee:
-; DARWIN-64-DYNAMIC:   subq    $8, %rsp
-; DARWIN-64-DYNAMIC-NEXT:      call    _y
-; DARWIN-64-DYNAMIC-NEXT:      call    _y
-; DARWIN-64-DYNAMIC-NEXT:      call    _y
-; DARWIN-64-DYNAMIC-NEXT:      call    _y
-; DARWIN-64-DYNAMIC-NEXT:      call    _y
-; DARWIN-64-DYNAMIC-NEXT:      call    _y
-; DARWIN-64-DYNAMIC-NEXT:      call    _y
-; DARWIN-64-DYNAMIC-NEXT:      addq    $8, %rsp
+; DARWIN-64-DYNAMIC:   pushq
+; DARWIN-64-DYNAMIC-NEXT:      callq   _y
+; DARWIN-64-DYNAMIC-NEXT:      callq   _y
+; DARWIN-64-DYNAMIC-NEXT:      callq   _y
+; DARWIN-64-DYNAMIC-NEXT:      callq   _y
+; DARWIN-64-DYNAMIC-NEXT:      callq   _y
+; DARWIN-64-DYNAMIC-NEXT:      callq   _y
+; DARWIN-64-DYNAMIC-NEXT:      callq   _y
+; DARWIN-64-DYNAMIC-NEXT:      popq
 ; DARWIN-64-DYNAMIC-NEXT:      ret
 
 ; DARWIN-64-PIC: _dcallee:
-; DARWIN-64-PIC:       subq    $8, %rsp
-; DARWIN-64-PIC-NEXT:  call    _y
-; DARWIN-64-PIC-NEXT:  call    _y
-; DARWIN-64-PIC-NEXT:  call    _y
-; DARWIN-64-PIC-NEXT:  call    _y
-; DARWIN-64-PIC-NEXT:  call    _y
-; DARWIN-64-PIC-NEXT:  call    _y
-; DARWIN-64-PIC-NEXT:  call    _y
-; DARWIN-64-PIC-NEXT:  addq    $8, %rsp
+; DARWIN-64-PIC:       pushq
+; DARWIN-64-PIC-NEXT:  callq   _y
+; DARWIN-64-PIC-NEXT:  callq   _y
+; DARWIN-64-PIC-NEXT:  callq   _y
+; DARWIN-64-PIC-NEXT:  callq   _y
+; DARWIN-64-PIC-NEXT:  callq   _y
+; DARWIN-64-PIC-NEXT:  callq   _y
+; DARWIN-64-PIC-NEXT:  callq   _y
+; DARWIN-64-PIC-NEXT:  popq
 ; DARWIN-64-PIC-NEXT:  ret
 }
 
@@ -8619,19 +8621,19 @@ declare void @y()
 define void ()* @address() nounwind {
 entry:
        ret void ()* @callee
-; LINUX-64-STATIC: address:
+; LINUX-64-STATIC-LABEL: address:
 ; LINUX-64-STATIC: movl    $callee, %eax
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: address:
+; LINUX-32-STATIC-LABEL: address:
 ; LINUX-32-STATIC:     movl    $callee, %eax
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: address:
+; LINUX-32-PIC-LABEL: address:
 ; LINUX-32-PIC:        movl    $callee, %eax
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: address:
+; LINUX-64-PIC-LABEL: address:
 ; LINUX-64-PIC:        movq    callee@GOTPCREL(%rip), %rax
 ; LINUX-64-PIC-NEXT:   ret
 
@@ -8644,10 +8646,10 @@ entry:
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _address:
-; DARWIN-32-PIC:       call    "L134$pb"
-; DARWIN-32-PIC-NEXT: "L134$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  movl    L_callee$non_lazy_ptr-"L134$pb"(%eax), %eax
+; DARWIN-32-PIC:       calll   L133$pb
+; DARWIN-32-PIC-NEXT: L133$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    L_callee$non_lazy_ptr-L133$pb([[EAX]]), %eax
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _address:
@@ -8668,19 +8670,19 @@ declare void @callee()
 define void ()* @laddress() nounwind {
 entry:
        ret void ()* @lcallee
-; LINUX-64-STATIC: laddress:
+; LINUX-64-STATIC-LABEL: laddress:
 ; LINUX-64-STATIC: movl    $lcallee, %eax
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: laddress:
+; LINUX-32-STATIC-LABEL: laddress:
 ; LINUX-32-STATIC:     movl    $lcallee, %eax
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: laddress:
+; LINUX-32-PIC-LABEL: laddress:
 ; LINUX-32-PIC:        movl    $lcallee, %eax
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: laddress:
+; LINUX-64-PIC-LABEL: laddress:
 ; LINUX-64-PIC:        movq    lcallee@GOTPCREL(%rip), %rax
 ; LINUX-64-PIC-NEXT:   ret
 
@@ -8693,10 +8695,10 @@ entry:
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _laddress:
-; DARWIN-32-PIC:       call    "L135$pb"
-; DARWIN-32-PIC-NEXT: "L135$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  leal    _lcallee-"L135$pb"(%eax), %eax
+; DARWIN-32-PIC:       calll   L134$pb
+; DARWIN-32-PIC-NEXT: L134$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  leal    _lcallee-L134$pb([[EAX]]), %eax
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _laddress:
@@ -8715,19 +8717,19 @@ entry:
 define void ()* @daddress() nounwind {
 entry:
        ret void ()* @dcallee
-; LINUX-64-STATIC: daddress:
+; LINUX-64-STATIC-LABEL: daddress:
 ; LINUX-64-STATIC: movl    $dcallee, %eax
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: daddress:
+; LINUX-32-STATIC-LABEL: daddress:
 ; LINUX-32-STATIC:     movl    $dcallee, %eax
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: daddress:
+; LINUX-32-PIC-LABEL: daddress:
 ; LINUX-32-PIC:        movl    $dcallee, %eax
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: daddress:
+; LINUX-64-PIC-LABEL: daddress:
 ; LINUX-64-PIC:        leaq    dcallee(%rip), %rax
 ; LINUX-64-PIC-NEXT:   ret
 
@@ -8740,10 +8742,10 @@ entry:
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _daddress:
-; DARWIN-32-PIC:       call    "L136$pb"
-; DARWIN-32-PIC-NEXT: "L136$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  leal    _dcallee-"L136$pb"(%eax), %eax
+; DARWIN-32-PIC:       calll   L135$pb
+; DARWIN-32-PIC-NEXT: L135$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  leal    _dcallee-L135$pb([[EAX]]), %eax
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _daddress:
@@ -8761,453 +8763,460 @@ entry:
 
 define void @caller() nounwind {
 entry:
-       tail call void @callee() nounwind
-       tail call void @callee() nounwind
+       call void @callee() nounwind
+       call void @callee() nounwind
        ret void
-; LINUX-64-STATIC: caller:
-; LINUX-64-STATIC: call    callee
-; LINUX-64-STATIC: call    callee
+; LINUX-64-STATIC-LABEL: caller:
+; LINUX-64-STATIC: callq   callee
+; LINUX-64-STATIC: callq   callee
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: caller:
-; LINUX-32-STATIC:     subl    $4, %esp
-; LINUX-32-STATIC-NEXT:        call    callee
-; LINUX-32-STATIC-NEXT:        call    callee
-; LINUX-32-STATIC-NEXT:        addl    $4, %esp
+; LINUX-32-STATIC-LABEL: caller:
+; LINUX-32-STATIC:     subl
+; LINUX-32-STATIC-NEXT:        calll   callee
+; LINUX-32-STATIC-NEXT:        calll   callee
+; LINUX-32-STATIC-NEXT:        addl
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: caller:
-; LINUX-32-PIC:        subl    $4, %esp
-; LINUX-32-PIC-NEXT:   call    callee
-; LINUX-32-PIC-NEXT:   call    callee
-; LINUX-32-PIC-NEXT:   addl    $4, %esp
+; LINUX-32-PIC-LABEL: caller:
+; LINUX-32-PIC:        subl
+; LINUX-32-PIC-NEXT:   calll   callee
+; LINUX-32-PIC-NEXT:   calll   callee
+; LINUX-32-PIC-NEXT:   addl
+
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: caller:
-; LINUX-64-PIC:        subq    $8, %rsp
-; LINUX-64-PIC-NEXT:   call    callee@PLT
-; LINUX-64-PIC-NEXT:   call    callee@PLT
-; LINUX-64-PIC-NEXT:   addq    $8, %rsp
+; LINUX-64-PIC-LABEL: caller:
+; LINUX-64-PIC:        pushq
+; LINUX-64-PIC-NEXT:   callq   callee@PLT
+; LINUX-64-PIC-NEXT:   callq   callee@PLT
+; LINUX-64-PIC-NEXT:   popq
 ; LINUX-64-PIC-NEXT:   ret
 
 ; DARWIN-32-STATIC: _caller:
 ; DARWIN-32-STATIC:    subl    $12, %esp
-; DARWIN-32-STATIC-NEXT:       call    _callee
-; DARWIN-32-STATIC-NEXT:       call    _callee
+; DARWIN-32-STATIC-NEXT:       calll   _callee
+; DARWIN-32-STATIC-NEXT:       calll   _callee
 ; DARWIN-32-STATIC-NEXT:       addl    $12, %esp
 ; DARWIN-32-STATIC-NEXT:       ret
 
 ; DARWIN-32-DYNAMIC: _caller:
 ; DARWIN-32-DYNAMIC:   subl    $12, %esp
-; DARWIN-32-DYNAMIC-NEXT:      call    L_callee$stub
-; DARWIN-32-DYNAMIC-NEXT:      call    L_callee$stub
+; DARWIN-32-DYNAMIC-NEXT:      calll   L_callee$stub
+; DARWIN-32-DYNAMIC-NEXT:      calll   L_callee$stub
 ; DARWIN-32-DYNAMIC-NEXT:      addl    $12, %esp
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _caller:
 ; DARWIN-32-PIC:       subl    $12, %esp
-; DARWIN-32-PIC-NEXT:  call    L_callee$stub
-; DARWIN-32-PIC-NEXT:  call    L_callee$stub
+; DARWIN-32-PIC-NEXT:  calll   L_callee$stub
+; DARWIN-32-PIC-NEXT:  calll   L_callee$stub
 ; DARWIN-32-PIC-NEXT:  addl    $12, %esp
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _caller:
-; DARWIN-64-STATIC:    subq    $8, %rsp
-; DARWIN-64-STATIC-NEXT:       call    _callee
-; DARWIN-64-STATIC-NEXT:       call    _callee
-; DARWIN-64-STATIC-NEXT:       addq    $8, %rsp
+; DARWIN-64-STATIC:    pushq
+; DARWIN-64-STATIC-NEXT:       callq   _callee
+; DARWIN-64-STATIC-NEXT:       callq   _callee
+; DARWIN-64-STATIC-NEXT:       popq
 ; DARWIN-64-STATIC-NEXT:       ret
 
 ; DARWIN-64-DYNAMIC: _caller:
-; DARWIN-64-DYNAMIC:   subq    $8, %rsp
-; DARWIN-64-DYNAMIC-NEXT:      call    _callee
-; DARWIN-64-DYNAMIC-NEXT:      call    _callee
-; DARWIN-64-DYNAMIC-NEXT:      addq    $8, %rsp
+; DARWIN-64-DYNAMIC:   pushq
+; DARWIN-64-DYNAMIC-NEXT:      callq   _callee
+; DARWIN-64-DYNAMIC-NEXT:      callq   _callee
+; DARWIN-64-DYNAMIC-NEXT:      popq
 ; DARWIN-64-DYNAMIC-NEXT:      ret
 
 ; DARWIN-64-PIC: _caller:
-; DARWIN-64-PIC:       subq    $8, %rsp
-; DARWIN-64-PIC-NEXT:  call    _callee
-; DARWIN-64-PIC-NEXT:  call    _callee
-; DARWIN-64-PIC-NEXT:  addq    $8, %rsp
+; DARWIN-64-PIC:       pushq
+; DARWIN-64-PIC-NEXT:  callq   _callee
+; DARWIN-64-PIC-NEXT:  callq   _callee
+; DARWIN-64-PIC-NEXT:  popq
 ; DARWIN-64-PIC-NEXT:  ret
 }
 
 define void @dcaller() nounwind {
 entry:
-       tail call void @dcallee() nounwind
-       tail call void @dcallee() nounwind
+       call void @dcallee() nounwind
+       call void @dcallee() nounwind
        ret void
-; LINUX-64-STATIC: dcaller:
-; LINUX-64-STATIC: call    dcallee
-; LINUX-64-STATIC: call    dcallee
+; LINUX-64-STATIC-LABEL: dcaller:
+; LINUX-64-STATIC: callq   dcallee
+; LINUX-64-STATIC: callq   dcallee
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: dcaller:
-; LINUX-32-STATIC:     subl    $4, %esp
-; LINUX-32-STATIC-NEXT:        call    dcallee
-; LINUX-32-STATIC-NEXT:        call    dcallee
-; LINUX-32-STATIC-NEXT:        addl    $4, %esp
+; LINUX-32-STATIC-LABEL: dcaller:
+; LINUX-32-STATIC:     subl
+; LINUX-32-STATIC-NEXT:        calll   dcallee
+; LINUX-32-STATIC-NEXT:        calll   dcallee
+; LINUX-32-STATIC-NEXT:        addl
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: dcaller:
-; LINUX-32-PIC:        subl    $4, %esp
-; LINUX-32-PIC-NEXT:   call    dcallee
-; LINUX-32-PIC-NEXT:   call    dcallee
-; LINUX-32-PIC-NEXT:   addl    $4, %esp
+; LINUX-32-PIC-LABEL: dcaller:
+; LINUX-32-PIC:        subl
+; LINUX-32-PIC-NEXT:   calll   dcallee
+; LINUX-32-PIC-NEXT:   calll   dcallee
+; LINUX-32-PIC-NEXT:   addl
+
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: dcaller:
-; LINUX-64-PIC:        subq    $8, %rsp
-; LINUX-64-PIC-NEXT:   call    dcallee
-; LINUX-64-PIC-NEXT:   call    dcallee
-; LINUX-64-PIC-NEXT:   addq    $8, %rsp
+; LINUX-64-PIC-LABEL: dcaller:
+; LINUX-64-PIC:        pushq
+; LINUX-64-PIC-NEXT:   callq   dcallee
+; LINUX-64-PIC-NEXT:   callq   dcallee
+; LINUX-64-PIC-NEXT:   popq
 ; LINUX-64-PIC-NEXT:   ret
 
 ; DARWIN-32-STATIC: _dcaller:
 ; DARWIN-32-STATIC:    subl    $12, %esp
-; DARWIN-32-STATIC-NEXT:       call    _dcallee
-; DARWIN-32-STATIC-NEXT:       call    _dcallee
+; DARWIN-32-STATIC-NEXT:       calll   _dcallee
+; DARWIN-32-STATIC-NEXT:       calll   _dcallee
 ; DARWIN-32-STATIC-NEXT:       addl    $12, %esp
 ; DARWIN-32-STATIC-NEXT:       ret
 
 ; DARWIN-32-DYNAMIC: _dcaller:
 ; DARWIN-32-DYNAMIC:   subl    $12, %esp
-; DARWIN-32-DYNAMIC-NEXT:      call    _dcallee
-; DARWIN-32-DYNAMIC-NEXT:      call    _dcallee
+; DARWIN-32-DYNAMIC-NEXT:      calll   _dcallee
+; DARWIN-32-DYNAMIC-NEXT:      calll   _dcallee
 ; DARWIN-32-DYNAMIC-NEXT:      addl    $12, %esp
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _dcaller:
 ; DARWIN-32-PIC:       subl    $12, %esp
-; DARWIN-32-PIC-NEXT:  call    _dcallee
-; DARWIN-32-PIC-NEXT:  call    _dcallee
+; DARWIN-32-PIC-NEXT:  calll   _dcallee
+; DARWIN-32-PIC-NEXT:  calll   _dcallee
 ; DARWIN-32-PIC-NEXT:  addl    $12, %esp
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _dcaller:
-; DARWIN-64-STATIC:    subq    $8, %rsp
-; DARWIN-64-STATIC-NEXT:       call    _dcallee
-; DARWIN-64-STATIC-NEXT:       call    _dcallee
-; DARWIN-64-STATIC-NEXT:       addq    $8, %rsp
+; DARWIN-64-STATIC:    pushq
+; DARWIN-64-STATIC-NEXT:       callq   _dcallee
+; DARWIN-64-STATIC-NEXT:       callq   _dcallee
+; DARWIN-64-STATIC-NEXT:       popq
 ; DARWIN-64-STATIC-NEXT:       ret
 
 ; DARWIN-64-DYNAMIC: _dcaller:
-; DARWIN-64-DYNAMIC:   subq    $8, %rsp
-; DARWIN-64-DYNAMIC-NEXT:      call    _dcallee
-; DARWIN-64-DYNAMIC-NEXT:      call    _dcallee
-; DARWIN-64-DYNAMIC-NEXT:      addq    $8, %rsp
+; DARWIN-64-DYNAMIC:   pushq
+; DARWIN-64-DYNAMIC-NEXT:      callq   _dcallee
+; DARWIN-64-DYNAMIC-NEXT:      callq   _dcallee
+; DARWIN-64-DYNAMIC-NEXT:      popq
 ; DARWIN-64-DYNAMIC-NEXT:      ret
 
 ; DARWIN-64-PIC: _dcaller:
-; DARWIN-64-PIC:       subq    $8, %rsp
-; DARWIN-64-PIC-NEXT:  call    _dcallee
-; DARWIN-64-PIC-NEXT:  call    _dcallee
-; DARWIN-64-PIC-NEXT:  addq    $8, %rsp
+; DARWIN-64-PIC:       pushq
+; DARWIN-64-PIC-NEXT:  callq   _dcallee
+; DARWIN-64-PIC-NEXT:  callq   _dcallee
+; DARWIN-64-PIC-NEXT:  popq
 ; DARWIN-64-PIC-NEXT:  ret
 }
 
 define void @lcaller() nounwind {
 entry:
-       tail call void @lcallee() nounwind
-       tail call void @lcallee() nounwind
+       call void @lcallee() nounwind
+       call void @lcallee() nounwind
        ret void
-; LINUX-64-STATIC: lcaller:
-; LINUX-64-STATIC: call    lcallee
-; LINUX-64-STATIC: call    lcallee
+; LINUX-64-STATIC-LABEL: lcaller:
+; LINUX-64-STATIC: callq   lcallee
+; LINUX-64-STATIC: callq   lcallee
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: lcaller:
-; LINUX-32-STATIC:     subl    $4, %esp
-; LINUX-32-STATIC-NEXT:        call    lcallee
-; LINUX-32-STATIC-NEXT:        call    lcallee
-; LINUX-32-STATIC-NEXT:        addl    $4, %esp
+; LINUX-32-STATIC-LABEL: lcaller:
+; LINUX-32-STATIC:     subl
+; LINUX-32-STATIC-NEXT:        calll   lcallee
+; LINUX-32-STATIC-NEXT:        calll   lcallee
+; LINUX-32-STATIC-NEXT:        addl
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: lcaller:
-; LINUX-32-PIC:        subl    $4, %esp
-; LINUX-32-PIC-NEXT:   call    lcallee
-; LINUX-32-PIC-NEXT:   call    lcallee
-; LINUX-32-PIC-NEXT:   addl    $4, %esp
+; LINUX-32-PIC-LABEL: lcaller:
+; LINUX-32-PIC:        subl
+; LINUX-32-PIC-NEXT:   calll   lcallee
+; LINUX-32-PIC-NEXT:   calll   lcallee
+; LINUX-32-PIC-NEXT:   addl
+
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: lcaller:
-; LINUX-64-PIC:        subq    $8, %rsp
-; LINUX-64-PIC-NEXT:   call    lcallee@PLT
-; LINUX-64-PIC-NEXT:   call    lcallee@PLT
-; LINUX-64-PIC-NEXT:   addq    $8, %rsp
+; LINUX-64-PIC-LABEL: lcaller:
+; LINUX-64-PIC:        pushq
+; LINUX-64-PIC-NEXT:   callq   lcallee@PLT
+; LINUX-64-PIC-NEXT:   callq   lcallee@PLT
+; LINUX-64-PIC-NEXT:   popq
 ; LINUX-64-PIC-NEXT:   ret
 
 ; DARWIN-32-STATIC: _lcaller:
 ; DARWIN-32-STATIC:    subl    $12, %esp
-; DARWIN-32-STATIC-NEXT:       call    _lcallee
-; DARWIN-32-STATIC-NEXT:       call    _lcallee
+; DARWIN-32-STATIC-NEXT:       calll   _lcallee
+; DARWIN-32-STATIC-NEXT:       calll   _lcallee
 ; DARWIN-32-STATIC-NEXT:       addl    $12, %esp
 ; DARWIN-32-STATIC-NEXT:       ret
 
 ; DARWIN-32-DYNAMIC: _lcaller:
 ; DARWIN-32-DYNAMIC:   subl    $12, %esp
-; DARWIN-32-DYNAMIC-NEXT:      call    _lcallee
-; DARWIN-32-DYNAMIC-NEXT:      call    _lcallee
+; DARWIN-32-DYNAMIC-NEXT:      calll   _lcallee
+; DARWIN-32-DYNAMIC-NEXT:      calll   _lcallee
 ; DARWIN-32-DYNAMIC-NEXT:      addl    $12, %esp
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _lcaller:
 ; DARWIN-32-PIC:       subl    $12, %esp
-; DARWIN-32-PIC-NEXT:  call    _lcallee
-; DARWIN-32-PIC-NEXT:  call    _lcallee
+; DARWIN-32-PIC-NEXT:  calll   _lcallee
+; DARWIN-32-PIC-NEXT:  calll   _lcallee
 ; DARWIN-32-PIC-NEXT:  addl    $12, %esp
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _lcaller:
-; DARWIN-64-STATIC:    subq    $8, %rsp
-; DARWIN-64-STATIC-NEXT:       call    _lcallee
-; DARWIN-64-STATIC-NEXT:       call    _lcallee
-; DARWIN-64-STATIC-NEXT:       addq    $8, %rsp
+; DARWIN-64-STATIC:    pushq
+; DARWIN-64-STATIC-NEXT:       callq   _lcallee
+; DARWIN-64-STATIC-NEXT:       callq   _lcallee
+; DARWIN-64-STATIC-NEXT:       popq
 ; DARWIN-64-STATIC-NEXT:       ret
 
 ; DARWIN-64-DYNAMIC: _lcaller:
-; DARWIN-64-DYNAMIC:   subq    $8, %rsp
-; DARWIN-64-DYNAMIC-NEXT:      call    _lcallee
-; DARWIN-64-DYNAMIC-NEXT:      call    _lcallee
-; DARWIN-64-DYNAMIC-NEXT:      addq    $8, %rsp
+; DARWIN-64-DYNAMIC:   pushq
+; DARWIN-64-DYNAMIC-NEXT:      callq   _lcallee
+; DARWIN-64-DYNAMIC-NEXT:      callq   _lcallee
+; DARWIN-64-DYNAMIC-NEXT:      popq
 ; DARWIN-64-DYNAMIC-NEXT:      ret
 
 ; DARWIN-64-PIC: _lcaller:
-; DARWIN-64-PIC:       subq    $8, %rsp
-; DARWIN-64-PIC-NEXT:  call    _lcallee
-; DARWIN-64-PIC-NEXT:  call    _lcallee
-; DARWIN-64-PIC-NEXT:  addq    $8, %rsp
+; DARWIN-64-PIC:       pushq
+; DARWIN-64-PIC-NEXT:  callq   _lcallee
+; DARWIN-64-PIC-NEXT:  callq   _lcallee
+; DARWIN-64-PIC-NEXT:  popq
 ; DARWIN-64-PIC-NEXT:  ret
 }
 
 define void @tailcaller() nounwind {
 entry:
-       tail call void @callee() nounwind
+       call void @callee() nounwind
        ret void
-; LINUX-64-STATIC: tailcaller:
-; LINUX-64-STATIC: call    callee
+; LINUX-64-STATIC-LABEL: tailcaller:
+; LINUX-64-STATIC: callq   callee
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: tailcaller:
-; LINUX-32-STATIC:     subl    $4, %esp
-; LINUX-32-STATIC-NEXT:        call    callee
-; LINUX-32-STATIC-NEXT:        addl    $4, %esp
+; LINUX-32-STATIC-LABEL: tailcaller:
+; LINUX-32-STATIC:     subl
+; LINUX-32-STATIC-NEXT:        calll   callee
+; LINUX-32-STATIC-NEXT:        addl
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: tailcaller:
-; LINUX-32-PIC:        subl    $4, %esp
-; LINUX-32-PIC-NEXT:   call    callee
-; LINUX-32-PIC-NEXT:   addl    $4, %esp
+; LINUX-32-PIC-LABEL: tailcaller:
+; LINUX-32-PIC:        subl
+; LINUX-32-PIC-NEXT:   calll   callee
+; LINUX-32-PIC-NEXT:   addl
+
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: tailcaller:
-; LINUX-64-PIC:        subq    $8, %rsp
-; LINUX-64-PIC-NEXT:   call    callee@PLT
-; LINUX-64-PIC-NEXT:   addq    $8, %rsp
+; LINUX-64-PIC-LABEL: tailcaller:
+; LINUX-64-PIC:        pushq
+; LINUX-64-PIC-NEXT:   callq   callee@PLT
+; LINUX-64-PIC-NEXT:   popq
 ; LINUX-64-PIC-NEXT:   ret
 
 ; DARWIN-32-STATIC: _tailcaller:
 ; DARWIN-32-STATIC:    subl    $12, %esp
-; DARWIN-32-STATIC-NEXT:       call    _callee
+; DARWIN-32-STATIC-NEXT:       calll   _callee
 ; DARWIN-32-STATIC-NEXT:       addl    $12, %esp
 ; DARWIN-32-STATIC-NEXT:       ret
 
 ; DARWIN-32-DYNAMIC: _tailcaller:
 ; DARWIN-32-DYNAMIC:   subl    $12, %esp
-; DARWIN-32-DYNAMIC-NEXT:      call    L_callee$stub
+; DARWIN-32-DYNAMIC-NEXT:      calll   L_callee$stub
 ; DARWIN-32-DYNAMIC-NEXT:      addl    $12, %esp
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _tailcaller:
 ; DARWIN-32-PIC:       subl    $12, %esp
-; DARWIN-32-PIC-NEXT:  call    L_callee$stub
+; DARWIN-32-PIC-NEXT:  calll   L_callee$stub
 ; DARWIN-32-PIC-NEXT:  addl    $12, %esp
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _tailcaller:
-; DARWIN-64-STATIC:    subq    $8, %rsp
-; DARWIN-64-STATIC-NEXT:       call    _callee
-; DARWIN-64-STATIC-NEXT:       addq    $8, %rsp
+; DARWIN-64-STATIC:    pushq
+; DARWIN-64-STATIC-NEXT:       callq   _callee
+; DARWIN-64-STATIC-NEXT:       popq
 ; DARWIN-64-STATIC-NEXT:       ret
 
 ; DARWIN-64-DYNAMIC: _tailcaller:
-; DARWIN-64-DYNAMIC:   subq    $8, %rsp
-; DARWIN-64-DYNAMIC-NEXT:      call    _callee
-; DARWIN-64-DYNAMIC-NEXT:      addq    $8, %rsp
+; DARWIN-64-DYNAMIC:   pushq
+; DARWIN-64-DYNAMIC-NEXT:      callq   _callee
+; DARWIN-64-DYNAMIC-NEXT:      popq
 ; DARWIN-64-DYNAMIC-NEXT:      ret
 
 ; DARWIN-64-PIC: _tailcaller:
-; DARWIN-64-PIC:       subq    $8, %rsp
-; DARWIN-64-PIC-NEXT:  call    _callee
-; DARWIN-64-PIC-NEXT:  addq    $8, %rsp
+; DARWIN-64-PIC:       pushq
+; DARWIN-64-PIC-NEXT:  callq   _callee
+; DARWIN-64-PIC-NEXT:  popq
 ; DARWIN-64-PIC-NEXT:  ret
 }
 
 define void @dtailcaller() nounwind {
 entry:
-       tail call void @dcallee() nounwind
+       call void @dcallee() nounwind
        ret void
-; LINUX-64-STATIC: dtailcaller:
-; LINUX-64-STATIC: call    dcallee
+; LINUX-64-STATIC-LABEL: dtailcaller:
+; LINUX-64-STATIC: callq   dcallee
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: dtailcaller:
-; LINUX-32-STATIC:     subl    $4, %esp
-; LINUX-32-STATIC-NEXT:        call    dcallee
-; LINUX-32-STATIC-NEXT:        addl    $4, %esp
+; LINUX-32-STATIC-LABEL: dtailcaller:
+; LINUX-32-STATIC:     subl
+; LINUX-32-STATIC-NEXT:        calll   dcallee
+; LINUX-32-STATIC-NEXT:        addl
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: dtailcaller:
-; LINUX-32-PIC:        subl    $4, %esp
-; LINUX-32-PIC-NEXT:   call    dcallee
-; LINUX-32-PIC-NEXT:   addl    $4, %esp
+; LINUX-32-PIC-LABEL: dtailcaller:
+; LINUX-32-PIC:        subl
+; LINUX-32-PIC-NEXT:   calll   dcallee
+; LINUX-32-PIC-NEXT:   addl
+
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: dtailcaller:
-; LINUX-64-PIC:        subq    $8, %rsp
-; LINUX-64-PIC-NEXT:   call    dcallee
-; LINUX-64-PIC-NEXT:   addq    $8, %rsp
+; LINUX-64-PIC-LABEL: dtailcaller:
+; LINUX-64-PIC:        pushq
+; LINUX-64-PIC-NEXT:   callq   dcallee
+; LINUX-64-PIC-NEXT:   popq
 ; LINUX-64-PIC-NEXT:   ret
 
 ; DARWIN-32-STATIC: _dtailcaller:
 ; DARWIN-32-STATIC:    subl    $12, %esp
-; DARWIN-32-STATIC-NEXT:       call    _dcallee
+; DARWIN-32-STATIC-NEXT:       calll   _dcallee
 ; DARWIN-32-STATIC-NEXT:       addl    $12, %esp
 ; DARWIN-32-STATIC-NEXT:       ret
 
 ; DARWIN-32-DYNAMIC: _dtailcaller:
 ; DARWIN-32-DYNAMIC:   subl    $12, %esp
-; DARWIN-32-DYNAMIC-NEXT:      call    _dcallee
+; DARWIN-32-DYNAMIC-NEXT:      calll   _dcallee
 ; DARWIN-32-DYNAMIC-NEXT:      addl    $12, %esp
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _dtailcaller:
 ; DARWIN-32-PIC:       subl    $12, %esp
-; DARWIN-32-PIC-NEXT:  call    _dcallee
+; DARWIN-32-PIC-NEXT:  calll   _dcallee
 ; DARWIN-32-PIC-NEXT:  addl    $12, %esp
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _dtailcaller:
-; DARWIN-64-STATIC:    subq    $8, %rsp
-; DARWIN-64-STATIC-NEXT:       call    _dcallee
-; DARWIN-64-STATIC-NEXT:       addq    $8, %rsp
+; DARWIN-64-STATIC:    pushq
+; DARWIN-64-STATIC-NEXT:       callq   _dcallee
+; DARWIN-64-STATIC-NEXT:       popq
 ; DARWIN-64-STATIC-NEXT:       ret
 
 ; DARWIN-64-DYNAMIC: _dtailcaller:
-; DARWIN-64-DYNAMIC:   subq    $8, %rsp
-; DARWIN-64-DYNAMIC-NEXT:      call    _dcallee
-; DARWIN-64-DYNAMIC-NEXT:      addq    $8, %rsp
+; DARWIN-64-DYNAMIC:   pushq
+; DARWIN-64-DYNAMIC-NEXT:      callq   _dcallee
+; DARWIN-64-DYNAMIC-NEXT:      popq
 ; DARWIN-64-DYNAMIC-NEXT:      ret
 
 ; DARWIN-64-PIC: _dtailcaller:
-; DARWIN-64-PIC:       subq    $8, %rsp
-; DARWIN-64-PIC-NEXT:  call    _dcallee
-; DARWIN-64-PIC-NEXT:  addq    $8, %rsp
+; DARWIN-64-PIC:       pushq
+; DARWIN-64-PIC-NEXT:  callq   _dcallee
+; DARWIN-64-PIC-NEXT:  popq
 ; DARWIN-64-PIC-NEXT:  ret
 }
 
 define void @ltailcaller() nounwind {
 entry:
-       tail call void @lcallee() nounwind
+       call void @lcallee() nounwind
        ret void
-; LINUX-64-STATIC: ltailcaller:
-; LINUX-64-STATIC: call    lcallee
+; LINUX-64-STATIC-LABEL: ltailcaller:
+; LINUX-64-STATIC: callq   lcallee
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: ltailcaller:
-; LINUX-32-STATIC:     subl    $4, %esp
-; LINUX-32-STATIC-NEXT:        call    lcallee
-; LINUX-32-STATIC-NEXT:        addl    $4, %esp
+; LINUX-32-STATIC-LABEL: ltailcaller:
+; LINUX-32-STATIC:     subl
+; LINUX-32-STATIC-NEXT:        calll   lcallee
+; LINUX-32-STATIC-NEXT:        addl
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: ltailcaller:
-; LINUX-32-PIC:        subl    $4, %esp
-; LINUX-32-PIC-NEXT:   call    lcallee
-; LINUX-32-PIC-NEXT:   addl    $4, %esp
+; LINUX-32-PIC-LABEL: ltailcaller:
+; LINUX-32-PIC:        subl
+; LINUX-32-PIC-NEXT:   calll   lcallee
+; LINUX-32-PIC-NEXT:   addl
+
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: ltailcaller:
-; LINUX-64-PIC:        subq    $8, %rsp
-; LINUX-64-PIC-NEXT:   call    lcallee@PLT
-; LINUX-64-PIC-NEXT:   addq    $8, %rsp
+; LINUX-64-PIC-LABEL: ltailcaller:
+; LINUX-64-PIC:        pushq
+; LINUX-64-PIC-NEXT:   callq   lcallee@PLT
+; LINUX-64-PIC-NEXT:   popq
 ; LINUX-64-PIC-NEXT:   ret
 
 ; DARWIN-32-STATIC: _ltailcaller:
 ; DARWIN-32-STATIC:    subl    $12, %esp
-; DARWIN-32-STATIC-NEXT:       call    _lcallee
+; DARWIN-32-STATIC-NEXT:       calll   _lcallee
 ; DARWIN-32-STATIC-NEXT:       addl    $12, %esp
 ; DARWIN-32-STATIC-NEXT:       ret
 
 ; DARWIN-32-DYNAMIC: _ltailcaller:
 ; DARWIN-32-DYNAMIC:   subl    $12, %esp
-; DARWIN-32-DYNAMIC-NEXT:      call    _lcallee
+; DARWIN-32-DYNAMIC-NEXT:      calll   _lcallee
 ; DARWIN-32-DYNAMIC-NEXT:      addl    $12, %esp
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _ltailcaller:
 ; DARWIN-32-PIC:       subl    $12, %esp
-; DARWIN-32-PIC-NEXT:  call    _lcallee
+; DARWIN-32-PIC-NEXT:  calll   _lcallee
 ; DARWIN-32-PIC-NEXT:  addl    $12, %esp
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _ltailcaller:
-; DARWIN-64-STATIC:    subq    $8, %rsp
-; DARWIN-64-STATIC-NEXT:       call    _lcallee
-; DARWIN-64-STATIC-NEXT:       addq    $8, %rsp
+; DARWIN-64-STATIC:    pushq
+; DARWIN-64-STATIC-NEXT:       callq   _lcallee
+; DARWIN-64-STATIC-NEXT:       popq
 ; DARWIN-64-STATIC-NEXT:       ret
 
 ; DARWIN-64-DYNAMIC: _ltailcaller:
-; DARWIN-64-DYNAMIC:   subq    $8, %rsp
-; DARWIN-64-DYNAMIC-NEXT:      call    _lcallee
-; DARWIN-64-DYNAMIC-NEXT:      addq    $8, %rsp
+; DARWIN-64-DYNAMIC:   pushq
+; DARWIN-64-DYNAMIC-NEXT:      callq   _lcallee
+; DARWIN-64-DYNAMIC-NEXT:      popq
 ; DARWIN-64-DYNAMIC-NEXT:      ret
 
 ; DARWIN-64-PIC: _ltailcaller:
-; DARWIN-64-PIC:       subq    $8, %rsp
-; DARWIN-64-PIC-NEXT:  call    _lcallee
-; DARWIN-64-PIC-NEXT:  addq    $8, %rsp
+; DARWIN-64-PIC:       pushq
+; DARWIN-64-PIC-NEXT:  callq   _lcallee
+; DARWIN-64-PIC-NEXT:  popq
 ; DARWIN-64-PIC-NEXT:  ret
 }
 
 define void @icaller() nounwind {
 entry:
-       %0 = load void ()** @ifunc, align 8
-       tail call void %0() nounwind
-       %1 = load void ()** @ifunc, align 8
-       tail call void %1() nounwind
+       %0 = load void ()*, void ()** @ifunc, align 8
+       call void %0() nounwind
+       %1 = load void ()*, void ()** @ifunc, align 8
+       call void %1() nounwind
        ret void
-; LINUX-64-STATIC: icaller:
-; LINUX-64-STATIC: call    *ifunc
-; LINUX-64-STATIC: call    *ifunc
+; LINUX-64-STATIC-LABEL: icaller:
+; LINUX-64-STATIC: callq   *ifunc
+; LINUX-64-STATIC: callq   *ifunc
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: icaller:
-; LINUX-32-STATIC:     subl    $4, %esp
-; LINUX-32-STATIC-NEXT:        call    *ifunc
-; LINUX-32-STATIC-NEXT:        call    *ifunc
-; LINUX-32-STATIC-NEXT:        addl    $4, %esp
+; LINUX-32-STATIC-LABEL: icaller:
+; LINUX-32-STATIC:     subl
+; LINUX-32-STATIC-NEXT:        calll   *ifunc
+; LINUX-32-STATIC-NEXT:        calll   *ifunc
+; LINUX-32-STATIC-NEXT:        addl
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: icaller:
-; LINUX-32-PIC:        subl    $4, %esp
-; LINUX-32-PIC-NEXT:   call    *ifunc
-; LINUX-32-PIC-NEXT:   call    *ifunc
-; LINUX-32-PIC-NEXT:   addl    $4, %esp
+; LINUX-32-PIC-LABEL: icaller:
+; LINUX-32-PIC:        subl
+; LINUX-32-PIC-NEXT:   calll   *ifunc
+; LINUX-32-PIC-NEXT:   calll   *ifunc
+; LINUX-32-PIC-NEXT:   addl
+
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: icaller:
-; LINUX-64-PIC:        pushq   %rbx
-; LINUX-64-PIC-NEXT:   movq    ifunc@GOTPCREL(%rip), %rbx
-; LINUX-64-PIC-NEXT:   call    *(%rbx)
-; LINUX-64-PIC-NEXT:   call    *(%rbx)
-; LINUX-64-PIC-NEXT:   popq    %rbx
+; LINUX-64-PIC-LABEL: icaller:
+; LINUX-64-PIC:        pushq   [[RBX:%r.x]]
+; LINUX-64-PIC-NEXT:   movq    ifunc@GOTPCREL(%rip), [[RBX:%r.x]]
+; LINUX-64-PIC-NEXT:   callq   *([[RBX]])
+; LINUX-64-PIC-NEXT:   callq   *([[RBX]])
+; LINUX-64-PIC-NEXT:   popq    [[RBX:%r.x]]
 ; LINUX-64-PIC-NEXT:   ret
 
 ; DARWIN-32-STATIC: _icaller:
 ; DARWIN-32-STATIC:    subl    $12, %esp
-; DARWIN-32-STATIC-NEXT:       call    *_ifunc
-; DARWIN-32-STATIC-NEXT:       call    *_ifunc
+; DARWIN-32-STATIC-NEXT:       calll   *_ifunc
+; DARWIN-32-STATIC-NEXT:       calll   *_ifunc
 ; DARWIN-32-STATIC-NEXT:       addl    $12, %esp
 ; DARWIN-32-STATIC-NEXT:       ret
 
@@ -9215,8 +9224,8 @@ entry:
 ; DARWIN-32-DYNAMIC:   pushl   %esi
 ; DARWIN-32-DYNAMIC-NEXT:      subl    $8, %esp
 ; DARWIN-32-DYNAMIC-NEXT:      movl    L_ifunc$non_lazy_ptr, %esi
-; DARWIN-32-DYNAMIC-NEXT:      call    *(%esi)
-; DARWIN-32-DYNAMIC-NEXT:      call    *(%esi)
+; DARWIN-32-DYNAMIC-NEXT:      calll   *(%esi)
+; DARWIN-32-DYNAMIC-NEXT:      calll   *(%esi)
 ; DARWIN-32-DYNAMIC-NEXT:      addl    $8, %esp
 ; DARWIN-32-DYNAMIC-NEXT:      popl    %esi
 ; DARWIN-32-DYNAMIC-NEXT:      ret
@@ -9224,242 +9233,245 @@ entry:
 ; DARWIN-32-PIC: _icaller:
 ; DARWIN-32-PIC:       pushl   %esi
 ; DARWIN-32-PIC-NEXT:  subl    $8, %esp
-; DARWIN-32-PIC-NEXT:  call    "L143$pb"
-; DARWIN-32-PIC-NEXT: "L143$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  movl    L_ifunc$non_lazy_ptr-"L143$pb"(%eax), %esi
-; DARWIN-32-PIC-NEXT:  call    *(%esi)
-; DARWIN-32-PIC-NEXT:  call    *(%esi)
+; DARWIN-32-PIC-NEXT:  calll   L142$pb
+; DARWIN-32-PIC-NEXT: L142$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    L_ifunc$non_lazy_ptr-L142$pb([[EAX]]), %esi
+; DARWIN-32-PIC-NEXT:  calll   *(%esi)
+; DARWIN-32-PIC-NEXT:  calll   *(%esi)
 ; DARWIN-32-PIC-NEXT:  addl    $8, %esp
 ; DARWIN-32-PIC-NEXT:  popl    %esi
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _icaller:
-; DARWIN-64-STATIC:    pushq   %rbx
-; DARWIN-64-STATIC-NEXT:       movq    _ifunc@GOTPCREL(%rip), %rbx
-; DARWIN-64-STATIC-NEXT:       call    *(%rbx)
-; DARWIN-64-STATIC-NEXT:       call    *(%rbx)
-; DARWIN-64-STATIC-NEXT:       popq    %rbx
+; DARWIN-64-STATIC:    pushq   [[RBX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movq    _ifunc@GOTPCREL(%rip), [[RBX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       callq   *([[RBX]])
+; DARWIN-64-STATIC-NEXT:       callq   *([[RBX]])
+; DARWIN-64-STATIC-NEXT:       popq    [[RBX:%r.x]]
 ; DARWIN-64-STATIC-NEXT:       ret
 
 ; DARWIN-64-DYNAMIC: _icaller:
-; DARWIN-64-DYNAMIC:   pushq   %rbx
-; DARWIN-64-DYNAMIC-NEXT:      movq    _ifunc@GOTPCREL(%rip), %rbx
-; DARWIN-64-DYNAMIC-NEXT:      call    *(%rbx)
-; DARWIN-64-DYNAMIC-NEXT:      call    *(%rbx)
-; DARWIN-64-DYNAMIC-NEXT:      popq    %rbx
+; DARWIN-64-DYNAMIC:   pushq   [[RBX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movq    _ifunc@GOTPCREL(%rip), [[RBX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      callq   *([[RBX]])
+; DARWIN-64-DYNAMIC-NEXT:      callq   *([[RBX]])
+; DARWIN-64-DYNAMIC-NEXT:      popq    [[RBX:%r.x]]
 ; DARWIN-64-DYNAMIC-NEXT:      ret
 
 ; DARWIN-64-PIC: _icaller:
-; DARWIN-64-PIC:       pushq   %rbx
-; DARWIN-64-PIC-NEXT:  movq    _ifunc@GOTPCREL(%rip), %rbx
-; DARWIN-64-PIC-NEXT:  call    *(%rbx)
-; DARWIN-64-PIC-NEXT:  call    *(%rbx)
-; DARWIN-64-PIC-NEXT:  popq    %rbx
+; DARWIN-64-PIC:       pushq   [[RBX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movq    _ifunc@GOTPCREL(%rip), [[RBX:%r.x]]
+; DARWIN-64-PIC-NEXT:  callq   *([[RBX]])
+; DARWIN-64-PIC-NEXT:  callq   *([[RBX]])
+; DARWIN-64-PIC-NEXT:  popq    [[RBX:%r.x]]
 ; DARWIN-64-PIC-NEXT:  ret
 }
 
 define void @dicaller() nounwind {
 entry:
-       %0 = load void ()** @difunc, align 8
-       tail call void %0() nounwind
-       %1 = load void ()** @difunc, align 8
-       tail call void %1() nounwind
+       %0 = load void ()*, void ()** @difunc, align 8
+       call void %0() nounwind
+       %1 = load void ()*, void ()** @difunc, align 8
+       call void %1() nounwind
        ret void
-; LINUX-64-STATIC: dicaller:
-; LINUX-64-STATIC: call    *difunc
-; LINUX-64-STATIC: call    *difunc
+; LINUX-64-STATIC-LABEL: dicaller:
+; LINUX-64-STATIC: callq   *difunc
+; LINUX-64-STATIC: callq   *difunc
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: dicaller:
-; LINUX-32-STATIC:     subl    $4, %esp
-; LINUX-32-STATIC-NEXT:        call    *difunc
-; LINUX-32-STATIC-NEXT:        call    *difunc
-; LINUX-32-STATIC-NEXT:        addl    $4, %esp
+; LINUX-32-STATIC-LABEL: dicaller:
+; LINUX-32-STATIC:     subl
+; LINUX-32-STATIC-NEXT:        calll   *difunc
+; LINUX-32-STATIC-NEXT:        calll   *difunc
+; LINUX-32-STATIC-NEXT:        addl
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: dicaller:
-; LINUX-32-PIC:        subl    $4, %esp
-; LINUX-32-PIC-NEXT:   call    *difunc
-; LINUX-32-PIC-NEXT:   call    *difunc
-; LINUX-32-PIC-NEXT:   addl    $4, %esp
+; LINUX-32-PIC-LABEL: dicaller:
+; LINUX-32-PIC:        subl
+; LINUX-32-PIC-NEXT:   calll   *difunc
+; LINUX-32-PIC-NEXT:   calll   *difunc
+; LINUX-32-PIC-NEXT:   addl
+
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: dicaller:
-; LINUX-64-PIC:        pushq   %rbx
-; LINUX-64-PIC-NEXT:   movq    difunc@GOTPCREL(%rip), %rbx
-; LINUX-64-PIC-NEXT:   call    *(%rbx)
-; LINUX-64-PIC-NEXT:   call    *(%rbx)
-; LINUX-64-PIC-NEXT:   popq    %rbx
+; LINUX-64-PIC-LABEL: dicaller:
+; LINUX-64-PIC:        pushq   [[RBX:%r.x]]
+; LINUX-64-PIC-NEXT:   movq    difunc@GOTPCREL(%rip), [[RBX:%r.x]]
+; LINUX-64-PIC-NEXT:   callq   *([[RBX]])
+; LINUX-64-PIC-NEXT:   callq   *([[RBX]])
+; LINUX-64-PIC-NEXT:   popq    [[RBX:%r.x]]
 ; LINUX-64-PIC-NEXT:   ret
 
 ; DARWIN-32-STATIC: _dicaller:
 ; DARWIN-32-STATIC:    subl    $12, %esp
-; DARWIN-32-STATIC-NEXT:       call    *_difunc
-; DARWIN-32-STATIC-NEXT:       call    *_difunc
+; DARWIN-32-STATIC-NEXT:       calll   *_difunc
+; DARWIN-32-STATIC-NEXT:       calll   *_difunc
 ; DARWIN-32-STATIC-NEXT:       addl    $12, %esp
 ; DARWIN-32-STATIC-NEXT:       ret
 
 ; DARWIN-32-DYNAMIC: _dicaller:
 ; DARWIN-32-DYNAMIC:   subl    $12, %esp
-; DARWIN-32-DYNAMIC-NEXT:      call    *_difunc
-; DARWIN-32-DYNAMIC-NEXT:      call    *_difunc
+; DARWIN-32-DYNAMIC-NEXT:      calll   *_difunc
+; DARWIN-32-DYNAMIC-NEXT:      calll   *_difunc
 ; DARWIN-32-DYNAMIC-NEXT:      addl    $12, %esp
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _dicaller:
 ; DARWIN-32-PIC:       pushl   %esi
 ; DARWIN-32-PIC-NEXT:  subl    $8, %esp
-; DARWIN-32-PIC-NEXT:  call    "L144$pb"
-; DARWIN-32-PIC-NEXT: "L144$pb":
+; DARWIN-32-PIC-NEXT:  calll   L143$pb
+; DARWIN-32-PIC-NEXT: L143$pb:
 ; DARWIN-32-PIC-NEXT:  popl    %esi
-; DARWIN-32-PIC-NEXT:  call    *_difunc-"L144$pb"(%esi)
-; DARWIN-32-PIC-NEXT:  call    *_difunc-"L144$pb"(%esi)
+; DARWIN-32-PIC-NEXT:  calll   *_difunc-L143$pb(%esi)
+; DARWIN-32-PIC-NEXT:  calll   *_difunc-L143$pb(%esi)
 ; DARWIN-32-PIC-NEXT:  addl    $8, %esp
 ; DARWIN-32-PIC-NEXT:  popl    %esi
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _dicaller:
-; DARWIN-64-STATIC:    subq    $8, %rsp
-; DARWIN-64-STATIC-NEXT:       call    *_difunc(%rip)
-; DARWIN-64-STATIC-NEXT:       call    *_difunc(%rip)
-; DARWIN-64-STATIC-NEXT:       addq    $8, %rsp
+; DARWIN-64-STATIC:    pushq
+; DARWIN-64-STATIC-NEXT:       callq   *_difunc(%rip)
+; DARWIN-64-STATIC-NEXT:       callq   *_difunc(%rip)
+; DARWIN-64-STATIC-NEXT:       popq
 ; DARWIN-64-STATIC-NEXT:       ret
 
 ; DARWIN-64-DYNAMIC: _dicaller:
-; DARWIN-64-DYNAMIC:   subq    $8, %rsp
-; DARWIN-64-DYNAMIC-NEXT:      call    *_difunc(%rip)
-; DARWIN-64-DYNAMIC-NEXT:      call    *_difunc(%rip)
-; DARWIN-64-DYNAMIC-NEXT:      addq    $8, %rsp
+; DARWIN-64-DYNAMIC:   pushq
+; DARWIN-64-DYNAMIC-NEXT:      callq   *_difunc(%rip)
+; DARWIN-64-DYNAMIC-NEXT:      callq   *_difunc(%rip)
+; DARWIN-64-DYNAMIC-NEXT:      popq
 ; DARWIN-64-DYNAMIC-NEXT:      ret
 
 ; DARWIN-64-PIC: _dicaller:
-; DARWIN-64-PIC:       subq    $8, %rsp
-; DARWIN-64-PIC-NEXT:  call    *_difunc(%rip)
-; DARWIN-64-PIC-NEXT:  call    *_difunc(%rip)
-; DARWIN-64-PIC-NEXT:  addq    $8, %rsp
+; DARWIN-64-PIC:       pushq
+; DARWIN-64-PIC-NEXT:  callq   *_difunc(%rip)
+; DARWIN-64-PIC-NEXT:  callq   *_difunc(%rip)
+; DARWIN-64-PIC-NEXT:  popq
 ; DARWIN-64-PIC-NEXT:  ret
 }
 
 define void @licaller() nounwind {
 entry:
-       %0 = load void ()** @lifunc, align 8
-       tail call void %0() nounwind
-       %1 = load void ()** @lifunc, align 8
-       tail call void %1() nounwind
+       %0 = load void ()*, void ()** @lifunc, align 8
+       call void %0() nounwind
+       %1 = load void ()*, void ()** @lifunc, align 8
+       call void %1() nounwind
        ret void
-; LINUX-64-STATIC: licaller:
-; LINUX-64-STATIC: call    *lifunc
-; LINUX-64-STATIC: call    *lifunc
+; LINUX-64-STATIC-LABEL: licaller:
+; LINUX-64-STATIC: callq   *lifunc
+; LINUX-64-STATIC: callq   *lifunc
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: licaller:
-; LINUX-32-STATIC:     subl    $4, %esp
-; LINUX-32-STATIC-NEXT:        call    *lifunc
-; LINUX-32-STATIC-NEXT:        call    *lifunc
-; LINUX-32-STATIC-NEXT:        addl    $4, %esp
+; LINUX-32-STATIC-LABEL: licaller:
+; LINUX-32-STATIC:     subl
+; LINUX-32-STATIC-NEXT:        calll   *lifunc
+; LINUX-32-STATIC-NEXT:        calll   *lifunc
+; LINUX-32-STATIC-NEXT:        addl
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: licaller:
-; LINUX-32-PIC:        subl    $4, %esp
-; LINUX-32-PIC-NEXT:   call    *lifunc
-; LINUX-32-PIC-NEXT:   call    *lifunc
-; LINUX-32-PIC-NEXT:   addl    $4, %esp
+; LINUX-32-PIC-LABEL: licaller:
+; LINUX-32-PIC:        subl
+; LINUX-32-PIC-NEXT:   calll   *lifunc
+; LINUX-32-PIC-NEXT:   calll   *lifunc
+; LINUX-32-PIC-NEXT:   addl
+
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: licaller:
-; LINUX-64-PIC:        subq    $8, %rsp
-; LINUX-64-PIC-NEXT:   call    *lifunc(%rip)
-; LINUX-64-PIC-NEXT:   call    *lifunc(%rip)
-; LINUX-64-PIC-NEXT:   addq    $8, %rsp
+; LINUX-64-PIC-LABEL: licaller:
+; LINUX-64-PIC:        pushq
+; LINUX-64-PIC-NEXT:   callq   *lifunc(%rip)
+; LINUX-64-PIC-NEXT:   callq   *lifunc(%rip)
+; LINUX-64-PIC-NEXT:   popq
 ; LINUX-64-PIC-NEXT:   ret
 
 ; DARWIN-32-STATIC: _licaller:
 ; DARWIN-32-STATIC:    subl    $12, %esp
-; DARWIN-32-STATIC-NEXT:       call    *_lifunc
-; DARWIN-32-STATIC-NEXT:       call    *_lifunc
+; DARWIN-32-STATIC-NEXT:       calll   *_lifunc
+; DARWIN-32-STATIC-NEXT:       calll   *_lifunc
 ; DARWIN-32-STATIC-NEXT:       addl    $12, %esp
 ; DARWIN-32-STATIC-NEXT:       ret
 
 ; DARWIN-32-DYNAMIC: _licaller:
 ; DARWIN-32-DYNAMIC:   subl    $12, %esp
-; DARWIN-32-DYNAMIC-NEXT:      call    *_lifunc
-; DARWIN-32-DYNAMIC-NEXT:      call    *_lifunc
+; DARWIN-32-DYNAMIC-NEXT:      calll   *_lifunc
+; DARWIN-32-DYNAMIC-NEXT:      calll   *_lifunc
 ; DARWIN-32-DYNAMIC-NEXT:      addl    $12, %esp
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _licaller:
 ; DARWIN-32-PIC:       pushl   %esi
 ; DARWIN-32-PIC-NEXT:  subl    $8, %esp
-; DARWIN-32-PIC-NEXT:  call    "L145$pb"
-; DARWIN-32-PIC-NEXT: "L145$pb":
+; DARWIN-32-PIC-NEXT:  calll   L144$pb
+; DARWIN-32-PIC-NEXT: L144$pb:
 ; DARWIN-32-PIC-NEXT:  popl    %esi
-; DARWIN-32-PIC-NEXT:  call    *_lifunc-"L145$pb"(%esi)
-; DARWIN-32-PIC-NEXT:  call    *_lifunc-"L145$pb"(%esi)
+; DARWIN-32-PIC-NEXT:  calll   *_lifunc-L144$pb(%esi)
+; DARWIN-32-PIC-NEXT:  calll   *_lifunc-L144$pb(%esi)
 ; DARWIN-32-PIC-NEXT:  addl    $8, %esp
 ; DARWIN-32-PIC-NEXT:  popl    %esi
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _licaller:
-; DARWIN-64-STATIC:    subq    $8, %rsp
-; DARWIN-64-STATIC-NEXT:       call    *_lifunc(%rip)
-; DARWIN-64-STATIC-NEXT:       call    *_lifunc(%rip)
-; DARWIN-64-STATIC-NEXT:       addq    $8, %rsp
+; DARWIN-64-STATIC:    pushq
+; DARWIN-64-STATIC-NEXT:       callq   *_lifunc(%rip)
+; DARWIN-64-STATIC-NEXT:       callq   *_lifunc(%rip)
+; DARWIN-64-STATIC-NEXT:       popq
 ; DARWIN-64-STATIC-NEXT:       ret
 
 ; DARWIN-64-DYNAMIC: _licaller:
-; DARWIN-64-DYNAMIC:   subq    $8, %rsp
-; DARWIN-64-DYNAMIC-NEXT:      call    *_lifunc(%rip)
-; DARWIN-64-DYNAMIC-NEXT:      call    *_lifunc(%rip)
-; DARWIN-64-DYNAMIC-NEXT:      addq    $8, %rsp
+; DARWIN-64-DYNAMIC:   pushq
+; DARWIN-64-DYNAMIC-NEXT:      callq   *_lifunc(%rip)
+; DARWIN-64-DYNAMIC-NEXT:      callq   *_lifunc(%rip)
+; DARWIN-64-DYNAMIC-NEXT:      popq
 ; DARWIN-64-DYNAMIC-NEXT:      ret
 
 ; DARWIN-64-PIC: _licaller:
-; DARWIN-64-PIC:       subq    $8, %rsp
-; DARWIN-64-PIC-NEXT:  call    *_lifunc(%rip)
-; DARWIN-64-PIC-NEXT:  call    *_lifunc(%rip)
-; DARWIN-64-PIC-NEXT:  addq    $8, %rsp
+; DARWIN-64-PIC:       pushq
+; DARWIN-64-PIC-NEXT:  callq   *_lifunc(%rip)
+; DARWIN-64-PIC-NEXT:  callq   *_lifunc(%rip)
+; DARWIN-64-PIC-NEXT:  popq
 ; DARWIN-64-PIC-NEXT:  ret
 }
 
 define void @itailcaller() nounwind {
 entry:
-       %0 = load void ()** @ifunc, align 8
-       tail call void %0() nounwind
-       %1 = load void ()** @ifunc, align 8
-       tail call void %1() nounwind
+       %0 = load void ()*, void ()** @ifunc, align 8
+       call void %0() nounwind
+       %1 = load void ()*, void ()** @ifunc, align 8
+       call void %1() nounwind
        ret void
-; LINUX-64-STATIC: itailcaller:
-; LINUX-64-STATIC: call    *ifunc
-; LINUX-64-STATIC: call    *ifunc
+; LINUX-64-STATIC-LABEL: itailcaller:
+; LINUX-64-STATIC: callq   *ifunc
+; LINUX-64-STATIC: callq   *ifunc
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: itailcaller:
-; LINUX-32-STATIC:     subl    $4, %esp
-; LINUX-32-STATIC-NEXT:        call    *ifunc
-; LINUX-32-STATIC-NEXT:        call    *ifunc
-; LINUX-32-STATIC-NEXT:        addl    $4, %esp
+; LINUX-32-STATIC-LABEL: itailcaller:
+; LINUX-32-STATIC:     subl
+; LINUX-32-STATIC-NEXT:        calll   *ifunc
+; LINUX-32-STATIC-NEXT:        calll   *ifunc
+; LINUX-32-STATIC-NEXT:        addl
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: itailcaller:
-; LINUX-32-PIC:        subl    $4, %esp
-; LINUX-32-PIC-NEXT:   call    *ifunc
-; LINUX-32-PIC-NEXT:   call    *ifunc
-; LINUX-32-PIC-NEXT:   addl    $4, %esp
+; LINUX-32-PIC-LABEL: itailcaller:
+; LINUX-32-PIC:        subl
+; LINUX-32-PIC-NEXT:   calll   *ifunc
+; LINUX-32-PIC-NEXT:   calll   *ifunc
+; LINUX-32-PIC-NEXT:   addl
+
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: itailcaller:
-; LINUX-64-PIC:        pushq   %rbx
-; LINUX-64-PIC-NEXT:   movq    ifunc@GOTPCREL(%rip), %rbx
-; LINUX-64-PIC-NEXT:   call    *(%rbx)
-; LINUX-64-PIC-NEXT:   call    *(%rbx)
-; LINUX-64-PIC-NEXT:   popq    %rbx
+; LINUX-64-PIC-LABEL: itailcaller:
+; LINUX-64-PIC:        pushq   [[RBX:%r.x]]
+; LINUX-64-PIC-NEXT:   movq    ifunc@GOTPCREL(%rip), [[RBX:%r.x]]
+; LINUX-64-PIC-NEXT:   callq   *([[RBX]])
+; LINUX-64-PIC-NEXT:   callq   *([[RBX]])
+; LINUX-64-PIC-NEXT:   popq    [[RBX:%r.x]]
 ; LINUX-64-PIC-NEXT:   ret
 
 ; DARWIN-32-STATIC: _itailcaller:
 ; DARWIN-32-STATIC:    subl    $12, %esp
-; DARWIN-32-STATIC-NEXT:       call    *_ifunc
-; DARWIN-32-STATIC-NEXT:       call    *_ifunc
+; DARWIN-32-STATIC-NEXT:       calll   *_ifunc
+; DARWIN-32-STATIC-NEXT:       calll   *_ifunc
 ; DARWIN-32-STATIC-NEXT:       addl    $12, %esp
 ; DARWIN-32-STATIC-NEXT:       ret
 
@@ -9467,8 +9479,8 @@ entry:
 ; DARWIN-32-DYNAMIC:   pushl   %esi
 ; DARWIN-32-DYNAMIC-NEXT:      subl    $8, %esp
 ; DARWIN-32-DYNAMIC-NEXT:      movl    L_ifunc$non_lazy_ptr, %esi
-; DARWIN-32-DYNAMIC-NEXT:      call    *(%esi)
-; DARWIN-32-DYNAMIC-NEXT:      call    *(%esi)
+; DARWIN-32-DYNAMIC-NEXT:      calll   *(%esi)
+; DARWIN-32-DYNAMIC-NEXT:      calll   *(%esi)
 ; DARWIN-32-DYNAMIC-NEXT:      addl    $8, %esp
 ; DARWIN-32-DYNAMIC-NEXT:      popl    %esi
 ; DARWIN-32-DYNAMIC-NEXT:      ret
@@ -9476,171 +9488,173 @@ entry:
 ; DARWIN-32-PIC: _itailcaller:
 ; DARWIN-32-PIC:       pushl   %esi
 ; DARWIN-32-PIC-NEXT:  subl    $8, %esp
-; DARWIN-32-PIC-NEXT:  call    "L146$pb"
-; DARWIN-32-PIC-NEXT: "L146$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  movl    L_ifunc$non_lazy_ptr-"L146$pb"(%eax), %esi
-; DARWIN-32-PIC-NEXT:  call    *(%esi)
-; DARWIN-32-PIC-NEXT:  call    *(%esi)
+; DARWIN-32-PIC-NEXT:  calll   L145$pb
+; DARWIN-32-PIC-NEXT: L145$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  movl    L_ifunc$non_lazy_ptr-L145$pb([[EAX]]), %esi
+; DARWIN-32-PIC-NEXT:  calll   *(%esi)
+; DARWIN-32-PIC-NEXT:  calll   *(%esi)
 ; DARWIN-32-PIC-NEXT:  addl    $8, %esp
 ; DARWIN-32-PIC-NEXT:  popl    %esi
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _itailcaller:
-; DARWIN-64-STATIC:    pushq   %rbx
-; DARWIN-64-STATIC-NEXT:       movq    _ifunc@GOTPCREL(%rip), %rbx
-; DARWIN-64-STATIC-NEXT:       call    *(%rbx)
-; DARWIN-64-STATIC-NEXT:       call    *(%rbx)
-; DARWIN-64-STATIC-NEXT:       popq    %rbx
+; DARWIN-64-STATIC:    pushq   [[RBX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       movq    _ifunc@GOTPCREL(%rip), [[RBX:%r.x]]
+; DARWIN-64-STATIC-NEXT:       callq   *([[RBX]])
+; DARWIN-64-STATIC-NEXT:       callq   *([[RBX]])
+; DARWIN-64-STATIC-NEXT:       popq    [[RBX:%r.x]]
 ; DARWIN-64-STATIC-NEXT:       ret
 
 ; DARWIN-64-DYNAMIC: _itailcaller:
-; DARWIN-64-DYNAMIC:   pushq   %rbx
-; DARWIN-64-DYNAMIC-NEXT:      movq    _ifunc@GOTPCREL(%rip), %rbx
-; DARWIN-64-DYNAMIC-NEXT:      call    *(%rbx)
-; DARWIN-64-DYNAMIC-NEXT:      call    *(%rbx)
-; DARWIN-64-DYNAMIC-NEXT:      popq    %rbx
+; DARWIN-64-DYNAMIC:   pushq   [[RBX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      movq    _ifunc@GOTPCREL(%rip), [[RBX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT:      callq   *([[RBX]])
+; DARWIN-64-DYNAMIC-NEXT:      callq   *([[RBX]])
+; DARWIN-64-DYNAMIC-NEXT:      popq    [[RBX:%r.x]]
 ; DARWIN-64-DYNAMIC-NEXT:      ret
 
 ; DARWIN-64-PIC: _itailcaller:
-; DARWIN-64-PIC:       pushq   %rbx
-; DARWIN-64-PIC-NEXT:  movq    _ifunc@GOTPCREL(%rip), %rbx
-; DARWIN-64-PIC-NEXT:  call    *(%rbx)
-; DARWIN-64-PIC-NEXT:  call    *(%rbx)
-; DARWIN-64-PIC-NEXT:  popq    %rbx
+; DARWIN-64-PIC:       pushq   [[RBX:%r.x]]
+; DARWIN-64-PIC-NEXT:  movq    _ifunc@GOTPCREL(%rip), [[RBX:%r.x]]
+; DARWIN-64-PIC-NEXT:  callq   *([[RBX]])
+; DARWIN-64-PIC-NEXT:  callq   *([[RBX]])
+; DARWIN-64-PIC-NEXT:  popq    [[RBX:%r.x]]
 ; DARWIN-64-PIC-NEXT:  ret
 }
 
 define void @ditailcaller() nounwind {
 entry:
-       %0 = load void ()** @difunc, align 8
-       tail call void %0() nounwind
+       %0 = load void ()*, void ()** @difunc, align 8
+       call void %0() nounwind
        ret void
-; LINUX-64-STATIC: ditailcaller:
-; LINUX-64-STATIC: call    *difunc
+; LINUX-64-STATIC-LABEL: ditailcaller:
+; LINUX-64-STATIC: callq   *difunc
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: ditailcaller:
-; LINUX-32-STATIC:     subl    $4, %esp
-; LINUX-32-STATIC-NEXT:        call    *difunc
-; LINUX-32-STATIC-NEXT:        addl    $4, %esp
+; LINUX-32-STATIC-LABEL: ditailcaller:
+; LINUX-32-STATIC:     subl
+; LINUX-32-STATIC-NEXT:        calll   *difunc
+; LINUX-32-STATIC-NEXT:        addl
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: ditailcaller:
-; LINUX-32-PIC:        subl    $4, %esp
-; LINUX-32-PIC-NEXT:   call    *difunc
-; LINUX-32-PIC-NEXT:   addl    $4, %esp
+; LINUX-32-PIC-LABEL: ditailcaller:
+; LINUX-32-PIC:        subl
+; LINUX-32-PIC-NEXT:   calll   *difunc
+; LINUX-32-PIC-NEXT:   addl
+
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: ditailcaller:
-; LINUX-64-PIC:        subq    $8, %rsp
-; LINUX-64-PIC-NEXT:   movq    difunc@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT:   call    *(%rax)
-; LINUX-64-PIC-NEXT:   addq    $8, %rsp
+; LINUX-64-PIC-LABEL: ditailcaller:
+; LINUX-64-PIC:        pushq
+; LINUX-64-PIC-NEXT:   movq    difunc@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT:   callq   *([[RAX]])
+; LINUX-64-PIC-NEXT:   popq
 ; LINUX-64-PIC-NEXT:   ret
 
 ; DARWIN-32-STATIC: _ditailcaller:
 ; DARWIN-32-STATIC:    subl    $12, %esp
-; DARWIN-32-STATIC-NEXT:       call    *_difunc
+; DARWIN-32-STATIC-NEXT:       calll   *_difunc
 ; DARWIN-32-STATIC-NEXT:       addl    $12, %esp
 ; DARWIN-32-STATIC-NEXT:       ret
 
 ; DARWIN-32-DYNAMIC: _ditailcaller:
 ; DARWIN-32-DYNAMIC:   subl    $12, %esp
-; DARWIN-32-DYNAMIC-NEXT:      call    *_difunc
+; DARWIN-32-DYNAMIC-NEXT:      calll   *_difunc
 ; DARWIN-32-DYNAMIC-NEXT:      addl    $12, %esp
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _ditailcaller:
 ; DARWIN-32-PIC:       subl    $12, %esp
-; DARWIN-32-PIC-NEXT:  call    "L147$pb"
-; DARWIN-32-PIC-NEXT: "L147$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  call    *_difunc-"L147$pb"(%eax)
+; DARWIN-32-PIC-NEXT:  calll   L146$pb
+; DARWIN-32-PIC-NEXT: L146$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  calll   *_difunc-L146$pb([[EAX]])
 ; DARWIN-32-PIC-NEXT:  addl    $12, %esp
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _ditailcaller:
-; DARWIN-64-STATIC:    subq    $8, %rsp
-; DARWIN-64-STATIC-NEXT:       call    *_difunc(%rip)
-; DARWIN-64-STATIC-NEXT:       addq    $8, %rsp
+; DARWIN-64-STATIC:    pushq
+; DARWIN-64-STATIC-NEXT:       callq   *_difunc(%rip)
+; DARWIN-64-STATIC-NEXT:       popq
 ; DARWIN-64-STATIC-NEXT:       ret
 
 ; DARWIN-64-DYNAMIC: _ditailcaller:
-; DARWIN-64-DYNAMIC:   subq    $8, %rsp
-; DARWIN-64-DYNAMIC-NEXT:      call    *_difunc(%rip)
-; DARWIN-64-DYNAMIC-NEXT:      addq    $8, %rsp
+; DARWIN-64-DYNAMIC:   pushq
+; DARWIN-64-DYNAMIC-NEXT:      callq   *_difunc(%rip)
+; DARWIN-64-DYNAMIC-NEXT:      popq
 ; DARWIN-64-DYNAMIC-NEXT:      ret
 
 ; DARWIN-64-PIC: _ditailcaller:
-; DARWIN-64-PIC:       call    *_difunc(%rip)
-; DARWIN-64-PIC-NEXT:  addq    $8, %rsp
+; DARWIN-64-PIC:       callq   *_difunc(%rip)
+; DARWIN-64-PIC-NEXT:  popq
 ; DARWIN-64-PIC-NEXT:  ret
 }
 
 define void @litailcaller() nounwind {
 entry:
-       %0 = load void ()** @lifunc, align 8
-       tail call void %0() nounwind
+       %0 = load void ()*, void ()** @lifunc, align 8
+       call void %0() nounwind
        ret void
-; LINUX-64-STATIC: litailcaller:
-; LINUX-64-STATIC: call    *lifunc
+; LINUX-64-STATIC-LABEL: litailcaller:
+; LINUX-64-STATIC: callq   *lifunc
 ; LINUX-64-STATIC: ret
 
-; LINUX-32-STATIC: litailcaller:
-; LINUX-32-STATIC:     subl    $4, %esp
-; LINUX-32-STATIC-NEXT:        call    *lifunc
-; LINUX-32-STATIC-NEXT:        addl    $4, %esp
+; LINUX-32-STATIC-LABEL: litailcaller:
+; LINUX-32-STATIC:     subl
+; LINUX-32-STATIC-NEXT:        calll   *lifunc
+; LINUX-32-STATIC-NEXT:        addl
 ; LINUX-32-STATIC-NEXT:        ret
 
-; LINUX-32-PIC: litailcaller:
-; LINUX-32-PIC:        subl    $4, %esp
-; LINUX-32-PIC-NEXT:   call    *lifunc
-; LINUX-32-PIC-NEXT:   addl    $4, %esp
+; LINUX-32-PIC-LABEL: litailcaller:
+; LINUX-32-PIC:        subl
+; LINUX-32-PIC-NEXT:   calll   *lifunc
+; LINUX-32-PIC-NEXT:   addl
+
 ; LINUX-32-PIC-NEXT:   ret
 
-; LINUX-64-PIC: litailcaller:
-; LINUX-64-PIC:        subq    $8, %rsp
-; LINUX-64-PIC-NEXT:   call    *lifunc(%rip)
-; LINUX-64-PIC-NEXT:   addq    $8, %rsp
+; LINUX-64-PIC-LABEL: litailcaller:
+; LINUX-64-PIC:        pushq
+; LINUX-64-PIC-NEXT:   callq   *lifunc(%rip)
+; LINUX-64-PIC-NEXT:   popq
 ; LINUX-64-PIC-NEXT:   ret
 
 ; DARWIN-32-STATIC: _litailcaller:
 ; DARWIN-32-STATIC:    subl    $12, %esp
-; DARWIN-32-STATIC-NEXT:       call    *_lifunc
+; DARWIN-32-STATIC-NEXT:       calll   *_lifunc
 ; DARWIN-32-STATIC-NEXT:       addl    $12, %esp
 ; DARWIN-32-STATIC-NEXT:       ret
 
 ; DARWIN-32-DYNAMIC: _litailcaller:
 ; DARWIN-32-DYNAMIC:   subl    $12, %esp
-; DARWIN-32-DYNAMIC-NEXT:      call    *_lifunc
+; DARWIN-32-DYNAMIC-NEXT:      calll   *_lifunc
 ; DARWIN-32-DYNAMIC-NEXT:      addl    $12, %esp
 ; DARWIN-32-DYNAMIC-NEXT:      ret
 
 ; DARWIN-32-PIC: _litailcaller:
 ; DARWIN-32-PIC:       subl    $12, %esp
-; DARWIN-32-PIC-NEXT:  call    "L148$pb"
-; DARWIN-32-PIC-NEXT: "L148$pb":
-; DARWIN-32-PIC-NEXT:  popl    %eax
-; DARWIN-32-PIC-NEXT:  call    *_lifunc-"L148$pb"(%eax)
+; DARWIN-32-PIC-NEXT:  calll   L147$pb
+; DARWIN-32-PIC-NEXT: L147$pb:
+; DARWIN-32-PIC-NEXT:  popl    [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT:  calll   *_lifunc-L147$pb([[EAX]])
 ; DARWIN-32-PIC-NEXT:  addl    $12, %esp
 ; DARWIN-32-PIC-NEXT:  ret
 
 ; DARWIN-64-STATIC: _litailcaller:
-; DARWIN-64-STATIC:    subq    $8, %rsp
-; DARWIN-64-STATIC-NEXT:       call    *_lifunc(%rip)
-; DARWIN-64-STATIC-NEXT:       addq    $8, %rsp
+; DARWIN-64-STATIC:    pushq
+; DARWIN-64-STATIC-NEXT:       callq   *_lifunc(%rip)
+; DARWIN-64-STATIC-NEXT:       popq
 ; DARWIN-64-STATIC-NEXT:       ret
 
 ; DARWIN-64-DYNAMIC: _litailcaller:
-; DARWIN-64-DYNAMIC:   subq    $8, %rsp
-; DARWIN-64-DYNAMIC-NEXT:      call    *_lifunc(%rip)
-; DARWIN-64-DYNAMIC-NEXT:      addq    $8, %rsp
+; DARWIN-64-DYNAMIC:   pushq
+; DARWIN-64-DYNAMIC-NEXT:      callq   *_lifunc(%rip)
+; DARWIN-64-DYNAMIC-NEXT:      popq
 ; DARWIN-64-DYNAMIC-NEXT:      ret
 
 ; DARWIN-64-PIC: _litailcaller:
-; DARWIN-64-PIC:       subq    $8, %rsp
-; DARWIN-64-PIC-NEXT:  call    *_lifunc(%rip)
-; DARWIN-64-PIC-NEXT:  addq    $8, %rsp
+; DARWIN-64-PIC:       pushq
+; DARWIN-64-PIC-NEXT:  callq   *_lifunc(%rip)
+; DARWIN-64-PIC-NEXT:  popq
 ; DARWIN-64-PIC-NEXT:  ret
 }