12192 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; NOTE: Use the --no_x86_scrub_rip additional argument to keep the rip address math.3 4; RUN: llc < %s -mtriple=x86_64-unknown-linux-gnu -relocation-model=static -code-model=small -pre-RA-sched=list-ilp | FileCheck %s -check-prefix=LINUX-64-STATIC5; RUN: llc < %s -mtriple=i686-unknown-linux-gnu -relocation-model=static -code-model=small -pre-RA-sched=list-ilp | FileCheck %s -check-prefix=LINUX-32-STATIC6; RUN: llc < %s -mtriple=i686-unknown-linux-gnu -relocation-model=pic -code-model=small -pre-RA-sched=list-ilp | FileCheck %s -check-prefix=LINUX-32-PIC7; RUN: llc < %s -mtriple=x86_64-unknown-linux-gnu -relocation-model=pic -code-model=small -pre-RA-sched=list-ilp | FileCheck %s -check-prefix=LINUX-64-PIC8 9; RUN: llc < %s -mtriple=i686-apple-darwin -relocation-model=static -code-model=small -pre-RA-sched=list-ilp | FileCheck %s -check-prefix=DARWIN-32-STATIC10; RUN: llc < %s -mtriple=i686-apple-darwin9 -relocation-model=dynamic-no-pic -code-model=small -pre-RA-sched=list-ilp | FileCheck %s -check-prefix=DARWIN-32-DYNAMIC11; RUN: llc < %s -mtriple=i686-apple-darwin9 -relocation-model=pic -code-model=small -pre-RA-sched=list-ilp | FileCheck %s -check-prefix=DARWIN-32-PIC12 13; RUN: llc < %s -mtriple=x86_64-apple-darwin -relocation-model=static -code-model=small -pre-RA-sched=list-ilp | FileCheck %s -check-prefix=DARWIN-64-STATIC14; RUN: llc < %s -mtriple=x86_64-apple-darwin -relocation-model=dynamic-no-pic -code-model=small -pre-RA-sched=list-ilp | FileCheck %s -check-prefix=DARWIN-64-DYNAMIC15; RUN: llc < %s -mtriple=x86_64-apple-darwin -relocation-model=pic -code-model=small -pre-RA-sched=list-ilp | FileCheck %s -check-prefix=DARWIN-64-PIC16 17@src = external global [131072 x i32]18@dst = external global [131072 x i32]19@xsrc = external global [32 x i32]20@xdst = external global [32 x i32]21@ptr = external global ptr22@dsrc = dso_local global [131072 x i32] zeroinitializer, align 3223@ddst = dso_local global [131072 x i32] zeroinitializer, align 3224@dptr = dso_local global ptr null25@lsrc = internal global [131072 x i32] zeroinitializer26@ldst = internal global [131072 x i32] zeroinitializer27@lptr = internal global ptr null28@ifunc = external global ptr29@difunc = dso_local global ptr null30@lifunc = internal global ptr null31@lxsrc = internal global [32 x i32] zeroinitializer, align 3232@lxdst = internal global [32 x i32] zeroinitializer, align 3233@dxsrc = dso_local global [32 x i32] zeroinitializer, align 3234@dxdst = dso_local global [32 x i32] zeroinitializer, align 3235 36define dso_local void @foo00() nounwind {37; LINUX-64-STATIC-LABEL: foo00:38; LINUX-64-STATIC: # %bb.0: # %entry39; LINUX-64-STATIC-NEXT: movq src@GOTPCREL(%rip), %rax40; LINUX-64-STATIC-NEXT: movl (%rax), %eax41; LINUX-64-STATIC-NEXT: movq dst@GOTPCREL(%rip), %rcx42; LINUX-64-STATIC-NEXT: movl %eax, (%rcx)43; LINUX-64-STATIC-NEXT: retq44;45; LINUX-32-STATIC-LABEL: foo00:46; LINUX-32-STATIC: # %bb.0: # %entry47; LINUX-32-STATIC-NEXT: movl src, %eax48; LINUX-32-STATIC-NEXT: movl %eax, dst49; LINUX-32-STATIC-NEXT: retl50;51; LINUX-32-PIC-LABEL: foo00:52; LINUX-32-PIC: # %bb.0: # %entry53; LINUX-32-PIC-NEXT: calll .L0$pb54; LINUX-32-PIC-NEXT: .L0$pb:55; LINUX-32-PIC-NEXT: popl %eax56; LINUX-32-PIC-NEXT: .Ltmp0:57; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp0-.L0$pb), %eax58; LINUX-32-PIC-NEXT: movl src@GOT(%eax), %ecx59; LINUX-32-PIC-NEXT: movl (%ecx), %ecx60; LINUX-32-PIC-NEXT: movl dst@GOT(%eax), %eax61; LINUX-32-PIC-NEXT: movl %ecx, (%eax)62; LINUX-32-PIC-NEXT: retl63;64; LINUX-64-PIC-LABEL: foo00:65; LINUX-64-PIC: # %bb.0: # %entry66; LINUX-64-PIC-NEXT: movq src@GOTPCREL(%rip), %rax67; LINUX-64-PIC-NEXT: movl (%rax), %eax68; LINUX-64-PIC-NEXT: movq dst@GOTPCREL(%rip), %rcx69; LINUX-64-PIC-NEXT: movl %eax, (%rcx)70; LINUX-64-PIC-NEXT: retq71;72; DARWIN-32-STATIC-LABEL: foo00:73; DARWIN-32-STATIC: ## %bb.0: ## %entry74; DARWIN-32-STATIC-NEXT: movl _src, %eax75; DARWIN-32-STATIC-NEXT: movl %eax, _dst76; DARWIN-32-STATIC-NEXT: retl77;78; DARWIN-32-DYNAMIC-LABEL: foo00:79; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry80; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %eax81; DARWIN-32-DYNAMIC-NEXT: movl (%eax), %eax82; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, %ecx83; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx)84; DARWIN-32-DYNAMIC-NEXT: retl85;86; DARWIN-32-PIC-LABEL: foo00:87; DARWIN-32-PIC: ## %bb.0: ## %entry88; DARWIN-32-PIC-NEXT: calll L0$pb89; DARWIN-32-PIC-NEXT: L0$pb:90; DARWIN-32-PIC-NEXT: popl %eax91; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L0$pb(%eax), %ecx92; DARWIN-32-PIC-NEXT: movl (%ecx), %ecx93; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L0$pb(%eax), %eax94; DARWIN-32-PIC-NEXT: movl %ecx, (%eax)95; DARWIN-32-PIC-NEXT: retl96;97; DARWIN-64-STATIC-LABEL: foo00:98; DARWIN-64-STATIC: ## %bb.0: ## %entry99; DARWIN-64-STATIC-NEXT: movq _src@GOTPCREL(%rip), %rax100; DARWIN-64-STATIC-NEXT: movl (%rax), %eax101; DARWIN-64-STATIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx102; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx)103; DARWIN-64-STATIC-NEXT: retq104;105; DARWIN-64-DYNAMIC-LABEL: foo00:106; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry107; DARWIN-64-DYNAMIC-NEXT: movq _src@GOTPCREL(%rip), %rax108; DARWIN-64-DYNAMIC-NEXT: movl (%rax), %eax109; DARWIN-64-DYNAMIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx110; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx)111; DARWIN-64-DYNAMIC-NEXT: retq112;113; DARWIN-64-PIC-LABEL: foo00:114; DARWIN-64-PIC: ## %bb.0: ## %entry115; DARWIN-64-PIC-NEXT: movq _src@GOTPCREL(%rip), %rax116; DARWIN-64-PIC-NEXT: movl (%rax), %eax117; DARWIN-64-PIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx118; DARWIN-64-PIC-NEXT: movl %eax, (%rcx)119; DARWIN-64-PIC-NEXT: retq120 121entry:122 %0 = load i32, ptr @src, align 4123 store i32 %0, ptr @dst, align 4124 ret void125 126}127 128define dso_local void @fxo00() nounwind {129; LINUX-64-STATIC-LABEL: fxo00:130; LINUX-64-STATIC: # %bb.0: # %entry131; LINUX-64-STATIC-NEXT: movq xsrc@GOTPCREL(%rip), %rax132; LINUX-64-STATIC-NEXT: movl (%rax), %eax133; LINUX-64-STATIC-NEXT: movq xdst@GOTPCREL(%rip), %rcx134; LINUX-64-STATIC-NEXT: movl %eax, (%rcx)135; LINUX-64-STATIC-NEXT: retq136;137; LINUX-32-STATIC-LABEL: fxo00:138; LINUX-32-STATIC: # %bb.0: # %entry139; LINUX-32-STATIC-NEXT: movl xsrc, %eax140; LINUX-32-STATIC-NEXT: movl %eax, xdst141; LINUX-32-STATIC-NEXT: retl142;143; LINUX-32-PIC-LABEL: fxo00:144; LINUX-32-PIC: # %bb.0: # %entry145; LINUX-32-PIC-NEXT: calll .L1$pb146; LINUX-32-PIC-NEXT: .L1$pb:147; LINUX-32-PIC-NEXT: popl %eax148; LINUX-32-PIC-NEXT: .Ltmp1:149; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp1-.L1$pb), %eax150; LINUX-32-PIC-NEXT: movl xsrc@GOT(%eax), %ecx151; LINUX-32-PIC-NEXT: movl (%ecx), %ecx152; LINUX-32-PIC-NEXT: movl xdst@GOT(%eax), %eax153; LINUX-32-PIC-NEXT: movl %ecx, (%eax)154; LINUX-32-PIC-NEXT: retl155;156; LINUX-64-PIC-LABEL: fxo00:157; LINUX-64-PIC: # %bb.0: # %entry158; LINUX-64-PIC-NEXT: movq xsrc@GOTPCREL(%rip), %rax159; LINUX-64-PIC-NEXT: movl (%rax), %eax160; LINUX-64-PIC-NEXT: movq xdst@GOTPCREL(%rip), %rcx161; LINUX-64-PIC-NEXT: movl %eax, (%rcx)162; LINUX-64-PIC-NEXT: retq163;164; DARWIN-32-STATIC-LABEL: fxo00:165; DARWIN-32-STATIC: ## %bb.0: ## %entry166; DARWIN-32-STATIC-NEXT: movl _xsrc, %eax167; DARWIN-32-STATIC-NEXT: movl %eax, _xdst168; DARWIN-32-STATIC-NEXT: retl169;170; DARWIN-32-DYNAMIC-LABEL: fxo00:171; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry172; DARWIN-32-DYNAMIC-NEXT: movl L_xsrc$non_lazy_ptr, %eax173; DARWIN-32-DYNAMIC-NEXT: movl (%eax), %eax174; DARWIN-32-DYNAMIC-NEXT: movl L_xdst$non_lazy_ptr, %ecx175; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx)176; DARWIN-32-DYNAMIC-NEXT: retl177;178; DARWIN-32-PIC-LABEL: fxo00:179; DARWIN-32-PIC: ## %bb.0: ## %entry180; DARWIN-32-PIC-NEXT: calll L1$pb181; DARWIN-32-PIC-NEXT: L1$pb:182; DARWIN-32-PIC-NEXT: popl %eax183; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-L1$pb(%eax), %ecx184; DARWIN-32-PIC-NEXT: movl (%ecx), %ecx185; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-L1$pb(%eax), %eax186; DARWIN-32-PIC-NEXT: movl %ecx, (%eax)187; DARWIN-32-PIC-NEXT: retl188;189; DARWIN-64-STATIC-LABEL: fxo00:190; DARWIN-64-STATIC: ## %bb.0: ## %entry191; DARWIN-64-STATIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax192; DARWIN-64-STATIC-NEXT: movl (%rax), %eax193; DARWIN-64-STATIC-NEXT: movq _xdst@GOTPCREL(%rip), %rcx194; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx)195; DARWIN-64-STATIC-NEXT: retq196;197; DARWIN-64-DYNAMIC-LABEL: fxo00:198; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry199; DARWIN-64-DYNAMIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax200; DARWIN-64-DYNAMIC-NEXT: movl (%rax), %eax201; DARWIN-64-DYNAMIC-NEXT: movq _xdst@GOTPCREL(%rip), %rcx202; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx)203; DARWIN-64-DYNAMIC-NEXT: retq204;205; DARWIN-64-PIC-LABEL: fxo00:206; DARWIN-64-PIC: ## %bb.0: ## %entry207; DARWIN-64-PIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax208; DARWIN-64-PIC-NEXT: movl (%rax), %eax209; DARWIN-64-PIC-NEXT: movq _xdst@GOTPCREL(%rip), %rcx210; DARWIN-64-PIC-NEXT: movl %eax, (%rcx)211; DARWIN-64-PIC-NEXT: retq212 213entry:214 %0 = load i32, ptr @xsrc, align 4215 store i32 %0, ptr @xdst, align 4216 ret void217 218}219 220define dso_local void @foo01() nounwind {221; LINUX-64-STATIC-LABEL: foo01:222; LINUX-64-STATIC: # %bb.0: # %entry223; LINUX-64-STATIC-NEXT: movq dst@GOTPCREL(%rip), %rax224; LINUX-64-STATIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx225; LINUX-64-STATIC-NEXT: movq %rax, (%rcx)226; LINUX-64-STATIC-NEXT: retq227;228; LINUX-32-STATIC-LABEL: foo01:229; LINUX-32-STATIC: # %bb.0: # %entry230; LINUX-32-STATIC-NEXT: movl $dst, ptr231; LINUX-32-STATIC-NEXT: retl232;233; LINUX-32-PIC-LABEL: foo01:234; LINUX-32-PIC: # %bb.0: # %entry235; LINUX-32-PIC-NEXT: calll .L2$pb236; LINUX-32-PIC-NEXT: .L2$pb:237; LINUX-32-PIC-NEXT: popl %eax238; LINUX-32-PIC-NEXT: .Ltmp2:239; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp2-.L2$pb), %eax240; LINUX-32-PIC-NEXT: movl dst@GOT(%eax), %ecx241; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax242; LINUX-32-PIC-NEXT: movl %ecx, (%eax)243; LINUX-32-PIC-NEXT: retl244;245; LINUX-64-PIC-LABEL: foo01:246; LINUX-64-PIC: # %bb.0: # %entry247; LINUX-64-PIC-NEXT: movq dst@GOTPCREL(%rip), %rax248; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx249; LINUX-64-PIC-NEXT: movq %rax, (%rcx)250; LINUX-64-PIC-NEXT: retq251;252; DARWIN-32-STATIC-LABEL: foo01:253; DARWIN-32-STATIC: ## %bb.0: ## %entry254; DARWIN-32-STATIC-NEXT: movl $_dst, _ptr255; DARWIN-32-STATIC-NEXT: retl256;257; DARWIN-32-DYNAMIC-LABEL: foo01:258; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry259; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, %eax260; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx261; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx)262; DARWIN-32-DYNAMIC-NEXT: retl263;264; DARWIN-32-PIC-LABEL: foo01:265; DARWIN-32-PIC: ## %bb.0: ## %entry266; DARWIN-32-PIC-NEXT: calll L2$pb267; DARWIN-32-PIC-NEXT: L2$pb:268; DARWIN-32-PIC-NEXT: popl %eax269; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L2$pb(%eax), %ecx270; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L2$pb(%eax), %eax271; DARWIN-32-PIC-NEXT: movl %ecx, (%eax)272; DARWIN-32-PIC-NEXT: retl273;274; DARWIN-64-STATIC-LABEL: foo01:275; DARWIN-64-STATIC: ## %bb.0: ## %entry276; DARWIN-64-STATIC-NEXT: movq _dst@GOTPCREL(%rip), %rax277; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx278; DARWIN-64-STATIC-NEXT: movq %rax, (%rcx)279; DARWIN-64-STATIC-NEXT: retq280;281; DARWIN-64-DYNAMIC-LABEL: foo01:282; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry283; DARWIN-64-DYNAMIC-NEXT: movq _dst@GOTPCREL(%rip), %rax284; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx285; DARWIN-64-DYNAMIC-NEXT: movq %rax, (%rcx)286; DARWIN-64-DYNAMIC-NEXT: retq287;288; DARWIN-64-PIC-LABEL: foo01:289; DARWIN-64-PIC: ## %bb.0: ## %entry290; DARWIN-64-PIC-NEXT: movq _dst@GOTPCREL(%rip), %rax291; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx292; DARWIN-64-PIC-NEXT: movq %rax, (%rcx)293; DARWIN-64-PIC-NEXT: retq294 295entry:296 store ptr @dst, ptr @ptr, align 8297 ret void298}299 300define dso_local void @fxo01() nounwind {301; LINUX-64-STATIC-LABEL: fxo01:302; LINUX-64-STATIC: # %bb.0: # %entry303; LINUX-64-STATIC-NEXT: movq xdst@GOTPCREL(%rip), %rax304; LINUX-64-STATIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx305; LINUX-64-STATIC-NEXT: movq %rax, (%rcx)306; LINUX-64-STATIC-NEXT: retq307;308; LINUX-32-STATIC-LABEL: fxo01:309; LINUX-32-STATIC: # %bb.0: # %entry310; LINUX-32-STATIC-NEXT: movl $xdst, ptr311; LINUX-32-STATIC-NEXT: retl312;313; LINUX-32-PIC-LABEL: fxo01:314; LINUX-32-PIC: # %bb.0: # %entry315; LINUX-32-PIC-NEXT: calll .L3$pb316; LINUX-32-PIC-NEXT: .L3$pb:317; LINUX-32-PIC-NEXT: popl %eax318; LINUX-32-PIC-NEXT: .Ltmp3:319; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp3-.L3$pb), %eax320; LINUX-32-PIC-NEXT: movl xdst@GOT(%eax), %ecx321; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax322; LINUX-32-PIC-NEXT: movl %ecx, (%eax)323; LINUX-32-PIC-NEXT: retl324;325; LINUX-64-PIC-LABEL: fxo01:326; LINUX-64-PIC: # %bb.0: # %entry327; LINUX-64-PIC-NEXT: movq xdst@GOTPCREL(%rip), %rax328; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx329; LINUX-64-PIC-NEXT: movq %rax, (%rcx)330; LINUX-64-PIC-NEXT: retq331;332; DARWIN-32-STATIC-LABEL: fxo01:333; DARWIN-32-STATIC: ## %bb.0: ## %entry334; DARWIN-32-STATIC-NEXT: movl $_xdst, _ptr335; DARWIN-32-STATIC-NEXT: retl336;337; DARWIN-32-DYNAMIC-LABEL: fxo01:338; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry339; DARWIN-32-DYNAMIC-NEXT: movl L_xdst$non_lazy_ptr, %eax340; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx341; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx)342; DARWIN-32-DYNAMIC-NEXT: retl343;344; DARWIN-32-PIC-LABEL: fxo01:345; DARWIN-32-PIC: ## %bb.0: ## %entry346; DARWIN-32-PIC-NEXT: calll L3$pb347; DARWIN-32-PIC-NEXT: L3$pb:348; DARWIN-32-PIC-NEXT: popl %eax349; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-L3$pb(%eax), %ecx350; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L3$pb(%eax), %eax351; DARWIN-32-PIC-NEXT: movl %ecx, (%eax)352; DARWIN-32-PIC-NEXT: retl353;354; DARWIN-64-STATIC-LABEL: fxo01:355; DARWIN-64-STATIC: ## %bb.0: ## %entry356; DARWIN-64-STATIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax357; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx358; DARWIN-64-STATIC-NEXT: movq %rax, (%rcx)359; DARWIN-64-STATIC-NEXT: retq360;361; DARWIN-64-DYNAMIC-LABEL: fxo01:362; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry363; DARWIN-64-DYNAMIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax364; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx365; DARWIN-64-DYNAMIC-NEXT: movq %rax, (%rcx)366; DARWIN-64-DYNAMIC-NEXT: retq367;368; DARWIN-64-PIC-LABEL: fxo01:369; DARWIN-64-PIC: ## %bb.0: ## %entry370; DARWIN-64-PIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax371; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx372; DARWIN-64-PIC-NEXT: movq %rax, (%rcx)373; DARWIN-64-PIC-NEXT: retq374 375entry:376 store ptr @xdst, ptr @ptr, align 8377 ret void378}379 380define dso_local void @foo02() nounwind {381; LINUX-64-STATIC-LABEL: foo02:382; LINUX-64-STATIC: # %bb.0: # %entry383; LINUX-64-STATIC-NEXT: movq src@GOTPCREL(%rip), %rax384; LINUX-64-STATIC-NEXT: movl (%rax), %eax385; LINUX-64-STATIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx386; LINUX-64-STATIC-NEXT: movq (%rcx), %rcx387; LINUX-64-STATIC-NEXT: movl %eax, (%rcx)388; LINUX-64-STATIC-NEXT: retq389;390; LINUX-32-STATIC-LABEL: foo02:391; LINUX-32-STATIC: # %bb.0: # %entry392; LINUX-32-STATIC-NEXT: movl src, %eax393; LINUX-32-STATIC-NEXT: movl ptr, %ecx394; LINUX-32-STATIC-NEXT: movl %eax, (%ecx)395; LINUX-32-STATIC-NEXT: retl396;397; LINUX-32-PIC-LABEL: foo02:398; LINUX-32-PIC: # %bb.0: # %entry399; LINUX-32-PIC-NEXT: calll .L4$pb400; LINUX-32-PIC-NEXT: .L4$pb:401; LINUX-32-PIC-NEXT: popl %eax402; LINUX-32-PIC-NEXT: .Ltmp4:403; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp4-.L4$pb), %eax404; LINUX-32-PIC-NEXT: movl src@GOT(%eax), %ecx405; LINUX-32-PIC-NEXT: movl (%ecx), %ecx406; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax407; LINUX-32-PIC-NEXT: movl (%eax), %eax408; LINUX-32-PIC-NEXT: movl %ecx, (%eax)409; LINUX-32-PIC-NEXT: retl410;411; LINUX-64-PIC-LABEL: foo02:412; LINUX-64-PIC: # %bb.0: # %entry413; LINUX-64-PIC-NEXT: movq src@GOTPCREL(%rip), %rax414; LINUX-64-PIC-NEXT: movl (%rax), %eax415; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx416; LINUX-64-PIC-NEXT: movq (%rcx), %rcx417; LINUX-64-PIC-NEXT: movl %eax, (%rcx)418; LINUX-64-PIC-NEXT: retq419;420; DARWIN-32-STATIC-LABEL: foo02:421; DARWIN-32-STATIC: ## %bb.0: ## %entry422; DARWIN-32-STATIC-NEXT: movl _src, %eax423; DARWIN-32-STATIC-NEXT: movl _ptr, %ecx424; DARWIN-32-STATIC-NEXT: movl %eax, (%ecx)425; DARWIN-32-STATIC-NEXT: retl426;427; DARWIN-32-DYNAMIC-LABEL: foo02:428; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry429; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %eax430; DARWIN-32-DYNAMIC-NEXT: movl (%eax), %eax431; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx432; DARWIN-32-DYNAMIC-NEXT: movl (%ecx), %ecx433; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx)434; DARWIN-32-DYNAMIC-NEXT: retl435;436; DARWIN-32-PIC-LABEL: foo02:437; DARWIN-32-PIC: ## %bb.0: ## %entry438; DARWIN-32-PIC-NEXT: calll L4$pb439; DARWIN-32-PIC-NEXT: L4$pb:440; DARWIN-32-PIC-NEXT: popl %eax441; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L4$pb(%eax), %ecx442; DARWIN-32-PIC-NEXT: movl (%ecx), %ecx443; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L4$pb(%eax), %eax444; DARWIN-32-PIC-NEXT: movl (%eax), %eax445; DARWIN-32-PIC-NEXT: movl %ecx, (%eax)446; DARWIN-32-PIC-NEXT: retl447;448; DARWIN-64-STATIC-LABEL: foo02:449; DARWIN-64-STATIC: ## %bb.0: ## %entry450; DARWIN-64-STATIC-NEXT: movq _src@GOTPCREL(%rip), %rax451; DARWIN-64-STATIC-NEXT: movl (%rax), %eax452; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx453; DARWIN-64-STATIC-NEXT: movq (%rcx), %rcx454; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx)455; DARWIN-64-STATIC-NEXT: retq456;457; DARWIN-64-DYNAMIC-LABEL: foo02:458; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry459; DARWIN-64-DYNAMIC-NEXT: movq _src@GOTPCREL(%rip), %rax460; DARWIN-64-DYNAMIC-NEXT: movl (%rax), %eax461; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx462; DARWIN-64-DYNAMIC-NEXT: movq (%rcx), %rcx463; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx)464; DARWIN-64-DYNAMIC-NEXT: retq465;466; DARWIN-64-PIC-LABEL: foo02:467; DARWIN-64-PIC: ## %bb.0: ## %entry468; DARWIN-64-PIC-NEXT: movq _src@GOTPCREL(%rip), %rax469; DARWIN-64-PIC-NEXT: movl (%rax), %eax470; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx471; DARWIN-64-PIC-NEXT: movq (%rcx), %rcx472; DARWIN-64-PIC-NEXT: movl %eax, (%rcx)473; DARWIN-64-PIC-NEXT: retq474 475entry:476 %0 = load ptr, ptr @ptr, align 8477 %1 = load i32, ptr @src, align 4478 store i32 %1, ptr %0, align 4479 ret void480}481 482define dso_local void @fxo02() nounwind {483; LINUX-64-STATIC-LABEL: fxo02:484; LINUX-64-STATIC: # %bb.0: # %entry485; LINUX-64-STATIC-NEXT: movq xsrc@GOTPCREL(%rip), %rax486; LINUX-64-STATIC-NEXT: movl (%rax), %eax487; LINUX-64-STATIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx488; LINUX-64-STATIC-NEXT: movq (%rcx), %rcx489; LINUX-64-STATIC-NEXT: movl %eax, (%rcx)490; LINUX-64-STATIC-NEXT: retq491;492; LINUX-32-STATIC-LABEL: fxo02:493; LINUX-32-STATIC: # %bb.0: # %entry494; LINUX-32-STATIC-NEXT: movl xsrc, %eax495; LINUX-32-STATIC-NEXT: movl ptr, %ecx496; LINUX-32-STATIC-NEXT: movl %eax, (%ecx)497; LINUX-32-STATIC-NEXT: retl498;499; LINUX-32-PIC-LABEL: fxo02:500; LINUX-32-PIC: # %bb.0: # %entry501; LINUX-32-PIC-NEXT: calll .L5$pb502; LINUX-32-PIC-NEXT: .L5$pb:503; LINUX-32-PIC-NEXT: popl %eax504; LINUX-32-PIC-NEXT: .Ltmp5:505; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp5-.L5$pb), %eax506; LINUX-32-PIC-NEXT: movl xsrc@GOT(%eax), %ecx507; LINUX-32-PIC-NEXT: movl (%ecx), %ecx508; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax509; LINUX-32-PIC-NEXT: movl (%eax), %eax510; LINUX-32-PIC-NEXT: movl %ecx, (%eax)511; LINUX-32-PIC-NEXT: retl512;513; LINUX-64-PIC-LABEL: fxo02:514; LINUX-64-PIC: # %bb.0: # %entry515; LINUX-64-PIC-NEXT: movq xsrc@GOTPCREL(%rip), %rax516; LINUX-64-PIC-NEXT: movl (%rax), %eax517; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx518; LINUX-64-PIC-NEXT: movq (%rcx), %rcx519; LINUX-64-PIC-NEXT: movl %eax, (%rcx)520; LINUX-64-PIC-NEXT: retq521;522; DARWIN-32-STATIC-LABEL: fxo02:523; DARWIN-32-STATIC: ## %bb.0: ## %entry524; DARWIN-32-STATIC-NEXT: movl _xsrc, %eax525; DARWIN-32-STATIC-NEXT: movl _ptr, %ecx526; DARWIN-32-STATIC-NEXT: movl %eax, (%ecx)527; DARWIN-32-STATIC-NEXT: retl528;529; DARWIN-32-DYNAMIC-LABEL: fxo02:530; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry531; DARWIN-32-DYNAMIC-NEXT: movl L_xsrc$non_lazy_ptr, %eax532; DARWIN-32-DYNAMIC-NEXT: movl (%eax), %eax533; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx534; DARWIN-32-DYNAMIC-NEXT: movl (%ecx), %ecx535; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx)536; DARWIN-32-DYNAMIC-NEXT: retl537;538; DARWIN-32-PIC-LABEL: fxo02:539; DARWIN-32-PIC: ## %bb.0: ## %entry540; DARWIN-32-PIC-NEXT: calll L5$pb541; DARWIN-32-PIC-NEXT: L5$pb:542; DARWIN-32-PIC-NEXT: popl %eax543; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-L5$pb(%eax), %ecx544; DARWIN-32-PIC-NEXT: movl (%ecx), %ecx545; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L5$pb(%eax), %eax546; DARWIN-32-PIC-NEXT: movl (%eax), %eax547; DARWIN-32-PIC-NEXT: movl %ecx, (%eax)548; DARWIN-32-PIC-NEXT: retl549;550; DARWIN-64-STATIC-LABEL: fxo02:551; DARWIN-64-STATIC: ## %bb.0: ## %entry552; DARWIN-64-STATIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax553; DARWIN-64-STATIC-NEXT: movl (%rax), %eax554; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx555; DARWIN-64-STATIC-NEXT: movq (%rcx), %rcx556; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx)557; DARWIN-64-STATIC-NEXT: retq558;559; DARWIN-64-DYNAMIC-LABEL: fxo02:560; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry561; DARWIN-64-DYNAMIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax562; DARWIN-64-DYNAMIC-NEXT: movl (%rax), %eax563; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx564; DARWIN-64-DYNAMIC-NEXT: movq (%rcx), %rcx565; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx)566; DARWIN-64-DYNAMIC-NEXT: retq567;568; DARWIN-64-PIC-LABEL: fxo02:569; DARWIN-64-PIC: ## %bb.0: ## %entry570; DARWIN-64-PIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax571; DARWIN-64-PIC-NEXT: movl (%rax), %eax572; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx573; DARWIN-64-PIC-NEXT: movq (%rcx), %rcx574; DARWIN-64-PIC-NEXT: movl %eax, (%rcx)575; DARWIN-64-PIC-NEXT: retq576 577entry:578 %0 = load ptr, ptr @ptr, align 8579 %1 = load i32, ptr @xsrc, align 4580 store i32 %1, ptr %0, align 4581 ret void582}583 584define dso_local void @foo03() nounwind {585; LINUX-64-STATIC-LABEL: foo03:586; LINUX-64-STATIC: # %bb.0: # %entry587; LINUX-64-STATIC-NEXT: movl dsrc(%rip), %eax588; LINUX-64-STATIC-NEXT: movl %eax, ddst(%rip)589; LINUX-64-STATIC-NEXT: retq590;591; LINUX-32-STATIC-LABEL: foo03:592; LINUX-32-STATIC: # %bb.0: # %entry593; LINUX-32-STATIC-NEXT: movl dsrc, %eax594; LINUX-32-STATIC-NEXT: movl %eax, ddst595; LINUX-32-STATIC-NEXT: retl596;597; LINUX-32-PIC-LABEL: foo03:598; LINUX-32-PIC: # %bb.0: # %entry599; LINUX-32-PIC-NEXT: calll .L6$pb600; LINUX-32-PIC-NEXT: .L6$pb:601; LINUX-32-PIC-NEXT: popl %eax602; LINUX-32-PIC-NEXT: .Ltmp6:603; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp6-.L6$pb), %eax604; LINUX-32-PIC-NEXT: movl .Ldsrc$local@GOTOFF(%eax), %ecx605; LINUX-32-PIC-NEXT: movl %ecx, .Lddst$local@GOTOFF(%eax)606; LINUX-32-PIC-NEXT: retl607;608; LINUX-64-PIC-LABEL: foo03:609; LINUX-64-PIC: # %bb.0: # %entry610; LINUX-64-PIC-NEXT: movl .Ldsrc$local(%rip), %eax611; LINUX-64-PIC-NEXT: movl %eax, .Lddst$local(%rip)612; LINUX-64-PIC-NEXT: retq613;614; DARWIN-32-STATIC-LABEL: foo03:615; DARWIN-32-STATIC: ## %bb.0: ## %entry616; DARWIN-32-STATIC-NEXT: movl _dsrc, %eax617; DARWIN-32-STATIC-NEXT: movl %eax, _ddst618; DARWIN-32-STATIC-NEXT: retl619;620; DARWIN-32-DYNAMIC-LABEL: foo03:621; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry622; DARWIN-32-DYNAMIC-NEXT: movl _dsrc, %eax623; DARWIN-32-DYNAMIC-NEXT: movl %eax, _ddst624; DARWIN-32-DYNAMIC-NEXT: retl625;626; DARWIN-32-PIC-LABEL: foo03:627; DARWIN-32-PIC: ## %bb.0: ## %entry628; DARWIN-32-PIC-NEXT: calll L6$pb629; DARWIN-32-PIC-NEXT: L6$pb:630; DARWIN-32-PIC-NEXT: popl %eax631; DARWIN-32-PIC-NEXT: movl _dsrc-L6$pb(%eax), %ecx632; DARWIN-32-PIC-NEXT: movl %ecx, _ddst-L6$pb(%eax)633; DARWIN-32-PIC-NEXT: retl634;635; DARWIN-64-STATIC-LABEL: foo03:636; DARWIN-64-STATIC: ## %bb.0: ## %entry637; DARWIN-64-STATIC-NEXT: movl _dsrc(%rip), %eax638; DARWIN-64-STATIC-NEXT: movl %eax, _ddst(%rip)639; DARWIN-64-STATIC-NEXT: retq640;641; DARWIN-64-DYNAMIC-LABEL: foo03:642; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry643; DARWIN-64-DYNAMIC-NEXT: movl _dsrc(%rip), %eax644; DARWIN-64-DYNAMIC-NEXT: movl %eax, _ddst(%rip)645; DARWIN-64-DYNAMIC-NEXT: retq646;647; DARWIN-64-PIC-LABEL: foo03:648; DARWIN-64-PIC: ## %bb.0: ## %entry649; DARWIN-64-PIC-NEXT: movl _dsrc(%rip), %eax650; DARWIN-64-PIC-NEXT: movl %eax, _ddst(%rip)651; DARWIN-64-PIC-NEXT: retq652 653entry:654 %0 = load i32, ptr @dsrc, align 32655 store i32 %0, ptr @ddst, align 32656 ret void657}658 659define dso_local void @foo04() nounwind {660; LINUX-64-STATIC-LABEL: foo04:661; LINUX-64-STATIC: # %bb.0: # %entry662; LINUX-64-STATIC-NEXT: movq $ddst, dptr(%rip)663; LINUX-64-STATIC-NEXT: retq664;665; LINUX-32-STATIC-LABEL: foo04:666; LINUX-32-STATIC: # %bb.0: # %entry667; LINUX-32-STATIC-NEXT: movl $ddst, dptr668; LINUX-32-STATIC-NEXT: retl669;670; LINUX-32-PIC-LABEL: foo04:671; LINUX-32-PIC: # %bb.0: # %entry672; LINUX-32-PIC-NEXT: calll .L7$pb673; LINUX-32-PIC-NEXT: .L7$pb:674; LINUX-32-PIC-NEXT: popl %eax675; LINUX-32-PIC-NEXT: .Ltmp7:676; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp7-.L7$pb), %eax677; LINUX-32-PIC-NEXT: leal .Lddst$local@GOTOFF(%eax), %ecx678; LINUX-32-PIC-NEXT: movl %ecx, .Ldptr$local@GOTOFF(%eax)679; LINUX-32-PIC-NEXT: retl680;681; LINUX-64-PIC-LABEL: foo04:682; LINUX-64-PIC: # %bb.0: # %entry683; LINUX-64-PIC-NEXT: leaq .Lddst$local(%rip), %rax684; LINUX-64-PIC-NEXT: movq %rax, .Ldptr$local(%rip)685; LINUX-64-PIC-NEXT: retq686;687; DARWIN-32-STATIC-LABEL: foo04:688; DARWIN-32-STATIC: ## %bb.0: ## %entry689; DARWIN-32-STATIC-NEXT: movl $_ddst, _dptr690; DARWIN-32-STATIC-NEXT: retl691;692; DARWIN-32-DYNAMIC-LABEL: foo04:693; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry694; DARWIN-32-DYNAMIC-NEXT: movl $_ddst, _dptr695; DARWIN-32-DYNAMIC-NEXT: retl696;697; DARWIN-32-PIC-LABEL: foo04:698; DARWIN-32-PIC: ## %bb.0: ## %entry699; DARWIN-32-PIC-NEXT: calll L7$pb700; DARWIN-32-PIC-NEXT: L7$pb:701; DARWIN-32-PIC-NEXT: popl %eax702; DARWIN-32-PIC-NEXT: leal _ddst-L7$pb(%eax), %ecx703; DARWIN-32-PIC-NEXT: movl %ecx, _dptr-L7$pb(%eax)704; DARWIN-32-PIC-NEXT: retl705;706; DARWIN-64-STATIC-LABEL: foo04:707; DARWIN-64-STATIC: ## %bb.0: ## %entry708; DARWIN-64-STATIC-NEXT: leaq _ddst(%rip), %rax709; DARWIN-64-STATIC-NEXT: movq %rax, _dptr(%rip)710; DARWIN-64-STATIC-NEXT: retq711;712; DARWIN-64-DYNAMIC-LABEL: foo04:713; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry714; DARWIN-64-DYNAMIC-NEXT: leaq _ddst(%rip), %rax715; DARWIN-64-DYNAMIC-NEXT: movq %rax, _dptr(%rip)716; DARWIN-64-DYNAMIC-NEXT: retq717;718; DARWIN-64-PIC-LABEL: foo04:719; DARWIN-64-PIC: ## %bb.0: ## %entry720; DARWIN-64-PIC-NEXT: leaq _ddst(%rip), %rax721; DARWIN-64-PIC-NEXT: movq %rax, _dptr(%rip)722; DARWIN-64-PIC-NEXT: retq723 724entry:725 store ptr @ddst, ptr @dptr, align 8726 ret void727}728 729define dso_local void @foo05() nounwind {730; LINUX-64-STATIC-LABEL: foo05:731; LINUX-64-STATIC: # %bb.0: # %entry732; LINUX-64-STATIC-NEXT: movl dsrc(%rip), %eax733; LINUX-64-STATIC-NEXT: movq dptr(%rip), %rcx734; LINUX-64-STATIC-NEXT: movl %eax, (%rcx)735; LINUX-64-STATIC-NEXT: retq736;737; LINUX-32-STATIC-LABEL: foo05:738; LINUX-32-STATIC: # %bb.0: # %entry739; LINUX-32-STATIC-NEXT: movl dsrc, %eax740; LINUX-32-STATIC-NEXT: movl dptr, %ecx741; LINUX-32-STATIC-NEXT: movl %eax, (%ecx)742; LINUX-32-STATIC-NEXT: retl743;744; LINUX-32-PIC-LABEL: foo05:745; LINUX-32-PIC: # %bb.0: # %entry746; LINUX-32-PIC-NEXT: calll .L8$pb747; LINUX-32-PIC-NEXT: .L8$pb:748; LINUX-32-PIC-NEXT: popl %eax749; LINUX-32-PIC-NEXT: .Ltmp8:750; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp8-.L8$pb), %eax751; LINUX-32-PIC-NEXT: movl .Ldsrc$local@GOTOFF(%eax), %ecx752; LINUX-32-PIC-NEXT: movl .Ldptr$local@GOTOFF(%eax), %eax753; LINUX-32-PIC-NEXT: movl %ecx, (%eax)754; LINUX-32-PIC-NEXT: retl755;756; LINUX-64-PIC-LABEL: foo05:757; LINUX-64-PIC: # %bb.0: # %entry758; LINUX-64-PIC-NEXT: movl .Ldsrc$local(%rip), %eax759; LINUX-64-PIC-NEXT: movq .Ldptr$local(%rip), %rcx760; LINUX-64-PIC-NEXT: movl %eax, (%rcx)761; LINUX-64-PIC-NEXT: retq762;763; DARWIN-32-STATIC-LABEL: foo05:764; DARWIN-32-STATIC: ## %bb.0: ## %entry765; DARWIN-32-STATIC-NEXT: movl _dsrc, %eax766; DARWIN-32-STATIC-NEXT: movl _dptr, %ecx767; DARWIN-32-STATIC-NEXT: movl %eax, (%ecx)768; DARWIN-32-STATIC-NEXT: retl769;770; DARWIN-32-DYNAMIC-LABEL: foo05:771; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry772; DARWIN-32-DYNAMIC-NEXT: movl _dsrc, %eax773; DARWIN-32-DYNAMIC-NEXT: movl _dptr, %ecx774; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx)775; DARWIN-32-DYNAMIC-NEXT: retl776;777; DARWIN-32-PIC-LABEL: foo05:778; DARWIN-32-PIC: ## %bb.0: ## %entry779; DARWIN-32-PIC-NEXT: calll L8$pb780; DARWIN-32-PIC-NEXT: L8$pb:781; DARWIN-32-PIC-NEXT: popl %eax782; DARWIN-32-PIC-NEXT: movl _dsrc-L8$pb(%eax), %ecx783; DARWIN-32-PIC-NEXT: movl _dptr-L8$pb(%eax), %eax784; DARWIN-32-PIC-NEXT: movl %ecx, (%eax)785; DARWIN-32-PIC-NEXT: retl786;787; DARWIN-64-STATIC-LABEL: foo05:788; DARWIN-64-STATIC: ## %bb.0: ## %entry789; DARWIN-64-STATIC-NEXT: movl _dsrc(%rip), %eax790; DARWIN-64-STATIC-NEXT: movq _dptr(%rip), %rcx791; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx)792; DARWIN-64-STATIC-NEXT: retq793;794; DARWIN-64-DYNAMIC-LABEL: foo05:795; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry796; DARWIN-64-DYNAMIC-NEXT: movl _dsrc(%rip), %eax797; DARWIN-64-DYNAMIC-NEXT: movq _dptr(%rip), %rcx798; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx)799; DARWIN-64-DYNAMIC-NEXT: retq800;801; DARWIN-64-PIC-LABEL: foo05:802; DARWIN-64-PIC: ## %bb.0: ## %entry803; DARWIN-64-PIC-NEXT: movl _dsrc(%rip), %eax804; DARWIN-64-PIC-NEXT: movq _dptr(%rip), %rcx805; DARWIN-64-PIC-NEXT: movl %eax, (%rcx)806; DARWIN-64-PIC-NEXT: retq807 808entry:809 %0 = load ptr, ptr @dptr, align 8810 %1 = load i32, ptr @dsrc, align 32811 store i32 %1, ptr %0, align 4812 ret void813}814 815define dso_local void @foo06() nounwind {816; LINUX-64-STATIC-LABEL: foo06:817; LINUX-64-STATIC: # %bb.0: # %entry818; LINUX-64-STATIC-NEXT: movl lsrc(%rip), %eax819; LINUX-64-STATIC-NEXT: movl %eax, ldst(%rip)820; LINUX-64-STATIC-NEXT: retq821;822; LINUX-32-STATIC-LABEL: foo06:823; LINUX-32-STATIC: # %bb.0: # %entry824; LINUX-32-STATIC-NEXT: movl lsrc, %eax825; LINUX-32-STATIC-NEXT: movl %eax, ldst826; LINUX-32-STATIC-NEXT: retl827;828; LINUX-32-PIC-LABEL: foo06:829; LINUX-32-PIC: # %bb.0: # %entry830; LINUX-32-PIC-NEXT: calll .L9$pb831; LINUX-32-PIC-NEXT: .L9$pb:832; LINUX-32-PIC-NEXT: popl %eax833; LINUX-32-PIC-NEXT: .Ltmp9:834; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp9-.L9$pb), %eax835; LINUX-32-PIC-NEXT: movl lsrc@GOTOFF(%eax), %ecx836; LINUX-32-PIC-NEXT: movl %ecx, ldst@GOTOFF(%eax)837; LINUX-32-PIC-NEXT: retl838;839; LINUX-64-PIC-LABEL: foo06:840; LINUX-64-PIC: # %bb.0: # %entry841; LINUX-64-PIC-NEXT: movl lsrc(%rip), %eax842; LINUX-64-PIC-NEXT: movl %eax, ldst(%rip)843; LINUX-64-PIC-NEXT: retq844;845; DARWIN-32-STATIC-LABEL: foo06:846; DARWIN-32-STATIC: ## %bb.0: ## %entry847; DARWIN-32-STATIC-NEXT: movl _lsrc, %eax848; DARWIN-32-STATIC-NEXT: movl %eax, _ldst849; DARWIN-32-STATIC-NEXT: retl850;851; DARWIN-32-DYNAMIC-LABEL: foo06:852; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry853; DARWIN-32-DYNAMIC-NEXT: movl _lsrc, %eax854; DARWIN-32-DYNAMIC-NEXT: movl %eax, _ldst855; DARWIN-32-DYNAMIC-NEXT: retl856;857; DARWIN-32-PIC-LABEL: foo06:858; DARWIN-32-PIC: ## %bb.0: ## %entry859; DARWIN-32-PIC-NEXT: calll L9$pb860; DARWIN-32-PIC-NEXT: L9$pb:861; DARWIN-32-PIC-NEXT: popl %eax862; DARWIN-32-PIC-NEXT: movl _lsrc-L9$pb(%eax), %ecx863; DARWIN-32-PIC-NEXT: movl %ecx, _ldst-L9$pb(%eax)864; DARWIN-32-PIC-NEXT: retl865;866; DARWIN-64-STATIC-LABEL: foo06:867; DARWIN-64-STATIC: ## %bb.0: ## %entry868; DARWIN-64-STATIC-NEXT: movl _lsrc(%rip), %eax869; DARWIN-64-STATIC-NEXT: movl %eax, _ldst(%rip)870; DARWIN-64-STATIC-NEXT: retq871;872; DARWIN-64-DYNAMIC-LABEL: foo06:873; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry874; DARWIN-64-DYNAMIC-NEXT: movl _lsrc(%rip), %eax875; DARWIN-64-DYNAMIC-NEXT: movl %eax, _ldst(%rip)876; DARWIN-64-DYNAMIC-NEXT: retq877;878; DARWIN-64-PIC-LABEL: foo06:879; DARWIN-64-PIC: ## %bb.0: ## %entry880; DARWIN-64-PIC-NEXT: movl _lsrc(%rip), %eax881; DARWIN-64-PIC-NEXT: movl %eax, _ldst(%rip)882; DARWIN-64-PIC-NEXT: retq883 884entry:885 %0 = load i32, ptr @lsrc, align 4886 store i32 %0, ptr @ldst, align 4887 ret void888}889 890define dso_local void @foo07() nounwind {891; LINUX-64-STATIC-LABEL: foo07:892; LINUX-64-STATIC: # %bb.0: # %entry893; LINUX-64-STATIC-NEXT: movq $ldst, lptr(%rip)894; LINUX-64-STATIC-NEXT: retq895;896; LINUX-32-STATIC-LABEL: foo07:897; LINUX-32-STATIC: # %bb.0: # %entry898; LINUX-32-STATIC-NEXT: movl $ldst, lptr899; LINUX-32-STATIC-NEXT: retl900;901; LINUX-32-PIC-LABEL: foo07:902; LINUX-32-PIC: # %bb.0: # %entry903; LINUX-32-PIC-NEXT: calll .L10$pb904; LINUX-32-PIC-NEXT: .L10$pb:905; LINUX-32-PIC-NEXT: popl %eax906; LINUX-32-PIC-NEXT: .Ltmp10:907; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp10-.L10$pb), %eax908; LINUX-32-PIC-NEXT: leal ldst@GOTOFF(%eax), %ecx909; LINUX-32-PIC-NEXT: movl %ecx, lptr@GOTOFF(%eax)910; LINUX-32-PIC-NEXT: retl911;912; LINUX-64-PIC-LABEL: foo07:913; LINUX-64-PIC: # %bb.0: # %entry914; LINUX-64-PIC-NEXT: leaq ldst(%rip), %rax915; LINUX-64-PIC-NEXT: movq %rax, lptr(%rip)916; LINUX-64-PIC-NEXT: retq917;918; DARWIN-32-STATIC-LABEL: foo07:919; DARWIN-32-STATIC: ## %bb.0: ## %entry920; DARWIN-32-STATIC-NEXT: movl $_ldst, _lptr921; DARWIN-32-STATIC-NEXT: retl922;923; DARWIN-32-DYNAMIC-LABEL: foo07:924; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry925; DARWIN-32-DYNAMIC-NEXT: movl $_ldst, _lptr926; DARWIN-32-DYNAMIC-NEXT: retl927;928; DARWIN-32-PIC-LABEL: foo07:929; DARWIN-32-PIC: ## %bb.0: ## %entry930; DARWIN-32-PIC-NEXT: calll L10$pb931; DARWIN-32-PIC-NEXT: L10$pb:932; DARWIN-32-PIC-NEXT: popl %eax933; DARWIN-32-PIC-NEXT: leal _ldst-L10$pb(%eax), %ecx934; DARWIN-32-PIC-NEXT: movl %ecx, _lptr-L10$pb(%eax)935; DARWIN-32-PIC-NEXT: retl936;937; DARWIN-64-STATIC-LABEL: foo07:938; DARWIN-64-STATIC: ## %bb.0: ## %entry939; DARWIN-64-STATIC-NEXT: leaq _ldst(%rip), %rax940; DARWIN-64-STATIC-NEXT: movq %rax, _lptr(%rip)941; DARWIN-64-STATIC-NEXT: retq942;943; DARWIN-64-DYNAMIC-LABEL: foo07:944; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry945; DARWIN-64-DYNAMIC-NEXT: leaq _ldst(%rip), %rax946; DARWIN-64-DYNAMIC-NEXT: movq %rax, _lptr(%rip)947; DARWIN-64-DYNAMIC-NEXT: retq948;949; DARWIN-64-PIC-LABEL: foo07:950; DARWIN-64-PIC: ## %bb.0: ## %entry951; DARWIN-64-PIC-NEXT: leaq _ldst(%rip), %rax952; DARWIN-64-PIC-NEXT: movq %rax, _lptr(%rip)953; DARWIN-64-PIC-NEXT: retq954 955entry:956 store ptr @ldst, ptr @lptr, align 8957 ret void958}959 960define dso_local void @foo08() nounwind {961; LINUX-64-STATIC-LABEL: foo08:962; LINUX-64-STATIC: # %bb.0: # %entry963; LINUX-64-STATIC-NEXT: movl lsrc(%rip), %eax964; LINUX-64-STATIC-NEXT: movq lptr(%rip), %rcx965; LINUX-64-STATIC-NEXT: movl %eax, (%rcx)966; LINUX-64-STATIC-NEXT: retq967;968; LINUX-32-STATIC-LABEL: foo08:969; LINUX-32-STATIC: # %bb.0: # %entry970; LINUX-32-STATIC-NEXT: movl lsrc, %eax971; LINUX-32-STATIC-NEXT: movl lptr, %ecx972; LINUX-32-STATIC-NEXT: movl %eax, (%ecx)973; LINUX-32-STATIC-NEXT: retl974;975; LINUX-32-PIC-LABEL: foo08:976; LINUX-32-PIC: # %bb.0: # %entry977; LINUX-32-PIC-NEXT: calll .L11$pb978; LINUX-32-PIC-NEXT: .L11$pb:979; LINUX-32-PIC-NEXT: popl %eax980; LINUX-32-PIC-NEXT: .Ltmp11:981; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp11-.L11$pb), %eax982; LINUX-32-PIC-NEXT: movl lsrc@GOTOFF(%eax), %ecx983; LINUX-32-PIC-NEXT: movl lptr@GOTOFF(%eax), %eax984; LINUX-32-PIC-NEXT: movl %ecx, (%eax)985; LINUX-32-PIC-NEXT: retl986;987; LINUX-64-PIC-LABEL: foo08:988; LINUX-64-PIC: # %bb.0: # %entry989; LINUX-64-PIC-NEXT: movl lsrc(%rip), %eax990; LINUX-64-PIC-NEXT: movq lptr(%rip), %rcx991; LINUX-64-PIC-NEXT: movl %eax, (%rcx)992; LINUX-64-PIC-NEXT: retq993;994; DARWIN-32-STATIC-LABEL: foo08:995; DARWIN-32-STATIC: ## %bb.0: ## %entry996; DARWIN-32-STATIC-NEXT: movl _lsrc, %eax997; DARWIN-32-STATIC-NEXT: movl _lptr, %ecx998; DARWIN-32-STATIC-NEXT: movl %eax, (%ecx)999; DARWIN-32-STATIC-NEXT: retl1000;1001; DARWIN-32-DYNAMIC-LABEL: foo08:1002; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry1003; DARWIN-32-DYNAMIC-NEXT: movl _lsrc, %eax1004; DARWIN-32-DYNAMIC-NEXT: movl _lptr, %ecx1005; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx)1006; DARWIN-32-DYNAMIC-NEXT: retl1007;1008; DARWIN-32-PIC-LABEL: foo08:1009; DARWIN-32-PIC: ## %bb.0: ## %entry1010; DARWIN-32-PIC-NEXT: calll L11$pb1011; DARWIN-32-PIC-NEXT: L11$pb:1012; DARWIN-32-PIC-NEXT: popl %eax1013; DARWIN-32-PIC-NEXT: movl _lsrc-L11$pb(%eax), %ecx1014; DARWIN-32-PIC-NEXT: movl _lptr-L11$pb(%eax), %eax1015; DARWIN-32-PIC-NEXT: movl %ecx, (%eax)1016; DARWIN-32-PIC-NEXT: retl1017;1018; DARWIN-64-STATIC-LABEL: foo08:1019; DARWIN-64-STATIC: ## %bb.0: ## %entry1020; DARWIN-64-STATIC-NEXT: movl _lsrc(%rip), %eax1021; DARWIN-64-STATIC-NEXT: movq _lptr(%rip), %rcx1022; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx)1023; DARWIN-64-STATIC-NEXT: retq1024;1025; DARWIN-64-DYNAMIC-LABEL: foo08:1026; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry1027; DARWIN-64-DYNAMIC-NEXT: movl _lsrc(%rip), %eax1028; DARWIN-64-DYNAMIC-NEXT: movq _lptr(%rip), %rcx1029; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx)1030; DARWIN-64-DYNAMIC-NEXT: retq1031;1032; DARWIN-64-PIC-LABEL: foo08:1033; DARWIN-64-PIC: ## %bb.0: ## %entry1034; DARWIN-64-PIC-NEXT: movl _lsrc(%rip), %eax1035; DARWIN-64-PIC-NEXT: movq _lptr(%rip), %rcx1036; DARWIN-64-PIC-NEXT: movl %eax, (%rcx)1037; DARWIN-64-PIC-NEXT: retq1038 1039entry:1040 %0 = load ptr, ptr @lptr, align 81041 %1 = load i32, ptr @lsrc, align 41042 store i32 %1, ptr %0, align 41043 ret void1044}1045 1046define dso_local void @qux00() nounwind {1047; LINUX-64-STATIC-LABEL: qux00:1048; LINUX-64-STATIC: # %bb.0: # %entry1049; LINUX-64-STATIC-NEXT: movq src@GOTPCREL(%rip), %rax1050; LINUX-64-STATIC-NEXT: movl 64(%rax), %eax1051; LINUX-64-STATIC-NEXT: movq dst@GOTPCREL(%rip), %rcx1052; LINUX-64-STATIC-NEXT: movl %eax, 64(%rcx)1053; LINUX-64-STATIC-NEXT: retq1054;1055; LINUX-32-STATIC-LABEL: qux00:1056; LINUX-32-STATIC: # %bb.0: # %entry1057; LINUX-32-STATIC-NEXT: movl src+64, %eax1058; LINUX-32-STATIC-NEXT: movl %eax, dst+641059; LINUX-32-STATIC-NEXT: retl1060;1061; LINUX-32-PIC-LABEL: qux00:1062; LINUX-32-PIC: # %bb.0: # %entry1063; LINUX-32-PIC-NEXT: calll .L12$pb1064; LINUX-32-PIC-NEXT: .L12$pb:1065; LINUX-32-PIC-NEXT: popl %eax1066; LINUX-32-PIC-NEXT: .Ltmp12:1067; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp12-.L12$pb), %eax1068; LINUX-32-PIC-NEXT: movl src@GOT(%eax), %ecx1069; LINUX-32-PIC-NEXT: movl 64(%ecx), %ecx1070; LINUX-32-PIC-NEXT: movl dst@GOT(%eax), %eax1071; LINUX-32-PIC-NEXT: movl %ecx, 64(%eax)1072; LINUX-32-PIC-NEXT: retl1073;1074; LINUX-64-PIC-LABEL: qux00:1075; LINUX-64-PIC: # %bb.0: # %entry1076; LINUX-64-PIC-NEXT: movq src@GOTPCREL(%rip), %rax1077; LINUX-64-PIC-NEXT: movl 64(%rax), %eax1078; LINUX-64-PIC-NEXT: movq dst@GOTPCREL(%rip), %rcx1079; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx)1080; LINUX-64-PIC-NEXT: retq1081;1082; DARWIN-32-STATIC-LABEL: qux00:1083; DARWIN-32-STATIC: ## %bb.0: ## %entry1084; DARWIN-32-STATIC-NEXT: movl _src+64, %eax1085; DARWIN-32-STATIC-NEXT: movl %eax, _dst+641086; DARWIN-32-STATIC-NEXT: retl1087;1088; DARWIN-32-DYNAMIC-LABEL: qux00:1089; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry1090; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %eax1091; DARWIN-32-DYNAMIC-NEXT: movl 64(%eax), %eax1092; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, %ecx1093; DARWIN-32-DYNAMIC-NEXT: movl %eax, 64(%ecx)1094; DARWIN-32-DYNAMIC-NEXT: retl1095;1096; DARWIN-32-PIC-LABEL: qux00:1097; DARWIN-32-PIC: ## %bb.0: ## %entry1098; DARWIN-32-PIC-NEXT: calll L12$pb1099; DARWIN-32-PIC-NEXT: L12$pb:1100; DARWIN-32-PIC-NEXT: popl %eax1101; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L12$pb(%eax), %ecx1102; DARWIN-32-PIC-NEXT: movl 64(%ecx), %ecx1103; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L12$pb(%eax), %eax1104; DARWIN-32-PIC-NEXT: movl %ecx, 64(%eax)1105; DARWIN-32-PIC-NEXT: retl1106;1107; DARWIN-64-STATIC-LABEL: qux00:1108; DARWIN-64-STATIC: ## %bb.0: ## %entry1109; DARWIN-64-STATIC-NEXT: movq _src@GOTPCREL(%rip), %rax1110; DARWIN-64-STATIC-NEXT: movl 64(%rax), %eax1111; DARWIN-64-STATIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx1112; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx)1113; DARWIN-64-STATIC-NEXT: retq1114;1115; DARWIN-64-DYNAMIC-LABEL: qux00:1116; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry1117; DARWIN-64-DYNAMIC-NEXT: movq _src@GOTPCREL(%rip), %rax1118; DARWIN-64-DYNAMIC-NEXT: movl 64(%rax), %eax1119; DARWIN-64-DYNAMIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx1120; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx)1121; DARWIN-64-DYNAMIC-NEXT: retq1122;1123; DARWIN-64-PIC-LABEL: qux00:1124; DARWIN-64-PIC: ## %bb.0: ## %entry1125; DARWIN-64-PIC-NEXT: movq _src@GOTPCREL(%rip), %rax1126; DARWIN-64-PIC-NEXT: movl 64(%rax), %eax1127; DARWIN-64-PIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx1128; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx)1129; DARWIN-64-PIC-NEXT: retq1130 1131entry:1132 %0 = load i32, ptr getelementptr ([131072 x i32], ptr @src, i32 0, i64 16), align 41133 store i32 %0, ptr getelementptr ([131072 x i32], ptr @dst, i32 0, i64 16), align 41134 ret void1135}1136 1137define dso_local void @qxx00() nounwind {1138; LINUX-64-STATIC-LABEL: qxx00:1139; LINUX-64-STATIC: # %bb.0: # %entry1140; LINUX-64-STATIC-NEXT: movq xsrc@GOTPCREL(%rip), %rax1141; LINUX-64-STATIC-NEXT: movl 64(%rax), %eax1142; LINUX-64-STATIC-NEXT: movq xdst@GOTPCREL(%rip), %rcx1143; LINUX-64-STATIC-NEXT: movl %eax, 64(%rcx)1144; LINUX-64-STATIC-NEXT: retq1145;1146; LINUX-32-STATIC-LABEL: qxx00:1147; LINUX-32-STATIC: # %bb.0: # %entry1148; LINUX-32-STATIC-NEXT: movl xsrc+64, %eax1149; LINUX-32-STATIC-NEXT: movl %eax, xdst+641150; LINUX-32-STATIC-NEXT: retl1151;1152; LINUX-32-PIC-LABEL: qxx00:1153; LINUX-32-PIC: # %bb.0: # %entry1154; LINUX-32-PIC-NEXT: calll .L13$pb1155; LINUX-32-PIC-NEXT: .L13$pb:1156; LINUX-32-PIC-NEXT: popl %eax1157; LINUX-32-PIC-NEXT: .Ltmp13:1158; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp13-.L13$pb), %eax1159; LINUX-32-PIC-NEXT: movl xsrc@GOT(%eax), %ecx1160; LINUX-32-PIC-NEXT: movl 64(%ecx), %ecx1161; LINUX-32-PIC-NEXT: movl xdst@GOT(%eax), %eax1162; LINUX-32-PIC-NEXT: movl %ecx, 64(%eax)1163; LINUX-32-PIC-NEXT: retl1164;1165; LINUX-64-PIC-LABEL: qxx00:1166; LINUX-64-PIC: # %bb.0: # %entry1167; LINUX-64-PIC-NEXT: movq xsrc@GOTPCREL(%rip), %rax1168; LINUX-64-PIC-NEXT: movl 64(%rax), %eax1169; LINUX-64-PIC-NEXT: movq xdst@GOTPCREL(%rip), %rcx1170; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx)1171; LINUX-64-PIC-NEXT: retq1172;1173; DARWIN-32-STATIC-LABEL: qxx00:1174; DARWIN-32-STATIC: ## %bb.0: ## %entry1175; DARWIN-32-STATIC-NEXT: movl _xsrc+64, %eax1176; DARWIN-32-STATIC-NEXT: movl %eax, _xdst+641177; DARWIN-32-STATIC-NEXT: retl1178;1179; DARWIN-32-DYNAMIC-LABEL: qxx00:1180; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry1181; DARWIN-32-DYNAMIC-NEXT: movl L_xsrc$non_lazy_ptr, %eax1182; DARWIN-32-DYNAMIC-NEXT: movl 64(%eax), %eax1183; DARWIN-32-DYNAMIC-NEXT: movl L_xdst$non_lazy_ptr, %ecx1184; DARWIN-32-DYNAMIC-NEXT: movl %eax, 64(%ecx)1185; DARWIN-32-DYNAMIC-NEXT: retl1186;1187; DARWIN-32-PIC-LABEL: qxx00:1188; DARWIN-32-PIC: ## %bb.0: ## %entry1189; DARWIN-32-PIC-NEXT: calll L13$pb1190; DARWIN-32-PIC-NEXT: L13$pb:1191; DARWIN-32-PIC-NEXT: popl %eax1192; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-L13$pb(%eax), %ecx1193; DARWIN-32-PIC-NEXT: movl 64(%ecx), %ecx1194; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-L13$pb(%eax), %eax1195; DARWIN-32-PIC-NEXT: movl %ecx, 64(%eax)1196; DARWIN-32-PIC-NEXT: retl1197;1198; DARWIN-64-STATIC-LABEL: qxx00:1199; DARWIN-64-STATIC: ## %bb.0: ## %entry1200; DARWIN-64-STATIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax1201; DARWIN-64-STATIC-NEXT: movl 64(%rax), %eax1202; DARWIN-64-STATIC-NEXT: movq _xdst@GOTPCREL(%rip), %rcx1203; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx)1204; DARWIN-64-STATIC-NEXT: retq1205;1206; DARWIN-64-DYNAMIC-LABEL: qxx00:1207; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry1208; DARWIN-64-DYNAMIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax1209; DARWIN-64-DYNAMIC-NEXT: movl 64(%rax), %eax1210; DARWIN-64-DYNAMIC-NEXT: movq _xdst@GOTPCREL(%rip), %rcx1211; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx)1212; DARWIN-64-DYNAMIC-NEXT: retq1213;1214; DARWIN-64-PIC-LABEL: qxx00:1215; DARWIN-64-PIC: ## %bb.0: ## %entry1216; DARWIN-64-PIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax1217; DARWIN-64-PIC-NEXT: movl 64(%rax), %eax1218; DARWIN-64-PIC-NEXT: movq _xdst@GOTPCREL(%rip), %rcx1219; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx)1220; DARWIN-64-PIC-NEXT: retq1221 1222entry:1223 %0 = load i32, ptr getelementptr ([32 x i32], ptr @xsrc, i32 0, i64 16), align 41224 store i32 %0, ptr getelementptr ([32 x i32], ptr @xdst, i32 0, i64 16), align 41225 ret void1226}1227 1228define dso_local void @qux01() nounwind {1229; LINUX-64-STATIC-LABEL: qux01:1230; LINUX-64-STATIC: # %bb.0: # %entry1231; LINUX-64-STATIC-NEXT: movq dst@GOTPCREL(%rip), %rax1232; LINUX-64-STATIC-NEXT: addq $64, %rax1233; LINUX-64-STATIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx1234; LINUX-64-STATIC-NEXT: movq %rax, (%rcx)1235; LINUX-64-STATIC-NEXT: retq1236;1237; LINUX-32-STATIC-LABEL: qux01:1238; LINUX-32-STATIC: # %bb.0: # %entry1239; LINUX-32-STATIC-NEXT: leal dst+64, %eax1240; LINUX-32-STATIC-NEXT: movl %eax, ptr1241; LINUX-32-STATIC-NEXT: retl1242;1243; LINUX-32-PIC-LABEL: qux01:1244; LINUX-32-PIC: # %bb.0: # %entry1245; LINUX-32-PIC-NEXT: calll .L14$pb1246; LINUX-32-PIC-NEXT: .L14$pb:1247; LINUX-32-PIC-NEXT: popl %eax1248; LINUX-32-PIC-NEXT: .Ltmp14:1249; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp14-.L14$pb), %eax1250; LINUX-32-PIC-NEXT: movl dst@GOT(%eax), %ecx1251; LINUX-32-PIC-NEXT: addl $64, %ecx1252; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax1253; LINUX-32-PIC-NEXT: movl %ecx, (%eax)1254; LINUX-32-PIC-NEXT: retl1255;1256; LINUX-64-PIC-LABEL: qux01:1257; LINUX-64-PIC: # %bb.0: # %entry1258; LINUX-64-PIC-NEXT: movq dst@GOTPCREL(%rip), %rax1259; LINUX-64-PIC-NEXT: addq $64, %rax1260; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx1261; LINUX-64-PIC-NEXT: movq %rax, (%rcx)1262; LINUX-64-PIC-NEXT: retq1263;1264; DARWIN-32-STATIC-LABEL: qux01:1265; DARWIN-32-STATIC: ## %bb.0: ## %entry1266; DARWIN-32-STATIC-NEXT: movl $_dst+64, _ptr1267; DARWIN-32-STATIC-NEXT: retl1268;1269; DARWIN-32-DYNAMIC-LABEL: qux01:1270; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry1271; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, %eax1272; DARWIN-32-DYNAMIC-NEXT: addl $64, %eax1273; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx1274; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx)1275; DARWIN-32-DYNAMIC-NEXT: retl1276;1277; DARWIN-32-PIC-LABEL: qux01:1278; DARWIN-32-PIC: ## %bb.0: ## %entry1279; DARWIN-32-PIC-NEXT: calll L14$pb1280; DARWIN-32-PIC-NEXT: L14$pb:1281; DARWIN-32-PIC-NEXT: popl %eax1282; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L14$pb(%eax), %ecx1283; DARWIN-32-PIC-NEXT: addl $64, %ecx1284; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L14$pb(%eax), %eax1285; DARWIN-32-PIC-NEXT: movl %ecx, (%eax)1286; DARWIN-32-PIC-NEXT: retl1287;1288; DARWIN-64-STATIC-LABEL: qux01:1289; DARWIN-64-STATIC: ## %bb.0: ## %entry1290; DARWIN-64-STATIC-NEXT: movq _dst@GOTPCREL(%rip), %rax1291; DARWIN-64-STATIC-NEXT: addq $64, %rax1292; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx1293; DARWIN-64-STATIC-NEXT: movq %rax, (%rcx)1294; DARWIN-64-STATIC-NEXT: retq1295;1296; DARWIN-64-DYNAMIC-LABEL: qux01:1297; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry1298; DARWIN-64-DYNAMIC-NEXT: movq _dst@GOTPCREL(%rip), %rax1299; DARWIN-64-DYNAMIC-NEXT: addq $64, %rax1300; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx1301; DARWIN-64-DYNAMIC-NEXT: movq %rax, (%rcx)1302; DARWIN-64-DYNAMIC-NEXT: retq1303;1304; DARWIN-64-PIC-LABEL: qux01:1305; DARWIN-64-PIC: ## %bb.0: ## %entry1306; DARWIN-64-PIC-NEXT: movq _dst@GOTPCREL(%rip), %rax1307; DARWIN-64-PIC-NEXT: addq $64, %rax1308; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx1309; DARWIN-64-PIC-NEXT: movq %rax, (%rcx)1310; DARWIN-64-PIC-NEXT: retq1311 1312entry:1313 store ptr getelementptr ([131072 x i32], ptr @dst, i32 0, i64 16), ptr @ptr, align 81314 ret void1315}1316 1317define dso_local void @qxx01() nounwind {1318; LINUX-64-STATIC-LABEL: qxx01:1319; LINUX-64-STATIC: # %bb.0: # %entry1320; LINUX-64-STATIC-NEXT: movq xdst@GOTPCREL(%rip), %rax1321; LINUX-64-STATIC-NEXT: addq $64, %rax1322; LINUX-64-STATIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx1323; LINUX-64-STATIC-NEXT: movq %rax, (%rcx)1324; LINUX-64-STATIC-NEXT: retq1325;1326; LINUX-32-STATIC-LABEL: qxx01:1327; LINUX-32-STATIC: # %bb.0: # %entry1328; LINUX-32-STATIC-NEXT: leal xdst+64, %eax1329; LINUX-32-STATIC-NEXT: movl %eax, ptr1330; LINUX-32-STATIC-NEXT: retl1331;1332; LINUX-32-PIC-LABEL: qxx01:1333; LINUX-32-PIC: # %bb.0: # %entry1334; LINUX-32-PIC-NEXT: calll .L15$pb1335; LINUX-32-PIC-NEXT: .L15$pb:1336; LINUX-32-PIC-NEXT: popl %eax1337; LINUX-32-PIC-NEXT: .Ltmp15:1338; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp15-.L15$pb), %eax1339; LINUX-32-PIC-NEXT: movl xdst@GOT(%eax), %ecx1340; LINUX-32-PIC-NEXT: addl $64, %ecx1341; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax1342; LINUX-32-PIC-NEXT: movl %ecx, (%eax)1343; LINUX-32-PIC-NEXT: retl1344;1345; LINUX-64-PIC-LABEL: qxx01:1346; LINUX-64-PIC: # %bb.0: # %entry1347; LINUX-64-PIC-NEXT: movq xdst@GOTPCREL(%rip), %rax1348; LINUX-64-PIC-NEXT: addq $64, %rax1349; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx1350; LINUX-64-PIC-NEXT: movq %rax, (%rcx)1351; LINUX-64-PIC-NEXT: retq1352;1353; DARWIN-32-STATIC-LABEL: qxx01:1354; DARWIN-32-STATIC: ## %bb.0: ## %entry1355; DARWIN-32-STATIC-NEXT: movl $_xdst+64, _ptr1356; DARWIN-32-STATIC-NEXT: retl1357;1358; DARWIN-32-DYNAMIC-LABEL: qxx01:1359; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry1360; DARWIN-32-DYNAMIC-NEXT: movl L_xdst$non_lazy_ptr, %eax1361; DARWIN-32-DYNAMIC-NEXT: addl $64, %eax1362; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx1363; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx)1364; DARWIN-32-DYNAMIC-NEXT: retl1365;1366; DARWIN-32-PIC-LABEL: qxx01:1367; DARWIN-32-PIC: ## %bb.0: ## %entry1368; DARWIN-32-PIC-NEXT: calll L15$pb1369; DARWIN-32-PIC-NEXT: L15$pb:1370; DARWIN-32-PIC-NEXT: popl %eax1371; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-L15$pb(%eax), %ecx1372; DARWIN-32-PIC-NEXT: addl $64, %ecx1373; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L15$pb(%eax), %eax1374; DARWIN-32-PIC-NEXT: movl %ecx, (%eax)1375; DARWIN-32-PIC-NEXT: retl1376;1377; DARWIN-64-STATIC-LABEL: qxx01:1378; DARWIN-64-STATIC: ## %bb.0: ## %entry1379; DARWIN-64-STATIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax1380; DARWIN-64-STATIC-NEXT: addq $64, %rax1381; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx1382; DARWIN-64-STATIC-NEXT: movq %rax, (%rcx)1383; DARWIN-64-STATIC-NEXT: retq1384;1385; DARWIN-64-DYNAMIC-LABEL: qxx01:1386; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry1387; DARWIN-64-DYNAMIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax1388; DARWIN-64-DYNAMIC-NEXT: addq $64, %rax1389; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx1390; DARWIN-64-DYNAMIC-NEXT: movq %rax, (%rcx)1391; DARWIN-64-DYNAMIC-NEXT: retq1392;1393; DARWIN-64-PIC-LABEL: qxx01:1394; DARWIN-64-PIC: ## %bb.0: ## %entry1395; DARWIN-64-PIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax1396; DARWIN-64-PIC-NEXT: addq $64, %rax1397; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx1398; DARWIN-64-PIC-NEXT: movq %rax, (%rcx)1399; DARWIN-64-PIC-NEXT: retq1400 1401entry:1402 store ptr getelementptr ([32 x i32], ptr @xdst, i32 0, i64 16), ptr @ptr, align 81403 ret void1404}1405 1406define dso_local void @qux02() nounwind {1407; LINUX-64-STATIC-LABEL: qux02:1408; LINUX-64-STATIC: # %bb.0: # %entry1409; LINUX-64-STATIC-NEXT: movq src@GOTPCREL(%rip), %rax1410; LINUX-64-STATIC-NEXT: movl 64(%rax), %eax1411; LINUX-64-STATIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx1412; LINUX-64-STATIC-NEXT: movq (%rcx), %rcx1413; LINUX-64-STATIC-NEXT: movl %eax, 64(%rcx)1414; LINUX-64-STATIC-NEXT: retq1415;1416; LINUX-32-STATIC-LABEL: qux02:1417; LINUX-32-STATIC: # %bb.0: # %entry1418; LINUX-32-STATIC-NEXT: movl src+64, %eax1419; LINUX-32-STATIC-NEXT: movl ptr, %ecx1420; LINUX-32-STATIC-NEXT: movl %eax, 64(%ecx)1421; LINUX-32-STATIC-NEXT: retl1422;1423; LINUX-32-PIC-LABEL: qux02:1424; LINUX-32-PIC: # %bb.0: # %entry1425; LINUX-32-PIC-NEXT: calll .L16$pb1426; LINUX-32-PIC-NEXT: .L16$pb:1427; LINUX-32-PIC-NEXT: popl %eax1428; LINUX-32-PIC-NEXT: .Ltmp16:1429; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp16-.L16$pb), %eax1430; LINUX-32-PIC-NEXT: movl src@GOT(%eax), %ecx1431; LINUX-32-PIC-NEXT: movl 64(%ecx), %ecx1432; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax1433; LINUX-32-PIC-NEXT: movl (%eax), %eax1434; LINUX-32-PIC-NEXT: movl %ecx, 64(%eax)1435; LINUX-32-PIC-NEXT: retl1436;1437; LINUX-64-PIC-LABEL: qux02:1438; LINUX-64-PIC: # %bb.0: # %entry1439; LINUX-64-PIC-NEXT: movq src@GOTPCREL(%rip), %rax1440; LINUX-64-PIC-NEXT: movl 64(%rax), %eax1441; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx1442; LINUX-64-PIC-NEXT: movq (%rcx), %rcx1443; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx)1444; LINUX-64-PIC-NEXT: retq1445;1446; DARWIN-32-STATIC-LABEL: qux02:1447; DARWIN-32-STATIC: ## %bb.0: ## %entry1448; DARWIN-32-STATIC-NEXT: movl _src+64, %eax1449; DARWIN-32-STATIC-NEXT: movl _ptr, %ecx1450; DARWIN-32-STATIC-NEXT: movl %eax, 64(%ecx)1451; DARWIN-32-STATIC-NEXT: retl1452;1453; DARWIN-32-DYNAMIC-LABEL: qux02:1454; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry1455; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %eax1456; DARWIN-32-DYNAMIC-NEXT: movl 64(%eax), %eax1457; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx1458; DARWIN-32-DYNAMIC-NEXT: movl (%ecx), %ecx1459; DARWIN-32-DYNAMIC-NEXT: movl %eax, 64(%ecx)1460; DARWIN-32-DYNAMIC-NEXT: retl1461;1462; DARWIN-32-PIC-LABEL: qux02:1463; DARWIN-32-PIC: ## %bb.0: ## %entry1464; DARWIN-32-PIC-NEXT: calll L16$pb1465; DARWIN-32-PIC-NEXT: L16$pb:1466; DARWIN-32-PIC-NEXT: popl %eax1467; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L16$pb(%eax), %ecx1468; DARWIN-32-PIC-NEXT: movl 64(%ecx), %ecx1469; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L16$pb(%eax), %eax1470; DARWIN-32-PIC-NEXT: movl (%eax), %eax1471; DARWIN-32-PIC-NEXT: movl %ecx, 64(%eax)1472; DARWIN-32-PIC-NEXT: retl1473;1474; DARWIN-64-STATIC-LABEL: qux02:1475; DARWIN-64-STATIC: ## %bb.0: ## %entry1476; DARWIN-64-STATIC-NEXT: movq _src@GOTPCREL(%rip), %rax1477; DARWIN-64-STATIC-NEXT: movl 64(%rax), %eax1478; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx1479; DARWIN-64-STATIC-NEXT: movq (%rcx), %rcx1480; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx)1481; DARWIN-64-STATIC-NEXT: retq1482;1483; DARWIN-64-DYNAMIC-LABEL: qux02:1484; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry1485; DARWIN-64-DYNAMIC-NEXT: movq _src@GOTPCREL(%rip), %rax1486; DARWIN-64-DYNAMIC-NEXT: movl 64(%rax), %eax1487; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx1488; DARWIN-64-DYNAMIC-NEXT: movq (%rcx), %rcx1489; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx)1490; DARWIN-64-DYNAMIC-NEXT: retq1491;1492; DARWIN-64-PIC-LABEL: qux02:1493; DARWIN-64-PIC: ## %bb.0: ## %entry1494; DARWIN-64-PIC-NEXT: movq _src@GOTPCREL(%rip), %rax1495; DARWIN-64-PIC-NEXT: movl 64(%rax), %eax1496; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx1497; DARWIN-64-PIC-NEXT: movq (%rcx), %rcx1498; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx)1499; DARWIN-64-PIC-NEXT: retq1500 1501entry:1502 %0 = load ptr, ptr @ptr, align 81503 %1 = load i32, ptr getelementptr ([131072 x i32], ptr @src, i32 0, i64 16), align 41504 %2 = getelementptr i32, ptr %0, i64 161505 store i32 %1, ptr %2, align 41506 ret void1507}1508 1509define dso_local void @qxx02() nounwind {1510; LINUX-64-STATIC-LABEL: qxx02:1511; LINUX-64-STATIC: # %bb.0: # %entry1512; LINUX-64-STATIC-NEXT: movq xsrc@GOTPCREL(%rip), %rax1513; LINUX-64-STATIC-NEXT: movl 64(%rax), %eax1514; LINUX-64-STATIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx1515; LINUX-64-STATIC-NEXT: movq (%rcx), %rcx1516; LINUX-64-STATIC-NEXT: movl %eax, 64(%rcx)1517; LINUX-64-STATIC-NEXT: retq1518;1519; LINUX-32-STATIC-LABEL: qxx02:1520; LINUX-32-STATIC: # %bb.0: # %entry1521; LINUX-32-STATIC-NEXT: movl xsrc+64, %eax1522; LINUX-32-STATIC-NEXT: movl ptr, %ecx1523; LINUX-32-STATIC-NEXT: movl %eax, 64(%ecx)1524; LINUX-32-STATIC-NEXT: retl1525;1526; LINUX-32-PIC-LABEL: qxx02:1527; LINUX-32-PIC: # %bb.0: # %entry1528; LINUX-32-PIC-NEXT: calll .L17$pb1529; LINUX-32-PIC-NEXT: .L17$pb:1530; LINUX-32-PIC-NEXT: popl %eax1531; LINUX-32-PIC-NEXT: .Ltmp17:1532; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp17-.L17$pb), %eax1533; LINUX-32-PIC-NEXT: movl xsrc@GOT(%eax), %ecx1534; LINUX-32-PIC-NEXT: movl 64(%ecx), %ecx1535; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax1536; LINUX-32-PIC-NEXT: movl (%eax), %eax1537; LINUX-32-PIC-NEXT: movl %ecx, 64(%eax)1538; LINUX-32-PIC-NEXT: retl1539;1540; LINUX-64-PIC-LABEL: qxx02:1541; LINUX-64-PIC: # %bb.0: # %entry1542; LINUX-64-PIC-NEXT: movq xsrc@GOTPCREL(%rip), %rax1543; LINUX-64-PIC-NEXT: movl 64(%rax), %eax1544; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx1545; LINUX-64-PIC-NEXT: movq (%rcx), %rcx1546; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx)1547; LINUX-64-PIC-NEXT: retq1548;1549; DARWIN-32-STATIC-LABEL: qxx02:1550; DARWIN-32-STATIC: ## %bb.0: ## %entry1551; DARWIN-32-STATIC-NEXT: movl _xsrc+64, %eax1552; DARWIN-32-STATIC-NEXT: movl _ptr, %ecx1553; DARWIN-32-STATIC-NEXT: movl %eax, 64(%ecx)1554; DARWIN-32-STATIC-NEXT: retl1555;1556; DARWIN-32-DYNAMIC-LABEL: qxx02:1557; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry1558; DARWIN-32-DYNAMIC-NEXT: movl L_xsrc$non_lazy_ptr, %eax1559; DARWIN-32-DYNAMIC-NEXT: movl 64(%eax), %eax1560; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx1561; DARWIN-32-DYNAMIC-NEXT: movl (%ecx), %ecx1562; DARWIN-32-DYNAMIC-NEXT: movl %eax, 64(%ecx)1563; DARWIN-32-DYNAMIC-NEXT: retl1564;1565; DARWIN-32-PIC-LABEL: qxx02:1566; DARWIN-32-PIC: ## %bb.0: ## %entry1567; DARWIN-32-PIC-NEXT: calll L17$pb1568; DARWIN-32-PIC-NEXT: L17$pb:1569; DARWIN-32-PIC-NEXT: popl %eax1570; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-L17$pb(%eax), %ecx1571; DARWIN-32-PIC-NEXT: movl 64(%ecx), %ecx1572; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L17$pb(%eax), %eax1573; DARWIN-32-PIC-NEXT: movl (%eax), %eax1574; DARWIN-32-PIC-NEXT: movl %ecx, 64(%eax)1575; DARWIN-32-PIC-NEXT: retl1576;1577; DARWIN-64-STATIC-LABEL: qxx02:1578; DARWIN-64-STATIC: ## %bb.0: ## %entry1579; DARWIN-64-STATIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax1580; DARWIN-64-STATIC-NEXT: movl 64(%rax), %eax1581; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx1582; DARWIN-64-STATIC-NEXT: movq (%rcx), %rcx1583; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx)1584; DARWIN-64-STATIC-NEXT: retq1585;1586; DARWIN-64-DYNAMIC-LABEL: qxx02:1587; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry1588; DARWIN-64-DYNAMIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax1589; DARWIN-64-DYNAMIC-NEXT: movl 64(%rax), %eax1590; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx1591; DARWIN-64-DYNAMIC-NEXT: movq (%rcx), %rcx1592; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx)1593; DARWIN-64-DYNAMIC-NEXT: retq1594;1595; DARWIN-64-PIC-LABEL: qxx02:1596; DARWIN-64-PIC: ## %bb.0: ## %entry1597; DARWIN-64-PIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax1598; DARWIN-64-PIC-NEXT: movl 64(%rax), %eax1599; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx1600; DARWIN-64-PIC-NEXT: movq (%rcx), %rcx1601; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx)1602; DARWIN-64-PIC-NEXT: retq1603 1604entry:1605 %0 = load ptr, ptr @ptr, align 81606 %1 = load i32, ptr getelementptr ([32 x i32], ptr @xsrc, i32 0, i64 16), align 41607 %2 = getelementptr i32, ptr %0, i64 161608 store i32 %1, ptr %2, align 41609 ret void1610}1611 1612define dso_local void @qux03() nounwind {1613; LINUX-64-STATIC-LABEL: qux03:1614; LINUX-64-STATIC: # %bb.0: # %entry1615; LINUX-64-STATIC-NEXT: movl dsrc+64(%rip), %eax1616; LINUX-64-STATIC-NEXT: movl %eax, ddst+64(%rip)1617; LINUX-64-STATIC-NEXT: retq1618;1619; LINUX-32-STATIC-LABEL: qux03:1620; LINUX-32-STATIC: # %bb.0: # %entry1621; LINUX-32-STATIC-NEXT: movl dsrc+64, %eax1622; LINUX-32-STATIC-NEXT: movl %eax, ddst+641623; LINUX-32-STATIC-NEXT: retl1624;1625; LINUX-32-PIC-LABEL: qux03:1626; LINUX-32-PIC: # %bb.0: # %entry1627; LINUX-32-PIC-NEXT: calll .L18$pb1628; LINUX-32-PIC-NEXT: .L18$pb:1629; LINUX-32-PIC-NEXT: popl %eax1630; LINUX-32-PIC-NEXT: .Ltmp18:1631; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp18-.L18$pb), %eax1632; LINUX-32-PIC-NEXT: movl .Ldsrc$local@GOTOFF+64(%eax), %ecx1633; LINUX-32-PIC-NEXT: movl %ecx, .Lddst$local@GOTOFF+64(%eax)1634; LINUX-32-PIC-NEXT: retl1635;1636; LINUX-64-PIC-LABEL: qux03:1637; LINUX-64-PIC: # %bb.0: # %entry1638; LINUX-64-PIC-NEXT: movl .Ldsrc$local+64(%rip), %eax1639; LINUX-64-PIC-NEXT: movl %eax, .Lddst$local+64(%rip)1640; LINUX-64-PIC-NEXT: retq1641;1642; DARWIN-32-STATIC-LABEL: qux03:1643; DARWIN-32-STATIC: ## %bb.0: ## %entry1644; DARWIN-32-STATIC-NEXT: movl _dsrc+64, %eax1645; DARWIN-32-STATIC-NEXT: movl %eax, _ddst+641646; DARWIN-32-STATIC-NEXT: retl1647;1648; DARWIN-32-DYNAMIC-LABEL: qux03:1649; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry1650; DARWIN-32-DYNAMIC-NEXT: movl _dsrc+64, %eax1651; DARWIN-32-DYNAMIC-NEXT: movl %eax, _ddst+641652; DARWIN-32-DYNAMIC-NEXT: retl1653;1654; DARWIN-32-PIC-LABEL: qux03:1655; DARWIN-32-PIC: ## %bb.0: ## %entry1656; DARWIN-32-PIC-NEXT: calll L18$pb1657; DARWIN-32-PIC-NEXT: L18$pb:1658; DARWIN-32-PIC-NEXT: popl %eax1659; DARWIN-32-PIC-NEXT: movl _dsrc-L18$pb+64(%eax), %ecx1660; DARWIN-32-PIC-NEXT: movl %ecx, _ddst-L18$pb+64(%eax)1661; DARWIN-32-PIC-NEXT: retl1662;1663; DARWIN-64-STATIC-LABEL: qux03:1664; DARWIN-64-STATIC: ## %bb.0: ## %entry1665; DARWIN-64-STATIC-NEXT: movl _dsrc+64(%rip), %eax1666; DARWIN-64-STATIC-NEXT: movl %eax, _ddst+64(%rip)1667; DARWIN-64-STATIC-NEXT: retq1668;1669; DARWIN-64-DYNAMIC-LABEL: qux03:1670; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry1671; DARWIN-64-DYNAMIC-NEXT: movl _dsrc+64(%rip), %eax1672; DARWIN-64-DYNAMIC-NEXT: movl %eax, _ddst+64(%rip)1673; DARWIN-64-DYNAMIC-NEXT: retq1674;1675; DARWIN-64-PIC-LABEL: qux03:1676; DARWIN-64-PIC: ## %bb.0: ## %entry1677; DARWIN-64-PIC-NEXT: movl _dsrc+64(%rip), %eax1678; DARWIN-64-PIC-NEXT: movl %eax, _ddst+64(%rip)1679; DARWIN-64-PIC-NEXT: retq1680 1681entry:1682 %0 = load i32, ptr getelementptr ([131072 x i32], ptr @dsrc, i32 0, i64 16), align 321683 store i32 %0, ptr getelementptr ([131072 x i32], ptr @ddst, i32 0, i64 16), align 321684 ret void1685}1686 1687define dso_local void @qux04() nounwind {1688; LINUX-64-STATIC-LABEL: qux04:1689; LINUX-64-STATIC: # %bb.0: # %entry1690; LINUX-64-STATIC-NEXT: movq $ddst+64, dptr(%rip)1691; LINUX-64-STATIC-NEXT: retq1692;1693; LINUX-32-STATIC-LABEL: qux04:1694; LINUX-32-STATIC: # %bb.0: # %entry1695; LINUX-32-STATIC-NEXT: movl $ddst+64, dptr1696; LINUX-32-STATIC-NEXT: retl1697;1698; LINUX-32-PIC-LABEL: qux04:1699; LINUX-32-PIC: # %bb.0: # %entry1700; LINUX-32-PIC-NEXT: calll .L19$pb1701; LINUX-32-PIC-NEXT: .L19$pb:1702; LINUX-32-PIC-NEXT: popl %eax1703; LINUX-32-PIC-NEXT: .Ltmp19:1704; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp19-.L19$pb), %eax1705; LINUX-32-PIC-NEXT: leal .Lddst$local@GOTOFF+64(%eax), %ecx1706; LINUX-32-PIC-NEXT: movl %ecx, .Ldptr$local@GOTOFF(%eax)1707; LINUX-32-PIC-NEXT: retl1708;1709; LINUX-64-PIC-LABEL: qux04:1710; LINUX-64-PIC: # %bb.0: # %entry1711; LINUX-64-PIC-NEXT: leaq .Lddst$local+64(%rip), %rax1712; LINUX-64-PIC-NEXT: movq %rax, .Ldptr$local(%rip)1713; LINUX-64-PIC-NEXT: retq1714;1715; DARWIN-32-STATIC-LABEL: qux04:1716; DARWIN-32-STATIC: ## %bb.0: ## %entry1717; DARWIN-32-STATIC-NEXT: movl $_ddst+64, _dptr1718; DARWIN-32-STATIC-NEXT: retl1719;1720; DARWIN-32-DYNAMIC-LABEL: qux04:1721; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry1722; DARWIN-32-DYNAMIC-NEXT: movl $_ddst+64, _dptr1723; DARWIN-32-DYNAMIC-NEXT: retl1724;1725; DARWIN-32-PIC-LABEL: qux04:1726; DARWIN-32-PIC: ## %bb.0: ## %entry1727; DARWIN-32-PIC-NEXT: calll L19$pb1728; DARWIN-32-PIC-NEXT: L19$pb:1729; DARWIN-32-PIC-NEXT: popl %eax1730; DARWIN-32-PIC-NEXT: leal _ddst-L19$pb+64(%eax), %ecx1731; DARWIN-32-PIC-NEXT: movl %ecx, _dptr-L19$pb(%eax)1732; DARWIN-32-PIC-NEXT: retl1733;1734; DARWIN-64-STATIC-LABEL: qux04:1735; DARWIN-64-STATIC: ## %bb.0: ## %entry1736; DARWIN-64-STATIC-NEXT: leaq _ddst+64(%rip), %rax1737; DARWIN-64-STATIC-NEXT: movq %rax, _dptr(%rip)1738; DARWIN-64-STATIC-NEXT: retq1739;1740; DARWIN-64-DYNAMIC-LABEL: qux04:1741; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry1742; DARWIN-64-DYNAMIC-NEXT: leaq _ddst+64(%rip), %rax1743; DARWIN-64-DYNAMIC-NEXT: movq %rax, _dptr(%rip)1744; DARWIN-64-DYNAMIC-NEXT: retq1745;1746; DARWIN-64-PIC-LABEL: qux04:1747; DARWIN-64-PIC: ## %bb.0: ## %entry1748; DARWIN-64-PIC-NEXT: leaq _ddst+64(%rip), %rax1749; DARWIN-64-PIC-NEXT: movq %rax, _dptr(%rip)1750; DARWIN-64-PIC-NEXT: retq1751 1752entry:1753 store ptr getelementptr ([131072 x i32], ptr @ddst, i32 0, i64 16), ptr @dptr, align 81754 ret void1755}1756 1757define dso_local void @qux05() nounwind {1758; LINUX-64-STATIC-LABEL: qux05:1759; LINUX-64-STATIC: # %bb.0: # %entry1760; LINUX-64-STATIC-NEXT: movl dsrc+64(%rip), %eax1761; LINUX-64-STATIC-NEXT: movq dptr(%rip), %rcx1762; LINUX-64-STATIC-NEXT: movl %eax, 64(%rcx)1763; LINUX-64-STATIC-NEXT: retq1764;1765; LINUX-32-STATIC-LABEL: qux05:1766; LINUX-32-STATIC: # %bb.0: # %entry1767; LINUX-32-STATIC-NEXT: movl dsrc+64, %eax1768; LINUX-32-STATIC-NEXT: movl dptr, %ecx1769; LINUX-32-STATIC-NEXT: movl %eax, 64(%ecx)1770; LINUX-32-STATIC-NEXT: retl1771;1772; LINUX-32-PIC-LABEL: qux05:1773; LINUX-32-PIC: # %bb.0: # %entry1774; LINUX-32-PIC-NEXT: calll .L20$pb1775; LINUX-32-PIC-NEXT: .L20$pb:1776; LINUX-32-PIC-NEXT: popl %eax1777; LINUX-32-PIC-NEXT: .Ltmp20:1778; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp20-.L20$pb), %eax1779; LINUX-32-PIC-NEXT: movl .Ldsrc$local@GOTOFF+64(%eax), %ecx1780; LINUX-32-PIC-NEXT: movl .Ldptr$local@GOTOFF(%eax), %eax1781; LINUX-32-PIC-NEXT: movl %ecx, 64(%eax)1782; LINUX-32-PIC-NEXT: retl1783;1784; LINUX-64-PIC-LABEL: qux05:1785; LINUX-64-PIC: # %bb.0: # %entry1786; LINUX-64-PIC-NEXT: movl .Ldsrc$local+64(%rip), %eax1787; LINUX-64-PIC-NEXT: movq .Ldptr$local(%rip), %rcx1788; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx)1789; LINUX-64-PIC-NEXT: retq1790;1791; DARWIN-32-STATIC-LABEL: qux05:1792; DARWIN-32-STATIC: ## %bb.0: ## %entry1793; DARWIN-32-STATIC-NEXT: movl _dsrc+64, %eax1794; DARWIN-32-STATIC-NEXT: movl _dptr, %ecx1795; DARWIN-32-STATIC-NEXT: movl %eax, 64(%ecx)1796; DARWIN-32-STATIC-NEXT: retl1797;1798; DARWIN-32-DYNAMIC-LABEL: qux05:1799; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry1800; DARWIN-32-DYNAMIC-NEXT: movl _dsrc+64, %eax1801; DARWIN-32-DYNAMIC-NEXT: movl _dptr, %ecx1802; DARWIN-32-DYNAMIC-NEXT: movl %eax, 64(%ecx)1803; DARWIN-32-DYNAMIC-NEXT: retl1804;1805; DARWIN-32-PIC-LABEL: qux05:1806; DARWIN-32-PIC: ## %bb.0: ## %entry1807; DARWIN-32-PIC-NEXT: calll L20$pb1808; DARWIN-32-PIC-NEXT: L20$pb:1809; DARWIN-32-PIC-NEXT: popl %eax1810; DARWIN-32-PIC-NEXT: movl _dsrc-L20$pb+64(%eax), %ecx1811; DARWIN-32-PIC-NEXT: movl _dptr-L20$pb(%eax), %eax1812; DARWIN-32-PIC-NEXT: movl %ecx, 64(%eax)1813; DARWIN-32-PIC-NEXT: retl1814;1815; DARWIN-64-STATIC-LABEL: qux05:1816; DARWIN-64-STATIC: ## %bb.0: ## %entry1817; DARWIN-64-STATIC-NEXT: movl _dsrc+64(%rip), %eax1818; DARWIN-64-STATIC-NEXT: movq _dptr(%rip), %rcx1819; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx)1820; DARWIN-64-STATIC-NEXT: retq1821;1822; DARWIN-64-DYNAMIC-LABEL: qux05:1823; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry1824; DARWIN-64-DYNAMIC-NEXT: movl _dsrc+64(%rip), %eax1825; DARWIN-64-DYNAMIC-NEXT: movq _dptr(%rip), %rcx1826; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx)1827; DARWIN-64-DYNAMIC-NEXT: retq1828;1829; DARWIN-64-PIC-LABEL: qux05:1830; DARWIN-64-PIC: ## %bb.0: ## %entry1831; DARWIN-64-PIC-NEXT: movl _dsrc+64(%rip), %eax1832; DARWIN-64-PIC-NEXT: movq _dptr(%rip), %rcx1833; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx)1834; DARWIN-64-PIC-NEXT: retq1835 1836entry:1837 %0 = load ptr, ptr @dptr, align 81838 %1 = load i32, ptr getelementptr ([131072 x i32], ptr @dsrc, i32 0, i64 16), align 321839 %2 = getelementptr i32, ptr %0, i64 161840 store i32 %1, ptr %2, align 41841 ret void1842}1843 1844define dso_local void @qux06() nounwind {1845; LINUX-64-STATIC-LABEL: qux06:1846; LINUX-64-STATIC: # %bb.0: # %entry1847; LINUX-64-STATIC-NEXT: movl lsrc+64(%rip), %eax1848; LINUX-64-STATIC-NEXT: movl %eax, ldst+64(%rip)1849; LINUX-64-STATIC-NEXT: retq1850;1851; LINUX-32-STATIC-LABEL: qux06:1852; LINUX-32-STATIC: # %bb.0: # %entry1853; LINUX-32-STATIC-NEXT: movl lsrc+64, %eax1854; LINUX-32-STATIC-NEXT: movl %eax, ldst+641855; LINUX-32-STATIC-NEXT: retl1856;1857; LINUX-32-PIC-LABEL: qux06:1858; LINUX-32-PIC: # %bb.0: # %entry1859; LINUX-32-PIC-NEXT: calll .L21$pb1860; LINUX-32-PIC-NEXT: .L21$pb:1861; LINUX-32-PIC-NEXT: popl %eax1862; LINUX-32-PIC-NEXT: .Ltmp21:1863; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp21-.L21$pb), %eax1864; LINUX-32-PIC-NEXT: movl lsrc@GOTOFF+64(%eax), %ecx1865; LINUX-32-PIC-NEXT: movl %ecx, ldst@GOTOFF+64(%eax)1866; LINUX-32-PIC-NEXT: retl1867;1868; LINUX-64-PIC-LABEL: qux06:1869; LINUX-64-PIC: # %bb.0: # %entry1870; LINUX-64-PIC-NEXT: movl lsrc+64(%rip), %eax1871; LINUX-64-PIC-NEXT: movl %eax, ldst+64(%rip)1872; LINUX-64-PIC-NEXT: retq1873;1874; DARWIN-32-STATIC-LABEL: qux06:1875; DARWIN-32-STATIC: ## %bb.0: ## %entry1876; DARWIN-32-STATIC-NEXT: movl _lsrc+64, %eax1877; DARWIN-32-STATIC-NEXT: movl %eax, _ldst+641878; DARWIN-32-STATIC-NEXT: retl1879;1880; DARWIN-32-DYNAMIC-LABEL: qux06:1881; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry1882; DARWIN-32-DYNAMIC-NEXT: movl _lsrc+64, %eax1883; DARWIN-32-DYNAMIC-NEXT: movl %eax, _ldst+641884; DARWIN-32-DYNAMIC-NEXT: retl1885;1886; DARWIN-32-PIC-LABEL: qux06:1887; DARWIN-32-PIC: ## %bb.0: ## %entry1888; DARWIN-32-PIC-NEXT: calll L21$pb1889; DARWIN-32-PIC-NEXT: L21$pb:1890; DARWIN-32-PIC-NEXT: popl %eax1891; DARWIN-32-PIC-NEXT: movl _lsrc-L21$pb+64(%eax), %ecx1892; DARWIN-32-PIC-NEXT: movl %ecx, _ldst-L21$pb+64(%eax)1893; DARWIN-32-PIC-NEXT: retl1894;1895; DARWIN-64-STATIC-LABEL: qux06:1896; DARWIN-64-STATIC: ## %bb.0: ## %entry1897; DARWIN-64-STATIC-NEXT: movl _lsrc+64(%rip), %eax1898; DARWIN-64-STATIC-NEXT: movl %eax, _ldst+64(%rip)1899; DARWIN-64-STATIC-NEXT: retq1900;1901; DARWIN-64-DYNAMIC-LABEL: qux06:1902; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry1903; DARWIN-64-DYNAMIC-NEXT: movl _lsrc+64(%rip), %eax1904; DARWIN-64-DYNAMIC-NEXT: movl %eax, _ldst+64(%rip)1905; DARWIN-64-DYNAMIC-NEXT: retq1906;1907; DARWIN-64-PIC-LABEL: qux06:1908; DARWIN-64-PIC: ## %bb.0: ## %entry1909; DARWIN-64-PIC-NEXT: movl _lsrc+64(%rip), %eax1910; DARWIN-64-PIC-NEXT: movl %eax, _ldst+64(%rip)1911; DARWIN-64-PIC-NEXT: retq1912 1913entry:1914 %0 = load i32, ptr getelementptr ([131072 x i32], ptr @lsrc, i32 0, i64 16), align 41915 store i32 %0, ptr getelementptr ([131072 x i32], ptr @ldst, i32 0, i64 16), align 41916 ret void1917}1918 1919define dso_local void @qux07() nounwind {1920; LINUX-64-STATIC-LABEL: qux07:1921; LINUX-64-STATIC: # %bb.0: # %entry1922; LINUX-64-STATIC-NEXT: movq $ldst+64, lptr(%rip)1923; LINUX-64-STATIC-NEXT: retq1924;1925; LINUX-32-STATIC-LABEL: qux07:1926; LINUX-32-STATIC: # %bb.0: # %entry1927; LINUX-32-STATIC-NEXT: movl $ldst+64, lptr1928; LINUX-32-STATIC-NEXT: retl1929;1930; LINUX-32-PIC-LABEL: qux07:1931; LINUX-32-PIC: # %bb.0: # %entry1932; LINUX-32-PIC-NEXT: calll .L22$pb1933; LINUX-32-PIC-NEXT: .L22$pb:1934; LINUX-32-PIC-NEXT: popl %eax1935; LINUX-32-PIC-NEXT: .Ltmp22:1936; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp22-.L22$pb), %eax1937; LINUX-32-PIC-NEXT: leal ldst@GOTOFF+64(%eax), %ecx1938; LINUX-32-PIC-NEXT: movl %ecx, lptr@GOTOFF(%eax)1939; LINUX-32-PIC-NEXT: retl1940;1941; LINUX-64-PIC-LABEL: qux07:1942; LINUX-64-PIC: # %bb.0: # %entry1943; LINUX-64-PIC-NEXT: leaq ldst+64(%rip), %rax1944; LINUX-64-PIC-NEXT: movq %rax, lptr(%rip)1945; LINUX-64-PIC-NEXT: retq1946;1947; DARWIN-32-STATIC-LABEL: qux07:1948; DARWIN-32-STATIC: ## %bb.0: ## %entry1949; DARWIN-32-STATIC-NEXT: movl $_ldst+64, _lptr1950; DARWIN-32-STATIC-NEXT: retl1951;1952; DARWIN-32-DYNAMIC-LABEL: qux07:1953; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry1954; DARWIN-32-DYNAMIC-NEXT: movl $_ldst+64, _lptr1955; DARWIN-32-DYNAMIC-NEXT: retl1956;1957; DARWIN-32-PIC-LABEL: qux07:1958; DARWIN-32-PIC: ## %bb.0: ## %entry1959; DARWIN-32-PIC-NEXT: calll L22$pb1960; DARWIN-32-PIC-NEXT: L22$pb:1961; DARWIN-32-PIC-NEXT: popl %eax1962; DARWIN-32-PIC-NEXT: leal _ldst-L22$pb+64(%eax), %ecx1963; DARWIN-32-PIC-NEXT: movl %ecx, _lptr-L22$pb(%eax)1964; DARWIN-32-PIC-NEXT: retl1965;1966; DARWIN-64-STATIC-LABEL: qux07:1967; DARWIN-64-STATIC: ## %bb.0: ## %entry1968; DARWIN-64-STATIC-NEXT: leaq _ldst+64(%rip), %rax1969; DARWIN-64-STATIC-NEXT: movq %rax, _lptr(%rip)1970; DARWIN-64-STATIC-NEXT: retq1971;1972; DARWIN-64-DYNAMIC-LABEL: qux07:1973; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry1974; DARWIN-64-DYNAMIC-NEXT: leaq _ldst+64(%rip), %rax1975; DARWIN-64-DYNAMIC-NEXT: movq %rax, _lptr(%rip)1976; DARWIN-64-DYNAMIC-NEXT: retq1977;1978; DARWIN-64-PIC-LABEL: qux07:1979; DARWIN-64-PIC: ## %bb.0: ## %entry1980; DARWIN-64-PIC-NEXT: leaq _ldst+64(%rip), %rax1981; DARWIN-64-PIC-NEXT: movq %rax, _lptr(%rip)1982; DARWIN-64-PIC-NEXT: retq1983 1984entry:1985 store ptr getelementptr ([131072 x i32], ptr @ldst, i32 0, i64 16), ptr @lptr, align 81986 ret void1987}1988 1989define dso_local void @qux08() nounwind {1990; LINUX-64-STATIC-LABEL: qux08:1991; LINUX-64-STATIC: # %bb.0: # %entry1992; LINUX-64-STATIC-NEXT: movl lsrc+64(%rip), %eax1993; LINUX-64-STATIC-NEXT: movq lptr(%rip), %rcx1994; LINUX-64-STATIC-NEXT: movl %eax, 64(%rcx)1995; LINUX-64-STATIC-NEXT: retq1996;1997; LINUX-32-STATIC-LABEL: qux08:1998; LINUX-32-STATIC: # %bb.0: # %entry1999; LINUX-32-STATIC-NEXT: movl lsrc+64, %eax2000; LINUX-32-STATIC-NEXT: movl lptr, %ecx2001; LINUX-32-STATIC-NEXT: movl %eax, 64(%ecx)2002; LINUX-32-STATIC-NEXT: retl2003;2004; LINUX-32-PIC-LABEL: qux08:2005; LINUX-32-PIC: # %bb.0: # %entry2006; LINUX-32-PIC-NEXT: calll .L23$pb2007; LINUX-32-PIC-NEXT: .L23$pb:2008; LINUX-32-PIC-NEXT: popl %eax2009; LINUX-32-PIC-NEXT: .Ltmp23:2010; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp23-.L23$pb), %eax2011; LINUX-32-PIC-NEXT: movl lsrc@GOTOFF+64(%eax), %ecx2012; LINUX-32-PIC-NEXT: movl lptr@GOTOFF(%eax), %eax2013; LINUX-32-PIC-NEXT: movl %ecx, 64(%eax)2014; LINUX-32-PIC-NEXT: retl2015;2016; LINUX-64-PIC-LABEL: qux08:2017; LINUX-64-PIC: # %bb.0: # %entry2018; LINUX-64-PIC-NEXT: movl lsrc+64(%rip), %eax2019; LINUX-64-PIC-NEXT: movq lptr(%rip), %rcx2020; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx)2021; LINUX-64-PIC-NEXT: retq2022;2023; DARWIN-32-STATIC-LABEL: qux08:2024; DARWIN-32-STATIC: ## %bb.0: ## %entry2025; DARWIN-32-STATIC-NEXT: movl _lsrc+64, %eax2026; DARWIN-32-STATIC-NEXT: movl _lptr, %ecx2027; DARWIN-32-STATIC-NEXT: movl %eax, 64(%ecx)2028; DARWIN-32-STATIC-NEXT: retl2029;2030; DARWIN-32-DYNAMIC-LABEL: qux08:2031; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry2032; DARWIN-32-DYNAMIC-NEXT: movl _lsrc+64, %eax2033; DARWIN-32-DYNAMIC-NEXT: movl _lptr, %ecx2034; DARWIN-32-DYNAMIC-NEXT: movl %eax, 64(%ecx)2035; DARWIN-32-DYNAMIC-NEXT: retl2036;2037; DARWIN-32-PIC-LABEL: qux08:2038; DARWIN-32-PIC: ## %bb.0: ## %entry2039; DARWIN-32-PIC-NEXT: calll L23$pb2040; DARWIN-32-PIC-NEXT: L23$pb:2041; DARWIN-32-PIC-NEXT: popl %eax2042; DARWIN-32-PIC-NEXT: movl _lsrc-L23$pb+64(%eax), %ecx2043; DARWIN-32-PIC-NEXT: movl _lptr-L23$pb(%eax), %eax2044; DARWIN-32-PIC-NEXT: movl %ecx, 64(%eax)2045; DARWIN-32-PIC-NEXT: retl2046;2047; DARWIN-64-STATIC-LABEL: qux08:2048; DARWIN-64-STATIC: ## %bb.0: ## %entry2049; DARWIN-64-STATIC-NEXT: movl _lsrc+64(%rip), %eax2050; DARWIN-64-STATIC-NEXT: movq _lptr(%rip), %rcx2051; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx)2052; DARWIN-64-STATIC-NEXT: retq2053;2054; DARWIN-64-DYNAMIC-LABEL: qux08:2055; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry2056; DARWIN-64-DYNAMIC-NEXT: movl _lsrc+64(%rip), %eax2057; DARWIN-64-DYNAMIC-NEXT: movq _lptr(%rip), %rcx2058; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx)2059; DARWIN-64-DYNAMIC-NEXT: retq2060;2061; DARWIN-64-PIC-LABEL: qux08:2062; DARWIN-64-PIC: ## %bb.0: ## %entry2063; DARWIN-64-PIC-NEXT: movl _lsrc+64(%rip), %eax2064; DARWIN-64-PIC-NEXT: movq _lptr(%rip), %rcx2065; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx)2066; DARWIN-64-PIC-NEXT: retq2067 2068entry:2069 %0 = load ptr, ptr @lptr, align 82070 %1 = load i32, ptr getelementptr ([131072 x i32], ptr @lsrc, i32 0, i64 16), align 42071 %2 = getelementptr i32, ptr %0, i64 162072 store i32 %1, ptr %2, align 42073 ret void2074}2075 2076define dso_local void @ind00(i64 %i) nounwind {2077; LINUX-64-STATIC-LABEL: ind00:2078; LINUX-64-STATIC: # %bb.0: # %entry2079; LINUX-64-STATIC-NEXT: movq src@GOTPCREL(%rip), %rax2080; LINUX-64-STATIC-NEXT: movl (%rax,%rdi,4), %eax2081; LINUX-64-STATIC-NEXT: movq dst@GOTPCREL(%rip), %rcx2082; LINUX-64-STATIC-NEXT: movl %eax, (%rcx,%rdi,4)2083; LINUX-64-STATIC-NEXT: retq2084;2085; LINUX-32-STATIC-LABEL: ind00:2086; LINUX-32-STATIC: # %bb.0: # %entry2087; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax2088; LINUX-32-STATIC-NEXT: movl src(,%eax,4), %ecx2089; LINUX-32-STATIC-NEXT: movl %ecx, dst(,%eax,4)2090; LINUX-32-STATIC-NEXT: retl2091;2092; LINUX-32-PIC-LABEL: ind00:2093; LINUX-32-PIC: # %bb.0: # %entry2094; LINUX-32-PIC-NEXT: calll .L24$pb2095; LINUX-32-PIC-NEXT: .L24$pb:2096; LINUX-32-PIC-NEXT: popl %eax2097; LINUX-32-PIC-NEXT: .Ltmp24:2098; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp24-.L24$pb), %eax2099; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx2100; LINUX-32-PIC-NEXT: movl src@GOT(%eax), %edx2101; LINUX-32-PIC-NEXT: movl (%edx,%ecx,4), %edx2102; LINUX-32-PIC-NEXT: movl dst@GOT(%eax), %eax2103; LINUX-32-PIC-NEXT: movl %edx, (%eax,%ecx,4)2104; LINUX-32-PIC-NEXT: retl2105;2106; LINUX-64-PIC-LABEL: ind00:2107; LINUX-64-PIC: # %bb.0: # %entry2108; LINUX-64-PIC-NEXT: movq src@GOTPCREL(%rip), %rax2109; LINUX-64-PIC-NEXT: movl (%rax,%rdi,4), %eax2110; LINUX-64-PIC-NEXT: movq dst@GOTPCREL(%rip), %rcx2111; LINUX-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4)2112; LINUX-64-PIC-NEXT: retq2113;2114; DARWIN-32-STATIC-LABEL: ind00:2115; DARWIN-32-STATIC: ## %bb.0: ## %entry2116; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax2117; DARWIN-32-STATIC-NEXT: movl _src(,%eax,4), %ecx2118; DARWIN-32-STATIC-NEXT: movl %ecx, _dst(,%eax,4)2119; DARWIN-32-STATIC-NEXT: retl2120;2121; DARWIN-32-DYNAMIC-LABEL: ind00:2122; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry2123; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax2124; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %ecx2125; DARWIN-32-DYNAMIC-NEXT: movl (%ecx,%eax,4), %ecx2126; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, %edx2127; DARWIN-32-DYNAMIC-NEXT: movl %ecx, (%edx,%eax,4)2128; DARWIN-32-DYNAMIC-NEXT: retl2129;2130; DARWIN-32-PIC-LABEL: ind00:2131; DARWIN-32-PIC: ## %bb.0: ## %entry2132; DARWIN-32-PIC-NEXT: calll L24$pb2133; DARWIN-32-PIC-NEXT: L24$pb:2134; DARWIN-32-PIC-NEXT: popl %eax2135; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx2136; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L24$pb(%eax), %edx2137; DARWIN-32-PIC-NEXT: movl (%edx,%ecx,4), %edx2138; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L24$pb(%eax), %eax2139; DARWIN-32-PIC-NEXT: movl %edx, (%eax,%ecx,4)2140; DARWIN-32-PIC-NEXT: retl2141;2142; DARWIN-64-STATIC-LABEL: ind00:2143; DARWIN-64-STATIC: ## %bb.0: ## %entry2144; DARWIN-64-STATIC-NEXT: movq _src@GOTPCREL(%rip), %rax2145; DARWIN-64-STATIC-NEXT: movl (%rax,%rdi,4), %eax2146; DARWIN-64-STATIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx2147; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx,%rdi,4)2148; DARWIN-64-STATIC-NEXT: retq2149;2150; DARWIN-64-DYNAMIC-LABEL: ind00:2151; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry2152; DARWIN-64-DYNAMIC-NEXT: movq _src@GOTPCREL(%rip), %rax2153; DARWIN-64-DYNAMIC-NEXT: movl (%rax,%rdi,4), %eax2154; DARWIN-64-DYNAMIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx2155; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx,%rdi,4)2156; DARWIN-64-DYNAMIC-NEXT: retq2157;2158; DARWIN-64-PIC-LABEL: ind00:2159; DARWIN-64-PIC: ## %bb.0: ## %entry2160; DARWIN-64-PIC-NEXT: movq _src@GOTPCREL(%rip), %rax2161; DARWIN-64-PIC-NEXT: movl (%rax,%rdi,4), %eax2162; DARWIN-64-PIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx2163; DARWIN-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4)2164; DARWIN-64-PIC-NEXT: retq2165 2166entry:2167 %0 = getelementptr [131072 x i32], ptr @src, i64 0, i64 %i2168 %1 = load i32, ptr %0, align 42169 %2 = getelementptr [131072 x i32], ptr @dst, i64 0, i64 %i2170 store i32 %1, ptr %2, align 42171 ret void2172}2173 2174define dso_local void @ixd00(i64 %i) nounwind {2175; LINUX-64-STATIC-LABEL: ixd00:2176; LINUX-64-STATIC: # %bb.0: # %entry2177; LINUX-64-STATIC-NEXT: movq xsrc@GOTPCREL(%rip), %rax2178; LINUX-64-STATIC-NEXT: movl (%rax,%rdi,4), %eax2179; LINUX-64-STATIC-NEXT: movq xdst@GOTPCREL(%rip), %rcx2180; LINUX-64-STATIC-NEXT: movl %eax, (%rcx,%rdi,4)2181; LINUX-64-STATIC-NEXT: retq2182;2183; LINUX-32-STATIC-LABEL: ixd00:2184; LINUX-32-STATIC: # %bb.0: # %entry2185; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax2186; LINUX-32-STATIC-NEXT: movl xsrc(,%eax,4), %ecx2187; LINUX-32-STATIC-NEXT: movl %ecx, xdst(,%eax,4)2188; LINUX-32-STATIC-NEXT: retl2189;2190; LINUX-32-PIC-LABEL: ixd00:2191; LINUX-32-PIC: # %bb.0: # %entry2192; LINUX-32-PIC-NEXT: calll .L25$pb2193; LINUX-32-PIC-NEXT: .L25$pb:2194; LINUX-32-PIC-NEXT: popl %eax2195; LINUX-32-PIC-NEXT: .Ltmp25:2196; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp25-.L25$pb), %eax2197; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx2198; LINUX-32-PIC-NEXT: movl xsrc@GOT(%eax), %edx2199; LINUX-32-PIC-NEXT: movl (%edx,%ecx,4), %edx2200; LINUX-32-PIC-NEXT: movl xdst@GOT(%eax), %eax2201; LINUX-32-PIC-NEXT: movl %edx, (%eax,%ecx,4)2202; LINUX-32-PIC-NEXT: retl2203;2204; LINUX-64-PIC-LABEL: ixd00:2205; LINUX-64-PIC: # %bb.0: # %entry2206; LINUX-64-PIC-NEXT: movq xsrc@GOTPCREL(%rip), %rax2207; LINUX-64-PIC-NEXT: movl (%rax,%rdi,4), %eax2208; LINUX-64-PIC-NEXT: movq xdst@GOTPCREL(%rip), %rcx2209; LINUX-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4)2210; LINUX-64-PIC-NEXT: retq2211;2212; DARWIN-32-STATIC-LABEL: ixd00:2213; DARWIN-32-STATIC: ## %bb.0: ## %entry2214; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax2215; DARWIN-32-STATIC-NEXT: movl _xsrc(,%eax,4), %ecx2216; DARWIN-32-STATIC-NEXT: movl %ecx, _xdst(,%eax,4)2217; DARWIN-32-STATIC-NEXT: retl2218;2219; DARWIN-32-DYNAMIC-LABEL: ixd00:2220; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry2221; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax2222; DARWIN-32-DYNAMIC-NEXT: movl L_xsrc$non_lazy_ptr, %ecx2223; DARWIN-32-DYNAMIC-NEXT: movl (%ecx,%eax,4), %ecx2224; DARWIN-32-DYNAMIC-NEXT: movl L_xdst$non_lazy_ptr, %edx2225; DARWIN-32-DYNAMIC-NEXT: movl %ecx, (%edx,%eax,4)2226; DARWIN-32-DYNAMIC-NEXT: retl2227;2228; DARWIN-32-PIC-LABEL: ixd00:2229; DARWIN-32-PIC: ## %bb.0: ## %entry2230; DARWIN-32-PIC-NEXT: calll L25$pb2231; DARWIN-32-PIC-NEXT: L25$pb:2232; DARWIN-32-PIC-NEXT: popl %eax2233; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx2234; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-L25$pb(%eax), %edx2235; DARWIN-32-PIC-NEXT: movl (%edx,%ecx,4), %edx2236; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-L25$pb(%eax), %eax2237; DARWIN-32-PIC-NEXT: movl %edx, (%eax,%ecx,4)2238; DARWIN-32-PIC-NEXT: retl2239;2240; DARWIN-64-STATIC-LABEL: ixd00:2241; DARWIN-64-STATIC: ## %bb.0: ## %entry2242; DARWIN-64-STATIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax2243; DARWIN-64-STATIC-NEXT: movl (%rax,%rdi,4), %eax2244; DARWIN-64-STATIC-NEXT: movq _xdst@GOTPCREL(%rip), %rcx2245; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx,%rdi,4)2246; DARWIN-64-STATIC-NEXT: retq2247;2248; DARWIN-64-DYNAMIC-LABEL: ixd00:2249; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry2250; DARWIN-64-DYNAMIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax2251; DARWIN-64-DYNAMIC-NEXT: movl (%rax,%rdi,4), %eax2252; DARWIN-64-DYNAMIC-NEXT: movq _xdst@GOTPCREL(%rip), %rcx2253; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx,%rdi,4)2254; DARWIN-64-DYNAMIC-NEXT: retq2255;2256; DARWIN-64-PIC-LABEL: ixd00:2257; DARWIN-64-PIC: ## %bb.0: ## %entry2258; DARWIN-64-PIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax2259; DARWIN-64-PIC-NEXT: movl (%rax,%rdi,4), %eax2260; DARWIN-64-PIC-NEXT: movq _xdst@GOTPCREL(%rip), %rcx2261; DARWIN-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4)2262; DARWIN-64-PIC-NEXT: retq2263 2264entry:2265 %0 = getelementptr [32 x i32], ptr @xsrc, i64 0, i64 %i2266 %1 = load i32, ptr %0, align 42267 %2 = getelementptr [32 x i32], ptr @xdst, i64 0, i64 %i2268 store i32 %1, ptr %2, align 42269 ret void2270}2271 2272define dso_local void @ind01(i64 %i) nounwind {2273; LINUX-64-STATIC-LABEL: ind01:2274; LINUX-64-STATIC: # %bb.0: # %entry2275; LINUX-64-STATIC-NEXT: shlq $2, %rdi2276; LINUX-64-STATIC-NEXT: addq dst@GOTPCREL(%rip), %rdi2277; LINUX-64-STATIC-NEXT: movq ptr@GOTPCREL(%rip), %rax2278; LINUX-64-STATIC-NEXT: movq %rdi, (%rax)2279; LINUX-64-STATIC-NEXT: retq2280;2281; LINUX-32-STATIC-LABEL: ind01:2282; LINUX-32-STATIC: # %bb.0: # %entry2283; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax2284; LINUX-32-STATIC-NEXT: leal dst(,%eax,4), %eax2285; LINUX-32-STATIC-NEXT: movl %eax, ptr2286; LINUX-32-STATIC-NEXT: retl2287;2288; LINUX-32-PIC-LABEL: ind01:2289; LINUX-32-PIC: # %bb.0: # %entry2290; LINUX-32-PIC-NEXT: calll .L26$pb2291; LINUX-32-PIC-NEXT: .L26$pb:2292; LINUX-32-PIC-NEXT: popl %eax2293; LINUX-32-PIC-NEXT: .Ltmp26:2294; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp26-.L26$pb), %eax2295; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx2296; LINUX-32-PIC-NEXT: shll $2, %ecx2297; LINUX-32-PIC-NEXT: addl dst@GOT(%eax), %ecx2298; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax2299; LINUX-32-PIC-NEXT: movl %ecx, (%eax)2300; LINUX-32-PIC-NEXT: retl2301;2302; LINUX-64-PIC-LABEL: ind01:2303; LINUX-64-PIC: # %bb.0: # %entry2304; LINUX-64-PIC-NEXT: shlq $2, %rdi2305; LINUX-64-PIC-NEXT: addq dst@GOTPCREL(%rip), %rdi2306; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rax2307; LINUX-64-PIC-NEXT: movq %rdi, (%rax)2308; LINUX-64-PIC-NEXT: retq2309;2310; DARWIN-32-STATIC-LABEL: ind01:2311; DARWIN-32-STATIC: ## %bb.0: ## %entry2312; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax2313; DARWIN-32-STATIC-NEXT: leal _dst(,%eax,4), %eax2314; DARWIN-32-STATIC-NEXT: movl %eax, _ptr2315; DARWIN-32-STATIC-NEXT: retl2316;2317; DARWIN-32-DYNAMIC-LABEL: ind01:2318; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry2319; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax2320; DARWIN-32-DYNAMIC-NEXT: shll $2, %eax2321; DARWIN-32-DYNAMIC-NEXT: addl L_dst$non_lazy_ptr, %eax2322; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx2323; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx)2324; DARWIN-32-DYNAMIC-NEXT: retl2325;2326; DARWIN-32-PIC-LABEL: ind01:2327; DARWIN-32-PIC: ## %bb.0: ## %entry2328; DARWIN-32-PIC-NEXT: calll L26$pb2329; DARWIN-32-PIC-NEXT: L26$pb:2330; DARWIN-32-PIC-NEXT: popl %eax2331; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx2332; DARWIN-32-PIC-NEXT: shll $2, %ecx2333; DARWIN-32-PIC-NEXT: addl L_dst$non_lazy_ptr-L26$pb(%eax), %ecx2334; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L26$pb(%eax), %eax2335; DARWIN-32-PIC-NEXT: movl %ecx, (%eax)2336; DARWIN-32-PIC-NEXT: retl2337;2338; DARWIN-64-STATIC-LABEL: ind01:2339; DARWIN-64-STATIC: ## %bb.0: ## %entry2340; DARWIN-64-STATIC-NEXT: shlq $2, %rdi2341; DARWIN-64-STATIC-NEXT: addq _dst@GOTPCREL(%rip), %rdi2342; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax2343; DARWIN-64-STATIC-NEXT: movq %rdi, (%rax)2344; DARWIN-64-STATIC-NEXT: retq2345;2346; DARWIN-64-DYNAMIC-LABEL: ind01:2347; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry2348; DARWIN-64-DYNAMIC-NEXT: shlq $2, %rdi2349; DARWIN-64-DYNAMIC-NEXT: addq _dst@GOTPCREL(%rip), %rdi2350; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax2351; DARWIN-64-DYNAMIC-NEXT: movq %rdi, (%rax)2352; DARWIN-64-DYNAMIC-NEXT: retq2353;2354; DARWIN-64-PIC-LABEL: ind01:2355; DARWIN-64-PIC: ## %bb.0: ## %entry2356; DARWIN-64-PIC-NEXT: shlq $2, %rdi2357; DARWIN-64-PIC-NEXT: addq _dst@GOTPCREL(%rip), %rdi2358; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax2359; DARWIN-64-PIC-NEXT: movq %rdi, (%rax)2360; DARWIN-64-PIC-NEXT: retq2361 2362entry:2363 %0 = getelementptr [131072 x i32], ptr @dst, i64 0, i64 %i2364 store ptr %0, ptr @ptr, align 82365 ret void2366}2367 2368define dso_local void @ixd01(i64 %i) nounwind {2369; LINUX-64-STATIC-LABEL: ixd01:2370; LINUX-64-STATIC: # %bb.0: # %entry2371; LINUX-64-STATIC-NEXT: shlq $2, %rdi2372; LINUX-64-STATIC-NEXT: addq xdst@GOTPCREL(%rip), %rdi2373; LINUX-64-STATIC-NEXT: movq ptr@GOTPCREL(%rip), %rax2374; LINUX-64-STATIC-NEXT: movq %rdi, (%rax)2375; LINUX-64-STATIC-NEXT: retq2376;2377; LINUX-32-STATIC-LABEL: ixd01:2378; LINUX-32-STATIC: # %bb.0: # %entry2379; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax2380; LINUX-32-STATIC-NEXT: leal xdst(,%eax,4), %eax2381; LINUX-32-STATIC-NEXT: movl %eax, ptr2382; LINUX-32-STATIC-NEXT: retl2383;2384; LINUX-32-PIC-LABEL: ixd01:2385; LINUX-32-PIC: # %bb.0: # %entry2386; LINUX-32-PIC-NEXT: calll .L27$pb2387; LINUX-32-PIC-NEXT: .L27$pb:2388; LINUX-32-PIC-NEXT: popl %eax2389; LINUX-32-PIC-NEXT: .Ltmp27:2390; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp27-.L27$pb), %eax2391; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx2392; LINUX-32-PIC-NEXT: shll $2, %ecx2393; LINUX-32-PIC-NEXT: addl xdst@GOT(%eax), %ecx2394; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax2395; LINUX-32-PIC-NEXT: movl %ecx, (%eax)2396; LINUX-32-PIC-NEXT: retl2397;2398; LINUX-64-PIC-LABEL: ixd01:2399; LINUX-64-PIC: # %bb.0: # %entry2400; LINUX-64-PIC-NEXT: shlq $2, %rdi2401; LINUX-64-PIC-NEXT: addq xdst@GOTPCREL(%rip), %rdi2402; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rax2403; LINUX-64-PIC-NEXT: movq %rdi, (%rax)2404; LINUX-64-PIC-NEXT: retq2405;2406; DARWIN-32-STATIC-LABEL: ixd01:2407; DARWIN-32-STATIC: ## %bb.0: ## %entry2408; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax2409; DARWIN-32-STATIC-NEXT: leal _xdst(,%eax,4), %eax2410; DARWIN-32-STATIC-NEXT: movl %eax, _ptr2411; DARWIN-32-STATIC-NEXT: retl2412;2413; DARWIN-32-DYNAMIC-LABEL: ixd01:2414; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry2415; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax2416; DARWIN-32-DYNAMIC-NEXT: shll $2, %eax2417; DARWIN-32-DYNAMIC-NEXT: addl L_xdst$non_lazy_ptr, %eax2418; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx2419; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx)2420; DARWIN-32-DYNAMIC-NEXT: retl2421;2422; DARWIN-32-PIC-LABEL: ixd01:2423; DARWIN-32-PIC: ## %bb.0: ## %entry2424; DARWIN-32-PIC-NEXT: calll L27$pb2425; DARWIN-32-PIC-NEXT: L27$pb:2426; DARWIN-32-PIC-NEXT: popl %eax2427; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx2428; DARWIN-32-PIC-NEXT: shll $2, %ecx2429; DARWIN-32-PIC-NEXT: addl L_xdst$non_lazy_ptr-L27$pb(%eax), %ecx2430; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L27$pb(%eax), %eax2431; DARWIN-32-PIC-NEXT: movl %ecx, (%eax)2432; DARWIN-32-PIC-NEXT: retl2433;2434; DARWIN-64-STATIC-LABEL: ixd01:2435; DARWIN-64-STATIC: ## %bb.0: ## %entry2436; DARWIN-64-STATIC-NEXT: shlq $2, %rdi2437; DARWIN-64-STATIC-NEXT: addq _xdst@GOTPCREL(%rip), %rdi2438; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax2439; DARWIN-64-STATIC-NEXT: movq %rdi, (%rax)2440; DARWIN-64-STATIC-NEXT: retq2441;2442; DARWIN-64-DYNAMIC-LABEL: ixd01:2443; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry2444; DARWIN-64-DYNAMIC-NEXT: shlq $2, %rdi2445; DARWIN-64-DYNAMIC-NEXT: addq _xdst@GOTPCREL(%rip), %rdi2446; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax2447; DARWIN-64-DYNAMIC-NEXT: movq %rdi, (%rax)2448; DARWIN-64-DYNAMIC-NEXT: retq2449;2450; DARWIN-64-PIC-LABEL: ixd01:2451; DARWIN-64-PIC: ## %bb.0: ## %entry2452; DARWIN-64-PIC-NEXT: shlq $2, %rdi2453; DARWIN-64-PIC-NEXT: addq _xdst@GOTPCREL(%rip), %rdi2454; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax2455; DARWIN-64-PIC-NEXT: movq %rdi, (%rax)2456; DARWIN-64-PIC-NEXT: retq2457 2458entry:2459 %0 = getelementptr [32 x i32], ptr @xdst, i64 0, i64 %i2460 store ptr %0, ptr @ptr, align 82461 ret void2462}2463 2464define dso_local void @ind02(i64 %i) nounwind {2465; LINUX-64-STATIC-LABEL: ind02:2466; LINUX-64-STATIC: # %bb.0: # %entry2467; LINUX-64-STATIC-NEXT: movq src@GOTPCREL(%rip), %rax2468; LINUX-64-STATIC-NEXT: movl (%rax,%rdi,4), %eax2469; LINUX-64-STATIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx2470; LINUX-64-STATIC-NEXT: movq (%rcx), %rcx2471; LINUX-64-STATIC-NEXT: movl %eax, (%rcx,%rdi,4)2472; LINUX-64-STATIC-NEXT: retq2473;2474; LINUX-32-STATIC-LABEL: ind02:2475; LINUX-32-STATIC: # %bb.0: # %entry2476; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax2477; LINUX-32-STATIC-NEXT: movl src(,%eax,4), %ecx2478; LINUX-32-STATIC-NEXT: movl ptr, %edx2479; LINUX-32-STATIC-NEXT: movl %ecx, (%edx,%eax,4)2480; LINUX-32-STATIC-NEXT: retl2481;2482; LINUX-32-PIC-LABEL: ind02:2483; LINUX-32-PIC: # %bb.0: # %entry2484; LINUX-32-PIC-NEXT: calll .L28$pb2485; LINUX-32-PIC-NEXT: .L28$pb:2486; LINUX-32-PIC-NEXT: popl %eax2487; LINUX-32-PIC-NEXT: .Ltmp28:2488; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp28-.L28$pb), %eax2489; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx2490; LINUX-32-PIC-NEXT: movl src@GOT(%eax), %edx2491; LINUX-32-PIC-NEXT: movl (%edx,%ecx,4), %edx2492; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax2493; LINUX-32-PIC-NEXT: movl (%eax), %eax2494; LINUX-32-PIC-NEXT: movl %edx, (%eax,%ecx,4)2495; LINUX-32-PIC-NEXT: retl2496;2497; LINUX-64-PIC-LABEL: ind02:2498; LINUX-64-PIC: # %bb.0: # %entry2499; LINUX-64-PIC-NEXT: movq src@GOTPCREL(%rip), %rax2500; LINUX-64-PIC-NEXT: movl (%rax,%rdi,4), %eax2501; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx2502; LINUX-64-PIC-NEXT: movq (%rcx), %rcx2503; LINUX-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4)2504; LINUX-64-PIC-NEXT: retq2505;2506; DARWIN-32-STATIC-LABEL: ind02:2507; DARWIN-32-STATIC: ## %bb.0: ## %entry2508; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax2509; DARWIN-32-STATIC-NEXT: movl _src(,%eax,4), %ecx2510; DARWIN-32-STATIC-NEXT: movl _ptr, %edx2511; DARWIN-32-STATIC-NEXT: movl %ecx, (%edx,%eax,4)2512; DARWIN-32-STATIC-NEXT: retl2513;2514; DARWIN-32-DYNAMIC-LABEL: ind02:2515; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry2516; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax2517; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %ecx2518; DARWIN-32-DYNAMIC-NEXT: movl (%ecx,%eax,4), %ecx2519; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %edx2520; DARWIN-32-DYNAMIC-NEXT: movl (%edx), %edx2521; DARWIN-32-DYNAMIC-NEXT: movl %ecx, (%edx,%eax,4)2522; DARWIN-32-DYNAMIC-NEXT: retl2523;2524; DARWIN-32-PIC-LABEL: ind02:2525; DARWIN-32-PIC: ## %bb.0: ## %entry2526; DARWIN-32-PIC-NEXT: calll L28$pb2527; DARWIN-32-PIC-NEXT: L28$pb:2528; DARWIN-32-PIC-NEXT: popl %eax2529; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx2530; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L28$pb(%eax), %edx2531; DARWIN-32-PIC-NEXT: movl (%edx,%ecx,4), %edx2532; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L28$pb(%eax), %eax2533; DARWIN-32-PIC-NEXT: movl (%eax), %eax2534; DARWIN-32-PIC-NEXT: movl %edx, (%eax,%ecx,4)2535; DARWIN-32-PIC-NEXT: retl2536;2537; DARWIN-64-STATIC-LABEL: ind02:2538; DARWIN-64-STATIC: ## %bb.0: ## %entry2539; DARWIN-64-STATIC-NEXT: movq _src@GOTPCREL(%rip), %rax2540; DARWIN-64-STATIC-NEXT: movl (%rax,%rdi,4), %eax2541; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx2542; DARWIN-64-STATIC-NEXT: movq (%rcx), %rcx2543; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx,%rdi,4)2544; DARWIN-64-STATIC-NEXT: retq2545;2546; DARWIN-64-DYNAMIC-LABEL: ind02:2547; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry2548; DARWIN-64-DYNAMIC-NEXT: movq _src@GOTPCREL(%rip), %rax2549; DARWIN-64-DYNAMIC-NEXT: movl (%rax,%rdi,4), %eax2550; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx2551; DARWIN-64-DYNAMIC-NEXT: movq (%rcx), %rcx2552; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx,%rdi,4)2553; DARWIN-64-DYNAMIC-NEXT: retq2554;2555; DARWIN-64-PIC-LABEL: ind02:2556; DARWIN-64-PIC: ## %bb.0: ## %entry2557; DARWIN-64-PIC-NEXT: movq _src@GOTPCREL(%rip), %rax2558; DARWIN-64-PIC-NEXT: movl (%rax,%rdi,4), %eax2559; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx2560; DARWIN-64-PIC-NEXT: movq (%rcx), %rcx2561; DARWIN-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4)2562; DARWIN-64-PIC-NEXT: retq2563 2564entry:2565 %0 = load ptr, ptr @ptr, align 82566 %1 = getelementptr [131072 x i32], ptr @src, i64 0, i64 %i2567 %2 = load i32, ptr %1, align 42568 %3 = getelementptr i32, ptr %0, i64 %i2569 store i32 %2, ptr %3, align 42570 ret void2571}2572 2573define dso_local void @ixd02(i64 %i) nounwind {2574; LINUX-64-STATIC-LABEL: ixd02:2575; LINUX-64-STATIC: # %bb.0: # %entry2576; LINUX-64-STATIC-NEXT: movq xsrc@GOTPCREL(%rip), %rax2577; LINUX-64-STATIC-NEXT: movl (%rax,%rdi,4), %eax2578; LINUX-64-STATIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx2579; LINUX-64-STATIC-NEXT: movq (%rcx), %rcx2580; LINUX-64-STATIC-NEXT: movl %eax, (%rcx,%rdi,4)2581; LINUX-64-STATIC-NEXT: retq2582;2583; LINUX-32-STATIC-LABEL: ixd02:2584; LINUX-32-STATIC: # %bb.0: # %entry2585; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax2586; LINUX-32-STATIC-NEXT: movl xsrc(,%eax,4), %ecx2587; LINUX-32-STATIC-NEXT: movl ptr, %edx2588; LINUX-32-STATIC-NEXT: movl %ecx, (%edx,%eax,4)2589; LINUX-32-STATIC-NEXT: retl2590;2591; LINUX-32-PIC-LABEL: ixd02:2592; LINUX-32-PIC: # %bb.0: # %entry2593; LINUX-32-PIC-NEXT: calll .L29$pb2594; LINUX-32-PIC-NEXT: .L29$pb:2595; LINUX-32-PIC-NEXT: popl %eax2596; LINUX-32-PIC-NEXT: .Ltmp29:2597; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp29-.L29$pb), %eax2598; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx2599; LINUX-32-PIC-NEXT: movl xsrc@GOT(%eax), %edx2600; LINUX-32-PIC-NEXT: movl (%edx,%ecx,4), %edx2601; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax2602; LINUX-32-PIC-NEXT: movl (%eax), %eax2603; LINUX-32-PIC-NEXT: movl %edx, (%eax,%ecx,4)2604; LINUX-32-PIC-NEXT: retl2605;2606; LINUX-64-PIC-LABEL: ixd02:2607; LINUX-64-PIC: # %bb.0: # %entry2608; LINUX-64-PIC-NEXT: movq xsrc@GOTPCREL(%rip), %rax2609; LINUX-64-PIC-NEXT: movl (%rax,%rdi,4), %eax2610; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx2611; LINUX-64-PIC-NEXT: movq (%rcx), %rcx2612; LINUX-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4)2613; LINUX-64-PIC-NEXT: retq2614;2615; DARWIN-32-STATIC-LABEL: ixd02:2616; DARWIN-32-STATIC: ## %bb.0: ## %entry2617; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax2618; DARWIN-32-STATIC-NEXT: movl _xsrc(,%eax,4), %ecx2619; DARWIN-32-STATIC-NEXT: movl _ptr, %edx2620; DARWIN-32-STATIC-NEXT: movl %ecx, (%edx,%eax,4)2621; DARWIN-32-STATIC-NEXT: retl2622;2623; DARWIN-32-DYNAMIC-LABEL: ixd02:2624; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry2625; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax2626; DARWIN-32-DYNAMIC-NEXT: movl L_xsrc$non_lazy_ptr, %ecx2627; DARWIN-32-DYNAMIC-NEXT: movl (%ecx,%eax,4), %ecx2628; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %edx2629; DARWIN-32-DYNAMIC-NEXT: movl (%edx), %edx2630; DARWIN-32-DYNAMIC-NEXT: movl %ecx, (%edx,%eax,4)2631; DARWIN-32-DYNAMIC-NEXT: retl2632;2633; DARWIN-32-PIC-LABEL: ixd02:2634; DARWIN-32-PIC: ## %bb.0: ## %entry2635; DARWIN-32-PIC-NEXT: calll L29$pb2636; DARWIN-32-PIC-NEXT: L29$pb:2637; DARWIN-32-PIC-NEXT: popl %eax2638; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx2639; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-L29$pb(%eax), %edx2640; DARWIN-32-PIC-NEXT: movl (%edx,%ecx,4), %edx2641; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L29$pb(%eax), %eax2642; DARWIN-32-PIC-NEXT: movl (%eax), %eax2643; DARWIN-32-PIC-NEXT: movl %edx, (%eax,%ecx,4)2644; DARWIN-32-PIC-NEXT: retl2645;2646; DARWIN-64-STATIC-LABEL: ixd02:2647; DARWIN-64-STATIC: ## %bb.0: ## %entry2648; DARWIN-64-STATIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax2649; DARWIN-64-STATIC-NEXT: movl (%rax,%rdi,4), %eax2650; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx2651; DARWIN-64-STATIC-NEXT: movq (%rcx), %rcx2652; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx,%rdi,4)2653; DARWIN-64-STATIC-NEXT: retq2654;2655; DARWIN-64-DYNAMIC-LABEL: ixd02:2656; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry2657; DARWIN-64-DYNAMIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax2658; DARWIN-64-DYNAMIC-NEXT: movl (%rax,%rdi,4), %eax2659; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx2660; DARWIN-64-DYNAMIC-NEXT: movq (%rcx), %rcx2661; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx,%rdi,4)2662; DARWIN-64-DYNAMIC-NEXT: retq2663;2664; DARWIN-64-PIC-LABEL: ixd02:2665; DARWIN-64-PIC: ## %bb.0: ## %entry2666; DARWIN-64-PIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax2667; DARWIN-64-PIC-NEXT: movl (%rax,%rdi,4), %eax2668; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx2669; DARWIN-64-PIC-NEXT: movq (%rcx), %rcx2670; DARWIN-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4)2671; DARWIN-64-PIC-NEXT: retq2672 2673entry:2674 %0 = load ptr, ptr @ptr, align 82675 %1 = getelementptr [32 x i32], ptr @xsrc, i64 0, i64 %i2676 %2 = load i32, ptr %1, align 42677 %3 = getelementptr i32, ptr %0, i64 %i2678 store i32 %2, ptr %3, align 42679 ret void2680}2681 2682define dso_local void @ind03(i64 %i) nounwind {2683; LINUX-64-STATIC-LABEL: ind03:2684; LINUX-64-STATIC: # %bb.0: # %entry2685; LINUX-64-STATIC-NEXT: movl dsrc(,%rdi,4), %eax2686; LINUX-64-STATIC-NEXT: movl %eax, ddst(,%rdi,4)2687; LINUX-64-STATIC-NEXT: retq2688;2689; LINUX-32-STATIC-LABEL: ind03:2690; LINUX-32-STATIC: # %bb.0: # %entry2691; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax2692; LINUX-32-STATIC-NEXT: movl dsrc(,%eax,4), %ecx2693; LINUX-32-STATIC-NEXT: movl %ecx, ddst(,%eax,4)2694; LINUX-32-STATIC-NEXT: retl2695;2696; LINUX-32-PIC-LABEL: ind03:2697; LINUX-32-PIC: # %bb.0: # %entry2698; LINUX-32-PIC-NEXT: calll .L30$pb2699; LINUX-32-PIC-NEXT: .L30$pb:2700; LINUX-32-PIC-NEXT: popl %eax2701; LINUX-32-PIC-NEXT: .Ltmp30:2702; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp30-.L30$pb), %eax2703; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx2704; LINUX-32-PIC-NEXT: movl .Ldsrc$local@GOTOFF(%eax,%ecx,4), %edx2705; LINUX-32-PIC-NEXT: movl %edx, .Lddst$local@GOTOFF(%eax,%ecx,4)2706; LINUX-32-PIC-NEXT: retl2707;2708; LINUX-64-PIC-LABEL: ind03:2709; LINUX-64-PIC: # %bb.0: # %entry2710; LINUX-64-PIC-NEXT: leaq .Ldsrc$local(%rip), %rax2711; LINUX-64-PIC-NEXT: movl (%rax,%rdi,4), %eax2712; LINUX-64-PIC-NEXT: leaq .Lddst$local(%rip), %rcx2713; LINUX-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4)2714; LINUX-64-PIC-NEXT: retq2715;2716; DARWIN-32-STATIC-LABEL: ind03:2717; DARWIN-32-STATIC: ## %bb.0: ## %entry2718; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax2719; DARWIN-32-STATIC-NEXT: movl _dsrc(,%eax,4), %ecx2720; DARWIN-32-STATIC-NEXT: movl %ecx, _ddst(,%eax,4)2721; DARWIN-32-STATIC-NEXT: retl2722;2723; DARWIN-32-DYNAMIC-LABEL: ind03:2724; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry2725; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax2726; DARWIN-32-DYNAMIC-NEXT: movl _dsrc(,%eax,4), %ecx2727; DARWIN-32-DYNAMIC-NEXT: movl %ecx, _ddst(,%eax,4)2728; DARWIN-32-DYNAMIC-NEXT: retl2729;2730; DARWIN-32-PIC-LABEL: ind03:2731; DARWIN-32-PIC: ## %bb.0: ## %entry2732; DARWIN-32-PIC-NEXT: calll L30$pb2733; DARWIN-32-PIC-NEXT: L30$pb:2734; DARWIN-32-PIC-NEXT: popl %eax2735; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx2736; DARWIN-32-PIC-NEXT: movl _dsrc-L30$pb(%eax,%ecx,4), %edx2737; DARWIN-32-PIC-NEXT: movl %edx, _ddst-L30$pb(%eax,%ecx,4)2738; DARWIN-32-PIC-NEXT: retl2739;2740; DARWIN-64-STATIC-LABEL: ind03:2741; DARWIN-64-STATIC: ## %bb.0: ## %entry2742; DARWIN-64-STATIC-NEXT: leaq _dsrc(%rip), %rax2743; DARWIN-64-STATIC-NEXT: movl (%rax,%rdi,4), %eax2744; DARWIN-64-STATIC-NEXT: leaq _ddst(%rip), %rcx2745; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx,%rdi,4)2746; DARWIN-64-STATIC-NEXT: retq2747;2748; DARWIN-64-DYNAMIC-LABEL: ind03:2749; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry2750; DARWIN-64-DYNAMIC-NEXT: leaq _dsrc(%rip), %rax2751; DARWIN-64-DYNAMIC-NEXT: movl (%rax,%rdi,4), %eax2752; DARWIN-64-DYNAMIC-NEXT: leaq _ddst(%rip), %rcx2753; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx,%rdi,4)2754; DARWIN-64-DYNAMIC-NEXT: retq2755;2756; DARWIN-64-PIC-LABEL: ind03:2757; DARWIN-64-PIC: ## %bb.0: ## %entry2758; DARWIN-64-PIC-NEXT: leaq _dsrc(%rip), %rax2759; DARWIN-64-PIC-NEXT: movl (%rax,%rdi,4), %eax2760; DARWIN-64-PIC-NEXT: leaq _ddst(%rip), %rcx2761; DARWIN-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4)2762; DARWIN-64-PIC-NEXT: retq2763 2764entry:2765 %0 = getelementptr [131072 x i32], ptr @dsrc, i64 0, i64 %i2766 %1 = load i32, ptr %0, align 42767 %2 = getelementptr [131072 x i32], ptr @ddst, i64 0, i64 %i2768 store i32 %1, ptr %2, align 42769 ret void2770}2771 2772define dso_local void @ind04(i64 %i) nounwind {2773; LINUX-64-STATIC-LABEL: ind04:2774; LINUX-64-STATIC: # %bb.0: # %entry2775; LINUX-64-STATIC-NEXT: leaq ddst(,%rdi,4), %rax2776; LINUX-64-STATIC-NEXT: movq %rax, dptr(%rip)2777; LINUX-64-STATIC-NEXT: retq2778;2779; LINUX-32-STATIC-LABEL: ind04:2780; LINUX-32-STATIC: # %bb.0: # %entry2781; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax2782; LINUX-32-STATIC-NEXT: leal ddst(,%eax,4), %eax2783; LINUX-32-STATIC-NEXT: movl %eax, dptr2784; LINUX-32-STATIC-NEXT: retl2785;2786; LINUX-32-PIC-LABEL: ind04:2787; LINUX-32-PIC: # %bb.0: # %entry2788; LINUX-32-PIC-NEXT: calll .L31$pb2789; LINUX-32-PIC-NEXT: .L31$pb:2790; LINUX-32-PIC-NEXT: popl %eax2791; LINUX-32-PIC-NEXT: .Ltmp31:2792; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp31-.L31$pb), %eax2793; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx2794; LINUX-32-PIC-NEXT: leal .Lddst$local@GOTOFF(%eax,%ecx,4), %ecx2795; LINUX-32-PIC-NEXT: movl %ecx, .Ldptr$local@GOTOFF(%eax)2796; LINUX-32-PIC-NEXT: retl2797;2798; LINUX-64-PIC-LABEL: ind04:2799; LINUX-64-PIC: # %bb.0: # %entry2800; LINUX-64-PIC-NEXT: leaq .Lddst$local(%rip), %rax2801; LINUX-64-PIC-NEXT: leaq (%rax,%rdi,4), %rax2802; LINUX-64-PIC-NEXT: movq %rax, .Ldptr$local(%rip)2803; LINUX-64-PIC-NEXT: retq2804;2805; DARWIN-32-STATIC-LABEL: ind04:2806; DARWIN-32-STATIC: ## %bb.0: ## %entry2807; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax2808; DARWIN-32-STATIC-NEXT: leal _ddst(,%eax,4), %eax2809; DARWIN-32-STATIC-NEXT: movl %eax, _dptr2810; DARWIN-32-STATIC-NEXT: retl2811;2812; DARWIN-32-DYNAMIC-LABEL: ind04:2813; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry2814; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax2815; DARWIN-32-DYNAMIC-NEXT: leal _ddst(,%eax,4), %eax2816; DARWIN-32-DYNAMIC-NEXT: movl %eax, _dptr2817; DARWIN-32-DYNAMIC-NEXT: retl2818;2819; DARWIN-32-PIC-LABEL: ind04:2820; DARWIN-32-PIC: ## %bb.0: ## %entry2821; DARWIN-32-PIC-NEXT: calll L31$pb2822; DARWIN-32-PIC-NEXT: L31$pb:2823; DARWIN-32-PIC-NEXT: popl %eax2824; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx2825; DARWIN-32-PIC-NEXT: leal _ddst-L31$pb(%eax,%ecx,4), %ecx2826; DARWIN-32-PIC-NEXT: movl %ecx, _dptr-L31$pb(%eax)2827; DARWIN-32-PIC-NEXT: retl2828;2829; DARWIN-64-STATIC-LABEL: ind04:2830; DARWIN-64-STATIC: ## %bb.0: ## %entry2831; DARWIN-64-STATIC-NEXT: leaq _ddst(%rip), %rax2832; DARWIN-64-STATIC-NEXT: leaq (%rax,%rdi,4), %rax2833; DARWIN-64-STATIC-NEXT: movq %rax, _dptr(%rip)2834; DARWIN-64-STATIC-NEXT: retq2835;2836; DARWIN-64-DYNAMIC-LABEL: ind04:2837; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry2838; DARWIN-64-DYNAMIC-NEXT: leaq _ddst(%rip), %rax2839; DARWIN-64-DYNAMIC-NEXT: leaq (%rax,%rdi,4), %rax2840; DARWIN-64-DYNAMIC-NEXT: movq %rax, _dptr(%rip)2841; DARWIN-64-DYNAMIC-NEXT: retq2842;2843; DARWIN-64-PIC-LABEL: ind04:2844; DARWIN-64-PIC: ## %bb.0: ## %entry2845; DARWIN-64-PIC-NEXT: leaq _ddst(%rip), %rax2846; DARWIN-64-PIC-NEXT: leaq (%rax,%rdi,4), %rax2847; DARWIN-64-PIC-NEXT: movq %rax, _dptr(%rip)2848; DARWIN-64-PIC-NEXT: retq2849 2850entry:2851 %0 = getelementptr [131072 x i32], ptr @ddst, i64 0, i64 %i2852 store ptr %0, ptr @dptr, align 82853 ret void2854}2855 2856define dso_local void @ind05(i64 %i) nounwind {2857; LINUX-64-STATIC-LABEL: ind05:2858; LINUX-64-STATIC: # %bb.0: # %entry2859; LINUX-64-STATIC-NEXT: movl dsrc(,%rdi,4), %eax2860; LINUX-64-STATIC-NEXT: movq dptr(%rip), %rcx2861; LINUX-64-STATIC-NEXT: movl %eax, (%rcx,%rdi,4)2862; LINUX-64-STATIC-NEXT: retq2863;2864; LINUX-32-STATIC-LABEL: ind05:2865; LINUX-32-STATIC: # %bb.0: # %entry2866; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax2867; LINUX-32-STATIC-NEXT: movl dsrc(,%eax,4), %ecx2868; LINUX-32-STATIC-NEXT: movl dptr, %edx2869; LINUX-32-STATIC-NEXT: movl %ecx, (%edx,%eax,4)2870; LINUX-32-STATIC-NEXT: retl2871;2872; LINUX-32-PIC-LABEL: ind05:2873; LINUX-32-PIC: # %bb.0: # %entry2874; LINUX-32-PIC-NEXT: calll .L32$pb2875; LINUX-32-PIC-NEXT: .L32$pb:2876; LINUX-32-PIC-NEXT: popl %eax2877; LINUX-32-PIC-NEXT: .Ltmp32:2878; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp32-.L32$pb), %eax2879; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx2880; LINUX-32-PIC-NEXT: movl .Ldsrc$local@GOTOFF(%eax,%ecx,4), %edx2881; LINUX-32-PIC-NEXT: movl .Ldptr$local@GOTOFF(%eax), %eax2882; LINUX-32-PIC-NEXT: movl %edx, (%eax,%ecx,4)2883; LINUX-32-PIC-NEXT: retl2884;2885; LINUX-64-PIC-LABEL: ind05:2886; LINUX-64-PIC: # %bb.0: # %entry2887; LINUX-64-PIC-NEXT: leaq .Ldsrc$local(%rip), %rax2888; LINUX-64-PIC-NEXT: movl (%rax,%rdi,4), %eax2889; LINUX-64-PIC-NEXT: movq .Ldptr$local(%rip), %rcx2890; LINUX-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4)2891; LINUX-64-PIC-NEXT: retq2892;2893; DARWIN-32-STATIC-LABEL: ind05:2894; DARWIN-32-STATIC: ## %bb.0: ## %entry2895; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax2896; DARWIN-32-STATIC-NEXT: movl _dsrc(,%eax,4), %ecx2897; DARWIN-32-STATIC-NEXT: movl _dptr, %edx2898; DARWIN-32-STATIC-NEXT: movl %ecx, (%edx,%eax,4)2899; DARWIN-32-STATIC-NEXT: retl2900;2901; DARWIN-32-DYNAMIC-LABEL: ind05:2902; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry2903; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax2904; DARWIN-32-DYNAMIC-NEXT: movl _dsrc(,%eax,4), %ecx2905; DARWIN-32-DYNAMIC-NEXT: movl _dptr, %edx2906; DARWIN-32-DYNAMIC-NEXT: movl %ecx, (%edx,%eax,4)2907; DARWIN-32-DYNAMIC-NEXT: retl2908;2909; DARWIN-32-PIC-LABEL: ind05:2910; DARWIN-32-PIC: ## %bb.0: ## %entry2911; DARWIN-32-PIC-NEXT: calll L32$pb2912; DARWIN-32-PIC-NEXT: L32$pb:2913; DARWIN-32-PIC-NEXT: popl %eax2914; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx2915; DARWIN-32-PIC-NEXT: movl _dsrc-L32$pb(%eax,%ecx,4), %edx2916; DARWIN-32-PIC-NEXT: movl _dptr-L32$pb(%eax), %eax2917; DARWIN-32-PIC-NEXT: movl %edx, (%eax,%ecx,4)2918; DARWIN-32-PIC-NEXT: retl2919;2920; DARWIN-64-STATIC-LABEL: ind05:2921; DARWIN-64-STATIC: ## %bb.0: ## %entry2922; DARWIN-64-STATIC-NEXT: leaq _dsrc(%rip), %rax2923; DARWIN-64-STATIC-NEXT: movl (%rax,%rdi,4), %eax2924; DARWIN-64-STATIC-NEXT: movq _dptr(%rip), %rcx2925; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx,%rdi,4)2926; DARWIN-64-STATIC-NEXT: retq2927;2928; DARWIN-64-DYNAMIC-LABEL: ind05:2929; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry2930; DARWIN-64-DYNAMIC-NEXT: leaq _dsrc(%rip), %rax2931; DARWIN-64-DYNAMIC-NEXT: movl (%rax,%rdi,4), %eax2932; DARWIN-64-DYNAMIC-NEXT: movq _dptr(%rip), %rcx2933; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx,%rdi,4)2934; DARWIN-64-DYNAMIC-NEXT: retq2935;2936; DARWIN-64-PIC-LABEL: ind05:2937; DARWIN-64-PIC: ## %bb.0: ## %entry2938; DARWIN-64-PIC-NEXT: leaq _dsrc(%rip), %rax2939; DARWIN-64-PIC-NEXT: movl (%rax,%rdi,4), %eax2940; DARWIN-64-PIC-NEXT: movq _dptr(%rip), %rcx2941; DARWIN-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4)2942; DARWIN-64-PIC-NEXT: retq2943 2944entry:2945 %0 = load ptr, ptr @dptr, align 82946 %1 = getelementptr [131072 x i32], ptr @dsrc, i64 0, i64 %i2947 %2 = load i32, ptr %1, align 42948 %3 = getelementptr i32, ptr %0, i64 %i2949 store i32 %2, ptr %3, align 42950 ret void2951}2952 2953define dso_local void @ind06(i64 %i) nounwind {2954; LINUX-64-STATIC-LABEL: ind06:2955; LINUX-64-STATIC: # %bb.0: # %entry2956; LINUX-64-STATIC-NEXT: movl lsrc(,%rdi,4), %eax2957; LINUX-64-STATIC-NEXT: movl %eax, ldst(,%rdi,4)2958; LINUX-64-STATIC-NEXT: retq2959;2960; LINUX-32-STATIC-LABEL: ind06:2961; LINUX-32-STATIC: # %bb.0: # %entry2962; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax2963; LINUX-32-STATIC-NEXT: movl lsrc(,%eax,4), %ecx2964; LINUX-32-STATIC-NEXT: movl %ecx, ldst(,%eax,4)2965; LINUX-32-STATIC-NEXT: retl2966;2967; LINUX-32-PIC-LABEL: ind06:2968; LINUX-32-PIC: # %bb.0: # %entry2969; LINUX-32-PIC-NEXT: calll .L33$pb2970; LINUX-32-PIC-NEXT: .L33$pb:2971; LINUX-32-PIC-NEXT: popl %eax2972; LINUX-32-PIC-NEXT: .Ltmp33:2973; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp33-.L33$pb), %eax2974; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx2975; LINUX-32-PIC-NEXT: movl lsrc@GOTOFF(%eax,%ecx,4), %edx2976; LINUX-32-PIC-NEXT: movl %edx, ldst@GOTOFF(%eax,%ecx,4)2977; LINUX-32-PIC-NEXT: retl2978;2979; LINUX-64-PIC-LABEL: ind06:2980; LINUX-64-PIC: # %bb.0: # %entry2981; LINUX-64-PIC-NEXT: leaq lsrc(%rip), %rax2982; LINUX-64-PIC-NEXT: movl (%rax,%rdi,4), %eax2983; LINUX-64-PIC-NEXT: leaq ldst(%rip), %rcx2984; LINUX-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4)2985; LINUX-64-PIC-NEXT: retq2986;2987; DARWIN-32-STATIC-LABEL: ind06:2988; DARWIN-32-STATIC: ## %bb.0: ## %entry2989; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax2990; DARWIN-32-STATIC-NEXT: movl _lsrc(,%eax,4), %ecx2991; DARWIN-32-STATIC-NEXT: movl %ecx, _ldst(,%eax,4)2992; DARWIN-32-STATIC-NEXT: retl2993;2994; DARWIN-32-DYNAMIC-LABEL: ind06:2995; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry2996; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax2997; DARWIN-32-DYNAMIC-NEXT: movl _lsrc(,%eax,4), %ecx2998; DARWIN-32-DYNAMIC-NEXT: movl %ecx, _ldst(,%eax,4)2999; DARWIN-32-DYNAMIC-NEXT: retl3000;3001; DARWIN-32-PIC-LABEL: ind06:3002; DARWIN-32-PIC: ## %bb.0: ## %entry3003; DARWIN-32-PIC-NEXT: calll L33$pb3004; DARWIN-32-PIC-NEXT: L33$pb:3005; DARWIN-32-PIC-NEXT: popl %eax3006; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx3007; DARWIN-32-PIC-NEXT: movl _lsrc-L33$pb(%eax,%ecx,4), %edx3008; DARWIN-32-PIC-NEXT: movl %edx, _ldst-L33$pb(%eax,%ecx,4)3009; DARWIN-32-PIC-NEXT: retl3010;3011; DARWIN-64-STATIC-LABEL: ind06:3012; DARWIN-64-STATIC: ## %bb.0: ## %entry3013; DARWIN-64-STATIC-NEXT: leaq _lsrc(%rip), %rax3014; DARWIN-64-STATIC-NEXT: movl (%rax,%rdi,4), %eax3015; DARWIN-64-STATIC-NEXT: leaq _ldst(%rip), %rcx3016; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx,%rdi,4)3017; DARWIN-64-STATIC-NEXT: retq3018;3019; DARWIN-64-DYNAMIC-LABEL: ind06:3020; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry3021; DARWIN-64-DYNAMIC-NEXT: leaq _lsrc(%rip), %rax3022; DARWIN-64-DYNAMIC-NEXT: movl (%rax,%rdi,4), %eax3023; DARWIN-64-DYNAMIC-NEXT: leaq _ldst(%rip), %rcx3024; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx,%rdi,4)3025; DARWIN-64-DYNAMIC-NEXT: retq3026;3027; DARWIN-64-PIC-LABEL: ind06:3028; DARWIN-64-PIC: ## %bb.0: ## %entry3029; DARWIN-64-PIC-NEXT: leaq _lsrc(%rip), %rax3030; DARWIN-64-PIC-NEXT: movl (%rax,%rdi,4), %eax3031; DARWIN-64-PIC-NEXT: leaq _ldst(%rip), %rcx3032; DARWIN-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4)3033; DARWIN-64-PIC-NEXT: retq3034 3035entry:3036 %0 = getelementptr [131072 x i32], ptr @lsrc, i64 0, i64 %i3037 %1 = load i32, ptr %0, align 43038 %2 = getelementptr [131072 x i32], ptr @ldst, i64 0, i64 %i3039 store i32 %1, ptr %2, align 43040 ret void3041}3042 3043define dso_local void @ind07(i64 %i) nounwind {3044; LINUX-64-STATIC-LABEL: ind07:3045; LINUX-64-STATIC: # %bb.0: # %entry3046; LINUX-64-STATIC-NEXT: leaq ldst(,%rdi,4), %rax3047; LINUX-64-STATIC-NEXT: movq %rax, lptr(%rip)3048; LINUX-64-STATIC-NEXT: retq3049;3050; LINUX-32-STATIC-LABEL: ind07:3051; LINUX-32-STATIC: # %bb.0: # %entry3052; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax3053; LINUX-32-STATIC-NEXT: leal ldst(,%eax,4), %eax3054; LINUX-32-STATIC-NEXT: movl %eax, lptr3055; LINUX-32-STATIC-NEXT: retl3056;3057; LINUX-32-PIC-LABEL: ind07:3058; LINUX-32-PIC: # %bb.0: # %entry3059; LINUX-32-PIC-NEXT: calll .L34$pb3060; LINUX-32-PIC-NEXT: .L34$pb:3061; LINUX-32-PIC-NEXT: popl %eax3062; LINUX-32-PIC-NEXT: .Ltmp34:3063; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp34-.L34$pb), %eax3064; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx3065; LINUX-32-PIC-NEXT: leal ldst@GOTOFF(%eax,%ecx,4), %ecx3066; LINUX-32-PIC-NEXT: movl %ecx, lptr@GOTOFF(%eax)3067; LINUX-32-PIC-NEXT: retl3068;3069; LINUX-64-PIC-LABEL: ind07:3070; LINUX-64-PIC: # %bb.0: # %entry3071; LINUX-64-PIC-NEXT: leaq ldst(%rip), %rax3072; LINUX-64-PIC-NEXT: leaq (%rax,%rdi,4), %rax3073; LINUX-64-PIC-NEXT: movq %rax, lptr(%rip)3074; LINUX-64-PIC-NEXT: retq3075;3076; DARWIN-32-STATIC-LABEL: ind07:3077; DARWIN-32-STATIC: ## %bb.0: ## %entry3078; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax3079; DARWIN-32-STATIC-NEXT: leal _ldst(,%eax,4), %eax3080; DARWIN-32-STATIC-NEXT: movl %eax, _lptr3081; DARWIN-32-STATIC-NEXT: retl3082;3083; DARWIN-32-DYNAMIC-LABEL: ind07:3084; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry3085; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax3086; DARWIN-32-DYNAMIC-NEXT: leal _ldst(,%eax,4), %eax3087; DARWIN-32-DYNAMIC-NEXT: movl %eax, _lptr3088; DARWIN-32-DYNAMIC-NEXT: retl3089;3090; DARWIN-32-PIC-LABEL: ind07:3091; DARWIN-32-PIC: ## %bb.0: ## %entry3092; DARWIN-32-PIC-NEXT: calll L34$pb3093; DARWIN-32-PIC-NEXT: L34$pb:3094; DARWIN-32-PIC-NEXT: popl %eax3095; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx3096; DARWIN-32-PIC-NEXT: leal _ldst-L34$pb(%eax,%ecx,4), %ecx3097; DARWIN-32-PIC-NEXT: movl %ecx, _lptr-L34$pb(%eax)3098; DARWIN-32-PIC-NEXT: retl3099;3100; DARWIN-64-STATIC-LABEL: ind07:3101; DARWIN-64-STATIC: ## %bb.0: ## %entry3102; DARWIN-64-STATIC-NEXT: leaq _ldst(%rip), %rax3103; DARWIN-64-STATIC-NEXT: leaq (%rax,%rdi,4), %rax3104; DARWIN-64-STATIC-NEXT: movq %rax, _lptr(%rip)3105; DARWIN-64-STATIC-NEXT: retq3106;3107; DARWIN-64-DYNAMIC-LABEL: ind07:3108; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry3109; DARWIN-64-DYNAMIC-NEXT: leaq _ldst(%rip), %rax3110; DARWIN-64-DYNAMIC-NEXT: leaq (%rax,%rdi,4), %rax3111; DARWIN-64-DYNAMIC-NEXT: movq %rax, _lptr(%rip)3112; DARWIN-64-DYNAMIC-NEXT: retq3113;3114; DARWIN-64-PIC-LABEL: ind07:3115; DARWIN-64-PIC: ## %bb.0: ## %entry3116; DARWIN-64-PIC-NEXT: leaq _ldst(%rip), %rax3117; DARWIN-64-PIC-NEXT: leaq (%rax,%rdi,4), %rax3118; DARWIN-64-PIC-NEXT: movq %rax, _lptr(%rip)3119; DARWIN-64-PIC-NEXT: retq3120 3121entry:3122 %0 = getelementptr [131072 x i32], ptr @ldst, i64 0, i64 %i3123 store ptr %0, ptr @lptr, align 83124 ret void3125}3126 3127define dso_local void @ind08(i64 %i) nounwind {3128; LINUX-64-STATIC-LABEL: ind08:3129; LINUX-64-STATIC: # %bb.0: # %entry3130; LINUX-64-STATIC-NEXT: movl lsrc(,%rdi,4), %eax3131; LINUX-64-STATIC-NEXT: movq lptr(%rip), %rcx3132; LINUX-64-STATIC-NEXT: movl %eax, (%rcx,%rdi,4)3133; LINUX-64-STATIC-NEXT: retq3134;3135; LINUX-32-STATIC-LABEL: ind08:3136; LINUX-32-STATIC: # %bb.0: # %entry3137; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax3138; LINUX-32-STATIC-NEXT: movl lsrc(,%eax,4), %ecx3139; LINUX-32-STATIC-NEXT: movl lptr, %edx3140; LINUX-32-STATIC-NEXT: movl %ecx, (%edx,%eax,4)3141; LINUX-32-STATIC-NEXT: retl3142;3143; LINUX-32-PIC-LABEL: ind08:3144; LINUX-32-PIC: # %bb.0: # %entry3145; LINUX-32-PIC-NEXT: calll .L35$pb3146; LINUX-32-PIC-NEXT: .L35$pb:3147; LINUX-32-PIC-NEXT: popl %eax3148; LINUX-32-PIC-NEXT: .Ltmp35:3149; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp35-.L35$pb), %eax3150; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx3151; LINUX-32-PIC-NEXT: movl lsrc@GOTOFF(%eax,%ecx,4), %edx3152; LINUX-32-PIC-NEXT: movl lptr@GOTOFF(%eax), %eax3153; LINUX-32-PIC-NEXT: movl %edx, (%eax,%ecx,4)3154; LINUX-32-PIC-NEXT: retl3155;3156; LINUX-64-PIC-LABEL: ind08:3157; LINUX-64-PIC: # %bb.0: # %entry3158; LINUX-64-PIC-NEXT: leaq lsrc(%rip), %rax3159; LINUX-64-PIC-NEXT: movl (%rax,%rdi,4), %eax3160; LINUX-64-PIC-NEXT: movq lptr(%rip), %rcx3161; LINUX-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4)3162; LINUX-64-PIC-NEXT: retq3163;3164; DARWIN-32-STATIC-LABEL: ind08:3165; DARWIN-32-STATIC: ## %bb.0: ## %entry3166; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax3167; DARWIN-32-STATIC-NEXT: movl _lsrc(,%eax,4), %ecx3168; DARWIN-32-STATIC-NEXT: movl _lptr, %edx3169; DARWIN-32-STATIC-NEXT: movl %ecx, (%edx,%eax,4)3170; DARWIN-32-STATIC-NEXT: retl3171;3172; DARWIN-32-DYNAMIC-LABEL: ind08:3173; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry3174; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax3175; DARWIN-32-DYNAMIC-NEXT: movl _lsrc(,%eax,4), %ecx3176; DARWIN-32-DYNAMIC-NEXT: movl _lptr, %edx3177; DARWIN-32-DYNAMIC-NEXT: movl %ecx, (%edx,%eax,4)3178; DARWIN-32-DYNAMIC-NEXT: retl3179;3180; DARWIN-32-PIC-LABEL: ind08:3181; DARWIN-32-PIC: ## %bb.0: ## %entry3182; DARWIN-32-PIC-NEXT: calll L35$pb3183; DARWIN-32-PIC-NEXT: L35$pb:3184; DARWIN-32-PIC-NEXT: popl %eax3185; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx3186; DARWIN-32-PIC-NEXT: movl _lsrc-L35$pb(%eax,%ecx,4), %edx3187; DARWIN-32-PIC-NEXT: movl _lptr-L35$pb(%eax), %eax3188; DARWIN-32-PIC-NEXT: movl %edx, (%eax,%ecx,4)3189; DARWIN-32-PIC-NEXT: retl3190;3191; DARWIN-64-STATIC-LABEL: ind08:3192; DARWIN-64-STATIC: ## %bb.0: ## %entry3193; DARWIN-64-STATIC-NEXT: leaq _lsrc(%rip), %rax3194; DARWIN-64-STATIC-NEXT: movl (%rax,%rdi,4), %eax3195; DARWIN-64-STATIC-NEXT: movq _lptr(%rip), %rcx3196; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx,%rdi,4)3197; DARWIN-64-STATIC-NEXT: retq3198;3199; DARWIN-64-DYNAMIC-LABEL: ind08:3200; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry3201; DARWIN-64-DYNAMIC-NEXT: leaq _lsrc(%rip), %rax3202; DARWIN-64-DYNAMIC-NEXT: movl (%rax,%rdi,4), %eax3203; DARWIN-64-DYNAMIC-NEXT: movq _lptr(%rip), %rcx3204; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx,%rdi,4)3205; DARWIN-64-DYNAMIC-NEXT: retq3206;3207; DARWIN-64-PIC-LABEL: ind08:3208; DARWIN-64-PIC: ## %bb.0: ## %entry3209; DARWIN-64-PIC-NEXT: leaq _lsrc(%rip), %rax3210; DARWIN-64-PIC-NEXT: movl (%rax,%rdi,4), %eax3211; DARWIN-64-PIC-NEXT: movq _lptr(%rip), %rcx3212; DARWIN-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4)3213; DARWIN-64-PIC-NEXT: retq3214 3215entry:3216 %0 = load ptr, ptr @lptr, align 83217 %1 = getelementptr [131072 x i32], ptr @lsrc, i64 0, i64 %i3218 %2 = load i32, ptr %1, align 43219 %3 = getelementptr i32, ptr %0, i64 %i3220 store i32 %2, ptr %3, align 43221 ret void3222}3223 3224define dso_local void @off00(i64 %i) nounwind {3225; LINUX-64-STATIC-LABEL: off00:3226; LINUX-64-STATIC: # %bb.0: # %entry3227; LINUX-64-STATIC-NEXT: movq src@GOTPCREL(%rip), %rax3228; LINUX-64-STATIC-NEXT: movl 64(%rax,%rdi,4), %eax3229; LINUX-64-STATIC-NEXT: movq dst@GOTPCREL(%rip), %rcx3230; LINUX-64-STATIC-NEXT: movl %eax, 64(%rcx,%rdi,4)3231; LINUX-64-STATIC-NEXT: retq3232;3233; LINUX-32-STATIC-LABEL: off00:3234; LINUX-32-STATIC: # %bb.0: # %entry3235; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax3236; LINUX-32-STATIC-NEXT: movl src+64(,%eax,4), %ecx3237; LINUX-32-STATIC-NEXT: movl %ecx, dst+64(,%eax,4)3238; LINUX-32-STATIC-NEXT: retl3239;3240; LINUX-32-PIC-LABEL: off00:3241; LINUX-32-PIC: # %bb.0: # %entry3242; LINUX-32-PIC-NEXT: calll .L36$pb3243; LINUX-32-PIC-NEXT: .L36$pb:3244; LINUX-32-PIC-NEXT: popl %eax3245; LINUX-32-PIC-NEXT: .Ltmp36:3246; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp36-.L36$pb), %eax3247; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx3248; LINUX-32-PIC-NEXT: movl src@GOT(%eax), %edx3249; LINUX-32-PIC-NEXT: movl 64(%edx,%ecx,4), %edx3250; LINUX-32-PIC-NEXT: movl dst@GOT(%eax), %eax3251; LINUX-32-PIC-NEXT: movl %edx, 64(%eax,%ecx,4)3252; LINUX-32-PIC-NEXT: retl3253;3254; LINUX-64-PIC-LABEL: off00:3255; LINUX-64-PIC: # %bb.0: # %entry3256; LINUX-64-PIC-NEXT: movq src@GOTPCREL(%rip), %rax3257; LINUX-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax3258; LINUX-64-PIC-NEXT: movq dst@GOTPCREL(%rip), %rcx3259; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4)3260; LINUX-64-PIC-NEXT: retq3261;3262; DARWIN-32-STATIC-LABEL: off00:3263; DARWIN-32-STATIC: ## %bb.0: ## %entry3264; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax3265; DARWIN-32-STATIC-NEXT: movl _src+64(,%eax,4), %ecx3266; DARWIN-32-STATIC-NEXT: movl %ecx, _dst+64(,%eax,4)3267; DARWIN-32-STATIC-NEXT: retl3268;3269; DARWIN-32-DYNAMIC-LABEL: off00:3270; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry3271; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax3272; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %ecx3273; DARWIN-32-DYNAMIC-NEXT: movl 64(%ecx,%eax,4), %ecx3274; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, %edx3275; DARWIN-32-DYNAMIC-NEXT: movl %ecx, 64(%edx,%eax,4)3276; DARWIN-32-DYNAMIC-NEXT: retl3277;3278; DARWIN-32-PIC-LABEL: off00:3279; DARWIN-32-PIC: ## %bb.0: ## %entry3280; DARWIN-32-PIC-NEXT: calll L36$pb3281; DARWIN-32-PIC-NEXT: L36$pb:3282; DARWIN-32-PIC-NEXT: popl %eax3283; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx3284; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L36$pb(%eax), %edx3285; DARWIN-32-PIC-NEXT: movl 64(%edx,%ecx,4), %edx3286; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L36$pb(%eax), %eax3287; DARWIN-32-PIC-NEXT: movl %edx, 64(%eax,%ecx,4)3288; DARWIN-32-PIC-NEXT: retl3289;3290; DARWIN-64-STATIC-LABEL: off00:3291; DARWIN-64-STATIC: ## %bb.0: ## %entry3292; DARWIN-64-STATIC-NEXT: movq _src@GOTPCREL(%rip), %rax3293; DARWIN-64-STATIC-NEXT: movl 64(%rax,%rdi,4), %eax3294; DARWIN-64-STATIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx3295; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx,%rdi,4)3296; DARWIN-64-STATIC-NEXT: retq3297;3298; DARWIN-64-DYNAMIC-LABEL: off00:3299; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry3300; DARWIN-64-DYNAMIC-NEXT: movq _src@GOTPCREL(%rip), %rax3301; DARWIN-64-DYNAMIC-NEXT: movl 64(%rax,%rdi,4), %eax3302; DARWIN-64-DYNAMIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx3303; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx,%rdi,4)3304; DARWIN-64-DYNAMIC-NEXT: retq3305;3306; DARWIN-64-PIC-LABEL: off00:3307; DARWIN-64-PIC: ## %bb.0: ## %entry3308; DARWIN-64-PIC-NEXT: movq _src@GOTPCREL(%rip), %rax3309; DARWIN-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax3310; DARWIN-64-PIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx3311; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4)3312; DARWIN-64-PIC-NEXT: retq3313 3314entry:3315 %0 = add i64 %i, 163316 %1 = getelementptr [131072 x i32], ptr @src, i64 0, i64 %03317 %2 = load i32, ptr %1, align 43318 %3 = getelementptr [131072 x i32], ptr @dst, i64 0, i64 %03319 store i32 %2, ptr %3, align 43320 ret void3321}3322 3323define dso_local void @oxf00(i64 %i) nounwind {3324; LINUX-64-STATIC-LABEL: oxf00:3325; LINUX-64-STATIC: # %bb.0: # %entry3326; LINUX-64-STATIC-NEXT: movq xsrc@GOTPCREL(%rip), %rax3327; LINUX-64-STATIC-NEXT: movl 64(%rax,%rdi,4), %eax3328; LINUX-64-STATIC-NEXT: movq xdst@GOTPCREL(%rip), %rcx3329; LINUX-64-STATIC-NEXT: movl %eax, 64(%rcx,%rdi,4)3330; LINUX-64-STATIC-NEXT: retq3331;3332; LINUX-32-STATIC-LABEL: oxf00:3333; LINUX-32-STATIC: # %bb.0: # %entry3334; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax3335; LINUX-32-STATIC-NEXT: movl xsrc+64(,%eax,4), %ecx3336; LINUX-32-STATIC-NEXT: movl %ecx, xdst+64(,%eax,4)3337; LINUX-32-STATIC-NEXT: retl3338;3339; LINUX-32-PIC-LABEL: oxf00:3340; LINUX-32-PIC: # %bb.0: # %entry3341; LINUX-32-PIC-NEXT: calll .L37$pb3342; LINUX-32-PIC-NEXT: .L37$pb:3343; LINUX-32-PIC-NEXT: popl %eax3344; LINUX-32-PIC-NEXT: .Ltmp37:3345; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp37-.L37$pb), %eax3346; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx3347; LINUX-32-PIC-NEXT: movl xsrc@GOT(%eax), %edx3348; LINUX-32-PIC-NEXT: movl 64(%edx,%ecx,4), %edx3349; LINUX-32-PIC-NEXT: movl xdst@GOT(%eax), %eax3350; LINUX-32-PIC-NEXT: movl %edx, 64(%eax,%ecx,4)3351; LINUX-32-PIC-NEXT: retl3352;3353; LINUX-64-PIC-LABEL: oxf00:3354; LINUX-64-PIC: # %bb.0: # %entry3355; LINUX-64-PIC-NEXT: movq xsrc@GOTPCREL(%rip), %rax3356; LINUX-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax3357; LINUX-64-PIC-NEXT: movq xdst@GOTPCREL(%rip), %rcx3358; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4)3359; LINUX-64-PIC-NEXT: retq3360;3361; DARWIN-32-STATIC-LABEL: oxf00:3362; DARWIN-32-STATIC: ## %bb.0: ## %entry3363; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax3364; DARWIN-32-STATIC-NEXT: movl _xsrc+64(,%eax,4), %ecx3365; DARWIN-32-STATIC-NEXT: movl %ecx, _xdst+64(,%eax,4)3366; DARWIN-32-STATIC-NEXT: retl3367;3368; DARWIN-32-DYNAMIC-LABEL: oxf00:3369; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry3370; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax3371; DARWIN-32-DYNAMIC-NEXT: movl L_xsrc$non_lazy_ptr, %ecx3372; DARWIN-32-DYNAMIC-NEXT: movl 64(%ecx,%eax,4), %ecx3373; DARWIN-32-DYNAMIC-NEXT: movl L_xdst$non_lazy_ptr, %edx3374; DARWIN-32-DYNAMIC-NEXT: movl %ecx, 64(%edx,%eax,4)3375; DARWIN-32-DYNAMIC-NEXT: retl3376;3377; DARWIN-32-PIC-LABEL: oxf00:3378; DARWIN-32-PIC: ## %bb.0: ## %entry3379; DARWIN-32-PIC-NEXT: calll L37$pb3380; DARWIN-32-PIC-NEXT: L37$pb:3381; DARWIN-32-PIC-NEXT: popl %eax3382; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx3383; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-L37$pb(%eax), %edx3384; DARWIN-32-PIC-NEXT: movl 64(%edx,%ecx,4), %edx3385; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-L37$pb(%eax), %eax3386; DARWIN-32-PIC-NEXT: movl %edx, 64(%eax,%ecx,4)3387; DARWIN-32-PIC-NEXT: retl3388;3389; DARWIN-64-STATIC-LABEL: oxf00:3390; DARWIN-64-STATIC: ## %bb.0: ## %entry3391; DARWIN-64-STATIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax3392; DARWIN-64-STATIC-NEXT: movl 64(%rax,%rdi,4), %eax3393; DARWIN-64-STATIC-NEXT: movq _xdst@GOTPCREL(%rip), %rcx3394; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx,%rdi,4)3395; DARWIN-64-STATIC-NEXT: retq3396;3397; DARWIN-64-DYNAMIC-LABEL: oxf00:3398; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry3399; DARWIN-64-DYNAMIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax3400; DARWIN-64-DYNAMIC-NEXT: movl 64(%rax,%rdi,4), %eax3401; DARWIN-64-DYNAMIC-NEXT: movq _xdst@GOTPCREL(%rip), %rcx3402; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx,%rdi,4)3403; DARWIN-64-DYNAMIC-NEXT: retq3404;3405; DARWIN-64-PIC-LABEL: oxf00:3406; DARWIN-64-PIC: ## %bb.0: ## %entry3407; DARWIN-64-PIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax3408; DARWIN-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax3409; DARWIN-64-PIC-NEXT: movq _xdst@GOTPCREL(%rip), %rcx3410; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4)3411; DARWIN-64-PIC-NEXT: retq3412 3413entry:3414 %0 = add i64 %i, 163415 %1 = getelementptr [32 x i32], ptr @xsrc, i64 0, i64 %03416 %2 = load i32, ptr %1, align 43417 %3 = getelementptr [32 x i32], ptr @xdst, i64 0, i64 %03418 store i32 %2, ptr %3, align 43419 ret void3420}3421 3422define dso_local void @off01(i64 %i) nounwind {3423; LINUX-64-STATIC-LABEL: off01:3424; LINUX-64-STATIC: # %bb.0: # %entry3425; LINUX-64-STATIC-NEXT: movq dst@GOTPCREL(%rip), %rax3426; LINUX-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax3427; LINUX-64-STATIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx3428; LINUX-64-STATIC-NEXT: movq %rax, (%rcx)3429; LINUX-64-STATIC-NEXT: retq3430;3431; LINUX-32-STATIC-LABEL: off01:3432; LINUX-32-STATIC: # %bb.0: # %entry3433; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax3434; LINUX-32-STATIC-NEXT: leal dst+64(,%eax,4), %eax3435; LINUX-32-STATIC-NEXT: movl %eax, ptr3436; LINUX-32-STATIC-NEXT: retl3437;3438; LINUX-32-PIC-LABEL: off01:3439; LINUX-32-PIC: # %bb.0: # %entry3440; LINUX-32-PIC-NEXT: calll .L38$pb3441; LINUX-32-PIC-NEXT: .L38$pb:3442; LINUX-32-PIC-NEXT: popl %eax3443; LINUX-32-PIC-NEXT: .Ltmp38:3444; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp38-.L38$pb), %eax3445; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx3446; LINUX-32-PIC-NEXT: movl dst@GOT(%eax), %edx3447; LINUX-32-PIC-NEXT: leal 64(%edx,%ecx,4), %ecx3448; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax3449; LINUX-32-PIC-NEXT: movl %ecx, (%eax)3450; LINUX-32-PIC-NEXT: retl3451;3452; LINUX-64-PIC-LABEL: off01:3453; LINUX-64-PIC: # %bb.0: # %entry3454; LINUX-64-PIC-NEXT: movq dst@GOTPCREL(%rip), %rax3455; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax3456; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx3457; LINUX-64-PIC-NEXT: movq %rax, (%rcx)3458; LINUX-64-PIC-NEXT: retq3459;3460; DARWIN-32-STATIC-LABEL: off01:3461; DARWIN-32-STATIC: ## %bb.0: ## %entry3462; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax3463; DARWIN-32-STATIC-NEXT: leal _dst+64(,%eax,4), %eax3464; DARWIN-32-STATIC-NEXT: movl %eax, _ptr3465; DARWIN-32-STATIC-NEXT: retl3466;3467; DARWIN-32-DYNAMIC-LABEL: off01:3468; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry3469; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax3470; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, %ecx3471; DARWIN-32-DYNAMIC-NEXT: leal 64(%ecx,%eax,4), %eax3472; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx3473; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx)3474; DARWIN-32-DYNAMIC-NEXT: retl3475;3476; DARWIN-32-PIC-LABEL: off01:3477; DARWIN-32-PIC: ## %bb.0: ## %entry3478; DARWIN-32-PIC-NEXT: calll L38$pb3479; DARWIN-32-PIC-NEXT: L38$pb:3480; DARWIN-32-PIC-NEXT: popl %eax3481; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx3482; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L38$pb(%eax), %edx3483; DARWIN-32-PIC-NEXT: leal 64(%edx,%ecx,4), %ecx3484; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L38$pb(%eax), %eax3485; DARWIN-32-PIC-NEXT: movl %ecx, (%eax)3486; DARWIN-32-PIC-NEXT: retl3487;3488; DARWIN-64-STATIC-LABEL: off01:3489; DARWIN-64-STATIC: ## %bb.0: ## %entry3490; DARWIN-64-STATIC-NEXT: movq _dst@GOTPCREL(%rip), %rax3491; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax3492; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx3493; DARWIN-64-STATIC-NEXT: movq %rax, (%rcx)3494; DARWIN-64-STATIC-NEXT: retq3495;3496; DARWIN-64-DYNAMIC-LABEL: off01:3497; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry3498; DARWIN-64-DYNAMIC-NEXT: movq _dst@GOTPCREL(%rip), %rax3499; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax3500; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx3501; DARWIN-64-DYNAMIC-NEXT: movq %rax, (%rcx)3502; DARWIN-64-DYNAMIC-NEXT: retq3503;3504; DARWIN-64-PIC-LABEL: off01:3505; DARWIN-64-PIC: ## %bb.0: ## %entry3506; DARWIN-64-PIC-NEXT: movq _dst@GOTPCREL(%rip), %rax3507; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax3508; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx3509; DARWIN-64-PIC-NEXT: movq %rax, (%rcx)3510; DARWIN-64-PIC-NEXT: retq3511 3512entry:3513 %.sum = add i64 %i, 163514 %0 = getelementptr [131072 x i32], ptr @dst, i64 0, i64 %.sum3515 store ptr %0, ptr @ptr, align 83516 ret void3517}3518 3519define dso_local void @oxf01(i64 %i) nounwind {3520; LINUX-64-STATIC-LABEL: oxf01:3521; LINUX-64-STATIC: # %bb.0: # %entry3522; LINUX-64-STATIC-NEXT: movq xdst@GOTPCREL(%rip), %rax3523; LINUX-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax3524; LINUX-64-STATIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx3525; LINUX-64-STATIC-NEXT: movq %rax, (%rcx)3526; LINUX-64-STATIC-NEXT: retq3527;3528; LINUX-32-STATIC-LABEL: oxf01:3529; LINUX-32-STATIC: # %bb.0: # %entry3530; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax3531; LINUX-32-STATIC-NEXT: leal xdst+64(,%eax,4), %eax3532; LINUX-32-STATIC-NEXT: movl %eax, ptr3533; LINUX-32-STATIC-NEXT: retl3534;3535; LINUX-32-PIC-LABEL: oxf01:3536; LINUX-32-PIC: # %bb.0: # %entry3537; LINUX-32-PIC-NEXT: calll .L39$pb3538; LINUX-32-PIC-NEXT: .L39$pb:3539; LINUX-32-PIC-NEXT: popl %eax3540; LINUX-32-PIC-NEXT: .Ltmp39:3541; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp39-.L39$pb), %eax3542; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx3543; LINUX-32-PIC-NEXT: movl xdst@GOT(%eax), %edx3544; LINUX-32-PIC-NEXT: leal 64(%edx,%ecx,4), %ecx3545; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax3546; LINUX-32-PIC-NEXT: movl %ecx, (%eax)3547; LINUX-32-PIC-NEXT: retl3548;3549; LINUX-64-PIC-LABEL: oxf01:3550; LINUX-64-PIC: # %bb.0: # %entry3551; LINUX-64-PIC-NEXT: movq xdst@GOTPCREL(%rip), %rax3552; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax3553; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx3554; LINUX-64-PIC-NEXT: movq %rax, (%rcx)3555; LINUX-64-PIC-NEXT: retq3556;3557; DARWIN-32-STATIC-LABEL: oxf01:3558; DARWIN-32-STATIC: ## %bb.0: ## %entry3559; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax3560; DARWIN-32-STATIC-NEXT: leal _xdst+64(,%eax,4), %eax3561; DARWIN-32-STATIC-NEXT: movl %eax, _ptr3562; DARWIN-32-STATIC-NEXT: retl3563;3564; DARWIN-32-DYNAMIC-LABEL: oxf01:3565; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry3566; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax3567; DARWIN-32-DYNAMIC-NEXT: movl L_xdst$non_lazy_ptr, %ecx3568; DARWIN-32-DYNAMIC-NEXT: leal 64(%ecx,%eax,4), %eax3569; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx3570; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx)3571; DARWIN-32-DYNAMIC-NEXT: retl3572;3573; DARWIN-32-PIC-LABEL: oxf01:3574; DARWIN-32-PIC: ## %bb.0: ## %entry3575; DARWIN-32-PIC-NEXT: calll L39$pb3576; DARWIN-32-PIC-NEXT: L39$pb:3577; DARWIN-32-PIC-NEXT: popl %eax3578; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx3579; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-L39$pb(%eax), %edx3580; DARWIN-32-PIC-NEXT: leal 64(%edx,%ecx,4), %ecx3581; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L39$pb(%eax), %eax3582; DARWIN-32-PIC-NEXT: movl %ecx, (%eax)3583; DARWIN-32-PIC-NEXT: retl3584;3585; DARWIN-64-STATIC-LABEL: oxf01:3586; DARWIN-64-STATIC: ## %bb.0: ## %entry3587; DARWIN-64-STATIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax3588; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax3589; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx3590; DARWIN-64-STATIC-NEXT: movq %rax, (%rcx)3591; DARWIN-64-STATIC-NEXT: retq3592;3593; DARWIN-64-DYNAMIC-LABEL: oxf01:3594; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry3595; DARWIN-64-DYNAMIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax3596; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax3597; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx3598; DARWIN-64-DYNAMIC-NEXT: movq %rax, (%rcx)3599; DARWIN-64-DYNAMIC-NEXT: retq3600;3601; DARWIN-64-PIC-LABEL: oxf01:3602; DARWIN-64-PIC: ## %bb.0: ## %entry3603; DARWIN-64-PIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax3604; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax3605; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx3606; DARWIN-64-PIC-NEXT: movq %rax, (%rcx)3607; DARWIN-64-PIC-NEXT: retq3608 3609entry:3610 %.sum = add i64 %i, 163611 %0 = getelementptr [32 x i32], ptr @xdst, i64 0, i64 %.sum3612 store ptr %0, ptr @ptr, align 83613 ret void3614}3615 3616define dso_local void @off02(i64 %i) nounwind {3617; LINUX-64-STATIC-LABEL: off02:3618; LINUX-64-STATIC: # %bb.0: # %entry3619; LINUX-64-STATIC-NEXT: movq src@GOTPCREL(%rip), %rax3620; LINUX-64-STATIC-NEXT: movl 64(%rax,%rdi,4), %eax3621; LINUX-64-STATIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx3622; LINUX-64-STATIC-NEXT: movq (%rcx), %rcx3623; LINUX-64-STATIC-NEXT: movl %eax, 64(%rcx,%rdi,4)3624; LINUX-64-STATIC-NEXT: retq3625;3626; LINUX-32-STATIC-LABEL: off02:3627; LINUX-32-STATIC: # %bb.0: # %entry3628; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax3629; LINUX-32-STATIC-NEXT: movl src+64(,%eax,4), %ecx3630; LINUX-32-STATIC-NEXT: movl ptr, %edx3631; LINUX-32-STATIC-NEXT: movl %ecx, 64(%edx,%eax,4)3632; LINUX-32-STATIC-NEXT: retl3633;3634; LINUX-32-PIC-LABEL: off02:3635; LINUX-32-PIC: # %bb.0: # %entry3636; LINUX-32-PIC-NEXT: calll .L40$pb3637; LINUX-32-PIC-NEXT: .L40$pb:3638; LINUX-32-PIC-NEXT: popl %eax3639; LINUX-32-PIC-NEXT: .Ltmp40:3640; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp40-.L40$pb), %eax3641; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx3642; LINUX-32-PIC-NEXT: movl src@GOT(%eax), %edx3643; LINUX-32-PIC-NEXT: movl 64(%edx,%ecx,4), %edx3644; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax3645; LINUX-32-PIC-NEXT: movl (%eax), %eax3646; LINUX-32-PIC-NEXT: movl %edx, 64(%eax,%ecx,4)3647; LINUX-32-PIC-NEXT: retl3648;3649; LINUX-64-PIC-LABEL: off02:3650; LINUX-64-PIC: # %bb.0: # %entry3651; LINUX-64-PIC-NEXT: movq src@GOTPCREL(%rip), %rax3652; LINUX-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax3653; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx3654; LINUX-64-PIC-NEXT: movq (%rcx), %rcx3655; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4)3656; LINUX-64-PIC-NEXT: retq3657;3658; DARWIN-32-STATIC-LABEL: off02:3659; DARWIN-32-STATIC: ## %bb.0: ## %entry3660; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax3661; DARWIN-32-STATIC-NEXT: movl _src+64(,%eax,4), %ecx3662; DARWIN-32-STATIC-NEXT: movl _ptr, %edx3663; DARWIN-32-STATIC-NEXT: movl %ecx, 64(%edx,%eax,4)3664; DARWIN-32-STATIC-NEXT: retl3665;3666; DARWIN-32-DYNAMIC-LABEL: off02:3667; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry3668; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax3669; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %ecx3670; DARWIN-32-DYNAMIC-NEXT: movl 64(%ecx,%eax,4), %ecx3671; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %edx3672; DARWIN-32-DYNAMIC-NEXT: movl (%edx), %edx3673; DARWIN-32-DYNAMIC-NEXT: movl %ecx, 64(%edx,%eax,4)3674; DARWIN-32-DYNAMIC-NEXT: retl3675;3676; DARWIN-32-PIC-LABEL: off02:3677; DARWIN-32-PIC: ## %bb.0: ## %entry3678; DARWIN-32-PIC-NEXT: calll L40$pb3679; DARWIN-32-PIC-NEXT: L40$pb:3680; DARWIN-32-PIC-NEXT: popl %eax3681; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx3682; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L40$pb(%eax), %edx3683; DARWIN-32-PIC-NEXT: movl 64(%edx,%ecx,4), %edx3684; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L40$pb(%eax), %eax3685; DARWIN-32-PIC-NEXT: movl (%eax), %eax3686; DARWIN-32-PIC-NEXT: movl %edx, 64(%eax,%ecx,4)3687; DARWIN-32-PIC-NEXT: retl3688;3689; DARWIN-64-STATIC-LABEL: off02:3690; DARWIN-64-STATIC: ## %bb.0: ## %entry3691; DARWIN-64-STATIC-NEXT: movq _src@GOTPCREL(%rip), %rax3692; DARWIN-64-STATIC-NEXT: movl 64(%rax,%rdi,4), %eax3693; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx3694; DARWIN-64-STATIC-NEXT: movq (%rcx), %rcx3695; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx,%rdi,4)3696; DARWIN-64-STATIC-NEXT: retq3697;3698; DARWIN-64-DYNAMIC-LABEL: off02:3699; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry3700; DARWIN-64-DYNAMIC-NEXT: movq _src@GOTPCREL(%rip), %rax3701; DARWIN-64-DYNAMIC-NEXT: movl 64(%rax,%rdi,4), %eax3702; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx3703; DARWIN-64-DYNAMIC-NEXT: movq (%rcx), %rcx3704; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx,%rdi,4)3705; DARWIN-64-DYNAMIC-NEXT: retq3706;3707; DARWIN-64-PIC-LABEL: off02:3708; DARWIN-64-PIC: ## %bb.0: ## %entry3709; DARWIN-64-PIC-NEXT: movq _src@GOTPCREL(%rip), %rax3710; DARWIN-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax3711; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx3712; DARWIN-64-PIC-NEXT: movq (%rcx), %rcx3713; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4)3714; DARWIN-64-PIC-NEXT: retq3715 3716entry:3717 %0 = load ptr, ptr @ptr, align 83718 %1 = add i64 %i, 163719 %2 = getelementptr [131072 x i32], ptr @src, i64 0, i64 %13720 %3 = load i32, ptr %2, align 43721 %4 = getelementptr i32, ptr %0, i64 %13722 store i32 %3, ptr %4, align 43723 ret void3724}3725 3726define dso_local void @oxf02(i64 %i) nounwind {3727; LINUX-64-STATIC-LABEL: oxf02:3728; LINUX-64-STATIC: # %bb.0: # %entry3729; LINUX-64-STATIC-NEXT: movq xsrc@GOTPCREL(%rip), %rax3730; LINUX-64-STATIC-NEXT: movl 64(%rax,%rdi,4), %eax3731; LINUX-64-STATIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx3732; LINUX-64-STATIC-NEXT: movq (%rcx), %rcx3733; LINUX-64-STATIC-NEXT: movl %eax, 64(%rcx,%rdi,4)3734; LINUX-64-STATIC-NEXT: retq3735;3736; LINUX-32-STATIC-LABEL: oxf02:3737; LINUX-32-STATIC: # %bb.0: # %entry3738; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax3739; LINUX-32-STATIC-NEXT: movl xsrc+64(,%eax,4), %ecx3740; LINUX-32-STATIC-NEXT: movl ptr, %edx3741; LINUX-32-STATIC-NEXT: movl %ecx, 64(%edx,%eax,4)3742; LINUX-32-STATIC-NEXT: retl3743;3744; LINUX-32-PIC-LABEL: oxf02:3745; LINUX-32-PIC: # %bb.0: # %entry3746; LINUX-32-PIC-NEXT: calll .L41$pb3747; LINUX-32-PIC-NEXT: .L41$pb:3748; LINUX-32-PIC-NEXT: popl %eax3749; LINUX-32-PIC-NEXT: .Ltmp41:3750; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp41-.L41$pb), %eax3751; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx3752; LINUX-32-PIC-NEXT: movl xsrc@GOT(%eax), %edx3753; LINUX-32-PIC-NEXT: movl 64(%edx,%ecx,4), %edx3754; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax3755; LINUX-32-PIC-NEXT: movl (%eax), %eax3756; LINUX-32-PIC-NEXT: movl %edx, 64(%eax,%ecx,4)3757; LINUX-32-PIC-NEXT: retl3758;3759; LINUX-64-PIC-LABEL: oxf02:3760; LINUX-64-PIC: # %bb.0: # %entry3761; LINUX-64-PIC-NEXT: movq xsrc@GOTPCREL(%rip), %rax3762; LINUX-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax3763; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx3764; LINUX-64-PIC-NEXT: movq (%rcx), %rcx3765; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4)3766; LINUX-64-PIC-NEXT: retq3767;3768; DARWIN-32-STATIC-LABEL: oxf02:3769; DARWIN-32-STATIC: ## %bb.0: ## %entry3770; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax3771; DARWIN-32-STATIC-NEXT: movl _xsrc+64(,%eax,4), %ecx3772; DARWIN-32-STATIC-NEXT: movl _ptr, %edx3773; DARWIN-32-STATIC-NEXT: movl %ecx, 64(%edx,%eax,4)3774; DARWIN-32-STATIC-NEXT: retl3775;3776; DARWIN-32-DYNAMIC-LABEL: oxf02:3777; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry3778; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax3779; DARWIN-32-DYNAMIC-NEXT: movl L_xsrc$non_lazy_ptr, %ecx3780; DARWIN-32-DYNAMIC-NEXT: movl 64(%ecx,%eax,4), %ecx3781; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %edx3782; DARWIN-32-DYNAMIC-NEXT: movl (%edx), %edx3783; DARWIN-32-DYNAMIC-NEXT: movl %ecx, 64(%edx,%eax,4)3784; DARWIN-32-DYNAMIC-NEXT: retl3785;3786; DARWIN-32-PIC-LABEL: oxf02:3787; DARWIN-32-PIC: ## %bb.0: ## %entry3788; DARWIN-32-PIC-NEXT: calll L41$pb3789; DARWIN-32-PIC-NEXT: L41$pb:3790; DARWIN-32-PIC-NEXT: popl %eax3791; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx3792; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-L41$pb(%eax), %edx3793; DARWIN-32-PIC-NEXT: movl 64(%edx,%ecx,4), %edx3794; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L41$pb(%eax), %eax3795; DARWIN-32-PIC-NEXT: movl (%eax), %eax3796; DARWIN-32-PIC-NEXT: movl %edx, 64(%eax,%ecx,4)3797; DARWIN-32-PIC-NEXT: retl3798;3799; DARWIN-64-STATIC-LABEL: oxf02:3800; DARWIN-64-STATIC: ## %bb.0: ## %entry3801; DARWIN-64-STATIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax3802; DARWIN-64-STATIC-NEXT: movl 64(%rax,%rdi,4), %eax3803; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx3804; DARWIN-64-STATIC-NEXT: movq (%rcx), %rcx3805; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx,%rdi,4)3806; DARWIN-64-STATIC-NEXT: retq3807;3808; DARWIN-64-DYNAMIC-LABEL: oxf02:3809; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry3810; DARWIN-64-DYNAMIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax3811; DARWIN-64-DYNAMIC-NEXT: movl 64(%rax,%rdi,4), %eax3812; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx3813; DARWIN-64-DYNAMIC-NEXT: movq (%rcx), %rcx3814; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx,%rdi,4)3815; DARWIN-64-DYNAMIC-NEXT: retq3816;3817; DARWIN-64-PIC-LABEL: oxf02:3818; DARWIN-64-PIC: ## %bb.0: ## %entry3819; DARWIN-64-PIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax3820; DARWIN-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax3821; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx3822; DARWIN-64-PIC-NEXT: movq (%rcx), %rcx3823; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4)3824; DARWIN-64-PIC-NEXT: retq3825 3826entry:3827 %0 = load ptr, ptr @ptr, align 83828 %1 = add i64 %i, 163829 %2 = getelementptr [32 x i32], ptr @xsrc, i64 0, i64 %13830 %3 = load i32, ptr %2, align 43831 %4 = getelementptr i32, ptr %0, i64 %13832 store i32 %3, ptr %4, align 43833 ret void3834}3835 3836define dso_local void @off03(i64 %i) nounwind {3837; LINUX-64-STATIC-LABEL: off03:3838; LINUX-64-STATIC: # %bb.0: # %entry3839; LINUX-64-STATIC-NEXT: movl dsrc+64(,%rdi,4), %eax3840; LINUX-64-STATIC-NEXT: movl %eax, ddst+64(,%rdi,4)3841; LINUX-64-STATIC-NEXT: retq3842;3843; LINUX-32-STATIC-LABEL: off03:3844; LINUX-32-STATIC: # %bb.0: # %entry3845; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax3846; LINUX-32-STATIC-NEXT: movl dsrc+64(,%eax,4), %ecx3847; LINUX-32-STATIC-NEXT: movl %ecx, ddst+64(,%eax,4)3848; LINUX-32-STATIC-NEXT: retl3849;3850; LINUX-32-PIC-LABEL: off03:3851; LINUX-32-PIC: # %bb.0: # %entry3852; LINUX-32-PIC-NEXT: calll .L42$pb3853; LINUX-32-PIC-NEXT: .L42$pb:3854; LINUX-32-PIC-NEXT: popl %eax3855; LINUX-32-PIC-NEXT: .Ltmp42:3856; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp42-.L42$pb), %eax3857; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx3858; LINUX-32-PIC-NEXT: movl .Ldsrc$local@GOTOFF+64(%eax,%ecx,4), %edx3859; LINUX-32-PIC-NEXT: movl %edx, .Lddst$local@GOTOFF+64(%eax,%ecx,4)3860; LINUX-32-PIC-NEXT: retl3861;3862; LINUX-64-PIC-LABEL: off03:3863; LINUX-64-PIC: # %bb.0: # %entry3864; LINUX-64-PIC-NEXT: leaq .Ldsrc$local(%rip), %rax3865; LINUX-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax3866; LINUX-64-PIC-NEXT: leaq .Lddst$local(%rip), %rcx3867; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4)3868; LINUX-64-PIC-NEXT: retq3869;3870; DARWIN-32-STATIC-LABEL: off03:3871; DARWIN-32-STATIC: ## %bb.0: ## %entry3872; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax3873; DARWIN-32-STATIC-NEXT: movl _dsrc+64(,%eax,4), %ecx3874; DARWIN-32-STATIC-NEXT: movl %ecx, _ddst+64(,%eax,4)3875; DARWIN-32-STATIC-NEXT: retl3876;3877; DARWIN-32-DYNAMIC-LABEL: off03:3878; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry3879; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax3880; DARWIN-32-DYNAMIC-NEXT: movl _dsrc+64(,%eax,4), %ecx3881; DARWIN-32-DYNAMIC-NEXT: movl %ecx, _ddst+64(,%eax,4)3882; DARWIN-32-DYNAMIC-NEXT: retl3883;3884; DARWIN-32-PIC-LABEL: off03:3885; DARWIN-32-PIC: ## %bb.0: ## %entry3886; DARWIN-32-PIC-NEXT: calll L42$pb3887; DARWIN-32-PIC-NEXT: L42$pb:3888; DARWIN-32-PIC-NEXT: popl %eax3889; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx3890; DARWIN-32-PIC-NEXT: movl _dsrc-L42$pb+64(%eax,%ecx,4), %edx3891; DARWIN-32-PIC-NEXT: movl %edx, _ddst-L42$pb+64(%eax,%ecx,4)3892; DARWIN-32-PIC-NEXT: retl3893;3894; DARWIN-64-STATIC-LABEL: off03:3895; DARWIN-64-STATIC: ## %bb.0: ## %entry3896; DARWIN-64-STATIC-NEXT: leaq _dsrc(%rip), %rax3897; DARWIN-64-STATIC-NEXT: movl 64(%rax,%rdi,4), %eax3898; DARWIN-64-STATIC-NEXT: leaq _ddst(%rip), %rcx3899; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx,%rdi,4)3900; DARWIN-64-STATIC-NEXT: retq3901;3902; DARWIN-64-DYNAMIC-LABEL: off03:3903; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry3904; DARWIN-64-DYNAMIC-NEXT: leaq _dsrc(%rip), %rax3905; DARWIN-64-DYNAMIC-NEXT: movl 64(%rax,%rdi,4), %eax3906; DARWIN-64-DYNAMIC-NEXT: leaq _ddst(%rip), %rcx3907; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx,%rdi,4)3908; DARWIN-64-DYNAMIC-NEXT: retq3909;3910; DARWIN-64-PIC-LABEL: off03:3911; DARWIN-64-PIC: ## %bb.0: ## %entry3912; DARWIN-64-PIC-NEXT: leaq _dsrc(%rip), %rax3913; DARWIN-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax3914; DARWIN-64-PIC-NEXT: leaq _ddst(%rip), %rcx3915; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4)3916; DARWIN-64-PIC-NEXT: retq3917 3918entry:3919 %0 = add i64 %i, 163920 %1 = getelementptr [131072 x i32], ptr @dsrc, i64 0, i64 %03921 %2 = load i32, ptr %1, align 43922 %3 = getelementptr [131072 x i32], ptr @ddst, i64 0, i64 %03923 store i32 %2, ptr %3, align 43924 ret void3925}3926 3927define dso_local void @off04(i64 %i) nounwind {3928; LINUX-64-STATIC-LABEL: off04:3929; LINUX-64-STATIC: # %bb.0: # %entry3930; LINUX-64-STATIC-NEXT: leaq ddst+64(,%rdi,4), %rax3931; LINUX-64-STATIC-NEXT: movq %rax, dptr(%rip)3932; LINUX-64-STATIC-NEXT: retq3933;3934; LINUX-32-STATIC-LABEL: off04:3935; LINUX-32-STATIC: # %bb.0: # %entry3936; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax3937; LINUX-32-STATIC-NEXT: leal ddst+64(,%eax,4), %eax3938; LINUX-32-STATIC-NEXT: movl %eax, dptr3939; LINUX-32-STATIC-NEXT: retl3940;3941; LINUX-32-PIC-LABEL: off04:3942; LINUX-32-PIC: # %bb.0: # %entry3943; LINUX-32-PIC-NEXT: calll .L43$pb3944; LINUX-32-PIC-NEXT: .L43$pb:3945; LINUX-32-PIC-NEXT: popl %eax3946; LINUX-32-PIC-NEXT: .Ltmp43:3947; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp43-.L43$pb), %eax3948; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx3949; LINUX-32-PIC-NEXT: leal .Lddst$local@GOTOFF+64(%eax,%ecx,4), %ecx3950; LINUX-32-PIC-NEXT: movl %ecx, .Ldptr$local@GOTOFF(%eax)3951; LINUX-32-PIC-NEXT: retl3952;3953; LINUX-64-PIC-LABEL: off04:3954; LINUX-64-PIC: # %bb.0: # %entry3955; LINUX-64-PIC-NEXT: leaq .Lddst$local(%rip), %rax3956; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax3957; LINUX-64-PIC-NEXT: movq %rax, .Ldptr$local(%rip)3958; LINUX-64-PIC-NEXT: retq3959;3960; DARWIN-32-STATIC-LABEL: off04:3961; DARWIN-32-STATIC: ## %bb.0: ## %entry3962; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax3963; DARWIN-32-STATIC-NEXT: leal _ddst+64(,%eax,4), %eax3964; DARWIN-32-STATIC-NEXT: movl %eax, _dptr3965; DARWIN-32-STATIC-NEXT: retl3966;3967; DARWIN-32-DYNAMIC-LABEL: off04:3968; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry3969; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax3970; DARWIN-32-DYNAMIC-NEXT: leal _ddst+64(,%eax,4), %eax3971; DARWIN-32-DYNAMIC-NEXT: movl %eax, _dptr3972; DARWIN-32-DYNAMIC-NEXT: retl3973;3974; DARWIN-32-PIC-LABEL: off04:3975; DARWIN-32-PIC: ## %bb.0: ## %entry3976; DARWIN-32-PIC-NEXT: calll L43$pb3977; DARWIN-32-PIC-NEXT: L43$pb:3978; DARWIN-32-PIC-NEXT: popl %eax3979; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx3980; DARWIN-32-PIC-NEXT: leal _ddst-L43$pb+64(%eax,%ecx,4), %ecx3981; DARWIN-32-PIC-NEXT: movl %ecx, _dptr-L43$pb(%eax)3982; DARWIN-32-PIC-NEXT: retl3983;3984; DARWIN-64-STATIC-LABEL: off04:3985; DARWIN-64-STATIC: ## %bb.0: ## %entry3986; DARWIN-64-STATIC-NEXT: leaq _ddst(%rip), %rax3987; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax3988; DARWIN-64-STATIC-NEXT: movq %rax, _dptr(%rip)3989; DARWIN-64-STATIC-NEXT: retq3990;3991; DARWIN-64-DYNAMIC-LABEL: off04:3992; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry3993; DARWIN-64-DYNAMIC-NEXT: leaq _ddst(%rip), %rax3994; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax3995; DARWIN-64-DYNAMIC-NEXT: movq %rax, _dptr(%rip)3996; DARWIN-64-DYNAMIC-NEXT: retq3997;3998; DARWIN-64-PIC-LABEL: off04:3999; DARWIN-64-PIC: ## %bb.0: ## %entry4000; DARWIN-64-PIC-NEXT: leaq _ddst(%rip), %rax4001; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax4002; DARWIN-64-PIC-NEXT: movq %rax, _dptr(%rip)4003; DARWIN-64-PIC-NEXT: retq4004 4005entry:4006 %.sum = add i64 %i, 164007 %0 = getelementptr [131072 x i32], ptr @ddst, i64 0, i64 %.sum4008 store ptr %0, ptr @dptr, align 84009 ret void4010}4011 4012define dso_local void @off05(i64 %i) nounwind {4013; LINUX-64-STATIC-LABEL: off05:4014; LINUX-64-STATIC: # %bb.0: # %entry4015; LINUX-64-STATIC-NEXT: movl dsrc+64(,%rdi,4), %eax4016; LINUX-64-STATIC-NEXT: movq dptr(%rip), %rcx4017; LINUX-64-STATIC-NEXT: movl %eax, 64(%rcx,%rdi,4)4018; LINUX-64-STATIC-NEXT: retq4019;4020; LINUX-32-STATIC-LABEL: off05:4021; LINUX-32-STATIC: # %bb.0: # %entry4022; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax4023; LINUX-32-STATIC-NEXT: movl dsrc+64(,%eax,4), %ecx4024; LINUX-32-STATIC-NEXT: movl dptr, %edx4025; LINUX-32-STATIC-NEXT: movl %ecx, 64(%edx,%eax,4)4026; LINUX-32-STATIC-NEXT: retl4027;4028; LINUX-32-PIC-LABEL: off05:4029; LINUX-32-PIC: # %bb.0: # %entry4030; LINUX-32-PIC-NEXT: calll .L44$pb4031; LINUX-32-PIC-NEXT: .L44$pb:4032; LINUX-32-PIC-NEXT: popl %eax4033; LINUX-32-PIC-NEXT: .Ltmp44:4034; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp44-.L44$pb), %eax4035; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx4036; LINUX-32-PIC-NEXT: movl .Ldsrc$local@GOTOFF+64(%eax,%ecx,4), %edx4037; LINUX-32-PIC-NEXT: movl .Ldptr$local@GOTOFF(%eax), %eax4038; LINUX-32-PIC-NEXT: movl %edx, 64(%eax,%ecx,4)4039; LINUX-32-PIC-NEXT: retl4040;4041; LINUX-64-PIC-LABEL: off05:4042; LINUX-64-PIC: # %bb.0: # %entry4043; LINUX-64-PIC-NEXT: leaq .Ldsrc$local(%rip), %rax4044; LINUX-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax4045; LINUX-64-PIC-NEXT: movq .Ldptr$local(%rip), %rcx4046; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4)4047; LINUX-64-PIC-NEXT: retq4048;4049; DARWIN-32-STATIC-LABEL: off05:4050; DARWIN-32-STATIC: ## %bb.0: ## %entry4051; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax4052; DARWIN-32-STATIC-NEXT: movl _dsrc+64(,%eax,4), %ecx4053; DARWIN-32-STATIC-NEXT: movl _dptr, %edx4054; DARWIN-32-STATIC-NEXT: movl %ecx, 64(%edx,%eax,4)4055; DARWIN-32-STATIC-NEXT: retl4056;4057; DARWIN-32-DYNAMIC-LABEL: off05:4058; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry4059; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax4060; DARWIN-32-DYNAMIC-NEXT: movl _dsrc+64(,%eax,4), %ecx4061; DARWIN-32-DYNAMIC-NEXT: movl _dptr, %edx4062; DARWIN-32-DYNAMIC-NEXT: movl %ecx, 64(%edx,%eax,4)4063; DARWIN-32-DYNAMIC-NEXT: retl4064;4065; DARWIN-32-PIC-LABEL: off05:4066; DARWIN-32-PIC: ## %bb.0: ## %entry4067; DARWIN-32-PIC-NEXT: calll L44$pb4068; DARWIN-32-PIC-NEXT: L44$pb:4069; DARWIN-32-PIC-NEXT: popl %eax4070; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx4071; DARWIN-32-PIC-NEXT: movl _dsrc-L44$pb+64(%eax,%ecx,4), %edx4072; DARWIN-32-PIC-NEXT: movl _dptr-L44$pb(%eax), %eax4073; DARWIN-32-PIC-NEXT: movl %edx, 64(%eax,%ecx,4)4074; DARWIN-32-PIC-NEXT: retl4075;4076; DARWIN-64-STATIC-LABEL: off05:4077; DARWIN-64-STATIC: ## %bb.0: ## %entry4078; DARWIN-64-STATIC-NEXT: leaq _dsrc(%rip), %rax4079; DARWIN-64-STATIC-NEXT: movl 64(%rax,%rdi,4), %eax4080; DARWIN-64-STATIC-NEXT: movq _dptr(%rip), %rcx4081; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx,%rdi,4)4082; DARWIN-64-STATIC-NEXT: retq4083;4084; DARWIN-64-DYNAMIC-LABEL: off05:4085; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry4086; DARWIN-64-DYNAMIC-NEXT: leaq _dsrc(%rip), %rax4087; DARWIN-64-DYNAMIC-NEXT: movl 64(%rax,%rdi,4), %eax4088; DARWIN-64-DYNAMIC-NEXT: movq _dptr(%rip), %rcx4089; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx,%rdi,4)4090; DARWIN-64-DYNAMIC-NEXT: retq4091;4092; DARWIN-64-PIC-LABEL: off05:4093; DARWIN-64-PIC: ## %bb.0: ## %entry4094; DARWIN-64-PIC-NEXT: leaq _dsrc(%rip), %rax4095; DARWIN-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax4096; DARWIN-64-PIC-NEXT: movq _dptr(%rip), %rcx4097; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4)4098; DARWIN-64-PIC-NEXT: retq4099 4100entry:4101 %0 = load ptr, ptr @dptr, align 84102 %1 = add i64 %i, 164103 %2 = getelementptr [131072 x i32], ptr @dsrc, i64 0, i64 %14104 %3 = load i32, ptr %2, align 44105 %4 = getelementptr i32, ptr %0, i64 %14106 store i32 %3, ptr %4, align 44107 ret void4108}4109 4110define dso_local void @off06(i64 %i) nounwind {4111; LINUX-64-STATIC-LABEL: off06:4112; LINUX-64-STATIC: # %bb.0: # %entry4113; LINUX-64-STATIC-NEXT: movl lsrc+64(,%rdi,4), %eax4114; LINUX-64-STATIC-NEXT: movl %eax, ldst+64(,%rdi,4)4115; LINUX-64-STATIC-NEXT: retq4116;4117; LINUX-32-STATIC-LABEL: off06:4118; LINUX-32-STATIC: # %bb.0: # %entry4119; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax4120; LINUX-32-STATIC-NEXT: movl lsrc+64(,%eax,4), %ecx4121; LINUX-32-STATIC-NEXT: movl %ecx, ldst+64(,%eax,4)4122; LINUX-32-STATIC-NEXT: retl4123;4124; LINUX-32-PIC-LABEL: off06:4125; LINUX-32-PIC: # %bb.0: # %entry4126; LINUX-32-PIC-NEXT: calll .L45$pb4127; LINUX-32-PIC-NEXT: .L45$pb:4128; LINUX-32-PIC-NEXT: popl %eax4129; LINUX-32-PIC-NEXT: .Ltmp45:4130; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp45-.L45$pb), %eax4131; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx4132; LINUX-32-PIC-NEXT: movl lsrc@GOTOFF+64(%eax,%ecx,4), %edx4133; LINUX-32-PIC-NEXT: movl %edx, ldst@GOTOFF+64(%eax,%ecx,4)4134; LINUX-32-PIC-NEXT: retl4135;4136; LINUX-64-PIC-LABEL: off06:4137; LINUX-64-PIC: # %bb.0: # %entry4138; LINUX-64-PIC-NEXT: leaq lsrc(%rip), %rax4139; LINUX-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax4140; LINUX-64-PIC-NEXT: leaq ldst(%rip), %rcx4141; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4)4142; LINUX-64-PIC-NEXT: retq4143;4144; DARWIN-32-STATIC-LABEL: off06:4145; DARWIN-32-STATIC: ## %bb.0: ## %entry4146; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax4147; DARWIN-32-STATIC-NEXT: movl _lsrc+64(,%eax,4), %ecx4148; DARWIN-32-STATIC-NEXT: movl %ecx, _ldst+64(,%eax,4)4149; DARWIN-32-STATIC-NEXT: retl4150;4151; DARWIN-32-DYNAMIC-LABEL: off06:4152; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry4153; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax4154; DARWIN-32-DYNAMIC-NEXT: movl _lsrc+64(,%eax,4), %ecx4155; DARWIN-32-DYNAMIC-NEXT: movl %ecx, _ldst+64(,%eax,4)4156; DARWIN-32-DYNAMIC-NEXT: retl4157;4158; DARWIN-32-PIC-LABEL: off06:4159; DARWIN-32-PIC: ## %bb.0: ## %entry4160; DARWIN-32-PIC-NEXT: calll L45$pb4161; DARWIN-32-PIC-NEXT: L45$pb:4162; DARWIN-32-PIC-NEXT: popl %eax4163; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx4164; DARWIN-32-PIC-NEXT: movl _lsrc-L45$pb+64(%eax,%ecx,4), %edx4165; DARWIN-32-PIC-NEXT: movl %edx, _ldst-L45$pb+64(%eax,%ecx,4)4166; DARWIN-32-PIC-NEXT: retl4167;4168; DARWIN-64-STATIC-LABEL: off06:4169; DARWIN-64-STATIC: ## %bb.0: ## %entry4170; DARWIN-64-STATIC-NEXT: leaq _lsrc(%rip), %rax4171; DARWIN-64-STATIC-NEXT: movl 64(%rax,%rdi,4), %eax4172; DARWIN-64-STATIC-NEXT: leaq _ldst(%rip), %rcx4173; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx,%rdi,4)4174; DARWIN-64-STATIC-NEXT: retq4175;4176; DARWIN-64-DYNAMIC-LABEL: off06:4177; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry4178; DARWIN-64-DYNAMIC-NEXT: leaq _lsrc(%rip), %rax4179; DARWIN-64-DYNAMIC-NEXT: movl 64(%rax,%rdi,4), %eax4180; DARWIN-64-DYNAMIC-NEXT: leaq _ldst(%rip), %rcx4181; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx,%rdi,4)4182; DARWIN-64-DYNAMIC-NEXT: retq4183;4184; DARWIN-64-PIC-LABEL: off06:4185; DARWIN-64-PIC: ## %bb.0: ## %entry4186; DARWIN-64-PIC-NEXT: leaq _lsrc(%rip), %rax4187; DARWIN-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax4188; DARWIN-64-PIC-NEXT: leaq _ldst(%rip), %rcx4189; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4)4190; DARWIN-64-PIC-NEXT: retq4191 4192entry:4193 %0 = add i64 %i, 164194 %1 = getelementptr [131072 x i32], ptr @lsrc, i64 0, i64 %04195 %2 = load i32, ptr %1, align 44196 %3 = getelementptr [131072 x i32], ptr @ldst, i64 0, i64 %04197 store i32 %2, ptr %3, align 44198 ret void4199}4200 4201define dso_local void @off07(i64 %i) nounwind {4202; LINUX-64-STATIC-LABEL: off07:4203; LINUX-64-STATIC: # %bb.0: # %entry4204; LINUX-64-STATIC-NEXT: leaq ldst+64(,%rdi,4), %rax4205; LINUX-64-STATIC-NEXT: movq %rax, lptr(%rip)4206; LINUX-64-STATIC-NEXT: retq4207;4208; LINUX-32-STATIC-LABEL: off07:4209; LINUX-32-STATIC: # %bb.0: # %entry4210; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax4211; LINUX-32-STATIC-NEXT: leal ldst+64(,%eax,4), %eax4212; LINUX-32-STATIC-NEXT: movl %eax, lptr4213; LINUX-32-STATIC-NEXT: retl4214;4215; LINUX-32-PIC-LABEL: off07:4216; LINUX-32-PIC: # %bb.0: # %entry4217; LINUX-32-PIC-NEXT: calll .L46$pb4218; LINUX-32-PIC-NEXT: .L46$pb:4219; LINUX-32-PIC-NEXT: popl %eax4220; LINUX-32-PIC-NEXT: .Ltmp46:4221; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp46-.L46$pb), %eax4222; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx4223; LINUX-32-PIC-NEXT: leal ldst@GOTOFF+64(%eax,%ecx,4), %ecx4224; LINUX-32-PIC-NEXT: movl %ecx, lptr@GOTOFF(%eax)4225; LINUX-32-PIC-NEXT: retl4226;4227; LINUX-64-PIC-LABEL: off07:4228; LINUX-64-PIC: # %bb.0: # %entry4229; LINUX-64-PIC-NEXT: leaq ldst(%rip), %rax4230; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax4231; LINUX-64-PIC-NEXT: movq %rax, lptr(%rip)4232; LINUX-64-PIC-NEXT: retq4233;4234; DARWIN-32-STATIC-LABEL: off07:4235; DARWIN-32-STATIC: ## %bb.0: ## %entry4236; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax4237; DARWIN-32-STATIC-NEXT: leal _ldst+64(,%eax,4), %eax4238; DARWIN-32-STATIC-NEXT: movl %eax, _lptr4239; DARWIN-32-STATIC-NEXT: retl4240;4241; DARWIN-32-DYNAMIC-LABEL: off07:4242; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry4243; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax4244; DARWIN-32-DYNAMIC-NEXT: leal _ldst+64(,%eax,4), %eax4245; DARWIN-32-DYNAMIC-NEXT: movl %eax, _lptr4246; DARWIN-32-DYNAMIC-NEXT: retl4247;4248; DARWIN-32-PIC-LABEL: off07:4249; DARWIN-32-PIC: ## %bb.0: ## %entry4250; DARWIN-32-PIC-NEXT: calll L46$pb4251; DARWIN-32-PIC-NEXT: L46$pb:4252; DARWIN-32-PIC-NEXT: popl %eax4253; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx4254; DARWIN-32-PIC-NEXT: leal _ldst-L46$pb+64(%eax,%ecx,4), %ecx4255; DARWIN-32-PIC-NEXT: movl %ecx, _lptr-L46$pb(%eax)4256; DARWIN-32-PIC-NEXT: retl4257;4258; DARWIN-64-STATIC-LABEL: off07:4259; DARWIN-64-STATIC: ## %bb.0: ## %entry4260; DARWIN-64-STATIC-NEXT: leaq _ldst(%rip), %rax4261; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax4262; DARWIN-64-STATIC-NEXT: movq %rax, _lptr(%rip)4263; DARWIN-64-STATIC-NEXT: retq4264;4265; DARWIN-64-DYNAMIC-LABEL: off07:4266; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry4267; DARWIN-64-DYNAMIC-NEXT: leaq _ldst(%rip), %rax4268; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax4269; DARWIN-64-DYNAMIC-NEXT: movq %rax, _lptr(%rip)4270; DARWIN-64-DYNAMIC-NEXT: retq4271;4272; DARWIN-64-PIC-LABEL: off07:4273; DARWIN-64-PIC: ## %bb.0: ## %entry4274; DARWIN-64-PIC-NEXT: leaq _ldst(%rip), %rax4275; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax4276; DARWIN-64-PIC-NEXT: movq %rax, _lptr(%rip)4277; DARWIN-64-PIC-NEXT: retq4278 4279entry:4280 %.sum = add i64 %i, 164281 %0 = getelementptr [131072 x i32], ptr @ldst, i64 0, i64 %.sum4282 store ptr %0, ptr @lptr, align 84283 ret void4284}4285 4286define dso_local void @off08(i64 %i) nounwind {4287; LINUX-64-STATIC-LABEL: off08:4288; LINUX-64-STATIC: # %bb.0: # %entry4289; LINUX-64-STATIC-NEXT: movl lsrc+64(,%rdi,4), %eax4290; LINUX-64-STATIC-NEXT: movq lptr(%rip), %rcx4291; LINUX-64-STATIC-NEXT: movl %eax, 64(%rcx,%rdi,4)4292; LINUX-64-STATIC-NEXT: retq4293;4294; LINUX-32-STATIC-LABEL: off08:4295; LINUX-32-STATIC: # %bb.0: # %entry4296; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax4297; LINUX-32-STATIC-NEXT: movl lsrc+64(,%eax,4), %ecx4298; LINUX-32-STATIC-NEXT: movl lptr, %edx4299; LINUX-32-STATIC-NEXT: movl %ecx, 64(%edx,%eax,4)4300; LINUX-32-STATIC-NEXT: retl4301;4302; LINUX-32-PIC-LABEL: off08:4303; LINUX-32-PIC: # %bb.0: # %entry4304; LINUX-32-PIC-NEXT: calll .L47$pb4305; LINUX-32-PIC-NEXT: .L47$pb:4306; LINUX-32-PIC-NEXT: popl %eax4307; LINUX-32-PIC-NEXT: .Ltmp47:4308; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp47-.L47$pb), %eax4309; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx4310; LINUX-32-PIC-NEXT: movl lsrc@GOTOFF+64(%eax,%ecx,4), %edx4311; LINUX-32-PIC-NEXT: movl lptr@GOTOFF(%eax), %eax4312; LINUX-32-PIC-NEXT: movl %edx, 64(%eax,%ecx,4)4313; LINUX-32-PIC-NEXT: retl4314;4315; LINUX-64-PIC-LABEL: off08:4316; LINUX-64-PIC: # %bb.0: # %entry4317; LINUX-64-PIC-NEXT: leaq lsrc(%rip), %rax4318; LINUX-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax4319; LINUX-64-PIC-NEXT: movq lptr(%rip), %rcx4320; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4)4321; LINUX-64-PIC-NEXT: retq4322;4323; DARWIN-32-STATIC-LABEL: off08:4324; DARWIN-32-STATIC: ## %bb.0: ## %entry4325; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax4326; DARWIN-32-STATIC-NEXT: movl _lsrc+64(,%eax,4), %ecx4327; DARWIN-32-STATIC-NEXT: movl _lptr, %edx4328; DARWIN-32-STATIC-NEXT: movl %ecx, 64(%edx,%eax,4)4329; DARWIN-32-STATIC-NEXT: retl4330;4331; DARWIN-32-DYNAMIC-LABEL: off08:4332; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry4333; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax4334; DARWIN-32-DYNAMIC-NEXT: movl _lsrc+64(,%eax,4), %ecx4335; DARWIN-32-DYNAMIC-NEXT: movl _lptr, %edx4336; DARWIN-32-DYNAMIC-NEXT: movl %ecx, 64(%edx,%eax,4)4337; DARWIN-32-DYNAMIC-NEXT: retl4338;4339; DARWIN-32-PIC-LABEL: off08:4340; DARWIN-32-PIC: ## %bb.0: ## %entry4341; DARWIN-32-PIC-NEXT: calll L47$pb4342; DARWIN-32-PIC-NEXT: L47$pb:4343; DARWIN-32-PIC-NEXT: popl %eax4344; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx4345; DARWIN-32-PIC-NEXT: movl _lsrc-L47$pb+64(%eax,%ecx,4), %edx4346; DARWIN-32-PIC-NEXT: movl _lptr-L47$pb(%eax), %eax4347; DARWIN-32-PIC-NEXT: movl %edx, 64(%eax,%ecx,4)4348; DARWIN-32-PIC-NEXT: retl4349;4350; DARWIN-64-STATIC-LABEL: off08:4351; DARWIN-64-STATIC: ## %bb.0: ## %entry4352; DARWIN-64-STATIC-NEXT: leaq _lsrc(%rip), %rax4353; DARWIN-64-STATIC-NEXT: movl 64(%rax,%rdi,4), %eax4354; DARWIN-64-STATIC-NEXT: movq _lptr(%rip), %rcx4355; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx,%rdi,4)4356; DARWIN-64-STATIC-NEXT: retq4357;4358; DARWIN-64-DYNAMIC-LABEL: off08:4359; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry4360; DARWIN-64-DYNAMIC-NEXT: leaq _lsrc(%rip), %rax4361; DARWIN-64-DYNAMIC-NEXT: movl 64(%rax,%rdi,4), %eax4362; DARWIN-64-DYNAMIC-NEXT: movq _lptr(%rip), %rcx4363; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx,%rdi,4)4364; DARWIN-64-DYNAMIC-NEXT: retq4365;4366; DARWIN-64-PIC-LABEL: off08:4367; DARWIN-64-PIC: ## %bb.0: ## %entry4368; DARWIN-64-PIC-NEXT: leaq _lsrc(%rip), %rax4369; DARWIN-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax4370; DARWIN-64-PIC-NEXT: movq _lptr(%rip), %rcx4371; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4)4372; DARWIN-64-PIC-NEXT: retq4373 4374entry:4375 %0 = load ptr, ptr @lptr, align 84376 %1 = add i64 %i, 164377 %2 = getelementptr [131072 x i32], ptr @lsrc, i64 0, i64 %14378 %3 = load i32, ptr %2, align 44379 %4 = getelementptr i32, ptr %0, i64 %14380 store i32 %3, ptr %4, align 44381 ret void4382}4383 4384define dso_local void @moo00(i64 %i) nounwind {4385; LINUX-64-STATIC-LABEL: moo00:4386; LINUX-64-STATIC: # %bb.0: # %entry4387; LINUX-64-STATIC-NEXT: movq src@GOTPCREL(%rip), %rax4388; LINUX-64-STATIC-NEXT: movl 262144(%rax), %eax4389; LINUX-64-STATIC-NEXT: movq dst@GOTPCREL(%rip), %rcx4390; LINUX-64-STATIC-NEXT: movl %eax, 262144(%rcx)4391; LINUX-64-STATIC-NEXT: retq4392;4393; LINUX-32-STATIC-LABEL: moo00:4394; LINUX-32-STATIC: # %bb.0: # %entry4395; LINUX-32-STATIC-NEXT: movl src+262144, %eax4396; LINUX-32-STATIC-NEXT: movl %eax, dst+2621444397; LINUX-32-STATIC-NEXT: retl4398;4399; LINUX-32-PIC-LABEL: moo00:4400; LINUX-32-PIC: # %bb.0: # %entry4401; LINUX-32-PIC-NEXT: calll .L48$pb4402; LINUX-32-PIC-NEXT: .L48$pb:4403; LINUX-32-PIC-NEXT: popl %eax4404; LINUX-32-PIC-NEXT: .Ltmp48:4405; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp48-.L48$pb), %eax4406; LINUX-32-PIC-NEXT: movl src@GOT(%eax), %ecx4407; LINUX-32-PIC-NEXT: movl 262144(%ecx), %ecx4408; LINUX-32-PIC-NEXT: movl dst@GOT(%eax), %eax4409; LINUX-32-PIC-NEXT: movl %ecx, 262144(%eax)4410; LINUX-32-PIC-NEXT: retl4411;4412; LINUX-64-PIC-LABEL: moo00:4413; LINUX-64-PIC: # %bb.0: # %entry4414; LINUX-64-PIC-NEXT: movq src@GOTPCREL(%rip), %rax4415; LINUX-64-PIC-NEXT: movl 262144(%rax), %eax4416; LINUX-64-PIC-NEXT: movq dst@GOTPCREL(%rip), %rcx4417; LINUX-64-PIC-NEXT: movl %eax, 262144(%rcx)4418; LINUX-64-PIC-NEXT: retq4419;4420; DARWIN-32-STATIC-LABEL: moo00:4421; DARWIN-32-STATIC: ## %bb.0: ## %entry4422; DARWIN-32-STATIC-NEXT: movl _src+262144, %eax4423; DARWIN-32-STATIC-NEXT: movl %eax, _dst+2621444424; DARWIN-32-STATIC-NEXT: retl4425;4426; DARWIN-32-DYNAMIC-LABEL: moo00:4427; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry4428; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %eax4429; DARWIN-32-DYNAMIC-NEXT: movl 262144(%eax), %eax4430; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, %ecx4431; DARWIN-32-DYNAMIC-NEXT: movl %eax, 262144(%ecx)4432; DARWIN-32-DYNAMIC-NEXT: retl4433;4434; DARWIN-32-PIC-LABEL: moo00:4435; DARWIN-32-PIC: ## %bb.0: ## %entry4436; DARWIN-32-PIC-NEXT: calll L48$pb4437; DARWIN-32-PIC-NEXT: L48$pb:4438; DARWIN-32-PIC-NEXT: popl %eax4439; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L48$pb(%eax), %ecx4440; DARWIN-32-PIC-NEXT: movl 262144(%ecx), %ecx4441; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L48$pb(%eax), %eax4442; DARWIN-32-PIC-NEXT: movl %ecx, 262144(%eax)4443; DARWIN-32-PIC-NEXT: retl4444;4445; DARWIN-64-STATIC-LABEL: moo00:4446; DARWIN-64-STATIC: ## %bb.0: ## %entry4447; DARWIN-64-STATIC-NEXT: movq _src@GOTPCREL(%rip), %rax4448; DARWIN-64-STATIC-NEXT: movl 262144(%rax), %eax4449; DARWIN-64-STATIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx4450; DARWIN-64-STATIC-NEXT: movl %eax, 262144(%rcx)4451; DARWIN-64-STATIC-NEXT: retq4452;4453; DARWIN-64-DYNAMIC-LABEL: moo00:4454; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry4455; DARWIN-64-DYNAMIC-NEXT: movq _src@GOTPCREL(%rip), %rax4456; DARWIN-64-DYNAMIC-NEXT: movl 262144(%rax), %eax4457; DARWIN-64-DYNAMIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx4458; DARWIN-64-DYNAMIC-NEXT: movl %eax, 262144(%rcx)4459; DARWIN-64-DYNAMIC-NEXT: retq4460;4461; DARWIN-64-PIC-LABEL: moo00:4462; DARWIN-64-PIC: ## %bb.0: ## %entry4463; DARWIN-64-PIC-NEXT: movq _src@GOTPCREL(%rip), %rax4464; DARWIN-64-PIC-NEXT: movl 262144(%rax), %eax4465; DARWIN-64-PIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx4466; DARWIN-64-PIC-NEXT: movl %eax, 262144(%rcx)4467; DARWIN-64-PIC-NEXT: retq4468 4469entry:4470 %0 = load i32, ptr getelementptr ([131072 x i32], ptr @src, i32 0, i64 65536), align 44471 store i32 %0, ptr getelementptr ([131072 x i32], ptr @dst, i32 0, i64 65536), align 44472 ret void4473}4474 4475define dso_local void @moo01(i64 %i) nounwind {4476; LINUX-64-STATIC-LABEL: moo01:4477; LINUX-64-STATIC: # %bb.0: # %entry4478; LINUX-64-STATIC-NEXT: movl $262144, %eax # imm = 0x400004479; LINUX-64-STATIC-NEXT: addq dst@GOTPCREL(%rip), %rax4480; LINUX-64-STATIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx4481; LINUX-64-STATIC-NEXT: movq %rax, (%rcx)4482; LINUX-64-STATIC-NEXT: retq4483;4484; LINUX-32-STATIC-LABEL: moo01:4485; LINUX-32-STATIC: # %bb.0: # %entry4486; LINUX-32-STATIC-NEXT: leal dst+262144, %eax4487; LINUX-32-STATIC-NEXT: movl %eax, ptr4488; LINUX-32-STATIC-NEXT: retl4489;4490; LINUX-32-PIC-LABEL: moo01:4491; LINUX-32-PIC: # %bb.0: # %entry4492; LINUX-32-PIC-NEXT: calll .L49$pb4493; LINUX-32-PIC-NEXT: .L49$pb:4494; LINUX-32-PIC-NEXT: popl %eax4495; LINUX-32-PIC-NEXT: .Ltmp49:4496; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp49-.L49$pb), %eax4497; LINUX-32-PIC-NEXT: movl $262144, %ecx # imm = 0x400004498; LINUX-32-PIC-NEXT: addl dst@GOT(%eax), %ecx4499; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax4500; LINUX-32-PIC-NEXT: movl %ecx, (%eax)4501; LINUX-32-PIC-NEXT: retl4502;4503; LINUX-64-PIC-LABEL: moo01:4504; LINUX-64-PIC: # %bb.0: # %entry4505; LINUX-64-PIC-NEXT: movl $262144, %eax # imm = 0x400004506; LINUX-64-PIC-NEXT: addq dst@GOTPCREL(%rip), %rax4507; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx4508; LINUX-64-PIC-NEXT: movq %rax, (%rcx)4509; LINUX-64-PIC-NEXT: retq4510;4511; DARWIN-32-STATIC-LABEL: moo01:4512; DARWIN-32-STATIC: ## %bb.0: ## %entry4513; DARWIN-32-STATIC-NEXT: movl $_dst+262144, _ptr4514; DARWIN-32-STATIC-NEXT: retl4515;4516; DARWIN-32-DYNAMIC-LABEL: moo01:4517; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry4518; DARWIN-32-DYNAMIC-NEXT: movl $262144, %eax ## imm = 0x400004519; DARWIN-32-DYNAMIC-NEXT: addl L_dst$non_lazy_ptr, %eax4520; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx4521; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx)4522; DARWIN-32-DYNAMIC-NEXT: retl4523;4524; DARWIN-32-PIC-LABEL: moo01:4525; DARWIN-32-PIC: ## %bb.0: ## %entry4526; DARWIN-32-PIC-NEXT: calll L49$pb4527; DARWIN-32-PIC-NEXT: L49$pb:4528; DARWIN-32-PIC-NEXT: popl %eax4529; DARWIN-32-PIC-NEXT: movl $262144, %ecx ## imm = 0x400004530; DARWIN-32-PIC-NEXT: addl L_dst$non_lazy_ptr-L49$pb(%eax), %ecx4531; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L49$pb(%eax), %eax4532; DARWIN-32-PIC-NEXT: movl %ecx, (%eax)4533; DARWIN-32-PIC-NEXT: retl4534;4535; DARWIN-64-STATIC-LABEL: moo01:4536; DARWIN-64-STATIC: ## %bb.0: ## %entry4537; DARWIN-64-STATIC-NEXT: movl $262144, %eax ## imm = 0x400004538; DARWIN-64-STATIC-NEXT: addq _dst@GOTPCREL(%rip), %rax4539; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx4540; DARWIN-64-STATIC-NEXT: movq %rax, (%rcx)4541; DARWIN-64-STATIC-NEXT: retq4542;4543; DARWIN-64-DYNAMIC-LABEL: moo01:4544; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry4545; DARWIN-64-DYNAMIC-NEXT: movl $262144, %eax ## imm = 0x400004546; DARWIN-64-DYNAMIC-NEXT: addq _dst@GOTPCREL(%rip), %rax4547; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx4548; DARWIN-64-DYNAMIC-NEXT: movq %rax, (%rcx)4549; DARWIN-64-DYNAMIC-NEXT: retq4550;4551; DARWIN-64-PIC-LABEL: moo01:4552; DARWIN-64-PIC: ## %bb.0: ## %entry4553; DARWIN-64-PIC-NEXT: movl $262144, %eax ## imm = 0x400004554; DARWIN-64-PIC-NEXT: addq _dst@GOTPCREL(%rip), %rax4555; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx4556; DARWIN-64-PIC-NEXT: movq %rax, (%rcx)4557; DARWIN-64-PIC-NEXT: retq4558 4559entry:4560 store ptr getelementptr ([131072 x i32], ptr @dst, i32 0, i64 65536), ptr @ptr, align 84561 ret void4562}4563 4564define dso_local void @moo02(i64 %i) nounwind {4565; LINUX-64-STATIC-LABEL: moo02:4566; LINUX-64-STATIC: # %bb.0: # %entry4567; LINUX-64-STATIC-NEXT: movq src@GOTPCREL(%rip), %rax4568; LINUX-64-STATIC-NEXT: movl 262144(%rax), %eax4569; LINUX-64-STATIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx4570; LINUX-64-STATIC-NEXT: movq (%rcx), %rcx4571; LINUX-64-STATIC-NEXT: movl %eax, 262144(%rcx)4572; LINUX-64-STATIC-NEXT: retq4573;4574; LINUX-32-STATIC-LABEL: moo02:4575; LINUX-32-STATIC: # %bb.0: # %entry4576; LINUX-32-STATIC-NEXT: movl src+262144, %eax4577; LINUX-32-STATIC-NEXT: movl ptr, %ecx4578; LINUX-32-STATIC-NEXT: movl %eax, 262144(%ecx)4579; LINUX-32-STATIC-NEXT: retl4580;4581; LINUX-32-PIC-LABEL: moo02:4582; LINUX-32-PIC: # %bb.0: # %entry4583; LINUX-32-PIC-NEXT: calll .L50$pb4584; LINUX-32-PIC-NEXT: .L50$pb:4585; LINUX-32-PIC-NEXT: popl %eax4586; LINUX-32-PIC-NEXT: .Ltmp50:4587; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp50-.L50$pb), %eax4588; LINUX-32-PIC-NEXT: movl src@GOT(%eax), %ecx4589; LINUX-32-PIC-NEXT: movl 262144(%ecx), %ecx4590; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax4591; LINUX-32-PIC-NEXT: movl (%eax), %eax4592; LINUX-32-PIC-NEXT: movl %ecx, 262144(%eax)4593; LINUX-32-PIC-NEXT: retl4594;4595; LINUX-64-PIC-LABEL: moo02:4596; LINUX-64-PIC: # %bb.0: # %entry4597; LINUX-64-PIC-NEXT: movq src@GOTPCREL(%rip), %rax4598; LINUX-64-PIC-NEXT: movl 262144(%rax), %eax4599; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx4600; LINUX-64-PIC-NEXT: movq (%rcx), %rcx4601; LINUX-64-PIC-NEXT: movl %eax, 262144(%rcx)4602; LINUX-64-PIC-NEXT: retq4603;4604; DARWIN-32-STATIC-LABEL: moo02:4605; DARWIN-32-STATIC: ## %bb.0: ## %entry4606; DARWIN-32-STATIC-NEXT: movl _src+262144, %eax4607; DARWIN-32-STATIC-NEXT: movl _ptr, %ecx4608; DARWIN-32-STATIC-NEXT: movl %eax, 262144(%ecx)4609; DARWIN-32-STATIC-NEXT: retl4610;4611; DARWIN-32-DYNAMIC-LABEL: moo02:4612; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry4613; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %eax4614; DARWIN-32-DYNAMIC-NEXT: movl 262144(%eax), %eax4615; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx4616; DARWIN-32-DYNAMIC-NEXT: movl (%ecx), %ecx4617; DARWIN-32-DYNAMIC-NEXT: movl %eax, 262144(%ecx)4618; DARWIN-32-DYNAMIC-NEXT: retl4619;4620; DARWIN-32-PIC-LABEL: moo02:4621; DARWIN-32-PIC: ## %bb.0: ## %entry4622; DARWIN-32-PIC-NEXT: calll L50$pb4623; DARWIN-32-PIC-NEXT: L50$pb:4624; DARWIN-32-PIC-NEXT: popl %eax4625; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L50$pb(%eax), %ecx4626; DARWIN-32-PIC-NEXT: movl 262144(%ecx), %ecx4627; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L50$pb(%eax), %eax4628; DARWIN-32-PIC-NEXT: movl (%eax), %eax4629; DARWIN-32-PIC-NEXT: movl %ecx, 262144(%eax)4630; DARWIN-32-PIC-NEXT: retl4631;4632; DARWIN-64-STATIC-LABEL: moo02:4633; DARWIN-64-STATIC: ## %bb.0: ## %entry4634; DARWIN-64-STATIC-NEXT: movq _src@GOTPCREL(%rip), %rax4635; DARWIN-64-STATIC-NEXT: movl 262144(%rax), %eax4636; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx4637; DARWIN-64-STATIC-NEXT: movq (%rcx), %rcx4638; DARWIN-64-STATIC-NEXT: movl %eax, 262144(%rcx)4639; DARWIN-64-STATIC-NEXT: retq4640;4641; DARWIN-64-DYNAMIC-LABEL: moo02:4642; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry4643; DARWIN-64-DYNAMIC-NEXT: movq _src@GOTPCREL(%rip), %rax4644; DARWIN-64-DYNAMIC-NEXT: movl 262144(%rax), %eax4645; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx4646; DARWIN-64-DYNAMIC-NEXT: movq (%rcx), %rcx4647; DARWIN-64-DYNAMIC-NEXT: movl %eax, 262144(%rcx)4648; DARWIN-64-DYNAMIC-NEXT: retq4649;4650; DARWIN-64-PIC-LABEL: moo02:4651; DARWIN-64-PIC: ## %bb.0: ## %entry4652; DARWIN-64-PIC-NEXT: movq _src@GOTPCREL(%rip), %rax4653; DARWIN-64-PIC-NEXT: movl 262144(%rax), %eax4654; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx4655; DARWIN-64-PIC-NEXT: movq (%rcx), %rcx4656; DARWIN-64-PIC-NEXT: movl %eax, 262144(%rcx)4657; DARWIN-64-PIC-NEXT: retq4658 4659entry:4660 %0 = load ptr, ptr @ptr, align 84661 %1 = load i32, ptr getelementptr ([131072 x i32], ptr @src, i32 0, i64 65536), align 44662 %2 = getelementptr i32, ptr %0, i64 655364663 store i32 %1, ptr %2, align 44664 ret void4665}4666 4667define dso_local void @moo03(i64 %i) nounwind {4668; LINUX-64-STATIC-LABEL: moo03:4669; LINUX-64-STATIC: # %bb.0: # %entry4670; LINUX-64-STATIC-NEXT: movl dsrc+262144(%rip), %eax4671; LINUX-64-STATIC-NEXT: movl %eax, ddst+262144(%rip)4672; LINUX-64-STATIC-NEXT: retq4673;4674; LINUX-32-STATIC-LABEL: moo03:4675; LINUX-32-STATIC: # %bb.0: # %entry4676; LINUX-32-STATIC-NEXT: movl dsrc+262144, %eax4677; LINUX-32-STATIC-NEXT: movl %eax, ddst+2621444678; LINUX-32-STATIC-NEXT: retl4679;4680; LINUX-32-PIC-LABEL: moo03:4681; LINUX-32-PIC: # %bb.0: # %entry4682; LINUX-32-PIC-NEXT: calll .L51$pb4683; LINUX-32-PIC-NEXT: .L51$pb:4684; LINUX-32-PIC-NEXT: popl %eax4685; LINUX-32-PIC-NEXT: .Ltmp51:4686; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp51-.L51$pb), %eax4687; LINUX-32-PIC-NEXT: movl .Ldsrc$local@GOTOFF+262144(%eax), %ecx4688; LINUX-32-PIC-NEXT: movl %ecx, .Lddst$local@GOTOFF+262144(%eax)4689; LINUX-32-PIC-NEXT: retl4690;4691; LINUX-64-PIC-LABEL: moo03:4692; LINUX-64-PIC: # %bb.0: # %entry4693; LINUX-64-PIC-NEXT: movl .Ldsrc$local+262144(%rip), %eax4694; LINUX-64-PIC-NEXT: movl %eax, .Lddst$local+262144(%rip)4695; LINUX-64-PIC-NEXT: retq4696;4697; DARWIN-32-STATIC-LABEL: moo03:4698; DARWIN-32-STATIC: ## %bb.0: ## %entry4699; DARWIN-32-STATIC-NEXT: movl _dsrc+262144, %eax4700; DARWIN-32-STATIC-NEXT: movl %eax, _ddst+2621444701; DARWIN-32-STATIC-NEXT: retl4702;4703; DARWIN-32-DYNAMIC-LABEL: moo03:4704; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry4705; DARWIN-32-DYNAMIC-NEXT: movl _dsrc+262144, %eax4706; DARWIN-32-DYNAMIC-NEXT: movl %eax, _ddst+2621444707; DARWIN-32-DYNAMIC-NEXT: retl4708;4709; DARWIN-32-PIC-LABEL: moo03:4710; DARWIN-32-PIC: ## %bb.0: ## %entry4711; DARWIN-32-PIC-NEXT: calll L51$pb4712; DARWIN-32-PIC-NEXT: L51$pb:4713; DARWIN-32-PIC-NEXT: popl %eax4714; DARWIN-32-PIC-NEXT: movl _dsrc-L51$pb+262144(%eax), %ecx4715; DARWIN-32-PIC-NEXT: movl %ecx, _ddst-L51$pb+262144(%eax)4716; DARWIN-32-PIC-NEXT: retl4717;4718; DARWIN-64-STATIC-LABEL: moo03:4719; DARWIN-64-STATIC: ## %bb.0: ## %entry4720; DARWIN-64-STATIC-NEXT: movl _dsrc+262144(%rip), %eax4721; DARWIN-64-STATIC-NEXT: movl %eax, _ddst+262144(%rip)4722; DARWIN-64-STATIC-NEXT: retq4723;4724; DARWIN-64-DYNAMIC-LABEL: moo03:4725; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry4726; DARWIN-64-DYNAMIC-NEXT: movl _dsrc+262144(%rip), %eax4727; DARWIN-64-DYNAMIC-NEXT: movl %eax, _ddst+262144(%rip)4728; DARWIN-64-DYNAMIC-NEXT: retq4729;4730; DARWIN-64-PIC-LABEL: moo03:4731; DARWIN-64-PIC: ## %bb.0: ## %entry4732; DARWIN-64-PIC-NEXT: movl _dsrc+262144(%rip), %eax4733; DARWIN-64-PIC-NEXT: movl %eax, _ddst+262144(%rip)4734; DARWIN-64-PIC-NEXT: retq4735 4736entry:4737 %0 = load i32, ptr getelementptr ([131072 x i32], ptr @dsrc, i32 0, i64 65536), align 324738 store i32 %0, ptr getelementptr ([131072 x i32], ptr @ddst, i32 0, i64 65536), align 324739 ret void4740}4741 4742define dso_local void @moo04(i64 %i) nounwind {4743; LINUX-64-STATIC-LABEL: moo04:4744; LINUX-64-STATIC: # %bb.0: # %entry4745; LINUX-64-STATIC-NEXT: movq $ddst+262144, dptr(%rip)4746; LINUX-64-STATIC-NEXT: retq4747;4748; LINUX-32-STATIC-LABEL: moo04:4749; LINUX-32-STATIC: # %bb.0: # %entry4750; LINUX-32-STATIC-NEXT: movl $ddst+262144, dptr4751; LINUX-32-STATIC-NEXT: retl4752;4753; LINUX-32-PIC-LABEL: moo04:4754; LINUX-32-PIC: # %bb.0: # %entry4755; LINUX-32-PIC-NEXT: calll .L52$pb4756; LINUX-32-PIC-NEXT: .L52$pb:4757; LINUX-32-PIC-NEXT: popl %eax4758; LINUX-32-PIC-NEXT: .Ltmp52:4759; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp52-.L52$pb), %eax4760; LINUX-32-PIC-NEXT: leal .Lddst$local@GOTOFF+262144(%eax), %ecx4761; LINUX-32-PIC-NEXT: movl %ecx, .Ldptr$local@GOTOFF(%eax)4762; LINUX-32-PIC-NEXT: retl4763;4764; LINUX-64-PIC-LABEL: moo04:4765; LINUX-64-PIC: # %bb.0: # %entry4766; LINUX-64-PIC-NEXT: leaq .Lddst$local+262144(%rip), %rax4767; LINUX-64-PIC-NEXT: movq %rax, .Ldptr$local(%rip)4768; LINUX-64-PIC-NEXT: retq4769;4770; DARWIN-32-STATIC-LABEL: moo04:4771; DARWIN-32-STATIC: ## %bb.0: ## %entry4772; DARWIN-32-STATIC-NEXT: movl $_ddst+262144, _dptr4773; DARWIN-32-STATIC-NEXT: retl4774;4775; DARWIN-32-DYNAMIC-LABEL: moo04:4776; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry4777; DARWIN-32-DYNAMIC-NEXT: movl $_ddst+262144, _dptr4778; DARWIN-32-DYNAMIC-NEXT: retl4779;4780; DARWIN-32-PIC-LABEL: moo04:4781; DARWIN-32-PIC: ## %bb.0: ## %entry4782; DARWIN-32-PIC-NEXT: calll L52$pb4783; DARWIN-32-PIC-NEXT: L52$pb:4784; DARWIN-32-PIC-NEXT: popl %eax4785; DARWIN-32-PIC-NEXT: leal _ddst-L52$pb+262144(%eax), %ecx4786; DARWIN-32-PIC-NEXT: movl %ecx, _dptr-L52$pb(%eax)4787; DARWIN-32-PIC-NEXT: retl4788;4789; DARWIN-64-STATIC-LABEL: moo04:4790; DARWIN-64-STATIC: ## %bb.0: ## %entry4791; DARWIN-64-STATIC-NEXT: leaq _ddst+262144(%rip), %rax4792; DARWIN-64-STATIC-NEXT: movq %rax, _dptr(%rip)4793; DARWIN-64-STATIC-NEXT: retq4794;4795; DARWIN-64-DYNAMIC-LABEL: moo04:4796; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry4797; DARWIN-64-DYNAMIC-NEXT: leaq _ddst+262144(%rip), %rax4798; DARWIN-64-DYNAMIC-NEXT: movq %rax, _dptr(%rip)4799; DARWIN-64-DYNAMIC-NEXT: retq4800;4801; DARWIN-64-PIC-LABEL: moo04:4802; DARWIN-64-PIC: ## %bb.0: ## %entry4803; DARWIN-64-PIC-NEXT: leaq _ddst+262144(%rip), %rax4804; DARWIN-64-PIC-NEXT: movq %rax, _dptr(%rip)4805; DARWIN-64-PIC-NEXT: retq4806 4807entry:4808 store ptr getelementptr ([131072 x i32], ptr @ddst, i32 0, i64 65536), ptr @dptr, align 84809 ret void4810}4811 4812define dso_local void @moo05(i64 %i) nounwind {4813; LINUX-64-STATIC-LABEL: moo05:4814; LINUX-64-STATIC: # %bb.0: # %entry4815; LINUX-64-STATIC-NEXT: movl dsrc+262144(%rip), %eax4816; LINUX-64-STATIC-NEXT: movq dptr(%rip), %rcx4817; LINUX-64-STATIC-NEXT: movl %eax, 262144(%rcx)4818; LINUX-64-STATIC-NEXT: retq4819;4820; LINUX-32-STATIC-LABEL: moo05:4821; LINUX-32-STATIC: # %bb.0: # %entry4822; LINUX-32-STATIC-NEXT: movl dsrc+262144, %eax4823; LINUX-32-STATIC-NEXT: movl dptr, %ecx4824; LINUX-32-STATIC-NEXT: movl %eax, 262144(%ecx)4825; LINUX-32-STATIC-NEXT: retl4826;4827; LINUX-32-PIC-LABEL: moo05:4828; LINUX-32-PIC: # %bb.0: # %entry4829; LINUX-32-PIC-NEXT: calll .L53$pb4830; LINUX-32-PIC-NEXT: .L53$pb:4831; LINUX-32-PIC-NEXT: popl %eax4832; LINUX-32-PIC-NEXT: .Ltmp53:4833; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp53-.L53$pb), %eax4834; LINUX-32-PIC-NEXT: movl .Ldsrc$local@GOTOFF+262144(%eax), %ecx4835; LINUX-32-PIC-NEXT: movl .Ldptr$local@GOTOFF(%eax), %eax4836; LINUX-32-PIC-NEXT: movl %ecx, 262144(%eax)4837; LINUX-32-PIC-NEXT: retl4838;4839; LINUX-64-PIC-LABEL: moo05:4840; LINUX-64-PIC: # %bb.0: # %entry4841; LINUX-64-PIC-NEXT: movl .Ldsrc$local+262144(%rip), %eax4842; LINUX-64-PIC-NEXT: movq .Ldptr$local(%rip), %rcx4843; LINUX-64-PIC-NEXT: movl %eax, 262144(%rcx)4844; LINUX-64-PIC-NEXT: retq4845;4846; DARWIN-32-STATIC-LABEL: moo05:4847; DARWIN-32-STATIC: ## %bb.0: ## %entry4848; DARWIN-32-STATIC-NEXT: movl _dsrc+262144, %eax4849; DARWIN-32-STATIC-NEXT: movl _dptr, %ecx4850; DARWIN-32-STATIC-NEXT: movl %eax, 262144(%ecx)4851; DARWIN-32-STATIC-NEXT: retl4852;4853; DARWIN-32-DYNAMIC-LABEL: moo05:4854; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry4855; DARWIN-32-DYNAMIC-NEXT: movl _dsrc+262144, %eax4856; DARWIN-32-DYNAMIC-NEXT: movl _dptr, %ecx4857; DARWIN-32-DYNAMIC-NEXT: movl %eax, 262144(%ecx)4858; DARWIN-32-DYNAMIC-NEXT: retl4859;4860; DARWIN-32-PIC-LABEL: moo05:4861; DARWIN-32-PIC: ## %bb.0: ## %entry4862; DARWIN-32-PIC-NEXT: calll L53$pb4863; DARWIN-32-PIC-NEXT: L53$pb:4864; DARWIN-32-PIC-NEXT: popl %eax4865; DARWIN-32-PIC-NEXT: movl _dsrc-L53$pb+262144(%eax), %ecx4866; DARWIN-32-PIC-NEXT: movl _dptr-L53$pb(%eax), %eax4867; DARWIN-32-PIC-NEXT: movl %ecx, 262144(%eax)4868; DARWIN-32-PIC-NEXT: retl4869;4870; DARWIN-64-STATIC-LABEL: moo05:4871; DARWIN-64-STATIC: ## %bb.0: ## %entry4872; DARWIN-64-STATIC-NEXT: movl _dsrc+262144(%rip), %eax4873; DARWIN-64-STATIC-NEXT: movq _dptr(%rip), %rcx4874; DARWIN-64-STATIC-NEXT: movl %eax, 262144(%rcx)4875; DARWIN-64-STATIC-NEXT: retq4876;4877; DARWIN-64-DYNAMIC-LABEL: moo05:4878; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry4879; DARWIN-64-DYNAMIC-NEXT: movl _dsrc+262144(%rip), %eax4880; DARWIN-64-DYNAMIC-NEXT: movq _dptr(%rip), %rcx4881; DARWIN-64-DYNAMIC-NEXT: movl %eax, 262144(%rcx)4882; DARWIN-64-DYNAMIC-NEXT: retq4883;4884; DARWIN-64-PIC-LABEL: moo05:4885; DARWIN-64-PIC: ## %bb.0: ## %entry4886; DARWIN-64-PIC-NEXT: movl _dsrc+262144(%rip), %eax4887; DARWIN-64-PIC-NEXT: movq _dptr(%rip), %rcx4888; DARWIN-64-PIC-NEXT: movl %eax, 262144(%rcx)4889; DARWIN-64-PIC-NEXT: retq4890 4891entry:4892 %0 = load ptr, ptr @dptr, align 84893 %1 = load i32, ptr getelementptr ([131072 x i32], ptr @dsrc, i32 0, i64 65536), align 324894 %2 = getelementptr i32, ptr %0, i64 655364895 store i32 %1, ptr %2, align 44896 ret void4897}4898 4899define dso_local void @moo06(i64 %i) nounwind {4900; LINUX-64-STATIC-LABEL: moo06:4901; LINUX-64-STATIC: # %bb.0: # %entry4902; LINUX-64-STATIC-NEXT: movl lsrc+262144(%rip), %eax4903; LINUX-64-STATIC-NEXT: movl %eax, ldst+262144(%rip)4904; LINUX-64-STATIC-NEXT: retq4905;4906; LINUX-32-STATIC-LABEL: moo06:4907; LINUX-32-STATIC: # %bb.0: # %entry4908; LINUX-32-STATIC-NEXT: movl lsrc+262144, %eax4909; LINUX-32-STATIC-NEXT: movl %eax, ldst+2621444910; LINUX-32-STATIC-NEXT: retl4911;4912; LINUX-32-PIC-LABEL: moo06:4913; LINUX-32-PIC: # %bb.0: # %entry4914; LINUX-32-PIC-NEXT: calll .L54$pb4915; LINUX-32-PIC-NEXT: .L54$pb:4916; LINUX-32-PIC-NEXT: popl %eax4917; LINUX-32-PIC-NEXT: .Ltmp54:4918; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp54-.L54$pb), %eax4919; LINUX-32-PIC-NEXT: movl lsrc@GOTOFF+262144(%eax), %ecx4920; LINUX-32-PIC-NEXT: movl %ecx, ldst@GOTOFF+262144(%eax)4921; LINUX-32-PIC-NEXT: retl4922;4923; LINUX-64-PIC-LABEL: moo06:4924; LINUX-64-PIC: # %bb.0: # %entry4925; LINUX-64-PIC-NEXT: movl lsrc+262144(%rip), %eax4926; LINUX-64-PIC-NEXT: movl %eax, ldst+262144(%rip)4927; LINUX-64-PIC-NEXT: retq4928;4929; DARWIN-32-STATIC-LABEL: moo06:4930; DARWIN-32-STATIC: ## %bb.0: ## %entry4931; DARWIN-32-STATIC-NEXT: movl _lsrc+262144, %eax4932; DARWIN-32-STATIC-NEXT: movl %eax, _ldst+2621444933; DARWIN-32-STATIC-NEXT: retl4934;4935; DARWIN-32-DYNAMIC-LABEL: moo06:4936; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry4937; DARWIN-32-DYNAMIC-NEXT: movl _lsrc+262144, %eax4938; DARWIN-32-DYNAMIC-NEXT: movl %eax, _ldst+2621444939; DARWIN-32-DYNAMIC-NEXT: retl4940;4941; DARWIN-32-PIC-LABEL: moo06:4942; DARWIN-32-PIC: ## %bb.0: ## %entry4943; DARWIN-32-PIC-NEXT: calll L54$pb4944; DARWIN-32-PIC-NEXT: L54$pb:4945; DARWIN-32-PIC-NEXT: popl %eax4946; DARWIN-32-PIC-NEXT: movl _lsrc-L54$pb+262144(%eax), %ecx4947; DARWIN-32-PIC-NEXT: movl %ecx, _ldst-L54$pb+262144(%eax)4948; DARWIN-32-PIC-NEXT: retl4949;4950; DARWIN-64-STATIC-LABEL: moo06:4951; DARWIN-64-STATIC: ## %bb.0: ## %entry4952; DARWIN-64-STATIC-NEXT: movl _lsrc+262144(%rip), %eax4953; DARWIN-64-STATIC-NEXT: movl %eax, _ldst+262144(%rip)4954; DARWIN-64-STATIC-NEXT: retq4955;4956; DARWIN-64-DYNAMIC-LABEL: moo06:4957; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry4958; DARWIN-64-DYNAMIC-NEXT: movl _lsrc+262144(%rip), %eax4959; DARWIN-64-DYNAMIC-NEXT: movl %eax, _ldst+262144(%rip)4960; DARWIN-64-DYNAMIC-NEXT: retq4961;4962; DARWIN-64-PIC-LABEL: moo06:4963; DARWIN-64-PIC: ## %bb.0: ## %entry4964; DARWIN-64-PIC-NEXT: movl _lsrc+262144(%rip), %eax4965; DARWIN-64-PIC-NEXT: movl %eax, _ldst+262144(%rip)4966; DARWIN-64-PIC-NEXT: retq4967 4968entry:4969 %0 = load i32, ptr getelementptr ([131072 x i32], ptr @lsrc, i32 0, i64 65536), align 44970 store i32 %0, ptr getelementptr ([131072 x i32], ptr @ldst, i32 0, i64 65536), align 44971 ret void4972}4973 4974define dso_local void @moo07(i64 %i) nounwind {4975; LINUX-64-STATIC-LABEL: moo07:4976; LINUX-64-STATIC: # %bb.0: # %entry4977; LINUX-64-STATIC-NEXT: movq $ldst+262144, lptr(%rip)4978; LINUX-64-STATIC-NEXT: retq4979;4980; LINUX-32-STATIC-LABEL: moo07:4981; LINUX-32-STATIC: # %bb.0: # %entry4982; LINUX-32-STATIC-NEXT: movl $ldst+262144, lptr4983; LINUX-32-STATIC-NEXT: retl4984;4985; LINUX-32-PIC-LABEL: moo07:4986; LINUX-32-PIC: # %bb.0: # %entry4987; LINUX-32-PIC-NEXT: calll .L55$pb4988; LINUX-32-PIC-NEXT: .L55$pb:4989; LINUX-32-PIC-NEXT: popl %eax4990; LINUX-32-PIC-NEXT: .Ltmp55:4991; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp55-.L55$pb), %eax4992; LINUX-32-PIC-NEXT: leal ldst@GOTOFF+262144(%eax), %ecx4993; LINUX-32-PIC-NEXT: movl %ecx, lptr@GOTOFF(%eax)4994; LINUX-32-PIC-NEXT: retl4995;4996; LINUX-64-PIC-LABEL: moo07:4997; LINUX-64-PIC: # %bb.0: # %entry4998; LINUX-64-PIC-NEXT: leaq ldst+262144(%rip), %rax4999; LINUX-64-PIC-NEXT: movq %rax, lptr(%rip)5000; LINUX-64-PIC-NEXT: retq5001;5002; DARWIN-32-STATIC-LABEL: moo07:5003; DARWIN-32-STATIC: ## %bb.0: ## %entry5004; DARWIN-32-STATIC-NEXT: movl $_ldst+262144, _lptr5005; DARWIN-32-STATIC-NEXT: retl5006;5007; DARWIN-32-DYNAMIC-LABEL: moo07:5008; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry5009; DARWIN-32-DYNAMIC-NEXT: movl $_ldst+262144, _lptr5010; DARWIN-32-DYNAMIC-NEXT: retl5011;5012; DARWIN-32-PIC-LABEL: moo07:5013; DARWIN-32-PIC: ## %bb.0: ## %entry5014; DARWIN-32-PIC-NEXT: calll L55$pb5015; DARWIN-32-PIC-NEXT: L55$pb:5016; DARWIN-32-PIC-NEXT: popl %eax5017; DARWIN-32-PIC-NEXT: leal _ldst-L55$pb+262144(%eax), %ecx5018; DARWIN-32-PIC-NEXT: movl %ecx, _lptr-L55$pb(%eax)5019; DARWIN-32-PIC-NEXT: retl5020;5021; DARWIN-64-STATIC-LABEL: moo07:5022; DARWIN-64-STATIC: ## %bb.0: ## %entry5023; DARWIN-64-STATIC-NEXT: leaq _ldst+262144(%rip), %rax5024; DARWIN-64-STATIC-NEXT: movq %rax, _lptr(%rip)5025; DARWIN-64-STATIC-NEXT: retq5026;5027; DARWIN-64-DYNAMIC-LABEL: moo07:5028; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry5029; DARWIN-64-DYNAMIC-NEXT: leaq _ldst+262144(%rip), %rax5030; DARWIN-64-DYNAMIC-NEXT: movq %rax, _lptr(%rip)5031; DARWIN-64-DYNAMIC-NEXT: retq5032;5033; DARWIN-64-PIC-LABEL: moo07:5034; DARWIN-64-PIC: ## %bb.0: ## %entry5035; DARWIN-64-PIC-NEXT: leaq _ldst+262144(%rip), %rax5036; DARWIN-64-PIC-NEXT: movq %rax, _lptr(%rip)5037; DARWIN-64-PIC-NEXT: retq5038 5039entry:5040 store ptr getelementptr ([131072 x i32], ptr @ldst, i32 0, i64 65536), ptr @lptr, align 85041 ret void5042}5043 5044define dso_local void @moo08(i64 %i) nounwind {5045; LINUX-64-STATIC-LABEL: moo08:5046; LINUX-64-STATIC: # %bb.0: # %entry5047; LINUX-64-STATIC-NEXT: movl lsrc+262144(%rip), %eax5048; LINUX-64-STATIC-NEXT: movq lptr(%rip), %rcx5049; LINUX-64-STATIC-NEXT: movl %eax, 262144(%rcx)5050; LINUX-64-STATIC-NEXT: retq5051;5052; LINUX-32-STATIC-LABEL: moo08:5053; LINUX-32-STATIC: # %bb.0: # %entry5054; LINUX-32-STATIC-NEXT: movl lsrc+262144, %eax5055; LINUX-32-STATIC-NEXT: movl lptr, %ecx5056; LINUX-32-STATIC-NEXT: movl %eax, 262144(%ecx)5057; LINUX-32-STATIC-NEXT: retl5058;5059; LINUX-32-PIC-LABEL: moo08:5060; LINUX-32-PIC: # %bb.0: # %entry5061; LINUX-32-PIC-NEXT: calll .L56$pb5062; LINUX-32-PIC-NEXT: .L56$pb:5063; LINUX-32-PIC-NEXT: popl %eax5064; LINUX-32-PIC-NEXT: .Ltmp56:5065; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp56-.L56$pb), %eax5066; LINUX-32-PIC-NEXT: movl lsrc@GOTOFF+262144(%eax), %ecx5067; LINUX-32-PIC-NEXT: movl lptr@GOTOFF(%eax), %eax5068; LINUX-32-PIC-NEXT: movl %ecx, 262144(%eax)5069; LINUX-32-PIC-NEXT: retl5070;5071; LINUX-64-PIC-LABEL: moo08:5072; LINUX-64-PIC: # %bb.0: # %entry5073; LINUX-64-PIC-NEXT: movl lsrc+262144(%rip), %eax5074; LINUX-64-PIC-NEXT: movq lptr(%rip), %rcx5075; LINUX-64-PIC-NEXT: movl %eax, 262144(%rcx)5076; LINUX-64-PIC-NEXT: retq5077;5078; DARWIN-32-STATIC-LABEL: moo08:5079; DARWIN-32-STATIC: ## %bb.0: ## %entry5080; DARWIN-32-STATIC-NEXT: movl _lsrc+262144, %eax5081; DARWIN-32-STATIC-NEXT: movl _lptr, %ecx5082; DARWIN-32-STATIC-NEXT: movl %eax, 262144(%ecx)5083; DARWIN-32-STATIC-NEXT: retl5084;5085; DARWIN-32-DYNAMIC-LABEL: moo08:5086; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry5087; DARWIN-32-DYNAMIC-NEXT: movl _lsrc+262144, %eax5088; DARWIN-32-DYNAMIC-NEXT: movl _lptr, %ecx5089; DARWIN-32-DYNAMIC-NEXT: movl %eax, 262144(%ecx)5090; DARWIN-32-DYNAMIC-NEXT: retl5091;5092; DARWIN-32-PIC-LABEL: moo08:5093; DARWIN-32-PIC: ## %bb.0: ## %entry5094; DARWIN-32-PIC-NEXT: calll L56$pb5095; DARWIN-32-PIC-NEXT: L56$pb:5096; DARWIN-32-PIC-NEXT: popl %eax5097; DARWIN-32-PIC-NEXT: movl _lsrc-L56$pb+262144(%eax), %ecx5098; DARWIN-32-PIC-NEXT: movl _lptr-L56$pb(%eax), %eax5099; DARWIN-32-PIC-NEXT: movl %ecx, 262144(%eax)5100; DARWIN-32-PIC-NEXT: retl5101;5102; DARWIN-64-STATIC-LABEL: moo08:5103; DARWIN-64-STATIC: ## %bb.0: ## %entry5104; DARWIN-64-STATIC-NEXT: movl _lsrc+262144(%rip), %eax5105; DARWIN-64-STATIC-NEXT: movq _lptr(%rip), %rcx5106; DARWIN-64-STATIC-NEXT: movl %eax, 262144(%rcx)5107; DARWIN-64-STATIC-NEXT: retq5108;5109; DARWIN-64-DYNAMIC-LABEL: moo08:5110; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry5111; DARWIN-64-DYNAMIC-NEXT: movl _lsrc+262144(%rip), %eax5112; DARWIN-64-DYNAMIC-NEXT: movq _lptr(%rip), %rcx5113; DARWIN-64-DYNAMIC-NEXT: movl %eax, 262144(%rcx)5114; DARWIN-64-DYNAMIC-NEXT: retq5115;5116; DARWIN-64-PIC-LABEL: moo08:5117; DARWIN-64-PIC: ## %bb.0: ## %entry5118; DARWIN-64-PIC-NEXT: movl _lsrc+262144(%rip), %eax5119; DARWIN-64-PIC-NEXT: movq _lptr(%rip), %rcx5120; DARWIN-64-PIC-NEXT: movl %eax, 262144(%rcx)5121; DARWIN-64-PIC-NEXT: retq5122 5123entry:5124 %0 = load ptr, ptr @lptr, align 85125 %1 = load i32, ptr getelementptr ([131072 x i32], ptr @lsrc, i32 0, i64 65536), align 45126 %2 = getelementptr i32, ptr %0, i64 655365127 store i32 %1, ptr %2, align 45128 ret void5129}5130 5131define dso_local void @big00(i64 %i) nounwind {5132; LINUX-64-STATIC-LABEL: big00:5133; LINUX-64-STATIC: # %bb.0: # %entry5134; LINUX-64-STATIC-NEXT: movq src@GOTPCREL(%rip), %rax5135; LINUX-64-STATIC-NEXT: movl 262144(%rax,%rdi,4), %eax5136; LINUX-64-STATIC-NEXT: movq dst@GOTPCREL(%rip), %rcx5137; LINUX-64-STATIC-NEXT: movl %eax, 262144(%rcx,%rdi,4)5138; LINUX-64-STATIC-NEXT: retq5139;5140; LINUX-32-STATIC-LABEL: big00:5141; LINUX-32-STATIC: # %bb.0: # %entry5142; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax5143; LINUX-32-STATIC-NEXT: movl src+262144(,%eax,4), %ecx5144; LINUX-32-STATIC-NEXT: movl %ecx, dst+262144(,%eax,4)5145; LINUX-32-STATIC-NEXT: retl5146;5147; LINUX-32-PIC-LABEL: big00:5148; LINUX-32-PIC: # %bb.0: # %entry5149; LINUX-32-PIC-NEXT: calll .L57$pb5150; LINUX-32-PIC-NEXT: .L57$pb:5151; LINUX-32-PIC-NEXT: popl %eax5152; LINUX-32-PIC-NEXT: .Ltmp57:5153; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp57-.L57$pb), %eax5154; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx5155; LINUX-32-PIC-NEXT: movl src@GOT(%eax), %edx5156; LINUX-32-PIC-NEXT: movl 262144(%edx,%ecx,4), %edx5157; LINUX-32-PIC-NEXT: movl dst@GOT(%eax), %eax5158; LINUX-32-PIC-NEXT: movl %edx, 262144(%eax,%ecx,4)5159; LINUX-32-PIC-NEXT: retl5160;5161; LINUX-64-PIC-LABEL: big00:5162; LINUX-64-PIC: # %bb.0: # %entry5163; LINUX-64-PIC-NEXT: movq src@GOTPCREL(%rip), %rax5164; LINUX-64-PIC-NEXT: movl 262144(%rax,%rdi,4), %eax5165; LINUX-64-PIC-NEXT: movq dst@GOTPCREL(%rip), %rcx5166; LINUX-64-PIC-NEXT: movl %eax, 262144(%rcx,%rdi,4)5167; LINUX-64-PIC-NEXT: retq5168;5169; DARWIN-32-STATIC-LABEL: big00:5170; DARWIN-32-STATIC: ## %bb.0: ## %entry5171; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax5172; DARWIN-32-STATIC-NEXT: movl _src+262144(,%eax,4), %ecx5173; DARWIN-32-STATIC-NEXT: movl %ecx, _dst+262144(,%eax,4)5174; DARWIN-32-STATIC-NEXT: retl5175;5176; DARWIN-32-DYNAMIC-LABEL: big00:5177; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry5178; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax5179; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %ecx5180; DARWIN-32-DYNAMIC-NEXT: movl 262144(%ecx,%eax,4), %ecx5181; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, %edx5182; DARWIN-32-DYNAMIC-NEXT: movl %ecx, 262144(%edx,%eax,4)5183; DARWIN-32-DYNAMIC-NEXT: retl5184;5185; DARWIN-32-PIC-LABEL: big00:5186; DARWIN-32-PIC: ## %bb.0: ## %entry5187; DARWIN-32-PIC-NEXT: calll L57$pb5188; DARWIN-32-PIC-NEXT: L57$pb:5189; DARWIN-32-PIC-NEXT: popl %eax5190; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx5191; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L57$pb(%eax), %edx5192; DARWIN-32-PIC-NEXT: movl 262144(%edx,%ecx,4), %edx5193; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L57$pb(%eax), %eax5194; DARWIN-32-PIC-NEXT: movl %edx, 262144(%eax,%ecx,4)5195; DARWIN-32-PIC-NEXT: retl5196;5197; DARWIN-64-STATIC-LABEL: big00:5198; DARWIN-64-STATIC: ## %bb.0: ## %entry5199; DARWIN-64-STATIC-NEXT: movq _src@GOTPCREL(%rip), %rax5200; DARWIN-64-STATIC-NEXT: movl 262144(%rax,%rdi,4), %eax5201; DARWIN-64-STATIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx5202; DARWIN-64-STATIC-NEXT: movl %eax, 262144(%rcx,%rdi,4)5203; DARWIN-64-STATIC-NEXT: retq5204;5205; DARWIN-64-DYNAMIC-LABEL: big00:5206; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry5207; DARWIN-64-DYNAMIC-NEXT: movq _src@GOTPCREL(%rip), %rax5208; DARWIN-64-DYNAMIC-NEXT: movl 262144(%rax,%rdi,4), %eax5209; DARWIN-64-DYNAMIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx5210; DARWIN-64-DYNAMIC-NEXT: movl %eax, 262144(%rcx,%rdi,4)5211; DARWIN-64-DYNAMIC-NEXT: retq5212;5213; DARWIN-64-PIC-LABEL: big00:5214; DARWIN-64-PIC: ## %bb.0: ## %entry5215; DARWIN-64-PIC-NEXT: movq _src@GOTPCREL(%rip), %rax5216; DARWIN-64-PIC-NEXT: movl 262144(%rax,%rdi,4), %eax5217; DARWIN-64-PIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx5218; DARWIN-64-PIC-NEXT: movl %eax, 262144(%rcx,%rdi,4)5219; DARWIN-64-PIC-NEXT: retq5220 5221entry:5222 %0 = add i64 %i, 655365223 %1 = getelementptr [131072 x i32], ptr @src, i64 0, i64 %05224 %2 = load i32, ptr %1, align 45225 %3 = getelementptr [131072 x i32], ptr @dst, i64 0, i64 %05226 store i32 %2, ptr %3, align 45227 ret void5228}5229 5230define dso_local void @big01(i64 %i) nounwind {5231; LINUX-64-STATIC-LABEL: big01:5232; LINUX-64-STATIC: # %bb.0: # %entry5233; LINUX-64-STATIC-NEXT: movq dst@GOTPCREL(%rip), %rax5234; LINUX-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax5235; LINUX-64-STATIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx5236; LINUX-64-STATIC-NEXT: movq %rax, (%rcx)5237; LINUX-64-STATIC-NEXT: retq5238;5239; LINUX-32-STATIC-LABEL: big01:5240; LINUX-32-STATIC: # %bb.0: # %entry5241; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax5242; LINUX-32-STATIC-NEXT: leal dst+262144(,%eax,4), %eax5243; LINUX-32-STATIC-NEXT: movl %eax, ptr5244; LINUX-32-STATIC-NEXT: retl5245;5246; LINUX-32-PIC-LABEL: big01:5247; LINUX-32-PIC: # %bb.0: # %entry5248; LINUX-32-PIC-NEXT: calll .L58$pb5249; LINUX-32-PIC-NEXT: .L58$pb:5250; LINUX-32-PIC-NEXT: popl %eax5251; LINUX-32-PIC-NEXT: .Ltmp58:5252; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp58-.L58$pb), %eax5253; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx5254; LINUX-32-PIC-NEXT: movl dst@GOT(%eax), %edx5255; LINUX-32-PIC-NEXT: leal 262144(%edx,%ecx,4), %ecx5256; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax5257; LINUX-32-PIC-NEXT: movl %ecx, (%eax)5258; LINUX-32-PIC-NEXT: retl5259;5260; LINUX-64-PIC-LABEL: big01:5261; LINUX-64-PIC: # %bb.0: # %entry5262; LINUX-64-PIC-NEXT: movq dst@GOTPCREL(%rip), %rax5263; LINUX-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax5264; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx5265; LINUX-64-PIC-NEXT: movq %rax, (%rcx)5266; LINUX-64-PIC-NEXT: retq5267;5268; DARWIN-32-STATIC-LABEL: big01:5269; DARWIN-32-STATIC: ## %bb.0: ## %entry5270; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax5271; DARWIN-32-STATIC-NEXT: leal _dst+262144(,%eax,4), %eax5272; DARWIN-32-STATIC-NEXT: movl %eax, _ptr5273; DARWIN-32-STATIC-NEXT: retl5274;5275; DARWIN-32-DYNAMIC-LABEL: big01:5276; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry5277; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax5278; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, %ecx5279; DARWIN-32-DYNAMIC-NEXT: leal 262144(%ecx,%eax,4), %eax5280; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx5281; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx)5282; DARWIN-32-DYNAMIC-NEXT: retl5283;5284; DARWIN-32-PIC-LABEL: big01:5285; DARWIN-32-PIC: ## %bb.0: ## %entry5286; DARWIN-32-PIC-NEXT: calll L58$pb5287; DARWIN-32-PIC-NEXT: L58$pb:5288; DARWIN-32-PIC-NEXT: popl %eax5289; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx5290; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L58$pb(%eax), %edx5291; DARWIN-32-PIC-NEXT: leal 262144(%edx,%ecx,4), %ecx5292; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L58$pb(%eax), %eax5293; DARWIN-32-PIC-NEXT: movl %ecx, (%eax)5294; DARWIN-32-PIC-NEXT: retl5295;5296; DARWIN-64-STATIC-LABEL: big01:5297; DARWIN-64-STATIC: ## %bb.0: ## %entry5298; DARWIN-64-STATIC-NEXT: movq _dst@GOTPCREL(%rip), %rax5299; DARWIN-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax5300; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx5301; DARWIN-64-STATIC-NEXT: movq %rax, (%rcx)5302; DARWIN-64-STATIC-NEXT: retq5303;5304; DARWIN-64-DYNAMIC-LABEL: big01:5305; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry5306; DARWIN-64-DYNAMIC-NEXT: movq _dst@GOTPCREL(%rip), %rax5307; DARWIN-64-DYNAMIC-NEXT: leaq 262144(%rax,%rdi,4), %rax5308; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx5309; DARWIN-64-DYNAMIC-NEXT: movq %rax, (%rcx)5310; DARWIN-64-DYNAMIC-NEXT: retq5311;5312; DARWIN-64-PIC-LABEL: big01:5313; DARWIN-64-PIC: ## %bb.0: ## %entry5314; DARWIN-64-PIC-NEXT: movq _dst@GOTPCREL(%rip), %rax5315; DARWIN-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax5316; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx5317; DARWIN-64-PIC-NEXT: movq %rax, (%rcx)5318; DARWIN-64-PIC-NEXT: retq5319 5320entry:5321 %.sum = add i64 %i, 655365322 %0 = getelementptr [131072 x i32], ptr @dst, i64 0, i64 %.sum5323 store ptr %0, ptr @ptr, align 85324 ret void5325}5326 5327define dso_local void @big02(i64 %i) nounwind {5328; LINUX-64-STATIC-LABEL: big02:5329; LINUX-64-STATIC: # %bb.0: # %entry5330; LINUX-64-STATIC-NEXT: movq src@GOTPCREL(%rip), %rax5331; LINUX-64-STATIC-NEXT: movl 262144(%rax,%rdi,4), %eax5332; LINUX-64-STATIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx5333; LINUX-64-STATIC-NEXT: movq (%rcx), %rcx5334; LINUX-64-STATIC-NEXT: movl %eax, 262144(%rcx,%rdi,4)5335; LINUX-64-STATIC-NEXT: retq5336;5337; LINUX-32-STATIC-LABEL: big02:5338; LINUX-32-STATIC: # %bb.0: # %entry5339; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax5340; LINUX-32-STATIC-NEXT: movl src+262144(,%eax,4), %ecx5341; LINUX-32-STATIC-NEXT: movl ptr, %edx5342; LINUX-32-STATIC-NEXT: movl %ecx, 262144(%edx,%eax,4)5343; LINUX-32-STATIC-NEXT: retl5344;5345; LINUX-32-PIC-LABEL: big02:5346; LINUX-32-PIC: # %bb.0: # %entry5347; LINUX-32-PIC-NEXT: calll .L59$pb5348; LINUX-32-PIC-NEXT: .L59$pb:5349; LINUX-32-PIC-NEXT: popl %eax5350; LINUX-32-PIC-NEXT: .Ltmp59:5351; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp59-.L59$pb), %eax5352; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx5353; LINUX-32-PIC-NEXT: movl src@GOT(%eax), %edx5354; LINUX-32-PIC-NEXT: movl 262144(%edx,%ecx,4), %edx5355; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax5356; LINUX-32-PIC-NEXT: movl (%eax), %eax5357; LINUX-32-PIC-NEXT: movl %edx, 262144(%eax,%ecx,4)5358; LINUX-32-PIC-NEXT: retl5359;5360; LINUX-64-PIC-LABEL: big02:5361; LINUX-64-PIC: # %bb.0: # %entry5362; LINUX-64-PIC-NEXT: movq src@GOTPCREL(%rip), %rax5363; LINUX-64-PIC-NEXT: movl 262144(%rax,%rdi,4), %eax5364; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx5365; LINUX-64-PIC-NEXT: movq (%rcx), %rcx5366; LINUX-64-PIC-NEXT: movl %eax, 262144(%rcx,%rdi,4)5367; LINUX-64-PIC-NEXT: retq5368;5369; DARWIN-32-STATIC-LABEL: big02:5370; DARWIN-32-STATIC: ## %bb.0: ## %entry5371; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax5372; DARWIN-32-STATIC-NEXT: movl _src+262144(,%eax,4), %ecx5373; DARWIN-32-STATIC-NEXT: movl _ptr, %edx5374; DARWIN-32-STATIC-NEXT: movl %ecx, 262144(%edx,%eax,4)5375; DARWIN-32-STATIC-NEXT: retl5376;5377; DARWIN-32-DYNAMIC-LABEL: big02:5378; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry5379; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax5380; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %ecx5381; DARWIN-32-DYNAMIC-NEXT: movl 262144(%ecx,%eax,4), %ecx5382; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %edx5383; DARWIN-32-DYNAMIC-NEXT: movl (%edx), %edx5384; DARWIN-32-DYNAMIC-NEXT: movl %ecx, 262144(%edx,%eax,4)5385; DARWIN-32-DYNAMIC-NEXT: retl5386;5387; DARWIN-32-PIC-LABEL: big02:5388; DARWIN-32-PIC: ## %bb.0: ## %entry5389; DARWIN-32-PIC-NEXT: calll L59$pb5390; DARWIN-32-PIC-NEXT: L59$pb:5391; DARWIN-32-PIC-NEXT: popl %eax5392; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx5393; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L59$pb(%eax), %edx5394; DARWIN-32-PIC-NEXT: movl 262144(%edx,%ecx,4), %edx5395; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L59$pb(%eax), %eax5396; DARWIN-32-PIC-NEXT: movl (%eax), %eax5397; DARWIN-32-PIC-NEXT: movl %edx, 262144(%eax,%ecx,4)5398; DARWIN-32-PIC-NEXT: retl5399;5400; DARWIN-64-STATIC-LABEL: big02:5401; DARWIN-64-STATIC: ## %bb.0: ## %entry5402; DARWIN-64-STATIC-NEXT: movq _src@GOTPCREL(%rip), %rax5403; DARWIN-64-STATIC-NEXT: movl 262144(%rax,%rdi,4), %eax5404; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx5405; DARWIN-64-STATIC-NEXT: movq (%rcx), %rcx5406; DARWIN-64-STATIC-NEXT: movl %eax, 262144(%rcx,%rdi,4)5407; DARWIN-64-STATIC-NEXT: retq5408;5409; DARWIN-64-DYNAMIC-LABEL: big02:5410; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry5411; DARWIN-64-DYNAMIC-NEXT: movq _src@GOTPCREL(%rip), %rax5412; DARWIN-64-DYNAMIC-NEXT: movl 262144(%rax,%rdi,4), %eax5413; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx5414; DARWIN-64-DYNAMIC-NEXT: movq (%rcx), %rcx5415; DARWIN-64-DYNAMIC-NEXT: movl %eax, 262144(%rcx,%rdi,4)5416; DARWIN-64-DYNAMIC-NEXT: retq5417;5418; DARWIN-64-PIC-LABEL: big02:5419; DARWIN-64-PIC: ## %bb.0: ## %entry5420; DARWIN-64-PIC-NEXT: movq _src@GOTPCREL(%rip), %rax5421; DARWIN-64-PIC-NEXT: movl 262144(%rax,%rdi,4), %eax5422; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx5423; DARWIN-64-PIC-NEXT: movq (%rcx), %rcx5424; DARWIN-64-PIC-NEXT: movl %eax, 262144(%rcx,%rdi,4)5425; DARWIN-64-PIC-NEXT: retq5426 5427entry:5428 %0 = load ptr, ptr @ptr, align 85429 %1 = add i64 %i, 655365430 %2 = getelementptr [131072 x i32], ptr @src, i64 0, i64 %15431 %3 = load i32, ptr %2, align 45432 %4 = getelementptr i32, ptr %0, i64 %15433 store i32 %3, ptr %4, align 45434 ret void5435}5436 5437define dso_local void @big03(i64 %i) nounwind {5438; LINUX-64-STATIC-LABEL: big03:5439; LINUX-64-STATIC: # %bb.0: # %entry5440; LINUX-64-STATIC-NEXT: movl dsrc+262144(,%rdi,4), %eax5441; LINUX-64-STATIC-NEXT: movl %eax, ddst+262144(,%rdi,4)5442; LINUX-64-STATIC-NEXT: retq5443;5444; LINUX-32-STATIC-LABEL: big03:5445; LINUX-32-STATIC: # %bb.0: # %entry5446; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax5447; LINUX-32-STATIC-NEXT: movl dsrc+262144(,%eax,4), %ecx5448; LINUX-32-STATIC-NEXT: movl %ecx, ddst+262144(,%eax,4)5449; LINUX-32-STATIC-NEXT: retl5450;5451; LINUX-32-PIC-LABEL: big03:5452; LINUX-32-PIC: # %bb.0: # %entry5453; LINUX-32-PIC-NEXT: calll .L60$pb5454; LINUX-32-PIC-NEXT: .L60$pb:5455; LINUX-32-PIC-NEXT: popl %eax5456; LINUX-32-PIC-NEXT: .Ltmp60:5457; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp60-.L60$pb), %eax5458; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx5459; LINUX-32-PIC-NEXT: movl .Ldsrc$local@GOTOFF+262144(%eax,%ecx,4), %edx5460; LINUX-32-PIC-NEXT: movl %edx, .Lddst$local@GOTOFF+262144(%eax,%ecx,4)5461; LINUX-32-PIC-NEXT: retl5462;5463; LINUX-64-PIC-LABEL: big03:5464; LINUX-64-PIC: # %bb.0: # %entry5465; LINUX-64-PIC-NEXT: leaq .Ldsrc$local(%rip), %rax5466; LINUX-64-PIC-NEXT: movl 262144(%rax,%rdi,4), %eax5467; LINUX-64-PIC-NEXT: leaq .Lddst$local(%rip), %rcx5468; LINUX-64-PIC-NEXT: movl %eax, 262144(%rcx,%rdi,4)5469; LINUX-64-PIC-NEXT: retq5470;5471; DARWIN-32-STATIC-LABEL: big03:5472; DARWIN-32-STATIC: ## %bb.0: ## %entry5473; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax5474; DARWIN-32-STATIC-NEXT: movl _dsrc+262144(,%eax,4), %ecx5475; DARWIN-32-STATIC-NEXT: movl %ecx, _ddst+262144(,%eax,4)5476; DARWIN-32-STATIC-NEXT: retl5477;5478; DARWIN-32-DYNAMIC-LABEL: big03:5479; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry5480; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax5481; DARWIN-32-DYNAMIC-NEXT: movl _dsrc+262144(,%eax,4), %ecx5482; DARWIN-32-DYNAMIC-NEXT: movl %ecx, _ddst+262144(,%eax,4)5483; DARWIN-32-DYNAMIC-NEXT: retl5484;5485; DARWIN-32-PIC-LABEL: big03:5486; DARWIN-32-PIC: ## %bb.0: ## %entry5487; DARWIN-32-PIC-NEXT: calll L60$pb5488; DARWIN-32-PIC-NEXT: L60$pb:5489; DARWIN-32-PIC-NEXT: popl %eax5490; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx5491; DARWIN-32-PIC-NEXT: movl _dsrc-L60$pb+262144(%eax,%ecx,4), %edx5492; DARWIN-32-PIC-NEXT: movl %edx, _ddst-L60$pb+262144(%eax,%ecx,4)5493; DARWIN-32-PIC-NEXT: retl5494;5495; DARWIN-64-STATIC-LABEL: big03:5496; DARWIN-64-STATIC: ## %bb.0: ## %entry5497; DARWIN-64-STATIC-NEXT: leaq _dsrc(%rip), %rax5498; DARWIN-64-STATIC-NEXT: movl 262144(%rax,%rdi,4), %eax5499; DARWIN-64-STATIC-NEXT: leaq _ddst(%rip), %rcx5500; DARWIN-64-STATIC-NEXT: movl %eax, 262144(%rcx,%rdi,4)5501; DARWIN-64-STATIC-NEXT: retq5502;5503; DARWIN-64-DYNAMIC-LABEL: big03:5504; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry5505; DARWIN-64-DYNAMIC-NEXT: leaq _dsrc(%rip), %rax5506; DARWIN-64-DYNAMIC-NEXT: movl 262144(%rax,%rdi,4), %eax5507; DARWIN-64-DYNAMIC-NEXT: leaq _ddst(%rip), %rcx5508; DARWIN-64-DYNAMIC-NEXT: movl %eax, 262144(%rcx,%rdi,4)5509; DARWIN-64-DYNAMIC-NEXT: retq5510;5511; DARWIN-64-PIC-LABEL: big03:5512; DARWIN-64-PIC: ## %bb.0: ## %entry5513; DARWIN-64-PIC-NEXT: leaq _dsrc(%rip), %rax5514; DARWIN-64-PIC-NEXT: movl 262144(%rax,%rdi,4), %eax5515; DARWIN-64-PIC-NEXT: leaq _ddst(%rip), %rcx5516; DARWIN-64-PIC-NEXT: movl %eax, 262144(%rcx,%rdi,4)5517; DARWIN-64-PIC-NEXT: retq5518 5519entry:5520 %0 = add i64 %i, 655365521 %1 = getelementptr [131072 x i32], ptr @dsrc, i64 0, i64 %05522 %2 = load i32, ptr %1, align 45523 %3 = getelementptr [131072 x i32], ptr @ddst, i64 0, i64 %05524 store i32 %2, ptr %3, align 45525 ret void5526}5527 5528define dso_local void @big04(i64 %i) nounwind {5529; LINUX-64-STATIC-LABEL: big04:5530; LINUX-64-STATIC: # %bb.0: # %entry5531; LINUX-64-STATIC-NEXT: leaq ddst+262144(,%rdi,4), %rax5532; LINUX-64-STATIC-NEXT: movq %rax, dptr(%rip)5533; LINUX-64-STATIC-NEXT: retq5534;5535; LINUX-32-STATIC-LABEL: big04:5536; LINUX-32-STATIC: # %bb.0: # %entry5537; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax5538; LINUX-32-STATIC-NEXT: leal ddst+262144(,%eax,4), %eax5539; LINUX-32-STATIC-NEXT: movl %eax, dptr5540; LINUX-32-STATIC-NEXT: retl5541;5542; LINUX-32-PIC-LABEL: big04:5543; LINUX-32-PIC: # %bb.0: # %entry5544; LINUX-32-PIC-NEXT: calll .L61$pb5545; LINUX-32-PIC-NEXT: .L61$pb:5546; LINUX-32-PIC-NEXT: popl %eax5547; LINUX-32-PIC-NEXT: .Ltmp61:5548; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp61-.L61$pb), %eax5549; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx5550; LINUX-32-PIC-NEXT: leal .Lddst$local@GOTOFF+262144(%eax,%ecx,4), %ecx5551; LINUX-32-PIC-NEXT: movl %ecx, .Ldptr$local@GOTOFF(%eax)5552; LINUX-32-PIC-NEXT: retl5553;5554; LINUX-64-PIC-LABEL: big04:5555; LINUX-64-PIC: # %bb.0: # %entry5556; LINUX-64-PIC-NEXT: leaq .Lddst$local(%rip), %rax5557; LINUX-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax5558; LINUX-64-PIC-NEXT: movq %rax, .Ldptr$local(%rip)5559; LINUX-64-PIC-NEXT: retq5560;5561; DARWIN-32-STATIC-LABEL: big04:5562; DARWIN-32-STATIC: ## %bb.0: ## %entry5563; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax5564; DARWIN-32-STATIC-NEXT: leal _ddst+262144(,%eax,4), %eax5565; DARWIN-32-STATIC-NEXT: movl %eax, _dptr5566; DARWIN-32-STATIC-NEXT: retl5567;5568; DARWIN-32-DYNAMIC-LABEL: big04:5569; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry5570; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax5571; DARWIN-32-DYNAMIC-NEXT: leal _ddst+262144(,%eax,4), %eax5572; DARWIN-32-DYNAMIC-NEXT: movl %eax, _dptr5573; DARWIN-32-DYNAMIC-NEXT: retl5574;5575; DARWIN-32-PIC-LABEL: big04:5576; DARWIN-32-PIC: ## %bb.0: ## %entry5577; DARWIN-32-PIC-NEXT: calll L61$pb5578; DARWIN-32-PIC-NEXT: L61$pb:5579; DARWIN-32-PIC-NEXT: popl %eax5580; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx5581; DARWIN-32-PIC-NEXT: leal _ddst-L61$pb+262144(%eax,%ecx,4), %ecx5582; DARWIN-32-PIC-NEXT: movl %ecx, _dptr-L61$pb(%eax)5583; DARWIN-32-PIC-NEXT: retl5584;5585; DARWIN-64-STATIC-LABEL: big04:5586; DARWIN-64-STATIC: ## %bb.0: ## %entry5587; DARWIN-64-STATIC-NEXT: leaq _ddst(%rip), %rax5588; DARWIN-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax5589; DARWIN-64-STATIC-NEXT: movq %rax, _dptr(%rip)5590; DARWIN-64-STATIC-NEXT: retq5591;5592; DARWIN-64-DYNAMIC-LABEL: big04:5593; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry5594; DARWIN-64-DYNAMIC-NEXT: leaq _ddst(%rip), %rax5595; DARWIN-64-DYNAMIC-NEXT: leaq 262144(%rax,%rdi,4), %rax5596; DARWIN-64-DYNAMIC-NEXT: movq %rax, _dptr(%rip)5597; DARWIN-64-DYNAMIC-NEXT: retq5598;5599; DARWIN-64-PIC-LABEL: big04:5600; DARWIN-64-PIC: ## %bb.0: ## %entry5601; DARWIN-64-PIC-NEXT: leaq _ddst(%rip), %rax5602; DARWIN-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax5603; DARWIN-64-PIC-NEXT: movq %rax, _dptr(%rip)5604; DARWIN-64-PIC-NEXT: retq5605 5606entry:5607 %.sum = add i64 %i, 655365608 %0 = getelementptr [131072 x i32], ptr @ddst, i64 0, i64 %.sum5609 store ptr %0, ptr @dptr, align 85610 ret void5611}5612 5613define dso_local void @big05(i64 %i) nounwind {5614; LINUX-64-STATIC-LABEL: big05:5615; LINUX-64-STATIC: # %bb.0: # %entry5616; LINUX-64-STATIC-NEXT: movl dsrc+262144(,%rdi,4), %eax5617; LINUX-64-STATIC-NEXT: movq dptr(%rip), %rcx5618; LINUX-64-STATIC-NEXT: movl %eax, 262144(%rcx,%rdi,4)5619; LINUX-64-STATIC-NEXT: retq5620;5621; LINUX-32-STATIC-LABEL: big05:5622; LINUX-32-STATIC: # %bb.0: # %entry5623; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax5624; LINUX-32-STATIC-NEXT: movl dsrc+262144(,%eax,4), %ecx5625; LINUX-32-STATIC-NEXT: movl dptr, %edx5626; LINUX-32-STATIC-NEXT: movl %ecx, 262144(%edx,%eax,4)5627; LINUX-32-STATIC-NEXT: retl5628;5629; LINUX-32-PIC-LABEL: big05:5630; LINUX-32-PIC: # %bb.0: # %entry5631; LINUX-32-PIC-NEXT: calll .L62$pb5632; LINUX-32-PIC-NEXT: .L62$pb:5633; LINUX-32-PIC-NEXT: popl %eax5634; LINUX-32-PIC-NEXT: .Ltmp62:5635; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp62-.L62$pb), %eax5636; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx5637; LINUX-32-PIC-NEXT: movl .Ldsrc$local@GOTOFF+262144(%eax,%ecx,4), %edx5638; LINUX-32-PIC-NEXT: movl .Ldptr$local@GOTOFF(%eax), %eax5639; LINUX-32-PIC-NEXT: movl %edx, 262144(%eax,%ecx,4)5640; LINUX-32-PIC-NEXT: retl5641;5642; LINUX-64-PIC-LABEL: big05:5643; LINUX-64-PIC: # %bb.0: # %entry5644; LINUX-64-PIC-NEXT: leaq .Ldsrc$local(%rip), %rax5645; LINUX-64-PIC-NEXT: movl 262144(%rax,%rdi,4), %eax5646; LINUX-64-PIC-NEXT: movq .Ldptr$local(%rip), %rcx5647; LINUX-64-PIC-NEXT: movl %eax, 262144(%rcx,%rdi,4)5648; LINUX-64-PIC-NEXT: retq5649;5650; DARWIN-32-STATIC-LABEL: big05:5651; DARWIN-32-STATIC: ## %bb.0: ## %entry5652; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax5653; DARWIN-32-STATIC-NEXT: movl _dsrc+262144(,%eax,4), %ecx5654; DARWIN-32-STATIC-NEXT: movl _dptr, %edx5655; DARWIN-32-STATIC-NEXT: movl %ecx, 262144(%edx,%eax,4)5656; DARWIN-32-STATIC-NEXT: retl5657;5658; DARWIN-32-DYNAMIC-LABEL: big05:5659; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry5660; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax5661; DARWIN-32-DYNAMIC-NEXT: movl _dsrc+262144(,%eax,4), %ecx5662; DARWIN-32-DYNAMIC-NEXT: movl _dptr, %edx5663; DARWIN-32-DYNAMIC-NEXT: movl %ecx, 262144(%edx,%eax,4)5664; DARWIN-32-DYNAMIC-NEXT: retl5665;5666; DARWIN-32-PIC-LABEL: big05:5667; DARWIN-32-PIC: ## %bb.0: ## %entry5668; DARWIN-32-PIC-NEXT: calll L62$pb5669; DARWIN-32-PIC-NEXT: L62$pb:5670; DARWIN-32-PIC-NEXT: popl %eax5671; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx5672; DARWIN-32-PIC-NEXT: movl _dsrc-L62$pb+262144(%eax,%ecx,4), %edx5673; DARWIN-32-PIC-NEXT: movl _dptr-L62$pb(%eax), %eax5674; DARWIN-32-PIC-NEXT: movl %edx, 262144(%eax,%ecx,4)5675; DARWIN-32-PIC-NEXT: retl5676;5677; DARWIN-64-STATIC-LABEL: big05:5678; DARWIN-64-STATIC: ## %bb.0: ## %entry5679; DARWIN-64-STATIC-NEXT: leaq _dsrc(%rip), %rax5680; DARWIN-64-STATIC-NEXT: movl 262144(%rax,%rdi,4), %eax5681; DARWIN-64-STATIC-NEXT: movq _dptr(%rip), %rcx5682; DARWIN-64-STATIC-NEXT: movl %eax, 262144(%rcx,%rdi,4)5683; DARWIN-64-STATIC-NEXT: retq5684;5685; DARWIN-64-DYNAMIC-LABEL: big05:5686; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry5687; DARWIN-64-DYNAMIC-NEXT: leaq _dsrc(%rip), %rax5688; DARWIN-64-DYNAMIC-NEXT: movl 262144(%rax,%rdi,4), %eax5689; DARWIN-64-DYNAMIC-NEXT: movq _dptr(%rip), %rcx5690; DARWIN-64-DYNAMIC-NEXT: movl %eax, 262144(%rcx,%rdi,4)5691; DARWIN-64-DYNAMIC-NEXT: retq5692;5693; DARWIN-64-PIC-LABEL: big05:5694; DARWIN-64-PIC: ## %bb.0: ## %entry5695; DARWIN-64-PIC-NEXT: leaq _dsrc(%rip), %rax5696; DARWIN-64-PIC-NEXT: movl 262144(%rax,%rdi,4), %eax5697; DARWIN-64-PIC-NEXT: movq _dptr(%rip), %rcx5698; DARWIN-64-PIC-NEXT: movl %eax, 262144(%rcx,%rdi,4)5699; DARWIN-64-PIC-NEXT: retq5700 5701entry:5702 %0 = load ptr, ptr @dptr, align 85703 %1 = add i64 %i, 655365704 %2 = getelementptr [131072 x i32], ptr @dsrc, i64 0, i64 %15705 %3 = load i32, ptr %2, align 45706 %4 = getelementptr i32, ptr %0, i64 %15707 store i32 %3, ptr %4, align 45708 ret void5709}5710 5711define dso_local void @big06(i64 %i) nounwind {5712; LINUX-64-STATIC-LABEL: big06:5713; LINUX-64-STATIC: # %bb.0: # %entry5714; LINUX-64-STATIC-NEXT: movl lsrc+262144(,%rdi,4), %eax5715; LINUX-64-STATIC-NEXT: movl %eax, ldst+262144(,%rdi,4)5716; LINUX-64-STATIC-NEXT: retq5717;5718; LINUX-32-STATIC-LABEL: big06:5719; LINUX-32-STATIC: # %bb.0: # %entry5720; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax5721; LINUX-32-STATIC-NEXT: movl lsrc+262144(,%eax,4), %ecx5722; LINUX-32-STATIC-NEXT: movl %ecx, ldst+262144(,%eax,4)5723; LINUX-32-STATIC-NEXT: retl5724;5725; LINUX-32-PIC-LABEL: big06:5726; LINUX-32-PIC: # %bb.0: # %entry5727; LINUX-32-PIC-NEXT: calll .L63$pb5728; LINUX-32-PIC-NEXT: .L63$pb:5729; LINUX-32-PIC-NEXT: popl %eax5730; LINUX-32-PIC-NEXT: .Ltmp63:5731; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp63-.L63$pb), %eax5732; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx5733; LINUX-32-PIC-NEXT: movl lsrc@GOTOFF+262144(%eax,%ecx,4), %edx5734; LINUX-32-PIC-NEXT: movl %edx, ldst@GOTOFF+262144(%eax,%ecx,4)5735; LINUX-32-PIC-NEXT: retl5736;5737; LINUX-64-PIC-LABEL: big06:5738; LINUX-64-PIC: # %bb.0: # %entry5739; LINUX-64-PIC-NEXT: leaq lsrc(%rip), %rax5740; LINUX-64-PIC-NEXT: movl 262144(%rax,%rdi,4), %eax5741; LINUX-64-PIC-NEXT: leaq ldst(%rip), %rcx5742; LINUX-64-PIC-NEXT: movl %eax, 262144(%rcx,%rdi,4)5743; LINUX-64-PIC-NEXT: retq5744;5745; DARWIN-32-STATIC-LABEL: big06:5746; DARWIN-32-STATIC: ## %bb.0: ## %entry5747; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax5748; DARWIN-32-STATIC-NEXT: movl _lsrc+262144(,%eax,4), %ecx5749; DARWIN-32-STATIC-NEXT: movl %ecx, _ldst+262144(,%eax,4)5750; DARWIN-32-STATIC-NEXT: retl5751;5752; DARWIN-32-DYNAMIC-LABEL: big06:5753; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry5754; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax5755; DARWIN-32-DYNAMIC-NEXT: movl _lsrc+262144(,%eax,4), %ecx5756; DARWIN-32-DYNAMIC-NEXT: movl %ecx, _ldst+262144(,%eax,4)5757; DARWIN-32-DYNAMIC-NEXT: retl5758;5759; DARWIN-32-PIC-LABEL: big06:5760; DARWIN-32-PIC: ## %bb.0: ## %entry5761; DARWIN-32-PIC-NEXT: calll L63$pb5762; DARWIN-32-PIC-NEXT: L63$pb:5763; DARWIN-32-PIC-NEXT: popl %eax5764; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx5765; DARWIN-32-PIC-NEXT: movl _lsrc-L63$pb+262144(%eax,%ecx,4), %edx5766; DARWIN-32-PIC-NEXT: movl %edx, _ldst-L63$pb+262144(%eax,%ecx,4)5767; DARWIN-32-PIC-NEXT: retl5768;5769; DARWIN-64-STATIC-LABEL: big06:5770; DARWIN-64-STATIC: ## %bb.0: ## %entry5771; DARWIN-64-STATIC-NEXT: leaq _lsrc(%rip), %rax5772; DARWIN-64-STATIC-NEXT: movl 262144(%rax,%rdi,4), %eax5773; DARWIN-64-STATIC-NEXT: leaq _ldst(%rip), %rcx5774; DARWIN-64-STATIC-NEXT: movl %eax, 262144(%rcx,%rdi,4)5775; DARWIN-64-STATIC-NEXT: retq5776;5777; DARWIN-64-DYNAMIC-LABEL: big06:5778; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry5779; DARWIN-64-DYNAMIC-NEXT: leaq _lsrc(%rip), %rax5780; DARWIN-64-DYNAMIC-NEXT: movl 262144(%rax,%rdi,4), %eax5781; DARWIN-64-DYNAMIC-NEXT: leaq _ldst(%rip), %rcx5782; DARWIN-64-DYNAMIC-NEXT: movl %eax, 262144(%rcx,%rdi,4)5783; DARWIN-64-DYNAMIC-NEXT: retq5784;5785; DARWIN-64-PIC-LABEL: big06:5786; DARWIN-64-PIC: ## %bb.0: ## %entry5787; DARWIN-64-PIC-NEXT: leaq _lsrc(%rip), %rax5788; DARWIN-64-PIC-NEXT: movl 262144(%rax,%rdi,4), %eax5789; DARWIN-64-PIC-NEXT: leaq _ldst(%rip), %rcx5790; DARWIN-64-PIC-NEXT: movl %eax, 262144(%rcx,%rdi,4)5791; DARWIN-64-PIC-NEXT: retq5792 5793entry:5794 %0 = add i64 %i, 655365795 %1 = getelementptr [131072 x i32], ptr @lsrc, i64 0, i64 %05796 %2 = load i32, ptr %1, align 45797 %3 = getelementptr [131072 x i32], ptr @ldst, i64 0, i64 %05798 store i32 %2, ptr %3, align 45799 ret void5800}5801 5802define dso_local void @big07(i64 %i) nounwind {5803; LINUX-64-STATIC-LABEL: big07:5804; LINUX-64-STATIC: # %bb.0: # %entry5805; LINUX-64-STATIC-NEXT: leaq ldst+262144(,%rdi,4), %rax5806; LINUX-64-STATIC-NEXT: movq %rax, lptr(%rip)5807; LINUX-64-STATIC-NEXT: retq5808;5809; LINUX-32-STATIC-LABEL: big07:5810; LINUX-32-STATIC: # %bb.0: # %entry5811; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax5812; LINUX-32-STATIC-NEXT: leal ldst+262144(,%eax,4), %eax5813; LINUX-32-STATIC-NEXT: movl %eax, lptr5814; LINUX-32-STATIC-NEXT: retl5815;5816; LINUX-32-PIC-LABEL: big07:5817; LINUX-32-PIC: # %bb.0: # %entry5818; LINUX-32-PIC-NEXT: calll .L64$pb5819; LINUX-32-PIC-NEXT: .L64$pb:5820; LINUX-32-PIC-NEXT: popl %eax5821; LINUX-32-PIC-NEXT: .Ltmp64:5822; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp64-.L64$pb), %eax5823; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx5824; LINUX-32-PIC-NEXT: leal ldst@GOTOFF+262144(%eax,%ecx,4), %ecx5825; LINUX-32-PIC-NEXT: movl %ecx, lptr@GOTOFF(%eax)5826; LINUX-32-PIC-NEXT: retl5827;5828; LINUX-64-PIC-LABEL: big07:5829; LINUX-64-PIC: # %bb.0: # %entry5830; LINUX-64-PIC-NEXT: leaq ldst(%rip), %rax5831; LINUX-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax5832; LINUX-64-PIC-NEXT: movq %rax, lptr(%rip)5833; LINUX-64-PIC-NEXT: retq5834;5835; DARWIN-32-STATIC-LABEL: big07:5836; DARWIN-32-STATIC: ## %bb.0: ## %entry5837; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax5838; DARWIN-32-STATIC-NEXT: leal _ldst+262144(,%eax,4), %eax5839; DARWIN-32-STATIC-NEXT: movl %eax, _lptr5840; DARWIN-32-STATIC-NEXT: retl5841;5842; DARWIN-32-DYNAMIC-LABEL: big07:5843; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry5844; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax5845; DARWIN-32-DYNAMIC-NEXT: leal _ldst+262144(,%eax,4), %eax5846; DARWIN-32-DYNAMIC-NEXT: movl %eax, _lptr5847; DARWIN-32-DYNAMIC-NEXT: retl5848;5849; DARWIN-32-PIC-LABEL: big07:5850; DARWIN-32-PIC: ## %bb.0: ## %entry5851; DARWIN-32-PIC-NEXT: calll L64$pb5852; DARWIN-32-PIC-NEXT: L64$pb:5853; DARWIN-32-PIC-NEXT: popl %eax5854; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx5855; DARWIN-32-PIC-NEXT: leal _ldst-L64$pb+262144(%eax,%ecx,4), %ecx5856; DARWIN-32-PIC-NEXT: movl %ecx, _lptr-L64$pb(%eax)5857; DARWIN-32-PIC-NEXT: retl5858;5859; DARWIN-64-STATIC-LABEL: big07:5860; DARWIN-64-STATIC: ## %bb.0: ## %entry5861; DARWIN-64-STATIC-NEXT: leaq _ldst(%rip), %rax5862; DARWIN-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax5863; DARWIN-64-STATIC-NEXT: movq %rax, _lptr(%rip)5864; DARWIN-64-STATIC-NEXT: retq5865;5866; DARWIN-64-DYNAMIC-LABEL: big07:5867; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry5868; DARWIN-64-DYNAMIC-NEXT: leaq _ldst(%rip), %rax5869; DARWIN-64-DYNAMIC-NEXT: leaq 262144(%rax,%rdi,4), %rax5870; DARWIN-64-DYNAMIC-NEXT: movq %rax, _lptr(%rip)5871; DARWIN-64-DYNAMIC-NEXT: retq5872;5873; DARWIN-64-PIC-LABEL: big07:5874; DARWIN-64-PIC: ## %bb.0: ## %entry5875; DARWIN-64-PIC-NEXT: leaq _ldst(%rip), %rax5876; DARWIN-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax5877; DARWIN-64-PIC-NEXT: movq %rax, _lptr(%rip)5878; DARWIN-64-PIC-NEXT: retq5879 5880entry:5881 %.sum = add i64 %i, 655365882 %0 = getelementptr [131072 x i32], ptr @ldst, i64 0, i64 %.sum5883 store ptr %0, ptr @lptr, align 85884 ret void5885}5886 5887define dso_local void @big08(i64 %i) nounwind {5888; LINUX-64-STATIC-LABEL: big08:5889; LINUX-64-STATIC: # %bb.0: # %entry5890; LINUX-64-STATIC-NEXT: movl lsrc+262144(,%rdi,4), %eax5891; LINUX-64-STATIC-NEXT: movq lptr(%rip), %rcx5892; LINUX-64-STATIC-NEXT: movl %eax, 262144(%rcx,%rdi,4)5893; LINUX-64-STATIC-NEXT: retq5894;5895; LINUX-32-STATIC-LABEL: big08:5896; LINUX-32-STATIC: # %bb.0: # %entry5897; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax5898; LINUX-32-STATIC-NEXT: movl lsrc+262144(,%eax,4), %ecx5899; LINUX-32-STATIC-NEXT: movl lptr, %edx5900; LINUX-32-STATIC-NEXT: movl %ecx, 262144(%edx,%eax,4)5901; LINUX-32-STATIC-NEXT: retl5902;5903; LINUX-32-PIC-LABEL: big08:5904; LINUX-32-PIC: # %bb.0: # %entry5905; LINUX-32-PIC-NEXT: calll .L65$pb5906; LINUX-32-PIC-NEXT: .L65$pb:5907; LINUX-32-PIC-NEXT: popl %eax5908; LINUX-32-PIC-NEXT: .Ltmp65:5909; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp65-.L65$pb), %eax5910; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx5911; LINUX-32-PIC-NEXT: movl lsrc@GOTOFF+262144(%eax,%ecx,4), %edx5912; LINUX-32-PIC-NEXT: movl lptr@GOTOFF(%eax), %eax5913; LINUX-32-PIC-NEXT: movl %edx, 262144(%eax,%ecx,4)5914; LINUX-32-PIC-NEXT: retl5915;5916; LINUX-64-PIC-LABEL: big08:5917; LINUX-64-PIC: # %bb.0: # %entry5918; LINUX-64-PIC-NEXT: leaq lsrc(%rip), %rax5919; LINUX-64-PIC-NEXT: movl 262144(%rax,%rdi,4), %eax5920; LINUX-64-PIC-NEXT: movq lptr(%rip), %rcx5921; LINUX-64-PIC-NEXT: movl %eax, 262144(%rcx,%rdi,4)5922; LINUX-64-PIC-NEXT: retq5923;5924; DARWIN-32-STATIC-LABEL: big08:5925; DARWIN-32-STATIC: ## %bb.0: ## %entry5926; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax5927; DARWIN-32-STATIC-NEXT: movl _lsrc+262144(,%eax,4), %ecx5928; DARWIN-32-STATIC-NEXT: movl _lptr, %edx5929; DARWIN-32-STATIC-NEXT: movl %ecx, 262144(%edx,%eax,4)5930; DARWIN-32-STATIC-NEXT: retl5931;5932; DARWIN-32-DYNAMIC-LABEL: big08:5933; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry5934; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax5935; DARWIN-32-DYNAMIC-NEXT: movl _lsrc+262144(,%eax,4), %ecx5936; DARWIN-32-DYNAMIC-NEXT: movl _lptr, %edx5937; DARWIN-32-DYNAMIC-NEXT: movl %ecx, 262144(%edx,%eax,4)5938; DARWIN-32-DYNAMIC-NEXT: retl5939;5940; DARWIN-32-PIC-LABEL: big08:5941; DARWIN-32-PIC: ## %bb.0: ## %entry5942; DARWIN-32-PIC-NEXT: calll L65$pb5943; DARWIN-32-PIC-NEXT: L65$pb:5944; DARWIN-32-PIC-NEXT: popl %eax5945; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx5946; DARWIN-32-PIC-NEXT: movl _lsrc-L65$pb+262144(%eax,%ecx,4), %edx5947; DARWIN-32-PIC-NEXT: movl _lptr-L65$pb(%eax), %eax5948; DARWIN-32-PIC-NEXT: movl %edx, 262144(%eax,%ecx,4)5949; DARWIN-32-PIC-NEXT: retl5950;5951; DARWIN-64-STATIC-LABEL: big08:5952; DARWIN-64-STATIC: ## %bb.0: ## %entry5953; DARWIN-64-STATIC-NEXT: leaq _lsrc(%rip), %rax5954; DARWIN-64-STATIC-NEXT: movl 262144(%rax,%rdi,4), %eax5955; DARWIN-64-STATIC-NEXT: movq _lptr(%rip), %rcx5956; DARWIN-64-STATIC-NEXT: movl %eax, 262144(%rcx,%rdi,4)5957; DARWIN-64-STATIC-NEXT: retq5958;5959; DARWIN-64-DYNAMIC-LABEL: big08:5960; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry5961; DARWIN-64-DYNAMIC-NEXT: leaq _lsrc(%rip), %rax5962; DARWIN-64-DYNAMIC-NEXT: movl 262144(%rax,%rdi,4), %eax5963; DARWIN-64-DYNAMIC-NEXT: movq _lptr(%rip), %rcx5964; DARWIN-64-DYNAMIC-NEXT: movl %eax, 262144(%rcx,%rdi,4)5965; DARWIN-64-DYNAMIC-NEXT: retq5966;5967; DARWIN-64-PIC-LABEL: big08:5968; DARWIN-64-PIC: ## %bb.0: ## %entry5969; DARWIN-64-PIC-NEXT: leaq _lsrc(%rip), %rax5970; DARWIN-64-PIC-NEXT: movl 262144(%rax,%rdi,4), %eax5971; DARWIN-64-PIC-NEXT: movq _lptr(%rip), %rcx5972; DARWIN-64-PIC-NEXT: movl %eax, 262144(%rcx,%rdi,4)5973; DARWIN-64-PIC-NEXT: retq5974 5975entry:5976 %0 = load ptr, ptr @lptr, align 85977 %1 = add i64 %i, 655365978 %2 = getelementptr [131072 x i32], ptr @lsrc, i64 0, i64 %15979 %3 = load i32, ptr %2, align 45980 %4 = getelementptr i32, ptr %0, i64 %15981 store i32 %3, ptr %4, align 45982 ret void5983}5984 5985define dso_local ptr @bar00() nounwind {5986; LINUX-64-STATIC-LABEL: bar00:5987; LINUX-64-STATIC: # %bb.0: # %entry5988; LINUX-64-STATIC-NEXT: movq src@GOTPCREL(%rip), %rax5989; LINUX-64-STATIC-NEXT: retq5990;5991; LINUX-32-STATIC-LABEL: bar00:5992; LINUX-32-STATIC: # %bb.0: # %entry5993; LINUX-32-STATIC-NEXT: movl $src, %eax5994; LINUX-32-STATIC-NEXT: retl5995;5996; LINUX-32-PIC-LABEL: bar00:5997; LINUX-32-PIC: # %bb.0: # %entry5998; LINUX-32-PIC-NEXT: calll .L66$pb5999; LINUX-32-PIC-NEXT: .L66$pb:6000; LINUX-32-PIC-NEXT: popl %eax6001; LINUX-32-PIC-NEXT: .Ltmp66:6002; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp66-.L66$pb), %eax6003; LINUX-32-PIC-NEXT: movl src@GOT(%eax), %eax6004; LINUX-32-PIC-NEXT: retl6005;6006; LINUX-64-PIC-LABEL: bar00:6007; LINUX-64-PIC: # %bb.0: # %entry6008; LINUX-64-PIC-NEXT: movq src@GOTPCREL(%rip), %rax6009; LINUX-64-PIC-NEXT: retq6010;6011; DARWIN-32-STATIC-LABEL: bar00:6012; DARWIN-32-STATIC: ## %bb.0: ## %entry6013; DARWIN-32-STATIC-NEXT: movl $_src, %eax6014; DARWIN-32-STATIC-NEXT: retl6015;6016; DARWIN-32-DYNAMIC-LABEL: bar00:6017; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry6018; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %eax6019; DARWIN-32-DYNAMIC-NEXT: retl6020;6021; DARWIN-32-PIC-LABEL: bar00:6022; DARWIN-32-PIC: ## %bb.0: ## %entry6023; DARWIN-32-PIC-NEXT: calll L66$pb6024; DARWIN-32-PIC-NEXT: L66$pb:6025; DARWIN-32-PIC-NEXT: popl %eax6026; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L66$pb(%eax), %eax6027; DARWIN-32-PIC-NEXT: retl6028;6029; DARWIN-64-STATIC-LABEL: bar00:6030; DARWIN-64-STATIC: ## %bb.0: ## %entry6031; DARWIN-64-STATIC-NEXT: movq _src@GOTPCREL(%rip), %rax6032; DARWIN-64-STATIC-NEXT: retq6033;6034; DARWIN-64-DYNAMIC-LABEL: bar00:6035; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry6036; DARWIN-64-DYNAMIC-NEXT: movq _src@GOTPCREL(%rip), %rax6037; DARWIN-64-DYNAMIC-NEXT: retq6038;6039; DARWIN-64-PIC-LABEL: bar00:6040; DARWIN-64-PIC: ## %bb.0: ## %entry6041; DARWIN-64-PIC-NEXT: movq _src@GOTPCREL(%rip), %rax6042; DARWIN-64-PIC-NEXT: retq6043 6044entry:6045 ret ptr @src6046}6047 6048define dso_local ptr @bxr00() nounwind {6049; LINUX-64-STATIC-LABEL: bxr00:6050; LINUX-64-STATIC: # %bb.0: # %entry6051; LINUX-64-STATIC-NEXT: movq xsrc@GOTPCREL(%rip), %rax6052; LINUX-64-STATIC-NEXT: retq6053;6054; LINUX-32-STATIC-LABEL: bxr00:6055; LINUX-32-STATIC: # %bb.0: # %entry6056; LINUX-32-STATIC-NEXT: movl $xsrc, %eax6057; LINUX-32-STATIC-NEXT: retl6058;6059; LINUX-32-PIC-LABEL: bxr00:6060; LINUX-32-PIC: # %bb.0: # %entry6061; LINUX-32-PIC-NEXT: calll .L67$pb6062; LINUX-32-PIC-NEXT: .L67$pb:6063; LINUX-32-PIC-NEXT: popl %eax6064; LINUX-32-PIC-NEXT: .Ltmp67:6065; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp67-.L67$pb), %eax6066; LINUX-32-PIC-NEXT: movl xsrc@GOT(%eax), %eax6067; LINUX-32-PIC-NEXT: retl6068;6069; LINUX-64-PIC-LABEL: bxr00:6070; LINUX-64-PIC: # %bb.0: # %entry6071; LINUX-64-PIC-NEXT: movq xsrc@GOTPCREL(%rip), %rax6072; LINUX-64-PIC-NEXT: retq6073;6074; DARWIN-32-STATIC-LABEL: bxr00:6075; DARWIN-32-STATIC: ## %bb.0: ## %entry6076; DARWIN-32-STATIC-NEXT: movl $_xsrc, %eax6077; DARWIN-32-STATIC-NEXT: retl6078;6079; DARWIN-32-DYNAMIC-LABEL: bxr00:6080; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry6081; DARWIN-32-DYNAMIC-NEXT: movl L_xsrc$non_lazy_ptr, %eax6082; DARWIN-32-DYNAMIC-NEXT: retl6083;6084; DARWIN-32-PIC-LABEL: bxr00:6085; DARWIN-32-PIC: ## %bb.0: ## %entry6086; DARWIN-32-PIC-NEXT: calll L67$pb6087; DARWIN-32-PIC-NEXT: L67$pb:6088; DARWIN-32-PIC-NEXT: popl %eax6089; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-L67$pb(%eax), %eax6090; DARWIN-32-PIC-NEXT: retl6091;6092; DARWIN-64-STATIC-LABEL: bxr00:6093; DARWIN-64-STATIC: ## %bb.0: ## %entry6094; DARWIN-64-STATIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax6095; DARWIN-64-STATIC-NEXT: retq6096;6097; DARWIN-64-DYNAMIC-LABEL: bxr00:6098; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry6099; DARWIN-64-DYNAMIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax6100; DARWIN-64-DYNAMIC-NEXT: retq6101;6102; DARWIN-64-PIC-LABEL: bxr00:6103; DARWIN-64-PIC: ## %bb.0: ## %entry6104; DARWIN-64-PIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax6105; DARWIN-64-PIC-NEXT: retq6106 6107entry:6108 ret ptr @xsrc6109}6110 6111define dso_local ptr @bar01() nounwind {6112; LINUX-64-STATIC-LABEL: bar01:6113; LINUX-64-STATIC: # %bb.0: # %entry6114; LINUX-64-STATIC-NEXT: movq dst@GOTPCREL(%rip), %rax6115; LINUX-64-STATIC-NEXT: retq6116;6117; LINUX-32-STATIC-LABEL: bar01:6118; LINUX-32-STATIC: # %bb.0: # %entry6119; LINUX-32-STATIC-NEXT: movl $dst, %eax6120; LINUX-32-STATIC-NEXT: retl6121;6122; LINUX-32-PIC-LABEL: bar01:6123; LINUX-32-PIC: # %bb.0: # %entry6124; LINUX-32-PIC-NEXT: calll .L68$pb6125; LINUX-32-PIC-NEXT: .L68$pb:6126; LINUX-32-PIC-NEXT: popl %eax6127; LINUX-32-PIC-NEXT: .Ltmp68:6128; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp68-.L68$pb), %eax6129; LINUX-32-PIC-NEXT: movl dst@GOT(%eax), %eax6130; LINUX-32-PIC-NEXT: retl6131;6132; LINUX-64-PIC-LABEL: bar01:6133; LINUX-64-PIC: # %bb.0: # %entry6134; LINUX-64-PIC-NEXT: movq dst@GOTPCREL(%rip), %rax6135; LINUX-64-PIC-NEXT: retq6136;6137; DARWIN-32-STATIC-LABEL: bar01:6138; DARWIN-32-STATIC: ## %bb.0: ## %entry6139; DARWIN-32-STATIC-NEXT: movl $_dst, %eax6140; DARWIN-32-STATIC-NEXT: retl6141;6142; DARWIN-32-DYNAMIC-LABEL: bar01:6143; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry6144; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, %eax6145; DARWIN-32-DYNAMIC-NEXT: retl6146;6147; DARWIN-32-PIC-LABEL: bar01:6148; DARWIN-32-PIC: ## %bb.0: ## %entry6149; DARWIN-32-PIC-NEXT: calll L68$pb6150; DARWIN-32-PIC-NEXT: L68$pb:6151; DARWIN-32-PIC-NEXT: popl %eax6152; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L68$pb(%eax), %eax6153; DARWIN-32-PIC-NEXT: retl6154;6155; DARWIN-64-STATIC-LABEL: bar01:6156; DARWIN-64-STATIC: ## %bb.0: ## %entry6157; DARWIN-64-STATIC-NEXT: movq _dst@GOTPCREL(%rip), %rax6158; DARWIN-64-STATIC-NEXT: retq6159;6160; DARWIN-64-DYNAMIC-LABEL: bar01:6161; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry6162; DARWIN-64-DYNAMIC-NEXT: movq _dst@GOTPCREL(%rip), %rax6163; DARWIN-64-DYNAMIC-NEXT: retq6164;6165; DARWIN-64-PIC-LABEL: bar01:6166; DARWIN-64-PIC: ## %bb.0: ## %entry6167; DARWIN-64-PIC-NEXT: movq _dst@GOTPCREL(%rip), %rax6168; DARWIN-64-PIC-NEXT: retq6169 6170entry:6171 ret ptr @dst6172}6173 6174define dso_local ptr @bxr01() nounwind {6175; LINUX-64-STATIC-LABEL: bxr01:6176; LINUX-64-STATIC: # %bb.0: # %entry6177; LINUX-64-STATIC-NEXT: movq xdst@GOTPCREL(%rip), %rax6178; LINUX-64-STATIC-NEXT: retq6179;6180; LINUX-32-STATIC-LABEL: bxr01:6181; LINUX-32-STATIC: # %bb.0: # %entry6182; LINUX-32-STATIC-NEXT: movl $xdst, %eax6183; LINUX-32-STATIC-NEXT: retl6184;6185; LINUX-32-PIC-LABEL: bxr01:6186; LINUX-32-PIC: # %bb.0: # %entry6187; LINUX-32-PIC-NEXT: calll .L69$pb6188; LINUX-32-PIC-NEXT: .L69$pb:6189; LINUX-32-PIC-NEXT: popl %eax6190; LINUX-32-PIC-NEXT: .Ltmp69:6191; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp69-.L69$pb), %eax6192; LINUX-32-PIC-NEXT: movl xdst@GOT(%eax), %eax6193; LINUX-32-PIC-NEXT: retl6194;6195; LINUX-64-PIC-LABEL: bxr01:6196; LINUX-64-PIC: # %bb.0: # %entry6197; LINUX-64-PIC-NEXT: movq xdst@GOTPCREL(%rip), %rax6198; LINUX-64-PIC-NEXT: retq6199;6200; DARWIN-32-STATIC-LABEL: bxr01:6201; DARWIN-32-STATIC: ## %bb.0: ## %entry6202; DARWIN-32-STATIC-NEXT: movl $_xdst, %eax6203; DARWIN-32-STATIC-NEXT: retl6204;6205; DARWIN-32-DYNAMIC-LABEL: bxr01:6206; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry6207; DARWIN-32-DYNAMIC-NEXT: movl L_xdst$non_lazy_ptr, %eax6208; DARWIN-32-DYNAMIC-NEXT: retl6209;6210; DARWIN-32-PIC-LABEL: bxr01:6211; DARWIN-32-PIC: ## %bb.0: ## %entry6212; DARWIN-32-PIC-NEXT: calll L69$pb6213; DARWIN-32-PIC-NEXT: L69$pb:6214; DARWIN-32-PIC-NEXT: popl %eax6215; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-L69$pb(%eax), %eax6216; DARWIN-32-PIC-NEXT: retl6217;6218; DARWIN-64-STATIC-LABEL: bxr01:6219; DARWIN-64-STATIC: ## %bb.0: ## %entry6220; DARWIN-64-STATIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax6221; DARWIN-64-STATIC-NEXT: retq6222;6223; DARWIN-64-DYNAMIC-LABEL: bxr01:6224; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry6225; DARWIN-64-DYNAMIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax6226; DARWIN-64-DYNAMIC-NEXT: retq6227;6228; DARWIN-64-PIC-LABEL: bxr01:6229; DARWIN-64-PIC: ## %bb.0: ## %entry6230; DARWIN-64-PIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax6231; DARWIN-64-PIC-NEXT: retq6232 6233entry:6234 ret ptr @xdst6235}6236 6237define dso_local ptr @bar02() nounwind {6238; LINUX-64-STATIC-LABEL: bar02:6239; LINUX-64-STATIC: # %bb.0: # %entry6240; LINUX-64-STATIC-NEXT: movq ptr@GOTPCREL(%rip), %rax6241; LINUX-64-STATIC-NEXT: retq6242;6243; LINUX-32-STATIC-LABEL: bar02:6244; LINUX-32-STATIC: # %bb.0: # %entry6245; LINUX-32-STATIC-NEXT: movl $ptr, %eax6246; LINUX-32-STATIC-NEXT: retl6247;6248; LINUX-32-PIC-LABEL: bar02:6249; LINUX-32-PIC: # %bb.0: # %entry6250; LINUX-32-PIC-NEXT: calll .L70$pb6251; LINUX-32-PIC-NEXT: .L70$pb:6252; LINUX-32-PIC-NEXT: popl %eax6253; LINUX-32-PIC-NEXT: .Ltmp70:6254; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp70-.L70$pb), %eax6255; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax6256; LINUX-32-PIC-NEXT: retl6257;6258; LINUX-64-PIC-LABEL: bar02:6259; LINUX-64-PIC: # %bb.0: # %entry6260; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rax6261; LINUX-64-PIC-NEXT: retq6262;6263; DARWIN-32-STATIC-LABEL: bar02:6264; DARWIN-32-STATIC: ## %bb.0: ## %entry6265; DARWIN-32-STATIC-NEXT: movl $_ptr, %eax6266; DARWIN-32-STATIC-NEXT: retl6267;6268; DARWIN-32-DYNAMIC-LABEL: bar02:6269; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry6270; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %eax6271; DARWIN-32-DYNAMIC-NEXT: retl6272;6273; DARWIN-32-PIC-LABEL: bar02:6274; DARWIN-32-PIC: ## %bb.0: ## %entry6275; DARWIN-32-PIC-NEXT: calll L70$pb6276; DARWIN-32-PIC-NEXT: L70$pb:6277; DARWIN-32-PIC-NEXT: popl %eax6278; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L70$pb(%eax), %eax6279; DARWIN-32-PIC-NEXT: retl6280;6281; DARWIN-64-STATIC-LABEL: bar02:6282; DARWIN-64-STATIC: ## %bb.0: ## %entry6283; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax6284; DARWIN-64-STATIC-NEXT: retq6285;6286; DARWIN-64-DYNAMIC-LABEL: bar02:6287; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry6288; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax6289; DARWIN-64-DYNAMIC-NEXT: retq6290;6291; DARWIN-64-PIC-LABEL: bar02:6292; DARWIN-64-PIC: ## %bb.0: ## %entry6293; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax6294; DARWIN-64-PIC-NEXT: retq6295 6296entry:6297 ret ptr @ptr6298}6299 6300define dso_local ptr @bar03() nounwind {6301; LINUX-64-STATIC-LABEL: bar03:6302; LINUX-64-STATIC: # %bb.0: # %entry6303; LINUX-64-STATIC-NEXT: movl $dsrc, %eax6304; LINUX-64-STATIC-NEXT: retq6305;6306; LINUX-32-STATIC-LABEL: bar03:6307; LINUX-32-STATIC: # %bb.0: # %entry6308; LINUX-32-STATIC-NEXT: movl $dsrc, %eax6309; LINUX-32-STATIC-NEXT: retl6310;6311; LINUX-32-PIC-LABEL: bar03:6312; LINUX-32-PIC: # %bb.0: # %entry6313; LINUX-32-PIC-NEXT: calll .L71$pb6314; LINUX-32-PIC-NEXT: .L71$pb:6315; LINUX-32-PIC-NEXT: popl %eax6316; LINUX-32-PIC-NEXT: .Ltmp71:6317; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp71-.L71$pb), %eax6318; LINUX-32-PIC-NEXT: leal .Ldsrc$local@GOTOFF(%eax), %eax6319; LINUX-32-PIC-NEXT: retl6320;6321; LINUX-64-PIC-LABEL: bar03:6322; LINUX-64-PIC: # %bb.0: # %entry6323; LINUX-64-PIC-NEXT: leaq .Ldsrc$local(%rip), %rax6324; LINUX-64-PIC-NEXT: retq6325;6326; DARWIN-32-STATIC-LABEL: bar03:6327; DARWIN-32-STATIC: ## %bb.0: ## %entry6328; DARWIN-32-STATIC-NEXT: movl $_dsrc, %eax6329; DARWIN-32-STATIC-NEXT: retl6330;6331; DARWIN-32-DYNAMIC-LABEL: bar03:6332; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry6333; DARWIN-32-DYNAMIC-NEXT: movl $_dsrc, %eax6334; DARWIN-32-DYNAMIC-NEXT: retl6335;6336; DARWIN-32-PIC-LABEL: bar03:6337; DARWIN-32-PIC: ## %bb.0: ## %entry6338; DARWIN-32-PIC-NEXT: calll L71$pb6339; DARWIN-32-PIC-NEXT: L71$pb:6340; DARWIN-32-PIC-NEXT: popl %eax6341; DARWIN-32-PIC-NEXT: leal _dsrc-L71$pb(%eax), %eax6342; DARWIN-32-PIC-NEXT: retl6343;6344; DARWIN-64-STATIC-LABEL: bar03:6345; DARWIN-64-STATIC: ## %bb.0: ## %entry6346; DARWIN-64-STATIC-NEXT: leaq _dsrc(%rip), %rax6347; DARWIN-64-STATIC-NEXT: retq6348;6349; DARWIN-64-DYNAMIC-LABEL: bar03:6350; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry6351; DARWIN-64-DYNAMIC-NEXT: leaq _dsrc(%rip), %rax6352; DARWIN-64-DYNAMIC-NEXT: retq6353;6354; DARWIN-64-PIC-LABEL: bar03:6355; DARWIN-64-PIC: ## %bb.0: ## %entry6356; DARWIN-64-PIC-NEXT: leaq _dsrc(%rip), %rax6357; DARWIN-64-PIC-NEXT: retq6358 6359entry:6360 ret ptr @dsrc6361}6362 6363define dso_local ptr @bar04() nounwind {6364; LINUX-64-STATIC-LABEL: bar04:6365; LINUX-64-STATIC: # %bb.0: # %entry6366; LINUX-64-STATIC-NEXT: movl $ddst, %eax6367; LINUX-64-STATIC-NEXT: retq6368;6369; LINUX-32-STATIC-LABEL: bar04:6370; LINUX-32-STATIC: # %bb.0: # %entry6371; LINUX-32-STATIC-NEXT: movl $ddst, %eax6372; LINUX-32-STATIC-NEXT: retl6373;6374; LINUX-32-PIC-LABEL: bar04:6375; LINUX-32-PIC: # %bb.0: # %entry6376; LINUX-32-PIC-NEXT: calll .L72$pb6377; LINUX-32-PIC-NEXT: .L72$pb:6378; LINUX-32-PIC-NEXT: popl %eax6379; LINUX-32-PIC-NEXT: .Ltmp72:6380; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp72-.L72$pb), %eax6381; LINUX-32-PIC-NEXT: leal .Lddst$local@GOTOFF(%eax), %eax6382; LINUX-32-PIC-NEXT: retl6383;6384; LINUX-64-PIC-LABEL: bar04:6385; LINUX-64-PIC: # %bb.0: # %entry6386; LINUX-64-PIC-NEXT: leaq .Lddst$local(%rip), %rax6387; LINUX-64-PIC-NEXT: retq6388;6389; DARWIN-32-STATIC-LABEL: bar04:6390; DARWIN-32-STATIC: ## %bb.0: ## %entry6391; DARWIN-32-STATIC-NEXT: movl $_ddst, %eax6392; DARWIN-32-STATIC-NEXT: retl6393;6394; DARWIN-32-DYNAMIC-LABEL: bar04:6395; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry6396; DARWIN-32-DYNAMIC-NEXT: movl $_ddst, %eax6397; DARWIN-32-DYNAMIC-NEXT: retl6398;6399; DARWIN-32-PIC-LABEL: bar04:6400; DARWIN-32-PIC: ## %bb.0: ## %entry6401; DARWIN-32-PIC-NEXT: calll L72$pb6402; DARWIN-32-PIC-NEXT: L72$pb:6403; DARWIN-32-PIC-NEXT: popl %eax6404; DARWIN-32-PIC-NEXT: leal _ddst-L72$pb(%eax), %eax6405; DARWIN-32-PIC-NEXT: retl6406;6407; DARWIN-64-STATIC-LABEL: bar04:6408; DARWIN-64-STATIC: ## %bb.0: ## %entry6409; DARWIN-64-STATIC-NEXT: leaq _ddst(%rip), %rax6410; DARWIN-64-STATIC-NEXT: retq6411;6412; DARWIN-64-DYNAMIC-LABEL: bar04:6413; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry6414; DARWIN-64-DYNAMIC-NEXT: leaq _ddst(%rip), %rax6415; DARWIN-64-DYNAMIC-NEXT: retq6416;6417; DARWIN-64-PIC-LABEL: bar04:6418; DARWIN-64-PIC: ## %bb.0: ## %entry6419; DARWIN-64-PIC-NEXT: leaq _ddst(%rip), %rax6420; DARWIN-64-PIC-NEXT: retq6421 6422entry:6423 ret ptr @ddst6424}6425 6426define dso_local ptr @bar05() nounwind {6427; LINUX-64-STATIC-LABEL: bar05:6428; LINUX-64-STATIC: # %bb.0: # %entry6429; LINUX-64-STATIC-NEXT: movl $dptr, %eax6430; LINUX-64-STATIC-NEXT: retq6431;6432; LINUX-32-STATIC-LABEL: bar05:6433; LINUX-32-STATIC: # %bb.0: # %entry6434; LINUX-32-STATIC-NEXT: movl $dptr, %eax6435; LINUX-32-STATIC-NEXT: retl6436;6437; LINUX-32-PIC-LABEL: bar05:6438; LINUX-32-PIC: # %bb.0: # %entry6439; LINUX-32-PIC-NEXT: calll .L73$pb6440; LINUX-32-PIC-NEXT: .L73$pb:6441; LINUX-32-PIC-NEXT: popl %eax6442; LINUX-32-PIC-NEXT: .Ltmp73:6443; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp73-.L73$pb), %eax6444; LINUX-32-PIC-NEXT: leal .Ldptr$local@GOTOFF(%eax), %eax6445; LINUX-32-PIC-NEXT: retl6446;6447; LINUX-64-PIC-LABEL: bar05:6448; LINUX-64-PIC: # %bb.0: # %entry6449; LINUX-64-PIC-NEXT: leaq .Ldptr$local(%rip), %rax6450; LINUX-64-PIC-NEXT: retq6451;6452; DARWIN-32-STATIC-LABEL: bar05:6453; DARWIN-32-STATIC: ## %bb.0: ## %entry6454; DARWIN-32-STATIC-NEXT: movl $_dptr, %eax6455; DARWIN-32-STATIC-NEXT: retl6456;6457; DARWIN-32-DYNAMIC-LABEL: bar05:6458; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry6459; DARWIN-32-DYNAMIC-NEXT: movl $_dptr, %eax6460; DARWIN-32-DYNAMIC-NEXT: retl6461;6462; DARWIN-32-PIC-LABEL: bar05:6463; DARWIN-32-PIC: ## %bb.0: ## %entry6464; DARWIN-32-PIC-NEXT: calll L73$pb6465; DARWIN-32-PIC-NEXT: L73$pb:6466; DARWIN-32-PIC-NEXT: popl %eax6467; DARWIN-32-PIC-NEXT: leal _dptr-L73$pb(%eax), %eax6468; DARWIN-32-PIC-NEXT: retl6469;6470; DARWIN-64-STATIC-LABEL: bar05:6471; DARWIN-64-STATIC: ## %bb.0: ## %entry6472; DARWIN-64-STATIC-NEXT: leaq _dptr(%rip), %rax6473; DARWIN-64-STATIC-NEXT: retq6474;6475; DARWIN-64-DYNAMIC-LABEL: bar05:6476; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry6477; DARWIN-64-DYNAMIC-NEXT: leaq _dptr(%rip), %rax6478; DARWIN-64-DYNAMIC-NEXT: retq6479;6480; DARWIN-64-PIC-LABEL: bar05:6481; DARWIN-64-PIC: ## %bb.0: ## %entry6482; DARWIN-64-PIC-NEXT: leaq _dptr(%rip), %rax6483; DARWIN-64-PIC-NEXT: retq6484 6485entry:6486 ret ptr @dptr6487}6488 6489define dso_local ptr @bar06() nounwind {6490; LINUX-64-STATIC-LABEL: bar06:6491; LINUX-64-STATIC: # %bb.0: # %entry6492; LINUX-64-STATIC-NEXT: movl $lsrc, %eax6493; LINUX-64-STATIC-NEXT: retq6494;6495; LINUX-32-STATIC-LABEL: bar06:6496; LINUX-32-STATIC: # %bb.0: # %entry6497; LINUX-32-STATIC-NEXT: movl $lsrc, %eax6498; LINUX-32-STATIC-NEXT: retl6499;6500; LINUX-32-PIC-LABEL: bar06:6501; LINUX-32-PIC: # %bb.0: # %entry6502; LINUX-32-PIC-NEXT: calll .L74$pb6503; LINUX-32-PIC-NEXT: .L74$pb:6504; LINUX-32-PIC-NEXT: popl %eax6505; LINUX-32-PIC-NEXT: .Ltmp74:6506; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp74-.L74$pb), %eax6507; LINUX-32-PIC-NEXT: leal lsrc@GOTOFF(%eax), %eax6508; LINUX-32-PIC-NEXT: retl6509;6510; LINUX-64-PIC-LABEL: bar06:6511; LINUX-64-PIC: # %bb.0: # %entry6512; LINUX-64-PIC-NEXT: leaq lsrc(%rip), %rax6513; LINUX-64-PIC-NEXT: retq6514;6515; DARWIN-32-STATIC-LABEL: bar06:6516; DARWIN-32-STATIC: ## %bb.0: ## %entry6517; DARWIN-32-STATIC-NEXT: movl $_lsrc, %eax6518; DARWIN-32-STATIC-NEXT: retl6519;6520; DARWIN-32-DYNAMIC-LABEL: bar06:6521; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry6522; DARWIN-32-DYNAMIC-NEXT: movl $_lsrc, %eax6523; DARWIN-32-DYNAMIC-NEXT: retl6524;6525; DARWIN-32-PIC-LABEL: bar06:6526; DARWIN-32-PIC: ## %bb.0: ## %entry6527; DARWIN-32-PIC-NEXT: calll L74$pb6528; DARWIN-32-PIC-NEXT: L74$pb:6529; DARWIN-32-PIC-NEXT: popl %eax6530; DARWIN-32-PIC-NEXT: leal _lsrc-L74$pb(%eax), %eax6531; DARWIN-32-PIC-NEXT: retl6532;6533; DARWIN-64-STATIC-LABEL: bar06:6534; DARWIN-64-STATIC: ## %bb.0: ## %entry6535; DARWIN-64-STATIC-NEXT: leaq _lsrc(%rip), %rax6536; DARWIN-64-STATIC-NEXT: retq6537;6538; DARWIN-64-DYNAMIC-LABEL: bar06:6539; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry6540; DARWIN-64-DYNAMIC-NEXT: leaq _lsrc(%rip), %rax6541; DARWIN-64-DYNAMIC-NEXT: retq6542;6543; DARWIN-64-PIC-LABEL: bar06:6544; DARWIN-64-PIC: ## %bb.0: ## %entry6545; DARWIN-64-PIC-NEXT: leaq _lsrc(%rip), %rax6546; DARWIN-64-PIC-NEXT: retq6547 6548entry:6549 ret ptr @lsrc6550}6551 6552define dso_local ptr @bar07() nounwind {6553; LINUX-64-STATIC-LABEL: bar07:6554; LINUX-64-STATIC: # %bb.0: # %entry6555; LINUX-64-STATIC-NEXT: movl $ldst, %eax6556; LINUX-64-STATIC-NEXT: retq6557;6558; LINUX-32-STATIC-LABEL: bar07:6559; LINUX-32-STATIC: # %bb.0: # %entry6560; LINUX-32-STATIC-NEXT: movl $ldst, %eax6561; LINUX-32-STATIC-NEXT: retl6562;6563; LINUX-32-PIC-LABEL: bar07:6564; LINUX-32-PIC: # %bb.0: # %entry6565; LINUX-32-PIC-NEXT: calll .L75$pb6566; LINUX-32-PIC-NEXT: .L75$pb:6567; LINUX-32-PIC-NEXT: popl %eax6568; LINUX-32-PIC-NEXT: .Ltmp75:6569; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp75-.L75$pb), %eax6570; LINUX-32-PIC-NEXT: leal ldst@GOTOFF(%eax), %eax6571; LINUX-32-PIC-NEXT: retl6572;6573; LINUX-64-PIC-LABEL: bar07:6574; LINUX-64-PIC: # %bb.0: # %entry6575; LINUX-64-PIC-NEXT: leaq ldst(%rip), %rax6576; LINUX-64-PIC-NEXT: retq6577;6578; DARWIN-32-STATIC-LABEL: bar07:6579; DARWIN-32-STATIC: ## %bb.0: ## %entry6580; DARWIN-32-STATIC-NEXT: movl $_ldst, %eax6581; DARWIN-32-STATIC-NEXT: retl6582;6583; DARWIN-32-DYNAMIC-LABEL: bar07:6584; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry6585; DARWIN-32-DYNAMIC-NEXT: movl $_ldst, %eax6586; DARWIN-32-DYNAMIC-NEXT: retl6587;6588; DARWIN-32-PIC-LABEL: bar07:6589; DARWIN-32-PIC: ## %bb.0: ## %entry6590; DARWIN-32-PIC-NEXT: calll L75$pb6591; DARWIN-32-PIC-NEXT: L75$pb:6592; DARWIN-32-PIC-NEXT: popl %eax6593; DARWIN-32-PIC-NEXT: leal _ldst-L75$pb(%eax), %eax6594; DARWIN-32-PIC-NEXT: retl6595;6596; DARWIN-64-STATIC-LABEL: bar07:6597; DARWIN-64-STATIC: ## %bb.0: ## %entry6598; DARWIN-64-STATIC-NEXT: leaq _ldst(%rip), %rax6599; DARWIN-64-STATIC-NEXT: retq6600;6601; DARWIN-64-DYNAMIC-LABEL: bar07:6602; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry6603; DARWIN-64-DYNAMIC-NEXT: leaq _ldst(%rip), %rax6604; DARWIN-64-DYNAMIC-NEXT: retq6605;6606; DARWIN-64-PIC-LABEL: bar07:6607; DARWIN-64-PIC: ## %bb.0: ## %entry6608; DARWIN-64-PIC-NEXT: leaq _ldst(%rip), %rax6609; DARWIN-64-PIC-NEXT: retq6610 6611entry:6612 ret ptr @ldst6613}6614 6615define dso_local ptr @bar08() nounwind {6616; LINUX-64-STATIC-LABEL: bar08:6617; LINUX-64-STATIC: # %bb.0: # %entry6618; LINUX-64-STATIC-NEXT: movl $lptr, %eax6619; LINUX-64-STATIC-NEXT: retq6620;6621; LINUX-32-STATIC-LABEL: bar08:6622; LINUX-32-STATIC: # %bb.0: # %entry6623; LINUX-32-STATIC-NEXT: movl $lptr, %eax6624; LINUX-32-STATIC-NEXT: retl6625;6626; LINUX-32-PIC-LABEL: bar08:6627; LINUX-32-PIC: # %bb.0: # %entry6628; LINUX-32-PIC-NEXT: calll .L76$pb6629; LINUX-32-PIC-NEXT: .L76$pb:6630; LINUX-32-PIC-NEXT: popl %eax6631; LINUX-32-PIC-NEXT: .Ltmp76:6632; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp76-.L76$pb), %eax6633; LINUX-32-PIC-NEXT: leal lptr@GOTOFF(%eax), %eax6634; LINUX-32-PIC-NEXT: retl6635;6636; LINUX-64-PIC-LABEL: bar08:6637; LINUX-64-PIC: # %bb.0: # %entry6638; LINUX-64-PIC-NEXT: leaq lptr(%rip), %rax6639; LINUX-64-PIC-NEXT: retq6640;6641; DARWIN-32-STATIC-LABEL: bar08:6642; DARWIN-32-STATIC: ## %bb.0: ## %entry6643; DARWIN-32-STATIC-NEXT: movl $_lptr, %eax6644; DARWIN-32-STATIC-NEXT: retl6645;6646; DARWIN-32-DYNAMIC-LABEL: bar08:6647; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry6648; DARWIN-32-DYNAMIC-NEXT: movl $_lptr, %eax6649; DARWIN-32-DYNAMIC-NEXT: retl6650;6651; DARWIN-32-PIC-LABEL: bar08:6652; DARWIN-32-PIC: ## %bb.0: ## %entry6653; DARWIN-32-PIC-NEXT: calll L76$pb6654; DARWIN-32-PIC-NEXT: L76$pb:6655; DARWIN-32-PIC-NEXT: popl %eax6656; DARWIN-32-PIC-NEXT: leal _lptr-L76$pb(%eax), %eax6657; DARWIN-32-PIC-NEXT: retl6658;6659; DARWIN-64-STATIC-LABEL: bar08:6660; DARWIN-64-STATIC: ## %bb.0: ## %entry6661; DARWIN-64-STATIC-NEXT: leaq _lptr(%rip), %rax6662; DARWIN-64-STATIC-NEXT: retq6663;6664; DARWIN-64-DYNAMIC-LABEL: bar08:6665; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry6666; DARWIN-64-DYNAMIC-NEXT: leaq _lptr(%rip), %rax6667; DARWIN-64-DYNAMIC-NEXT: retq6668;6669; DARWIN-64-PIC-LABEL: bar08:6670; DARWIN-64-PIC: ## %bb.0: ## %entry6671; DARWIN-64-PIC-NEXT: leaq _lptr(%rip), %rax6672; DARWIN-64-PIC-NEXT: retq6673 6674entry:6675 ret ptr @lptr6676}6677 6678define dso_local ptr @har00() nounwind {6679; LINUX-64-STATIC-LABEL: har00:6680; LINUX-64-STATIC: # %bb.0: # %entry6681; LINUX-64-STATIC-NEXT: movq src@GOTPCREL(%rip), %rax6682; LINUX-64-STATIC-NEXT: retq6683;6684; LINUX-32-STATIC-LABEL: har00:6685; LINUX-32-STATIC: # %bb.0: # %entry6686; LINUX-32-STATIC-NEXT: movl $src, %eax6687; LINUX-32-STATIC-NEXT: retl6688;6689; LINUX-32-PIC-LABEL: har00:6690; LINUX-32-PIC: # %bb.0: # %entry6691; LINUX-32-PIC-NEXT: calll .L77$pb6692; LINUX-32-PIC-NEXT: .L77$pb:6693; LINUX-32-PIC-NEXT: popl %eax6694; LINUX-32-PIC-NEXT: .Ltmp77:6695; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp77-.L77$pb), %eax6696; LINUX-32-PIC-NEXT: movl src@GOT(%eax), %eax6697; LINUX-32-PIC-NEXT: retl6698;6699; LINUX-64-PIC-LABEL: har00:6700; LINUX-64-PIC: # %bb.0: # %entry6701; LINUX-64-PIC-NEXT: movq src@GOTPCREL(%rip), %rax6702; LINUX-64-PIC-NEXT: retq6703;6704; DARWIN-32-STATIC-LABEL: har00:6705; DARWIN-32-STATIC: ## %bb.0: ## %entry6706; DARWIN-32-STATIC-NEXT: movl $_src, %eax6707; DARWIN-32-STATIC-NEXT: retl6708;6709; DARWIN-32-DYNAMIC-LABEL: har00:6710; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry6711; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %eax6712; DARWIN-32-DYNAMIC-NEXT: retl6713;6714; DARWIN-32-PIC-LABEL: har00:6715; DARWIN-32-PIC: ## %bb.0: ## %entry6716; DARWIN-32-PIC-NEXT: calll L77$pb6717; DARWIN-32-PIC-NEXT: L77$pb:6718; DARWIN-32-PIC-NEXT: popl %eax6719; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L77$pb(%eax), %eax6720; DARWIN-32-PIC-NEXT: retl6721;6722; DARWIN-64-STATIC-LABEL: har00:6723; DARWIN-64-STATIC: ## %bb.0: ## %entry6724; DARWIN-64-STATIC-NEXT: movq _src@GOTPCREL(%rip), %rax6725; DARWIN-64-STATIC-NEXT: retq6726;6727; DARWIN-64-DYNAMIC-LABEL: har00:6728; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry6729; DARWIN-64-DYNAMIC-NEXT: movq _src@GOTPCREL(%rip), %rax6730; DARWIN-64-DYNAMIC-NEXT: retq6731;6732; DARWIN-64-PIC-LABEL: har00:6733; DARWIN-64-PIC: ## %bb.0: ## %entry6734; DARWIN-64-PIC-NEXT: movq _src@GOTPCREL(%rip), %rax6735; DARWIN-64-PIC-NEXT: retq6736 6737entry:6738 ret ptr @src6739}6740 6741define dso_local ptr @hxr00() nounwind {6742; LINUX-64-STATIC-LABEL: hxr00:6743; LINUX-64-STATIC: # %bb.0: # %entry6744; LINUX-64-STATIC-NEXT: movq xsrc@GOTPCREL(%rip), %rax6745; LINUX-64-STATIC-NEXT: retq6746;6747; LINUX-32-STATIC-LABEL: hxr00:6748; LINUX-32-STATIC: # %bb.0: # %entry6749; LINUX-32-STATIC-NEXT: movl $xsrc, %eax6750; LINUX-32-STATIC-NEXT: retl6751;6752; LINUX-32-PIC-LABEL: hxr00:6753; LINUX-32-PIC: # %bb.0: # %entry6754; LINUX-32-PIC-NEXT: calll .L78$pb6755; LINUX-32-PIC-NEXT: .L78$pb:6756; LINUX-32-PIC-NEXT: popl %eax6757; LINUX-32-PIC-NEXT: .Ltmp78:6758; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp78-.L78$pb), %eax6759; LINUX-32-PIC-NEXT: movl xsrc@GOT(%eax), %eax6760; LINUX-32-PIC-NEXT: retl6761;6762; LINUX-64-PIC-LABEL: hxr00:6763; LINUX-64-PIC: # %bb.0: # %entry6764; LINUX-64-PIC-NEXT: movq xsrc@GOTPCREL(%rip), %rax6765; LINUX-64-PIC-NEXT: retq6766;6767; DARWIN-32-STATIC-LABEL: hxr00:6768; DARWIN-32-STATIC: ## %bb.0: ## %entry6769; DARWIN-32-STATIC-NEXT: movl $_xsrc, %eax6770; DARWIN-32-STATIC-NEXT: retl6771;6772; DARWIN-32-DYNAMIC-LABEL: hxr00:6773; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry6774; DARWIN-32-DYNAMIC-NEXT: movl L_xsrc$non_lazy_ptr, %eax6775; DARWIN-32-DYNAMIC-NEXT: retl6776;6777; DARWIN-32-PIC-LABEL: hxr00:6778; DARWIN-32-PIC: ## %bb.0: ## %entry6779; DARWIN-32-PIC-NEXT: calll L78$pb6780; DARWIN-32-PIC-NEXT: L78$pb:6781; DARWIN-32-PIC-NEXT: popl %eax6782; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-L78$pb(%eax), %eax6783; DARWIN-32-PIC-NEXT: retl6784;6785; DARWIN-64-STATIC-LABEL: hxr00:6786; DARWIN-64-STATIC: ## %bb.0: ## %entry6787; DARWIN-64-STATIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax6788; DARWIN-64-STATIC-NEXT: retq6789;6790; DARWIN-64-DYNAMIC-LABEL: hxr00:6791; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry6792; DARWIN-64-DYNAMIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax6793; DARWIN-64-DYNAMIC-NEXT: retq6794;6795; DARWIN-64-PIC-LABEL: hxr00:6796; DARWIN-64-PIC: ## %bb.0: ## %entry6797; DARWIN-64-PIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax6798; DARWIN-64-PIC-NEXT: retq6799 6800entry:6801 ret ptr @xsrc6802}6803 6804define dso_local ptr @har01() nounwind {6805; LINUX-64-STATIC-LABEL: har01:6806; LINUX-64-STATIC: # %bb.0: # %entry6807; LINUX-64-STATIC-NEXT: movq dst@GOTPCREL(%rip), %rax6808; LINUX-64-STATIC-NEXT: retq6809;6810; LINUX-32-STATIC-LABEL: har01:6811; LINUX-32-STATIC: # %bb.0: # %entry6812; LINUX-32-STATIC-NEXT: movl $dst, %eax6813; LINUX-32-STATIC-NEXT: retl6814;6815; LINUX-32-PIC-LABEL: har01:6816; LINUX-32-PIC: # %bb.0: # %entry6817; LINUX-32-PIC-NEXT: calll .L79$pb6818; LINUX-32-PIC-NEXT: .L79$pb:6819; LINUX-32-PIC-NEXT: popl %eax6820; LINUX-32-PIC-NEXT: .Ltmp79:6821; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp79-.L79$pb), %eax6822; LINUX-32-PIC-NEXT: movl dst@GOT(%eax), %eax6823; LINUX-32-PIC-NEXT: retl6824;6825; LINUX-64-PIC-LABEL: har01:6826; LINUX-64-PIC: # %bb.0: # %entry6827; LINUX-64-PIC-NEXT: movq dst@GOTPCREL(%rip), %rax6828; LINUX-64-PIC-NEXT: retq6829;6830; DARWIN-32-STATIC-LABEL: har01:6831; DARWIN-32-STATIC: ## %bb.0: ## %entry6832; DARWIN-32-STATIC-NEXT: movl $_dst, %eax6833; DARWIN-32-STATIC-NEXT: retl6834;6835; DARWIN-32-DYNAMIC-LABEL: har01:6836; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry6837; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, %eax6838; DARWIN-32-DYNAMIC-NEXT: retl6839;6840; DARWIN-32-PIC-LABEL: har01:6841; DARWIN-32-PIC: ## %bb.0: ## %entry6842; DARWIN-32-PIC-NEXT: calll L79$pb6843; DARWIN-32-PIC-NEXT: L79$pb:6844; DARWIN-32-PIC-NEXT: popl %eax6845; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L79$pb(%eax), %eax6846; DARWIN-32-PIC-NEXT: retl6847;6848; DARWIN-64-STATIC-LABEL: har01:6849; DARWIN-64-STATIC: ## %bb.0: ## %entry6850; DARWIN-64-STATIC-NEXT: movq _dst@GOTPCREL(%rip), %rax6851; DARWIN-64-STATIC-NEXT: retq6852;6853; DARWIN-64-DYNAMIC-LABEL: har01:6854; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry6855; DARWIN-64-DYNAMIC-NEXT: movq _dst@GOTPCREL(%rip), %rax6856; DARWIN-64-DYNAMIC-NEXT: retq6857;6858; DARWIN-64-PIC-LABEL: har01:6859; DARWIN-64-PIC: ## %bb.0: ## %entry6860; DARWIN-64-PIC-NEXT: movq _dst@GOTPCREL(%rip), %rax6861; DARWIN-64-PIC-NEXT: retq6862 6863entry:6864 ret ptr @dst6865}6866 6867define dso_local ptr @hxr01() nounwind {6868; LINUX-64-STATIC-LABEL: hxr01:6869; LINUX-64-STATIC: # %bb.0: # %entry6870; LINUX-64-STATIC-NEXT: movq xdst@GOTPCREL(%rip), %rax6871; LINUX-64-STATIC-NEXT: retq6872;6873; LINUX-32-STATIC-LABEL: hxr01:6874; LINUX-32-STATIC: # %bb.0: # %entry6875; LINUX-32-STATIC-NEXT: movl $xdst, %eax6876; LINUX-32-STATIC-NEXT: retl6877;6878; LINUX-32-PIC-LABEL: hxr01:6879; LINUX-32-PIC: # %bb.0: # %entry6880; LINUX-32-PIC-NEXT: calll .L80$pb6881; LINUX-32-PIC-NEXT: .L80$pb:6882; LINUX-32-PIC-NEXT: popl %eax6883; LINUX-32-PIC-NEXT: .Ltmp80:6884; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp80-.L80$pb), %eax6885; LINUX-32-PIC-NEXT: movl xdst@GOT(%eax), %eax6886; LINUX-32-PIC-NEXT: retl6887;6888; LINUX-64-PIC-LABEL: hxr01:6889; LINUX-64-PIC: # %bb.0: # %entry6890; LINUX-64-PIC-NEXT: movq xdst@GOTPCREL(%rip), %rax6891; LINUX-64-PIC-NEXT: retq6892;6893; DARWIN-32-STATIC-LABEL: hxr01:6894; DARWIN-32-STATIC: ## %bb.0: ## %entry6895; DARWIN-32-STATIC-NEXT: movl $_xdst, %eax6896; DARWIN-32-STATIC-NEXT: retl6897;6898; DARWIN-32-DYNAMIC-LABEL: hxr01:6899; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry6900; DARWIN-32-DYNAMIC-NEXT: movl L_xdst$non_lazy_ptr, %eax6901; DARWIN-32-DYNAMIC-NEXT: retl6902;6903; DARWIN-32-PIC-LABEL: hxr01:6904; DARWIN-32-PIC: ## %bb.0: ## %entry6905; DARWIN-32-PIC-NEXT: calll L80$pb6906; DARWIN-32-PIC-NEXT: L80$pb:6907; DARWIN-32-PIC-NEXT: popl %eax6908; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-L80$pb(%eax), %eax6909; DARWIN-32-PIC-NEXT: retl6910;6911; DARWIN-64-STATIC-LABEL: hxr01:6912; DARWIN-64-STATIC: ## %bb.0: ## %entry6913; DARWIN-64-STATIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax6914; DARWIN-64-STATIC-NEXT: retq6915;6916; DARWIN-64-DYNAMIC-LABEL: hxr01:6917; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry6918; DARWIN-64-DYNAMIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax6919; DARWIN-64-DYNAMIC-NEXT: retq6920;6921; DARWIN-64-PIC-LABEL: hxr01:6922; DARWIN-64-PIC: ## %bb.0: ## %entry6923; DARWIN-64-PIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax6924; DARWIN-64-PIC-NEXT: retq6925 6926entry:6927 ret ptr @xdst6928}6929 6930define dso_local ptr @har02() nounwind {6931; LINUX-64-STATIC-LABEL: har02:6932; LINUX-64-STATIC: # %bb.0: # %entry6933; LINUX-64-STATIC-NEXT: movq ptr@GOTPCREL(%rip), %rax6934; LINUX-64-STATIC-NEXT: movq (%rax), %rax6935; LINUX-64-STATIC-NEXT: retq6936;6937; LINUX-32-STATIC-LABEL: har02:6938; LINUX-32-STATIC: # %bb.0: # %entry6939; LINUX-32-STATIC-NEXT: movl ptr, %eax6940; LINUX-32-STATIC-NEXT: retl6941;6942; LINUX-32-PIC-LABEL: har02:6943; LINUX-32-PIC: # %bb.0: # %entry6944; LINUX-32-PIC-NEXT: calll .L81$pb6945; LINUX-32-PIC-NEXT: .L81$pb:6946; LINUX-32-PIC-NEXT: popl %eax6947; LINUX-32-PIC-NEXT: .Ltmp81:6948; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp81-.L81$pb), %eax6949; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax6950; LINUX-32-PIC-NEXT: movl (%eax), %eax6951; LINUX-32-PIC-NEXT: retl6952;6953; LINUX-64-PIC-LABEL: har02:6954; LINUX-64-PIC: # %bb.0: # %entry6955; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rax6956; LINUX-64-PIC-NEXT: movq (%rax), %rax6957; LINUX-64-PIC-NEXT: retq6958;6959; DARWIN-32-STATIC-LABEL: har02:6960; DARWIN-32-STATIC: ## %bb.0: ## %entry6961; DARWIN-32-STATIC-NEXT: movl _ptr, %eax6962; DARWIN-32-STATIC-NEXT: retl6963;6964; DARWIN-32-DYNAMIC-LABEL: har02:6965; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry6966; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %eax6967; DARWIN-32-DYNAMIC-NEXT: movl (%eax), %eax6968; DARWIN-32-DYNAMIC-NEXT: retl6969;6970; DARWIN-32-PIC-LABEL: har02:6971; DARWIN-32-PIC: ## %bb.0: ## %entry6972; DARWIN-32-PIC-NEXT: calll L81$pb6973; DARWIN-32-PIC-NEXT: L81$pb:6974; DARWIN-32-PIC-NEXT: popl %eax6975; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L81$pb(%eax), %eax6976; DARWIN-32-PIC-NEXT: movl (%eax), %eax6977; DARWIN-32-PIC-NEXT: retl6978;6979; DARWIN-64-STATIC-LABEL: har02:6980; DARWIN-64-STATIC: ## %bb.0: ## %entry6981; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax6982; DARWIN-64-STATIC-NEXT: movq (%rax), %rax6983; DARWIN-64-STATIC-NEXT: retq6984;6985; DARWIN-64-DYNAMIC-LABEL: har02:6986; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry6987; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax6988; DARWIN-64-DYNAMIC-NEXT: movq (%rax), %rax6989; DARWIN-64-DYNAMIC-NEXT: retq6990;6991; DARWIN-64-PIC-LABEL: har02:6992; DARWIN-64-PIC: ## %bb.0: ## %entry6993; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax6994; DARWIN-64-PIC-NEXT: movq (%rax), %rax6995; DARWIN-64-PIC-NEXT: retq6996 6997entry:6998 %0 = load ptr, ptr @ptr, align 86999 ret ptr %07000}7001 7002define dso_local ptr @har03() nounwind {7003; LINUX-64-STATIC-LABEL: har03:7004; LINUX-64-STATIC: # %bb.0: # %entry7005; LINUX-64-STATIC-NEXT: movl $dsrc, %eax7006; LINUX-64-STATIC-NEXT: retq7007;7008; LINUX-32-STATIC-LABEL: har03:7009; LINUX-32-STATIC: # %bb.0: # %entry7010; LINUX-32-STATIC-NEXT: movl $dsrc, %eax7011; LINUX-32-STATIC-NEXT: retl7012;7013; LINUX-32-PIC-LABEL: har03:7014; LINUX-32-PIC: # %bb.0: # %entry7015; LINUX-32-PIC-NEXT: calll .L82$pb7016; LINUX-32-PIC-NEXT: .L82$pb:7017; LINUX-32-PIC-NEXT: popl %eax7018; LINUX-32-PIC-NEXT: .Ltmp82:7019; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp82-.L82$pb), %eax7020; LINUX-32-PIC-NEXT: leal .Ldsrc$local@GOTOFF(%eax), %eax7021; LINUX-32-PIC-NEXT: retl7022;7023; LINUX-64-PIC-LABEL: har03:7024; LINUX-64-PIC: # %bb.0: # %entry7025; LINUX-64-PIC-NEXT: leaq .Ldsrc$local(%rip), %rax7026; LINUX-64-PIC-NEXT: retq7027;7028; DARWIN-32-STATIC-LABEL: har03:7029; DARWIN-32-STATIC: ## %bb.0: ## %entry7030; DARWIN-32-STATIC-NEXT: movl $_dsrc, %eax7031; DARWIN-32-STATIC-NEXT: retl7032;7033; DARWIN-32-DYNAMIC-LABEL: har03:7034; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry7035; DARWIN-32-DYNAMIC-NEXT: movl $_dsrc, %eax7036; DARWIN-32-DYNAMIC-NEXT: retl7037;7038; DARWIN-32-PIC-LABEL: har03:7039; DARWIN-32-PIC: ## %bb.0: ## %entry7040; DARWIN-32-PIC-NEXT: calll L82$pb7041; DARWIN-32-PIC-NEXT: L82$pb:7042; DARWIN-32-PIC-NEXT: popl %eax7043; DARWIN-32-PIC-NEXT: leal _dsrc-L82$pb(%eax), %eax7044; DARWIN-32-PIC-NEXT: retl7045;7046; DARWIN-64-STATIC-LABEL: har03:7047; DARWIN-64-STATIC: ## %bb.0: ## %entry7048; DARWIN-64-STATIC-NEXT: leaq _dsrc(%rip), %rax7049; DARWIN-64-STATIC-NEXT: retq7050;7051; DARWIN-64-DYNAMIC-LABEL: har03:7052; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry7053; DARWIN-64-DYNAMIC-NEXT: leaq _dsrc(%rip), %rax7054; DARWIN-64-DYNAMIC-NEXT: retq7055;7056; DARWIN-64-PIC-LABEL: har03:7057; DARWIN-64-PIC: ## %bb.0: ## %entry7058; DARWIN-64-PIC-NEXT: leaq _dsrc(%rip), %rax7059; DARWIN-64-PIC-NEXT: retq7060 7061entry:7062 ret ptr @dsrc7063}7064 7065define dso_local ptr @har04() nounwind {7066; LINUX-64-STATIC-LABEL: har04:7067; LINUX-64-STATIC: # %bb.0: # %entry7068; LINUX-64-STATIC-NEXT: movl $ddst, %eax7069; LINUX-64-STATIC-NEXT: retq7070;7071; LINUX-32-STATIC-LABEL: har04:7072; LINUX-32-STATIC: # %bb.0: # %entry7073; LINUX-32-STATIC-NEXT: movl $ddst, %eax7074; LINUX-32-STATIC-NEXT: retl7075;7076; LINUX-32-PIC-LABEL: har04:7077; LINUX-32-PIC: # %bb.0: # %entry7078; LINUX-32-PIC-NEXT: calll .L83$pb7079; LINUX-32-PIC-NEXT: .L83$pb:7080; LINUX-32-PIC-NEXT: popl %eax7081; LINUX-32-PIC-NEXT: .Ltmp83:7082; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp83-.L83$pb), %eax7083; LINUX-32-PIC-NEXT: leal .Lddst$local@GOTOFF(%eax), %eax7084; LINUX-32-PIC-NEXT: retl7085;7086; LINUX-64-PIC-LABEL: har04:7087; LINUX-64-PIC: # %bb.0: # %entry7088; LINUX-64-PIC-NEXT: leaq .Lddst$local(%rip), %rax7089; LINUX-64-PIC-NEXT: retq7090;7091; DARWIN-32-STATIC-LABEL: har04:7092; DARWIN-32-STATIC: ## %bb.0: ## %entry7093; DARWIN-32-STATIC-NEXT: movl $_ddst, %eax7094; DARWIN-32-STATIC-NEXT: retl7095;7096; DARWIN-32-DYNAMIC-LABEL: har04:7097; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry7098; DARWIN-32-DYNAMIC-NEXT: movl $_ddst, %eax7099; DARWIN-32-DYNAMIC-NEXT: retl7100;7101; DARWIN-32-PIC-LABEL: har04:7102; DARWIN-32-PIC: ## %bb.0: ## %entry7103; DARWIN-32-PIC-NEXT: calll L83$pb7104; DARWIN-32-PIC-NEXT: L83$pb:7105; DARWIN-32-PIC-NEXT: popl %eax7106; DARWIN-32-PIC-NEXT: leal _ddst-L83$pb(%eax), %eax7107; DARWIN-32-PIC-NEXT: retl7108;7109; DARWIN-64-STATIC-LABEL: har04:7110; DARWIN-64-STATIC: ## %bb.0: ## %entry7111; DARWIN-64-STATIC-NEXT: leaq _ddst(%rip), %rax7112; DARWIN-64-STATIC-NEXT: retq7113;7114; DARWIN-64-DYNAMIC-LABEL: har04:7115; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry7116; DARWIN-64-DYNAMIC-NEXT: leaq _ddst(%rip), %rax7117; DARWIN-64-DYNAMIC-NEXT: retq7118;7119; DARWIN-64-PIC-LABEL: har04:7120; DARWIN-64-PIC: ## %bb.0: ## %entry7121; DARWIN-64-PIC-NEXT: leaq _ddst(%rip), %rax7122; DARWIN-64-PIC-NEXT: retq7123 7124entry:7125 ret ptr @ddst7126}7127 7128define dso_local ptr @har05() nounwind {7129; LINUX-64-STATIC-LABEL: har05:7130; LINUX-64-STATIC: # %bb.0: # %entry7131; LINUX-64-STATIC-NEXT: movq dptr(%rip), %rax7132; LINUX-64-STATIC-NEXT: retq7133;7134; LINUX-32-STATIC-LABEL: har05:7135; LINUX-32-STATIC: # %bb.0: # %entry7136; LINUX-32-STATIC-NEXT: movl dptr, %eax7137; LINUX-32-STATIC-NEXT: retl7138;7139; LINUX-32-PIC-LABEL: har05:7140; LINUX-32-PIC: # %bb.0: # %entry7141; LINUX-32-PIC-NEXT: calll .L84$pb7142; LINUX-32-PIC-NEXT: .L84$pb:7143; LINUX-32-PIC-NEXT: popl %eax7144; LINUX-32-PIC-NEXT: .Ltmp84:7145; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp84-.L84$pb), %eax7146; LINUX-32-PIC-NEXT: movl .Ldptr$local@GOTOFF(%eax), %eax7147; LINUX-32-PIC-NEXT: retl7148;7149; LINUX-64-PIC-LABEL: har05:7150; LINUX-64-PIC: # %bb.0: # %entry7151; LINUX-64-PIC-NEXT: movq .Ldptr$local(%rip), %rax7152; LINUX-64-PIC-NEXT: retq7153;7154; DARWIN-32-STATIC-LABEL: har05:7155; DARWIN-32-STATIC: ## %bb.0: ## %entry7156; DARWIN-32-STATIC-NEXT: movl _dptr, %eax7157; DARWIN-32-STATIC-NEXT: retl7158;7159; DARWIN-32-DYNAMIC-LABEL: har05:7160; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry7161; DARWIN-32-DYNAMIC-NEXT: movl _dptr, %eax7162; DARWIN-32-DYNAMIC-NEXT: retl7163;7164; DARWIN-32-PIC-LABEL: har05:7165; DARWIN-32-PIC: ## %bb.0: ## %entry7166; DARWIN-32-PIC-NEXT: calll L84$pb7167; DARWIN-32-PIC-NEXT: L84$pb:7168; DARWIN-32-PIC-NEXT: popl %eax7169; DARWIN-32-PIC-NEXT: movl _dptr-L84$pb(%eax), %eax7170; DARWIN-32-PIC-NEXT: retl7171;7172; DARWIN-64-STATIC-LABEL: har05:7173; DARWIN-64-STATIC: ## %bb.0: ## %entry7174; DARWIN-64-STATIC-NEXT: movq _dptr(%rip), %rax7175; DARWIN-64-STATIC-NEXT: retq7176;7177; DARWIN-64-DYNAMIC-LABEL: har05:7178; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry7179; DARWIN-64-DYNAMIC-NEXT: movq _dptr(%rip), %rax7180; DARWIN-64-DYNAMIC-NEXT: retq7181;7182; DARWIN-64-PIC-LABEL: har05:7183; DARWIN-64-PIC: ## %bb.0: ## %entry7184; DARWIN-64-PIC-NEXT: movq _dptr(%rip), %rax7185; DARWIN-64-PIC-NEXT: retq7186 7187entry:7188 %0 = load ptr, ptr @dptr, align 87189 ret ptr %07190}7191 7192define dso_local ptr @har06() nounwind {7193; LINUX-64-STATIC-LABEL: har06:7194; LINUX-64-STATIC: # %bb.0: # %entry7195; LINUX-64-STATIC-NEXT: movl $lsrc, %eax7196; LINUX-64-STATIC-NEXT: retq7197;7198; LINUX-32-STATIC-LABEL: har06:7199; LINUX-32-STATIC: # %bb.0: # %entry7200; LINUX-32-STATIC-NEXT: movl $lsrc, %eax7201; LINUX-32-STATIC-NEXT: retl7202;7203; LINUX-32-PIC-LABEL: har06:7204; LINUX-32-PIC: # %bb.0: # %entry7205; LINUX-32-PIC-NEXT: calll .L85$pb7206; LINUX-32-PIC-NEXT: .L85$pb:7207; LINUX-32-PIC-NEXT: popl %eax7208; LINUX-32-PIC-NEXT: .Ltmp85:7209; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp85-.L85$pb), %eax7210; LINUX-32-PIC-NEXT: leal lsrc@GOTOFF(%eax), %eax7211; LINUX-32-PIC-NEXT: retl7212;7213; LINUX-64-PIC-LABEL: har06:7214; LINUX-64-PIC: # %bb.0: # %entry7215; LINUX-64-PIC-NEXT: leaq lsrc(%rip), %rax7216; LINUX-64-PIC-NEXT: retq7217;7218; DARWIN-32-STATIC-LABEL: har06:7219; DARWIN-32-STATIC: ## %bb.0: ## %entry7220; DARWIN-32-STATIC-NEXT: movl $_lsrc, %eax7221; DARWIN-32-STATIC-NEXT: retl7222;7223; DARWIN-32-DYNAMIC-LABEL: har06:7224; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry7225; DARWIN-32-DYNAMIC-NEXT: movl $_lsrc, %eax7226; DARWIN-32-DYNAMIC-NEXT: retl7227;7228; DARWIN-32-PIC-LABEL: har06:7229; DARWIN-32-PIC: ## %bb.0: ## %entry7230; DARWIN-32-PIC-NEXT: calll L85$pb7231; DARWIN-32-PIC-NEXT: L85$pb:7232; DARWIN-32-PIC-NEXT: popl %eax7233; DARWIN-32-PIC-NEXT: leal _lsrc-L85$pb(%eax), %eax7234; DARWIN-32-PIC-NEXT: retl7235;7236; DARWIN-64-STATIC-LABEL: har06:7237; DARWIN-64-STATIC: ## %bb.0: ## %entry7238; DARWIN-64-STATIC-NEXT: leaq _lsrc(%rip), %rax7239; DARWIN-64-STATIC-NEXT: retq7240;7241; DARWIN-64-DYNAMIC-LABEL: har06:7242; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry7243; DARWIN-64-DYNAMIC-NEXT: leaq _lsrc(%rip), %rax7244; DARWIN-64-DYNAMIC-NEXT: retq7245;7246; DARWIN-64-PIC-LABEL: har06:7247; DARWIN-64-PIC: ## %bb.0: ## %entry7248; DARWIN-64-PIC-NEXT: leaq _lsrc(%rip), %rax7249; DARWIN-64-PIC-NEXT: retq7250 7251entry:7252 ret ptr @lsrc7253}7254 7255define dso_local ptr @har07() nounwind {7256; LINUX-64-STATIC-LABEL: har07:7257; LINUX-64-STATIC: # %bb.0: # %entry7258; LINUX-64-STATIC-NEXT: movl $ldst, %eax7259; LINUX-64-STATIC-NEXT: retq7260;7261; LINUX-32-STATIC-LABEL: har07:7262; LINUX-32-STATIC: # %bb.0: # %entry7263; LINUX-32-STATIC-NEXT: movl $ldst, %eax7264; LINUX-32-STATIC-NEXT: retl7265;7266; LINUX-32-PIC-LABEL: har07:7267; LINUX-32-PIC: # %bb.0: # %entry7268; LINUX-32-PIC-NEXT: calll .L86$pb7269; LINUX-32-PIC-NEXT: .L86$pb:7270; LINUX-32-PIC-NEXT: popl %eax7271; LINUX-32-PIC-NEXT: .Ltmp86:7272; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp86-.L86$pb), %eax7273; LINUX-32-PIC-NEXT: leal ldst@GOTOFF(%eax), %eax7274; LINUX-32-PIC-NEXT: retl7275;7276; LINUX-64-PIC-LABEL: har07:7277; LINUX-64-PIC: # %bb.0: # %entry7278; LINUX-64-PIC-NEXT: leaq ldst(%rip), %rax7279; LINUX-64-PIC-NEXT: retq7280;7281; DARWIN-32-STATIC-LABEL: har07:7282; DARWIN-32-STATIC: ## %bb.0: ## %entry7283; DARWIN-32-STATIC-NEXT: movl $_ldst, %eax7284; DARWIN-32-STATIC-NEXT: retl7285;7286; DARWIN-32-DYNAMIC-LABEL: har07:7287; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry7288; DARWIN-32-DYNAMIC-NEXT: movl $_ldst, %eax7289; DARWIN-32-DYNAMIC-NEXT: retl7290;7291; DARWIN-32-PIC-LABEL: har07:7292; DARWIN-32-PIC: ## %bb.0: ## %entry7293; DARWIN-32-PIC-NEXT: calll L86$pb7294; DARWIN-32-PIC-NEXT: L86$pb:7295; DARWIN-32-PIC-NEXT: popl %eax7296; DARWIN-32-PIC-NEXT: leal _ldst-L86$pb(%eax), %eax7297; DARWIN-32-PIC-NEXT: retl7298;7299; DARWIN-64-STATIC-LABEL: har07:7300; DARWIN-64-STATIC: ## %bb.0: ## %entry7301; DARWIN-64-STATIC-NEXT: leaq _ldst(%rip), %rax7302; DARWIN-64-STATIC-NEXT: retq7303;7304; DARWIN-64-DYNAMIC-LABEL: har07:7305; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry7306; DARWIN-64-DYNAMIC-NEXT: leaq _ldst(%rip), %rax7307; DARWIN-64-DYNAMIC-NEXT: retq7308;7309; DARWIN-64-PIC-LABEL: har07:7310; DARWIN-64-PIC: ## %bb.0: ## %entry7311; DARWIN-64-PIC-NEXT: leaq _ldst(%rip), %rax7312; DARWIN-64-PIC-NEXT: retq7313 7314entry:7315 ret ptr @ldst7316}7317 7318define dso_local ptr @har08() nounwind {7319; LINUX-64-STATIC-LABEL: har08:7320; LINUX-64-STATIC: # %bb.0: # %entry7321; LINUX-64-STATIC-NEXT: movq lptr(%rip), %rax7322; LINUX-64-STATIC-NEXT: retq7323;7324; LINUX-32-STATIC-LABEL: har08:7325; LINUX-32-STATIC: # %bb.0: # %entry7326; LINUX-32-STATIC-NEXT: movl lptr, %eax7327; LINUX-32-STATIC-NEXT: retl7328;7329; LINUX-32-PIC-LABEL: har08:7330; LINUX-32-PIC: # %bb.0: # %entry7331; LINUX-32-PIC-NEXT: calll .L87$pb7332; LINUX-32-PIC-NEXT: .L87$pb:7333; LINUX-32-PIC-NEXT: popl %eax7334; LINUX-32-PIC-NEXT: .Ltmp87:7335; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp87-.L87$pb), %eax7336; LINUX-32-PIC-NEXT: movl lptr@GOTOFF(%eax), %eax7337; LINUX-32-PIC-NEXT: retl7338;7339; LINUX-64-PIC-LABEL: har08:7340; LINUX-64-PIC: # %bb.0: # %entry7341; LINUX-64-PIC-NEXT: movq lptr(%rip), %rax7342; LINUX-64-PIC-NEXT: retq7343;7344; DARWIN-32-STATIC-LABEL: har08:7345; DARWIN-32-STATIC: ## %bb.0: ## %entry7346; DARWIN-32-STATIC-NEXT: movl _lptr, %eax7347; DARWIN-32-STATIC-NEXT: retl7348;7349; DARWIN-32-DYNAMIC-LABEL: har08:7350; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry7351; DARWIN-32-DYNAMIC-NEXT: movl _lptr, %eax7352; DARWIN-32-DYNAMIC-NEXT: retl7353;7354; DARWIN-32-PIC-LABEL: har08:7355; DARWIN-32-PIC: ## %bb.0: ## %entry7356; DARWIN-32-PIC-NEXT: calll L87$pb7357; DARWIN-32-PIC-NEXT: L87$pb:7358; DARWIN-32-PIC-NEXT: popl %eax7359; DARWIN-32-PIC-NEXT: movl _lptr-L87$pb(%eax), %eax7360; DARWIN-32-PIC-NEXT: retl7361;7362; DARWIN-64-STATIC-LABEL: har08:7363; DARWIN-64-STATIC: ## %bb.0: ## %entry7364; DARWIN-64-STATIC-NEXT: movq _lptr(%rip), %rax7365; DARWIN-64-STATIC-NEXT: retq7366;7367; DARWIN-64-DYNAMIC-LABEL: har08:7368; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry7369; DARWIN-64-DYNAMIC-NEXT: movq _lptr(%rip), %rax7370; DARWIN-64-DYNAMIC-NEXT: retq7371;7372; DARWIN-64-PIC-LABEL: har08:7373; DARWIN-64-PIC: ## %bb.0: ## %entry7374; DARWIN-64-PIC-NEXT: movq _lptr(%rip), %rax7375; DARWIN-64-PIC-NEXT: retq7376 7377entry:7378 %0 = load ptr, ptr @lptr, align 87379 ret ptr %07380}7381 7382define dso_local ptr @bat00() nounwind {7383; LINUX-64-STATIC-LABEL: bat00:7384; LINUX-64-STATIC: # %bb.0: # %entry7385; LINUX-64-STATIC-NEXT: movq src@GOTPCREL(%rip), %rax7386; LINUX-64-STATIC-NEXT: addq $64, %rax7387; LINUX-64-STATIC-NEXT: retq7388;7389; LINUX-32-STATIC-LABEL: bat00:7390; LINUX-32-STATIC: # %bb.0: # %entry7391; LINUX-32-STATIC-NEXT: leal src+64, %eax7392; LINUX-32-STATIC-NEXT: retl7393;7394; LINUX-32-PIC-LABEL: bat00:7395; LINUX-32-PIC: # %bb.0: # %entry7396; LINUX-32-PIC-NEXT: calll .L88$pb7397; LINUX-32-PIC-NEXT: .L88$pb:7398; LINUX-32-PIC-NEXT: popl %eax7399; LINUX-32-PIC-NEXT: .Ltmp88:7400; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp88-.L88$pb), %eax7401; LINUX-32-PIC-NEXT: movl src@GOT(%eax), %eax7402; LINUX-32-PIC-NEXT: addl $64, %eax7403; LINUX-32-PIC-NEXT: retl7404;7405; LINUX-64-PIC-LABEL: bat00:7406; LINUX-64-PIC: # %bb.0: # %entry7407; LINUX-64-PIC-NEXT: movq src@GOTPCREL(%rip), %rax7408; LINUX-64-PIC-NEXT: addq $64, %rax7409; LINUX-64-PIC-NEXT: retq7410;7411; DARWIN-32-STATIC-LABEL: bat00:7412; DARWIN-32-STATIC: ## %bb.0: ## %entry7413; DARWIN-32-STATIC-NEXT: movl $_src+64, %eax7414; DARWIN-32-STATIC-NEXT: retl7415;7416; DARWIN-32-DYNAMIC-LABEL: bat00:7417; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry7418; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %eax7419; DARWIN-32-DYNAMIC-NEXT: addl $64, %eax7420; DARWIN-32-DYNAMIC-NEXT: retl7421;7422; DARWIN-32-PIC-LABEL: bat00:7423; DARWIN-32-PIC: ## %bb.0: ## %entry7424; DARWIN-32-PIC-NEXT: calll L88$pb7425; DARWIN-32-PIC-NEXT: L88$pb:7426; DARWIN-32-PIC-NEXT: popl %eax7427; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L88$pb(%eax), %eax7428; DARWIN-32-PIC-NEXT: addl $64, %eax7429; DARWIN-32-PIC-NEXT: retl7430;7431; DARWIN-64-STATIC-LABEL: bat00:7432; DARWIN-64-STATIC: ## %bb.0: ## %entry7433; DARWIN-64-STATIC-NEXT: movq _src@GOTPCREL(%rip), %rax7434; DARWIN-64-STATIC-NEXT: addq $64, %rax7435; DARWIN-64-STATIC-NEXT: retq7436;7437; DARWIN-64-DYNAMIC-LABEL: bat00:7438; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry7439; DARWIN-64-DYNAMIC-NEXT: movq _src@GOTPCREL(%rip), %rax7440; DARWIN-64-DYNAMIC-NEXT: addq $64, %rax7441; DARWIN-64-DYNAMIC-NEXT: retq7442;7443; DARWIN-64-PIC-LABEL: bat00:7444; DARWIN-64-PIC: ## %bb.0: ## %entry7445; DARWIN-64-PIC-NEXT: movq _src@GOTPCREL(%rip), %rax7446; DARWIN-64-PIC-NEXT: addq $64, %rax7447; DARWIN-64-PIC-NEXT: retq7448 7449entry:7450 ret ptr getelementptr ([131072 x i32], ptr @src, i32 0, i64 16)7451}7452 7453define dso_local ptr @bxt00() nounwind {7454; LINUX-64-STATIC-LABEL: bxt00:7455; LINUX-64-STATIC: # %bb.0: # %entry7456; LINUX-64-STATIC-NEXT: movq xsrc@GOTPCREL(%rip), %rax7457; LINUX-64-STATIC-NEXT: addq $64, %rax7458; LINUX-64-STATIC-NEXT: retq7459;7460; LINUX-32-STATIC-LABEL: bxt00:7461; LINUX-32-STATIC: # %bb.0: # %entry7462; LINUX-32-STATIC-NEXT: leal xsrc+64, %eax7463; LINUX-32-STATIC-NEXT: retl7464;7465; LINUX-32-PIC-LABEL: bxt00:7466; LINUX-32-PIC: # %bb.0: # %entry7467; LINUX-32-PIC-NEXT: calll .L89$pb7468; LINUX-32-PIC-NEXT: .L89$pb:7469; LINUX-32-PIC-NEXT: popl %eax7470; LINUX-32-PIC-NEXT: .Ltmp89:7471; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp89-.L89$pb), %eax7472; LINUX-32-PIC-NEXT: movl xsrc@GOT(%eax), %eax7473; LINUX-32-PIC-NEXT: addl $64, %eax7474; LINUX-32-PIC-NEXT: retl7475;7476; LINUX-64-PIC-LABEL: bxt00:7477; LINUX-64-PIC: # %bb.0: # %entry7478; LINUX-64-PIC-NEXT: movq xsrc@GOTPCREL(%rip), %rax7479; LINUX-64-PIC-NEXT: addq $64, %rax7480; LINUX-64-PIC-NEXT: retq7481;7482; DARWIN-32-STATIC-LABEL: bxt00:7483; DARWIN-32-STATIC: ## %bb.0: ## %entry7484; DARWIN-32-STATIC-NEXT: movl $_xsrc+64, %eax7485; DARWIN-32-STATIC-NEXT: retl7486;7487; DARWIN-32-DYNAMIC-LABEL: bxt00:7488; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry7489; DARWIN-32-DYNAMIC-NEXT: movl L_xsrc$non_lazy_ptr, %eax7490; DARWIN-32-DYNAMIC-NEXT: addl $64, %eax7491; DARWIN-32-DYNAMIC-NEXT: retl7492;7493; DARWIN-32-PIC-LABEL: bxt00:7494; DARWIN-32-PIC: ## %bb.0: ## %entry7495; DARWIN-32-PIC-NEXT: calll L89$pb7496; DARWIN-32-PIC-NEXT: L89$pb:7497; DARWIN-32-PIC-NEXT: popl %eax7498; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-L89$pb(%eax), %eax7499; DARWIN-32-PIC-NEXT: addl $64, %eax7500; DARWIN-32-PIC-NEXT: retl7501;7502; DARWIN-64-STATIC-LABEL: bxt00:7503; DARWIN-64-STATIC: ## %bb.0: ## %entry7504; DARWIN-64-STATIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax7505; DARWIN-64-STATIC-NEXT: addq $64, %rax7506; DARWIN-64-STATIC-NEXT: retq7507;7508; DARWIN-64-DYNAMIC-LABEL: bxt00:7509; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry7510; DARWIN-64-DYNAMIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax7511; DARWIN-64-DYNAMIC-NEXT: addq $64, %rax7512; DARWIN-64-DYNAMIC-NEXT: retq7513;7514; DARWIN-64-PIC-LABEL: bxt00:7515; DARWIN-64-PIC: ## %bb.0: ## %entry7516; DARWIN-64-PIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax7517; DARWIN-64-PIC-NEXT: addq $64, %rax7518; DARWIN-64-PIC-NEXT: retq7519 7520entry:7521 ret ptr getelementptr ([32 x i32], ptr @xsrc, i32 0, i64 16)7522}7523 7524define dso_local ptr @bat01() nounwind {7525; LINUX-64-STATIC-LABEL: bat01:7526; LINUX-64-STATIC: # %bb.0: # %entry7527; LINUX-64-STATIC-NEXT: movq dst@GOTPCREL(%rip), %rax7528; LINUX-64-STATIC-NEXT: addq $64, %rax7529; LINUX-64-STATIC-NEXT: retq7530;7531; LINUX-32-STATIC-LABEL: bat01:7532; LINUX-32-STATIC: # %bb.0: # %entry7533; LINUX-32-STATIC-NEXT: leal dst+64, %eax7534; LINUX-32-STATIC-NEXT: retl7535;7536; LINUX-32-PIC-LABEL: bat01:7537; LINUX-32-PIC: # %bb.0: # %entry7538; LINUX-32-PIC-NEXT: calll .L90$pb7539; LINUX-32-PIC-NEXT: .L90$pb:7540; LINUX-32-PIC-NEXT: popl %eax7541; LINUX-32-PIC-NEXT: .Ltmp90:7542; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp90-.L90$pb), %eax7543; LINUX-32-PIC-NEXT: movl dst@GOT(%eax), %eax7544; LINUX-32-PIC-NEXT: addl $64, %eax7545; LINUX-32-PIC-NEXT: retl7546;7547; LINUX-64-PIC-LABEL: bat01:7548; LINUX-64-PIC: # %bb.0: # %entry7549; LINUX-64-PIC-NEXT: movq dst@GOTPCREL(%rip), %rax7550; LINUX-64-PIC-NEXT: addq $64, %rax7551; LINUX-64-PIC-NEXT: retq7552;7553; DARWIN-32-STATIC-LABEL: bat01:7554; DARWIN-32-STATIC: ## %bb.0: ## %entry7555; DARWIN-32-STATIC-NEXT: movl $_dst+64, %eax7556; DARWIN-32-STATIC-NEXT: retl7557;7558; DARWIN-32-DYNAMIC-LABEL: bat01:7559; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry7560; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, %eax7561; DARWIN-32-DYNAMIC-NEXT: addl $64, %eax7562; DARWIN-32-DYNAMIC-NEXT: retl7563;7564; DARWIN-32-PIC-LABEL: bat01:7565; DARWIN-32-PIC: ## %bb.0: ## %entry7566; DARWIN-32-PIC-NEXT: calll L90$pb7567; DARWIN-32-PIC-NEXT: L90$pb:7568; DARWIN-32-PIC-NEXT: popl %eax7569; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L90$pb(%eax), %eax7570; DARWIN-32-PIC-NEXT: addl $64, %eax7571; DARWIN-32-PIC-NEXT: retl7572;7573; DARWIN-64-STATIC-LABEL: bat01:7574; DARWIN-64-STATIC: ## %bb.0: ## %entry7575; DARWIN-64-STATIC-NEXT: movq _dst@GOTPCREL(%rip), %rax7576; DARWIN-64-STATIC-NEXT: addq $64, %rax7577; DARWIN-64-STATIC-NEXT: retq7578;7579; DARWIN-64-DYNAMIC-LABEL: bat01:7580; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry7581; DARWIN-64-DYNAMIC-NEXT: movq _dst@GOTPCREL(%rip), %rax7582; DARWIN-64-DYNAMIC-NEXT: addq $64, %rax7583; DARWIN-64-DYNAMIC-NEXT: retq7584;7585; DARWIN-64-PIC-LABEL: bat01:7586; DARWIN-64-PIC: ## %bb.0: ## %entry7587; DARWIN-64-PIC-NEXT: movq _dst@GOTPCREL(%rip), %rax7588; DARWIN-64-PIC-NEXT: addq $64, %rax7589; DARWIN-64-PIC-NEXT: retq7590 7591entry:7592 ret ptr getelementptr ([131072 x i32], ptr @dst, i32 0, i64 16)7593}7594 7595define dso_local ptr @bxt01() nounwind {7596; LINUX-64-STATIC-LABEL: bxt01:7597; LINUX-64-STATIC: # %bb.0: # %entry7598; LINUX-64-STATIC-NEXT: movq xdst@GOTPCREL(%rip), %rax7599; LINUX-64-STATIC-NEXT: addq $64, %rax7600; LINUX-64-STATIC-NEXT: retq7601;7602; LINUX-32-STATIC-LABEL: bxt01:7603; LINUX-32-STATIC: # %bb.0: # %entry7604; LINUX-32-STATIC-NEXT: leal xdst+64, %eax7605; LINUX-32-STATIC-NEXT: retl7606;7607; LINUX-32-PIC-LABEL: bxt01:7608; LINUX-32-PIC: # %bb.0: # %entry7609; LINUX-32-PIC-NEXT: calll .L91$pb7610; LINUX-32-PIC-NEXT: .L91$pb:7611; LINUX-32-PIC-NEXT: popl %eax7612; LINUX-32-PIC-NEXT: .Ltmp91:7613; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp91-.L91$pb), %eax7614; LINUX-32-PIC-NEXT: movl xdst@GOT(%eax), %eax7615; LINUX-32-PIC-NEXT: addl $64, %eax7616; LINUX-32-PIC-NEXT: retl7617;7618; LINUX-64-PIC-LABEL: bxt01:7619; LINUX-64-PIC: # %bb.0: # %entry7620; LINUX-64-PIC-NEXT: movq xdst@GOTPCREL(%rip), %rax7621; LINUX-64-PIC-NEXT: addq $64, %rax7622; LINUX-64-PIC-NEXT: retq7623;7624; DARWIN-32-STATIC-LABEL: bxt01:7625; DARWIN-32-STATIC: ## %bb.0: ## %entry7626; DARWIN-32-STATIC-NEXT: movl $_xdst+64, %eax7627; DARWIN-32-STATIC-NEXT: retl7628;7629; DARWIN-32-DYNAMIC-LABEL: bxt01:7630; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry7631; DARWIN-32-DYNAMIC-NEXT: movl L_xdst$non_lazy_ptr, %eax7632; DARWIN-32-DYNAMIC-NEXT: addl $64, %eax7633; DARWIN-32-DYNAMIC-NEXT: retl7634;7635; DARWIN-32-PIC-LABEL: bxt01:7636; DARWIN-32-PIC: ## %bb.0: ## %entry7637; DARWIN-32-PIC-NEXT: calll L91$pb7638; DARWIN-32-PIC-NEXT: L91$pb:7639; DARWIN-32-PIC-NEXT: popl %eax7640; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-L91$pb(%eax), %eax7641; DARWIN-32-PIC-NEXT: addl $64, %eax7642; DARWIN-32-PIC-NEXT: retl7643;7644; DARWIN-64-STATIC-LABEL: bxt01:7645; DARWIN-64-STATIC: ## %bb.0: ## %entry7646; DARWIN-64-STATIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax7647; DARWIN-64-STATIC-NEXT: addq $64, %rax7648; DARWIN-64-STATIC-NEXT: retq7649;7650; DARWIN-64-DYNAMIC-LABEL: bxt01:7651; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry7652; DARWIN-64-DYNAMIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax7653; DARWIN-64-DYNAMIC-NEXT: addq $64, %rax7654; DARWIN-64-DYNAMIC-NEXT: retq7655;7656; DARWIN-64-PIC-LABEL: bxt01:7657; DARWIN-64-PIC: ## %bb.0: ## %entry7658; DARWIN-64-PIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax7659; DARWIN-64-PIC-NEXT: addq $64, %rax7660; DARWIN-64-PIC-NEXT: retq7661 7662entry:7663 ret ptr getelementptr ([32 x i32], ptr @xdst, i32 0, i64 16)7664}7665 7666define dso_local ptr @bat02() nounwind {7667; LINUX-64-STATIC-LABEL: bat02:7668; LINUX-64-STATIC: # %bb.0: # %entry7669; LINUX-64-STATIC-NEXT: movq ptr@GOTPCREL(%rip), %rax7670; LINUX-64-STATIC-NEXT: movq (%rax), %rax7671; LINUX-64-STATIC-NEXT: addq $64, %rax7672; LINUX-64-STATIC-NEXT: retq7673;7674; LINUX-32-STATIC-LABEL: bat02:7675; LINUX-32-STATIC: # %bb.0: # %entry7676; LINUX-32-STATIC-NEXT: movl ptr, %eax7677; LINUX-32-STATIC-NEXT: addl $64, %eax7678; LINUX-32-STATIC-NEXT: retl7679;7680; LINUX-32-PIC-LABEL: bat02:7681; LINUX-32-PIC: # %bb.0: # %entry7682; LINUX-32-PIC-NEXT: calll .L92$pb7683; LINUX-32-PIC-NEXT: .L92$pb:7684; LINUX-32-PIC-NEXT: popl %eax7685; LINUX-32-PIC-NEXT: .Ltmp92:7686; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp92-.L92$pb), %eax7687; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax7688; LINUX-32-PIC-NEXT: movl (%eax), %eax7689; LINUX-32-PIC-NEXT: addl $64, %eax7690; LINUX-32-PIC-NEXT: retl7691;7692; LINUX-64-PIC-LABEL: bat02:7693; LINUX-64-PIC: # %bb.0: # %entry7694; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rax7695; LINUX-64-PIC-NEXT: movq (%rax), %rax7696; LINUX-64-PIC-NEXT: addq $64, %rax7697; LINUX-64-PIC-NEXT: retq7698;7699; DARWIN-32-STATIC-LABEL: bat02:7700; DARWIN-32-STATIC: ## %bb.0: ## %entry7701; DARWIN-32-STATIC-NEXT: movl _ptr, %eax7702; DARWIN-32-STATIC-NEXT: addl $64, %eax7703; DARWIN-32-STATIC-NEXT: retl7704;7705; DARWIN-32-DYNAMIC-LABEL: bat02:7706; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry7707; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %eax7708; DARWIN-32-DYNAMIC-NEXT: movl (%eax), %eax7709; DARWIN-32-DYNAMIC-NEXT: addl $64, %eax7710; DARWIN-32-DYNAMIC-NEXT: retl7711;7712; DARWIN-32-PIC-LABEL: bat02:7713; DARWIN-32-PIC: ## %bb.0: ## %entry7714; DARWIN-32-PIC-NEXT: calll L92$pb7715; DARWIN-32-PIC-NEXT: L92$pb:7716; DARWIN-32-PIC-NEXT: popl %eax7717; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L92$pb(%eax), %eax7718; DARWIN-32-PIC-NEXT: movl (%eax), %eax7719; DARWIN-32-PIC-NEXT: addl $64, %eax7720; DARWIN-32-PIC-NEXT: retl7721;7722; DARWIN-64-STATIC-LABEL: bat02:7723; DARWIN-64-STATIC: ## %bb.0: ## %entry7724; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax7725; DARWIN-64-STATIC-NEXT: movq (%rax), %rax7726; DARWIN-64-STATIC-NEXT: addq $64, %rax7727; DARWIN-64-STATIC-NEXT: retq7728;7729; DARWIN-64-DYNAMIC-LABEL: bat02:7730; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry7731; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax7732; DARWIN-64-DYNAMIC-NEXT: movq (%rax), %rax7733; DARWIN-64-DYNAMIC-NEXT: addq $64, %rax7734; DARWIN-64-DYNAMIC-NEXT: retq7735;7736; DARWIN-64-PIC-LABEL: bat02:7737; DARWIN-64-PIC: ## %bb.0: ## %entry7738; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax7739; DARWIN-64-PIC-NEXT: movq (%rax), %rax7740; DARWIN-64-PIC-NEXT: addq $64, %rax7741; DARWIN-64-PIC-NEXT: retq7742 7743entry:7744 %0 = load ptr, ptr @ptr, align 87745 %1 = getelementptr i32, ptr %0, i64 167746 ret ptr %17747}7748 7749define dso_local ptr @bat03() nounwind {7750; LINUX-64-STATIC-LABEL: bat03:7751; LINUX-64-STATIC: # %bb.0: # %entry7752; LINUX-64-STATIC-NEXT: movl $dsrc+64, %eax7753; LINUX-64-STATIC-NEXT: retq7754;7755; LINUX-32-STATIC-LABEL: bat03:7756; LINUX-32-STATIC: # %bb.0: # %entry7757; LINUX-32-STATIC-NEXT: movl $dsrc+64, %eax7758; LINUX-32-STATIC-NEXT: retl7759;7760; LINUX-32-PIC-LABEL: bat03:7761; LINUX-32-PIC: # %bb.0: # %entry7762; LINUX-32-PIC-NEXT: calll .L93$pb7763; LINUX-32-PIC-NEXT: .L93$pb:7764; LINUX-32-PIC-NEXT: popl %eax7765; LINUX-32-PIC-NEXT: .Ltmp93:7766; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp93-.L93$pb), %eax7767; LINUX-32-PIC-NEXT: leal .Ldsrc$local@GOTOFF+64(%eax), %eax7768; LINUX-32-PIC-NEXT: retl7769;7770; LINUX-64-PIC-LABEL: bat03:7771; LINUX-64-PIC: # %bb.0: # %entry7772; LINUX-64-PIC-NEXT: leaq .Ldsrc$local+64(%rip), %rax7773; LINUX-64-PIC-NEXT: retq7774;7775; DARWIN-32-STATIC-LABEL: bat03:7776; DARWIN-32-STATIC: ## %bb.0: ## %entry7777; DARWIN-32-STATIC-NEXT: movl $_dsrc+64, %eax7778; DARWIN-32-STATIC-NEXT: retl7779;7780; DARWIN-32-DYNAMIC-LABEL: bat03:7781; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry7782; DARWIN-32-DYNAMIC-NEXT: movl $_dsrc+64, %eax7783; DARWIN-32-DYNAMIC-NEXT: retl7784;7785; DARWIN-32-PIC-LABEL: bat03:7786; DARWIN-32-PIC: ## %bb.0: ## %entry7787; DARWIN-32-PIC-NEXT: calll L93$pb7788; DARWIN-32-PIC-NEXT: L93$pb:7789; DARWIN-32-PIC-NEXT: popl %eax7790; DARWIN-32-PIC-NEXT: leal _dsrc-L93$pb+64(%eax), %eax7791; DARWIN-32-PIC-NEXT: retl7792;7793; DARWIN-64-STATIC-LABEL: bat03:7794; DARWIN-64-STATIC: ## %bb.0: ## %entry7795; DARWIN-64-STATIC-NEXT: leaq _dsrc+64(%rip), %rax7796; DARWIN-64-STATIC-NEXT: retq7797;7798; DARWIN-64-DYNAMIC-LABEL: bat03:7799; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry7800; DARWIN-64-DYNAMIC-NEXT: leaq _dsrc+64(%rip), %rax7801; DARWIN-64-DYNAMIC-NEXT: retq7802;7803; DARWIN-64-PIC-LABEL: bat03:7804; DARWIN-64-PIC: ## %bb.0: ## %entry7805; DARWIN-64-PIC-NEXT: leaq _dsrc+64(%rip), %rax7806; DARWIN-64-PIC-NEXT: retq7807 7808entry:7809 ret ptr getelementptr ([131072 x i32], ptr @dsrc, i32 0, i64 16)7810}7811 7812define dso_local ptr @bat04() nounwind {7813; LINUX-64-STATIC-LABEL: bat04:7814; LINUX-64-STATIC: # %bb.0: # %entry7815; LINUX-64-STATIC-NEXT: movl $ddst+64, %eax7816; LINUX-64-STATIC-NEXT: retq7817;7818; LINUX-32-STATIC-LABEL: bat04:7819; LINUX-32-STATIC: # %bb.0: # %entry7820; LINUX-32-STATIC-NEXT: movl $ddst+64, %eax7821; LINUX-32-STATIC-NEXT: retl7822;7823; LINUX-32-PIC-LABEL: bat04:7824; LINUX-32-PIC: # %bb.0: # %entry7825; LINUX-32-PIC-NEXT: calll .L94$pb7826; LINUX-32-PIC-NEXT: .L94$pb:7827; LINUX-32-PIC-NEXT: popl %eax7828; LINUX-32-PIC-NEXT: .Ltmp94:7829; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp94-.L94$pb), %eax7830; LINUX-32-PIC-NEXT: leal .Lddst$local@GOTOFF+64(%eax), %eax7831; LINUX-32-PIC-NEXT: retl7832;7833; LINUX-64-PIC-LABEL: bat04:7834; LINUX-64-PIC: # %bb.0: # %entry7835; LINUX-64-PIC-NEXT: leaq .Lddst$local+64(%rip), %rax7836; LINUX-64-PIC-NEXT: retq7837;7838; DARWIN-32-STATIC-LABEL: bat04:7839; DARWIN-32-STATIC: ## %bb.0: ## %entry7840; DARWIN-32-STATIC-NEXT: movl $_ddst+64, %eax7841; DARWIN-32-STATIC-NEXT: retl7842;7843; DARWIN-32-DYNAMIC-LABEL: bat04:7844; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry7845; DARWIN-32-DYNAMIC-NEXT: movl $_ddst+64, %eax7846; DARWIN-32-DYNAMIC-NEXT: retl7847;7848; DARWIN-32-PIC-LABEL: bat04:7849; DARWIN-32-PIC: ## %bb.0: ## %entry7850; DARWIN-32-PIC-NEXT: calll L94$pb7851; DARWIN-32-PIC-NEXT: L94$pb:7852; DARWIN-32-PIC-NEXT: popl %eax7853; DARWIN-32-PIC-NEXT: leal _ddst-L94$pb+64(%eax), %eax7854; DARWIN-32-PIC-NEXT: retl7855;7856; DARWIN-64-STATIC-LABEL: bat04:7857; DARWIN-64-STATIC: ## %bb.0: ## %entry7858; DARWIN-64-STATIC-NEXT: leaq _ddst+64(%rip), %rax7859; DARWIN-64-STATIC-NEXT: retq7860;7861; DARWIN-64-DYNAMIC-LABEL: bat04:7862; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry7863; DARWIN-64-DYNAMIC-NEXT: leaq _ddst+64(%rip), %rax7864; DARWIN-64-DYNAMIC-NEXT: retq7865;7866; DARWIN-64-PIC-LABEL: bat04:7867; DARWIN-64-PIC: ## %bb.0: ## %entry7868; DARWIN-64-PIC-NEXT: leaq _ddst+64(%rip), %rax7869; DARWIN-64-PIC-NEXT: retq7870 7871entry:7872 ret ptr getelementptr ([131072 x i32], ptr @ddst, i32 0, i64 16)7873}7874 7875define dso_local ptr @bat05() nounwind {7876; LINUX-64-STATIC-LABEL: bat05:7877; LINUX-64-STATIC: # %bb.0: # %entry7878; LINUX-64-STATIC-NEXT: movq dptr(%rip), %rax7879; LINUX-64-STATIC-NEXT: addq $64, %rax7880; LINUX-64-STATIC-NEXT: retq7881;7882; LINUX-32-STATIC-LABEL: bat05:7883; LINUX-32-STATIC: # %bb.0: # %entry7884; LINUX-32-STATIC-NEXT: movl dptr, %eax7885; LINUX-32-STATIC-NEXT: addl $64, %eax7886; LINUX-32-STATIC-NEXT: retl7887;7888; LINUX-32-PIC-LABEL: bat05:7889; LINUX-32-PIC: # %bb.0: # %entry7890; LINUX-32-PIC-NEXT: calll .L95$pb7891; LINUX-32-PIC-NEXT: .L95$pb:7892; LINUX-32-PIC-NEXT: popl %eax7893; LINUX-32-PIC-NEXT: .Ltmp95:7894; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp95-.L95$pb), %eax7895; LINUX-32-PIC-NEXT: movl .Ldptr$local@GOTOFF(%eax), %eax7896; LINUX-32-PIC-NEXT: addl $64, %eax7897; LINUX-32-PIC-NEXT: retl7898;7899; LINUX-64-PIC-LABEL: bat05:7900; LINUX-64-PIC: # %bb.0: # %entry7901; LINUX-64-PIC-NEXT: movq .Ldptr$local(%rip), %rax7902; LINUX-64-PIC-NEXT: addq $64, %rax7903; LINUX-64-PIC-NEXT: retq7904;7905; DARWIN-32-STATIC-LABEL: bat05:7906; DARWIN-32-STATIC: ## %bb.0: ## %entry7907; DARWIN-32-STATIC-NEXT: movl _dptr, %eax7908; DARWIN-32-STATIC-NEXT: addl $64, %eax7909; DARWIN-32-STATIC-NEXT: retl7910;7911; DARWIN-32-DYNAMIC-LABEL: bat05:7912; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry7913; DARWIN-32-DYNAMIC-NEXT: movl _dptr, %eax7914; DARWIN-32-DYNAMIC-NEXT: addl $64, %eax7915; DARWIN-32-DYNAMIC-NEXT: retl7916;7917; DARWIN-32-PIC-LABEL: bat05:7918; DARWIN-32-PIC: ## %bb.0: ## %entry7919; DARWIN-32-PIC-NEXT: calll L95$pb7920; DARWIN-32-PIC-NEXT: L95$pb:7921; DARWIN-32-PIC-NEXT: popl %eax7922; DARWIN-32-PIC-NEXT: movl _dptr-L95$pb(%eax), %eax7923; DARWIN-32-PIC-NEXT: addl $64, %eax7924; DARWIN-32-PIC-NEXT: retl7925;7926; DARWIN-64-STATIC-LABEL: bat05:7927; DARWIN-64-STATIC: ## %bb.0: ## %entry7928; DARWIN-64-STATIC-NEXT: movq _dptr(%rip), %rax7929; DARWIN-64-STATIC-NEXT: addq $64, %rax7930; DARWIN-64-STATIC-NEXT: retq7931;7932; DARWIN-64-DYNAMIC-LABEL: bat05:7933; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry7934; DARWIN-64-DYNAMIC-NEXT: movq _dptr(%rip), %rax7935; DARWIN-64-DYNAMIC-NEXT: addq $64, %rax7936; DARWIN-64-DYNAMIC-NEXT: retq7937;7938; DARWIN-64-PIC-LABEL: bat05:7939; DARWIN-64-PIC: ## %bb.0: ## %entry7940; DARWIN-64-PIC-NEXT: movq _dptr(%rip), %rax7941; DARWIN-64-PIC-NEXT: addq $64, %rax7942; DARWIN-64-PIC-NEXT: retq7943 7944entry:7945 %0 = load ptr, ptr @dptr, align 87946 %1 = getelementptr i32, ptr %0, i64 167947 ret ptr %17948}7949 7950define dso_local ptr @bat06() nounwind {7951; LINUX-64-STATIC-LABEL: bat06:7952; LINUX-64-STATIC: # %bb.0: # %entry7953; LINUX-64-STATIC-NEXT: movl $lsrc+64, %eax7954; LINUX-64-STATIC-NEXT: retq7955;7956; LINUX-32-STATIC-LABEL: bat06:7957; LINUX-32-STATIC: # %bb.0: # %entry7958; LINUX-32-STATIC-NEXT: movl $lsrc+64, %eax7959; LINUX-32-STATIC-NEXT: retl7960;7961; LINUX-32-PIC-LABEL: bat06:7962; LINUX-32-PIC: # %bb.0: # %entry7963; LINUX-32-PIC-NEXT: calll .L96$pb7964; LINUX-32-PIC-NEXT: .L96$pb:7965; LINUX-32-PIC-NEXT: popl %eax7966; LINUX-32-PIC-NEXT: .Ltmp96:7967; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp96-.L96$pb), %eax7968; LINUX-32-PIC-NEXT: leal lsrc@GOTOFF+64(%eax), %eax7969; LINUX-32-PIC-NEXT: retl7970;7971; LINUX-64-PIC-LABEL: bat06:7972; LINUX-64-PIC: # %bb.0: # %entry7973; LINUX-64-PIC-NEXT: leaq lsrc+64(%rip), %rax7974; LINUX-64-PIC-NEXT: retq7975;7976; DARWIN-32-STATIC-LABEL: bat06:7977; DARWIN-32-STATIC: ## %bb.0: ## %entry7978; DARWIN-32-STATIC-NEXT: movl $_lsrc+64, %eax7979; DARWIN-32-STATIC-NEXT: retl7980;7981; DARWIN-32-DYNAMIC-LABEL: bat06:7982; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry7983; DARWIN-32-DYNAMIC-NEXT: movl $_lsrc+64, %eax7984; DARWIN-32-DYNAMIC-NEXT: retl7985;7986; DARWIN-32-PIC-LABEL: bat06:7987; DARWIN-32-PIC: ## %bb.0: ## %entry7988; DARWIN-32-PIC-NEXT: calll L96$pb7989; DARWIN-32-PIC-NEXT: L96$pb:7990; DARWIN-32-PIC-NEXT: popl %eax7991; DARWIN-32-PIC-NEXT: leal _lsrc-L96$pb+64(%eax), %eax7992; DARWIN-32-PIC-NEXT: retl7993;7994; DARWIN-64-STATIC-LABEL: bat06:7995; DARWIN-64-STATIC: ## %bb.0: ## %entry7996; DARWIN-64-STATIC-NEXT: leaq _lsrc+64(%rip), %rax7997; DARWIN-64-STATIC-NEXT: retq7998;7999; DARWIN-64-DYNAMIC-LABEL: bat06:8000; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry8001; DARWIN-64-DYNAMIC-NEXT: leaq _lsrc+64(%rip), %rax8002; DARWIN-64-DYNAMIC-NEXT: retq8003;8004; DARWIN-64-PIC-LABEL: bat06:8005; DARWIN-64-PIC: ## %bb.0: ## %entry8006; DARWIN-64-PIC-NEXT: leaq _lsrc+64(%rip), %rax8007; DARWIN-64-PIC-NEXT: retq8008 8009entry:8010 ret ptr getelementptr ([131072 x i32], ptr @lsrc, i32 0, i64 16)8011}8012 8013define dso_local ptr @bat07() nounwind {8014; LINUX-64-STATIC-LABEL: bat07:8015; LINUX-64-STATIC: # %bb.0: # %entry8016; LINUX-64-STATIC-NEXT: movl $ldst+64, %eax8017; LINUX-64-STATIC-NEXT: retq8018;8019; LINUX-32-STATIC-LABEL: bat07:8020; LINUX-32-STATIC: # %bb.0: # %entry8021; LINUX-32-STATIC-NEXT: movl $ldst+64, %eax8022; LINUX-32-STATIC-NEXT: retl8023;8024; LINUX-32-PIC-LABEL: bat07:8025; LINUX-32-PIC: # %bb.0: # %entry8026; LINUX-32-PIC-NEXT: calll .L97$pb8027; LINUX-32-PIC-NEXT: .L97$pb:8028; LINUX-32-PIC-NEXT: popl %eax8029; LINUX-32-PIC-NEXT: .Ltmp97:8030; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp97-.L97$pb), %eax8031; LINUX-32-PIC-NEXT: leal ldst@GOTOFF+64(%eax), %eax8032; LINUX-32-PIC-NEXT: retl8033;8034; LINUX-64-PIC-LABEL: bat07:8035; LINUX-64-PIC: # %bb.0: # %entry8036; LINUX-64-PIC-NEXT: leaq ldst+64(%rip), %rax8037; LINUX-64-PIC-NEXT: retq8038;8039; DARWIN-32-STATIC-LABEL: bat07:8040; DARWIN-32-STATIC: ## %bb.0: ## %entry8041; DARWIN-32-STATIC-NEXT: movl $_ldst+64, %eax8042; DARWIN-32-STATIC-NEXT: retl8043;8044; DARWIN-32-DYNAMIC-LABEL: bat07:8045; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry8046; DARWIN-32-DYNAMIC-NEXT: movl $_ldst+64, %eax8047; DARWIN-32-DYNAMIC-NEXT: retl8048;8049; DARWIN-32-PIC-LABEL: bat07:8050; DARWIN-32-PIC: ## %bb.0: ## %entry8051; DARWIN-32-PIC-NEXT: calll L97$pb8052; DARWIN-32-PIC-NEXT: L97$pb:8053; DARWIN-32-PIC-NEXT: popl %eax8054; DARWIN-32-PIC-NEXT: leal _ldst-L97$pb+64(%eax), %eax8055; DARWIN-32-PIC-NEXT: retl8056;8057; DARWIN-64-STATIC-LABEL: bat07:8058; DARWIN-64-STATIC: ## %bb.0: ## %entry8059; DARWIN-64-STATIC-NEXT: leaq _ldst+64(%rip), %rax8060; DARWIN-64-STATIC-NEXT: retq8061;8062; DARWIN-64-DYNAMIC-LABEL: bat07:8063; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry8064; DARWIN-64-DYNAMIC-NEXT: leaq _ldst+64(%rip), %rax8065; DARWIN-64-DYNAMIC-NEXT: retq8066;8067; DARWIN-64-PIC-LABEL: bat07:8068; DARWIN-64-PIC: ## %bb.0: ## %entry8069; DARWIN-64-PIC-NEXT: leaq _ldst+64(%rip), %rax8070; DARWIN-64-PIC-NEXT: retq8071 8072entry:8073 ret ptr getelementptr ([131072 x i32], ptr @ldst, i32 0, i64 16)8074}8075 8076define dso_local ptr @bat08() nounwind {8077; LINUX-64-STATIC-LABEL: bat08:8078; LINUX-64-STATIC: # %bb.0: # %entry8079; LINUX-64-STATIC-NEXT: movq lptr(%rip), %rax8080; LINUX-64-STATIC-NEXT: addq $64, %rax8081; LINUX-64-STATIC-NEXT: retq8082;8083; LINUX-32-STATIC-LABEL: bat08:8084; LINUX-32-STATIC: # %bb.0: # %entry8085; LINUX-32-STATIC-NEXT: movl lptr, %eax8086; LINUX-32-STATIC-NEXT: addl $64, %eax8087; LINUX-32-STATIC-NEXT: retl8088;8089; LINUX-32-PIC-LABEL: bat08:8090; LINUX-32-PIC: # %bb.0: # %entry8091; LINUX-32-PIC-NEXT: calll .L98$pb8092; LINUX-32-PIC-NEXT: .L98$pb:8093; LINUX-32-PIC-NEXT: popl %eax8094; LINUX-32-PIC-NEXT: .Ltmp98:8095; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp98-.L98$pb), %eax8096; LINUX-32-PIC-NEXT: movl lptr@GOTOFF(%eax), %eax8097; LINUX-32-PIC-NEXT: addl $64, %eax8098; LINUX-32-PIC-NEXT: retl8099;8100; LINUX-64-PIC-LABEL: bat08:8101; LINUX-64-PIC: # %bb.0: # %entry8102; LINUX-64-PIC-NEXT: movq lptr(%rip), %rax8103; LINUX-64-PIC-NEXT: addq $64, %rax8104; LINUX-64-PIC-NEXT: retq8105;8106; DARWIN-32-STATIC-LABEL: bat08:8107; DARWIN-32-STATIC: ## %bb.0: ## %entry8108; DARWIN-32-STATIC-NEXT: movl _lptr, %eax8109; DARWIN-32-STATIC-NEXT: addl $64, %eax8110; DARWIN-32-STATIC-NEXT: retl8111;8112; DARWIN-32-DYNAMIC-LABEL: bat08:8113; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry8114; DARWIN-32-DYNAMIC-NEXT: movl _lptr, %eax8115; DARWIN-32-DYNAMIC-NEXT: addl $64, %eax8116; DARWIN-32-DYNAMIC-NEXT: retl8117;8118; DARWIN-32-PIC-LABEL: bat08:8119; DARWIN-32-PIC: ## %bb.0: ## %entry8120; DARWIN-32-PIC-NEXT: calll L98$pb8121; DARWIN-32-PIC-NEXT: L98$pb:8122; DARWIN-32-PIC-NEXT: popl %eax8123; DARWIN-32-PIC-NEXT: movl _lptr-L98$pb(%eax), %eax8124; DARWIN-32-PIC-NEXT: addl $64, %eax8125; DARWIN-32-PIC-NEXT: retl8126;8127; DARWIN-64-STATIC-LABEL: bat08:8128; DARWIN-64-STATIC: ## %bb.0: ## %entry8129; DARWIN-64-STATIC-NEXT: movq _lptr(%rip), %rax8130; DARWIN-64-STATIC-NEXT: addq $64, %rax8131; DARWIN-64-STATIC-NEXT: retq8132;8133; DARWIN-64-DYNAMIC-LABEL: bat08:8134; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry8135; DARWIN-64-DYNAMIC-NEXT: movq _lptr(%rip), %rax8136; DARWIN-64-DYNAMIC-NEXT: addq $64, %rax8137; DARWIN-64-DYNAMIC-NEXT: retq8138;8139; DARWIN-64-PIC-LABEL: bat08:8140; DARWIN-64-PIC: ## %bb.0: ## %entry8141; DARWIN-64-PIC-NEXT: movq _lptr(%rip), %rax8142; DARWIN-64-PIC-NEXT: addq $64, %rax8143; DARWIN-64-PIC-NEXT: retq8144 8145entry:8146 %0 = load ptr, ptr @lptr, align 88147 %1 = getelementptr i32, ptr %0, i64 168148 ret ptr %18149}8150 8151define dso_local ptr @bam00() nounwind {8152; LINUX-64-STATIC-LABEL: bam00:8153; LINUX-64-STATIC: # %bb.0: # %entry8154; LINUX-64-STATIC-NEXT: movl $262144, %eax # imm = 0x400008155; LINUX-64-STATIC-NEXT: addq src@GOTPCREL(%rip), %rax8156; LINUX-64-STATIC-NEXT: retq8157;8158; LINUX-32-STATIC-LABEL: bam00:8159; LINUX-32-STATIC: # %bb.0: # %entry8160; LINUX-32-STATIC-NEXT: leal src+262144, %eax8161; LINUX-32-STATIC-NEXT: retl8162;8163; LINUX-32-PIC-LABEL: bam00:8164; LINUX-32-PIC: # %bb.0: # %entry8165; LINUX-32-PIC-NEXT: calll .L99$pb8166; LINUX-32-PIC-NEXT: .L99$pb:8167; LINUX-32-PIC-NEXT: popl %ecx8168; LINUX-32-PIC-NEXT: .Ltmp99:8169; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp99-.L99$pb), %ecx8170; LINUX-32-PIC-NEXT: movl $262144, %eax # imm = 0x400008171; LINUX-32-PIC-NEXT: addl src@GOT(%ecx), %eax8172; LINUX-32-PIC-NEXT: retl8173;8174; LINUX-64-PIC-LABEL: bam00:8175; LINUX-64-PIC: # %bb.0: # %entry8176; LINUX-64-PIC-NEXT: movl $262144, %eax # imm = 0x400008177; LINUX-64-PIC-NEXT: addq src@GOTPCREL(%rip), %rax8178; LINUX-64-PIC-NEXT: retq8179;8180; DARWIN-32-STATIC-LABEL: bam00:8181; DARWIN-32-STATIC: ## %bb.0: ## %entry8182; DARWIN-32-STATIC-NEXT: movl $_src+262144, %eax8183; DARWIN-32-STATIC-NEXT: retl8184;8185; DARWIN-32-DYNAMIC-LABEL: bam00:8186; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry8187; DARWIN-32-DYNAMIC-NEXT: movl $262144, %eax ## imm = 0x400008188; DARWIN-32-DYNAMIC-NEXT: addl L_src$non_lazy_ptr, %eax8189; DARWIN-32-DYNAMIC-NEXT: retl8190;8191; DARWIN-32-PIC-LABEL: bam00:8192; DARWIN-32-PIC: ## %bb.0: ## %entry8193; DARWIN-32-PIC-NEXT: calll L99$pb8194; DARWIN-32-PIC-NEXT: L99$pb:8195; DARWIN-32-PIC-NEXT: popl %ecx8196; DARWIN-32-PIC-NEXT: movl $262144, %eax ## imm = 0x400008197; DARWIN-32-PIC-NEXT: addl L_src$non_lazy_ptr-L99$pb(%ecx), %eax8198; DARWIN-32-PIC-NEXT: retl8199;8200; DARWIN-64-STATIC-LABEL: bam00:8201; DARWIN-64-STATIC: ## %bb.0: ## %entry8202; DARWIN-64-STATIC-NEXT: movl $262144, %eax ## imm = 0x400008203; DARWIN-64-STATIC-NEXT: addq _src@GOTPCREL(%rip), %rax8204; DARWIN-64-STATIC-NEXT: retq8205;8206; DARWIN-64-DYNAMIC-LABEL: bam00:8207; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry8208; DARWIN-64-DYNAMIC-NEXT: movl $262144, %eax ## imm = 0x400008209; DARWIN-64-DYNAMIC-NEXT: addq _src@GOTPCREL(%rip), %rax8210; DARWIN-64-DYNAMIC-NEXT: retq8211;8212; DARWIN-64-PIC-LABEL: bam00:8213; DARWIN-64-PIC: ## %bb.0: ## %entry8214; DARWIN-64-PIC-NEXT: movl $262144, %eax ## imm = 0x400008215; DARWIN-64-PIC-NEXT: addq _src@GOTPCREL(%rip), %rax8216; DARWIN-64-PIC-NEXT: retq8217 8218entry:8219 ret ptr getelementptr ([131072 x i32], ptr @src, i32 0, i64 65536)8220}8221 8222define dso_local ptr @bam01() nounwind {8223; LINUX-64-STATIC-LABEL: bam01:8224; LINUX-64-STATIC: # %bb.0: # %entry8225; LINUX-64-STATIC-NEXT: movl $262144, %eax # imm = 0x400008226; LINUX-64-STATIC-NEXT: addq dst@GOTPCREL(%rip), %rax8227; LINUX-64-STATIC-NEXT: retq8228;8229; LINUX-32-STATIC-LABEL: bam01:8230; LINUX-32-STATIC: # %bb.0: # %entry8231; LINUX-32-STATIC-NEXT: leal dst+262144, %eax8232; LINUX-32-STATIC-NEXT: retl8233;8234; LINUX-32-PIC-LABEL: bam01:8235; LINUX-32-PIC: # %bb.0: # %entry8236; LINUX-32-PIC-NEXT: calll .L100$pb8237; LINUX-32-PIC-NEXT: .L100$pb:8238; LINUX-32-PIC-NEXT: popl %ecx8239; LINUX-32-PIC-NEXT: .Ltmp100:8240; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp100-.L100$pb), %ecx8241; LINUX-32-PIC-NEXT: movl $262144, %eax # imm = 0x400008242; LINUX-32-PIC-NEXT: addl dst@GOT(%ecx), %eax8243; LINUX-32-PIC-NEXT: retl8244;8245; LINUX-64-PIC-LABEL: bam01:8246; LINUX-64-PIC: # %bb.0: # %entry8247; LINUX-64-PIC-NEXT: movl $262144, %eax # imm = 0x400008248; LINUX-64-PIC-NEXT: addq dst@GOTPCREL(%rip), %rax8249; LINUX-64-PIC-NEXT: retq8250;8251; DARWIN-32-STATIC-LABEL: bam01:8252; DARWIN-32-STATIC: ## %bb.0: ## %entry8253; DARWIN-32-STATIC-NEXT: movl $_dst+262144, %eax8254; DARWIN-32-STATIC-NEXT: retl8255;8256; DARWIN-32-DYNAMIC-LABEL: bam01:8257; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry8258; DARWIN-32-DYNAMIC-NEXT: movl $262144, %eax ## imm = 0x400008259; DARWIN-32-DYNAMIC-NEXT: addl L_dst$non_lazy_ptr, %eax8260; DARWIN-32-DYNAMIC-NEXT: retl8261;8262; DARWIN-32-PIC-LABEL: bam01:8263; DARWIN-32-PIC: ## %bb.0: ## %entry8264; DARWIN-32-PIC-NEXT: calll L100$pb8265; DARWIN-32-PIC-NEXT: L100$pb:8266; DARWIN-32-PIC-NEXT: popl %ecx8267; DARWIN-32-PIC-NEXT: movl $262144, %eax ## imm = 0x400008268; DARWIN-32-PIC-NEXT: addl L_dst$non_lazy_ptr-L100$pb(%ecx), %eax8269; DARWIN-32-PIC-NEXT: retl8270;8271; DARWIN-64-STATIC-LABEL: bam01:8272; DARWIN-64-STATIC: ## %bb.0: ## %entry8273; DARWIN-64-STATIC-NEXT: movl $262144, %eax ## imm = 0x400008274; DARWIN-64-STATIC-NEXT: addq _dst@GOTPCREL(%rip), %rax8275; DARWIN-64-STATIC-NEXT: retq8276;8277; DARWIN-64-DYNAMIC-LABEL: bam01:8278; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry8279; DARWIN-64-DYNAMIC-NEXT: movl $262144, %eax ## imm = 0x400008280; DARWIN-64-DYNAMIC-NEXT: addq _dst@GOTPCREL(%rip), %rax8281; DARWIN-64-DYNAMIC-NEXT: retq8282;8283; DARWIN-64-PIC-LABEL: bam01:8284; DARWIN-64-PIC: ## %bb.0: ## %entry8285; DARWIN-64-PIC-NEXT: movl $262144, %eax ## imm = 0x400008286; DARWIN-64-PIC-NEXT: addq _dst@GOTPCREL(%rip), %rax8287; DARWIN-64-PIC-NEXT: retq8288 8289entry:8290 ret ptr getelementptr ([131072 x i32], ptr @dst, i32 0, i64 65536)8291}8292 8293define dso_local ptr @bxm01() nounwind {8294; LINUX-64-STATIC-LABEL: bxm01:8295; LINUX-64-STATIC: # %bb.0: # %entry8296; LINUX-64-STATIC-NEXT: movl $262144, %eax # imm = 0x400008297; LINUX-64-STATIC-NEXT: addq xdst@GOTPCREL(%rip), %rax8298; LINUX-64-STATIC-NEXT: retq8299;8300; LINUX-32-STATIC-LABEL: bxm01:8301; LINUX-32-STATIC: # %bb.0: # %entry8302; LINUX-32-STATIC-NEXT: leal xdst+262144, %eax8303; LINUX-32-STATIC-NEXT: retl8304;8305; LINUX-32-PIC-LABEL: bxm01:8306; LINUX-32-PIC: # %bb.0: # %entry8307; LINUX-32-PIC-NEXT: calll .L101$pb8308; LINUX-32-PIC-NEXT: .L101$pb:8309; LINUX-32-PIC-NEXT: popl %ecx8310; LINUX-32-PIC-NEXT: .Ltmp101:8311; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp101-.L101$pb), %ecx8312; LINUX-32-PIC-NEXT: movl $262144, %eax # imm = 0x400008313; LINUX-32-PIC-NEXT: addl xdst@GOT(%ecx), %eax8314; LINUX-32-PIC-NEXT: retl8315;8316; LINUX-64-PIC-LABEL: bxm01:8317; LINUX-64-PIC: # %bb.0: # %entry8318; LINUX-64-PIC-NEXT: movl $262144, %eax # imm = 0x400008319; LINUX-64-PIC-NEXT: addq xdst@GOTPCREL(%rip), %rax8320; LINUX-64-PIC-NEXT: retq8321;8322; DARWIN-32-STATIC-LABEL: bxm01:8323; DARWIN-32-STATIC: ## %bb.0: ## %entry8324; DARWIN-32-STATIC-NEXT: movl $_xdst+262144, %eax8325; DARWIN-32-STATIC-NEXT: retl8326;8327; DARWIN-32-DYNAMIC-LABEL: bxm01:8328; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry8329; DARWIN-32-DYNAMIC-NEXT: movl $262144, %eax ## imm = 0x400008330; DARWIN-32-DYNAMIC-NEXT: addl L_xdst$non_lazy_ptr, %eax8331; DARWIN-32-DYNAMIC-NEXT: retl8332;8333; DARWIN-32-PIC-LABEL: bxm01:8334; DARWIN-32-PIC: ## %bb.0: ## %entry8335; DARWIN-32-PIC-NEXT: calll L101$pb8336; DARWIN-32-PIC-NEXT: L101$pb:8337; DARWIN-32-PIC-NEXT: popl %ecx8338; DARWIN-32-PIC-NEXT: movl $262144, %eax ## imm = 0x400008339; DARWIN-32-PIC-NEXT: addl L_xdst$non_lazy_ptr-L101$pb(%ecx), %eax8340; DARWIN-32-PIC-NEXT: retl8341;8342; DARWIN-64-STATIC-LABEL: bxm01:8343; DARWIN-64-STATIC: ## %bb.0: ## %entry8344; DARWIN-64-STATIC-NEXT: movl $262144, %eax ## imm = 0x400008345; DARWIN-64-STATIC-NEXT: addq _xdst@GOTPCREL(%rip), %rax8346; DARWIN-64-STATIC-NEXT: retq8347;8348; DARWIN-64-DYNAMIC-LABEL: bxm01:8349; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry8350; DARWIN-64-DYNAMIC-NEXT: movl $262144, %eax ## imm = 0x400008351; DARWIN-64-DYNAMIC-NEXT: addq _xdst@GOTPCREL(%rip), %rax8352; DARWIN-64-DYNAMIC-NEXT: retq8353;8354; DARWIN-64-PIC-LABEL: bxm01:8355; DARWIN-64-PIC: ## %bb.0: ## %entry8356; DARWIN-64-PIC-NEXT: movl $262144, %eax ## imm = 0x400008357; DARWIN-64-PIC-NEXT: addq _xdst@GOTPCREL(%rip), %rax8358; DARWIN-64-PIC-NEXT: retq8359 8360entry:8361 ret ptr getelementptr ([32 x i32], ptr @xdst, i32 0, i64 65536)8362}8363 8364define dso_local ptr @bam02() nounwind {8365; LINUX-64-STATIC-LABEL: bam02:8366; LINUX-64-STATIC: # %bb.0: # %entry8367; LINUX-64-STATIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx8368; LINUX-64-STATIC-NEXT: movl $262144, %eax # imm = 0x400008369; LINUX-64-STATIC-NEXT: addq (%rcx), %rax8370; LINUX-64-STATIC-NEXT: retq8371;8372; LINUX-32-STATIC-LABEL: bam02:8373; LINUX-32-STATIC: # %bb.0: # %entry8374; LINUX-32-STATIC-NEXT: movl $262144, %eax # imm = 0x400008375; LINUX-32-STATIC-NEXT: addl ptr, %eax8376; LINUX-32-STATIC-NEXT: retl8377;8378; LINUX-32-PIC-LABEL: bam02:8379; LINUX-32-PIC: # %bb.0: # %entry8380; LINUX-32-PIC-NEXT: calll .L102$pb8381; LINUX-32-PIC-NEXT: .L102$pb:8382; LINUX-32-PIC-NEXT: popl %eax8383; LINUX-32-PIC-NEXT: .Ltmp102:8384; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp102-.L102$pb), %eax8385; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %ecx8386; LINUX-32-PIC-NEXT: movl $262144, %eax # imm = 0x400008387; LINUX-32-PIC-NEXT: addl (%ecx), %eax8388; LINUX-32-PIC-NEXT: retl8389;8390; LINUX-64-PIC-LABEL: bam02:8391; LINUX-64-PIC: # %bb.0: # %entry8392; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx8393; LINUX-64-PIC-NEXT: movl $262144, %eax # imm = 0x400008394; LINUX-64-PIC-NEXT: addq (%rcx), %rax8395; LINUX-64-PIC-NEXT: retq8396;8397; DARWIN-32-STATIC-LABEL: bam02:8398; DARWIN-32-STATIC: ## %bb.0: ## %entry8399; DARWIN-32-STATIC-NEXT: movl $262144, %eax ## imm = 0x400008400; DARWIN-32-STATIC-NEXT: addl _ptr, %eax8401; DARWIN-32-STATIC-NEXT: retl8402;8403; DARWIN-32-DYNAMIC-LABEL: bam02:8404; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry8405; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx8406; DARWIN-32-DYNAMIC-NEXT: movl $262144, %eax ## imm = 0x400008407; DARWIN-32-DYNAMIC-NEXT: addl (%ecx), %eax8408; DARWIN-32-DYNAMIC-NEXT: retl8409;8410; DARWIN-32-PIC-LABEL: bam02:8411; DARWIN-32-PIC: ## %bb.0: ## %entry8412; DARWIN-32-PIC-NEXT: calll L102$pb8413; DARWIN-32-PIC-NEXT: L102$pb:8414; DARWIN-32-PIC-NEXT: popl %eax8415; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L102$pb(%eax), %ecx8416; DARWIN-32-PIC-NEXT: movl $262144, %eax ## imm = 0x400008417; DARWIN-32-PIC-NEXT: addl (%ecx), %eax8418; DARWIN-32-PIC-NEXT: retl8419;8420; DARWIN-64-STATIC-LABEL: bam02:8421; DARWIN-64-STATIC: ## %bb.0: ## %entry8422; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx8423; DARWIN-64-STATIC-NEXT: movl $262144, %eax ## imm = 0x400008424; DARWIN-64-STATIC-NEXT: addq (%rcx), %rax8425; DARWIN-64-STATIC-NEXT: retq8426;8427; DARWIN-64-DYNAMIC-LABEL: bam02:8428; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry8429; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx8430; DARWIN-64-DYNAMIC-NEXT: movl $262144, %eax ## imm = 0x400008431; DARWIN-64-DYNAMIC-NEXT: addq (%rcx), %rax8432; DARWIN-64-DYNAMIC-NEXT: retq8433;8434; DARWIN-64-PIC-LABEL: bam02:8435; DARWIN-64-PIC: ## %bb.0: ## %entry8436; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx8437; DARWIN-64-PIC-NEXT: movl $262144, %eax ## imm = 0x400008438; DARWIN-64-PIC-NEXT: addq (%rcx), %rax8439; DARWIN-64-PIC-NEXT: retq8440 8441entry:8442 %0 = load ptr, ptr @ptr, align 88443 %1 = getelementptr i32, ptr %0, i64 655368444 ret ptr %18445}8446 8447define dso_local ptr @bam03() nounwind {8448; LINUX-64-STATIC-LABEL: bam03:8449; LINUX-64-STATIC: # %bb.0: # %entry8450; LINUX-64-STATIC-NEXT: movl $dsrc+262144, %eax8451; LINUX-64-STATIC-NEXT: retq8452;8453; LINUX-32-STATIC-LABEL: bam03:8454; LINUX-32-STATIC: # %bb.0: # %entry8455; LINUX-32-STATIC-NEXT: movl $dsrc+262144, %eax8456; LINUX-32-STATIC-NEXT: retl8457;8458; LINUX-32-PIC-LABEL: bam03:8459; LINUX-32-PIC: # %bb.0: # %entry8460; LINUX-32-PIC-NEXT: calll .L103$pb8461; LINUX-32-PIC-NEXT: .L103$pb:8462; LINUX-32-PIC-NEXT: popl %eax8463; LINUX-32-PIC-NEXT: .Ltmp103:8464; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp103-.L103$pb), %eax8465; LINUX-32-PIC-NEXT: leal .Ldsrc$local@GOTOFF+262144(%eax), %eax8466; LINUX-32-PIC-NEXT: retl8467;8468; LINUX-64-PIC-LABEL: bam03:8469; LINUX-64-PIC: # %bb.0: # %entry8470; LINUX-64-PIC-NEXT: leaq .Ldsrc$local+262144(%rip), %rax8471; LINUX-64-PIC-NEXT: retq8472;8473; DARWIN-32-STATIC-LABEL: bam03:8474; DARWIN-32-STATIC: ## %bb.0: ## %entry8475; DARWIN-32-STATIC-NEXT: movl $_dsrc+262144, %eax8476; DARWIN-32-STATIC-NEXT: retl8477;8478; DARWIN-32-DYNAMIC-LABEL: bam03:8479; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry8480; DARWIN-32-DYNAMIC-NEXT: movl $_dsrc+262144, %eax8481; DARWIN-32-DYNAMIC-NEXT: retl8482;8483; DARWIN-32-PIC-LABEL: bam03:8484; DARWIN-32-PIC: ## %bb.0: ## %entry8485; DARWIN-32-PIC-NEXT: calll L103$pb8486; DARWIN-32-PIC-NEXT: L103$pb:8487; DARWIN-32-PIC-NEXT: popl %eax8488; DARWIN-32-PIC-NEXT: leal _dsrc-L103$pb+262144(%eax), %eax8489; DARWIN-32-PIC-NEXT: retl8490;8491; DARWIN-64-STATIC-LABEL: bam03:8492; DARWIN-64-STATIC: ## %bb.0: ## %entry8493; DARWIN-64-STATIC-NEXT: leaq _dsrc+262144(%rip), %rax8494; DARWIN-64-STATIC-NEXT: retq8495;8496; DARWIN-64-DYNAMIC-LABEL: bam03:8497; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry8498; DARWIN-64-DYNAMIC-NEXT: leaq _dsrc+262144(%rip), %rax8499; DARWIN-64-DYNAMIC-NEXT: retq8500;8501; DARWIN-64-PIC-LABEL: bam03:8502; DARWIN-64-PIC: ## %bb.0: ## %entry8503; DARWIN-64-PIC-NEXT: leaq _dsrc+262144(%rip), %rax8504; DARWIN-64-PIC-NEXT: retq8505 8506entry:8507 ret ptr getelementptr ([131072 x i32], ptr @dsrc, i32 0, i64 65536)8508}8509 8510define dso_local ptr @bam04() nounwind {8511; LINUX-64-STATIC-LABEL: bam04:8512; LINUX-64-STATIC: # %bb.0: # %entry8513; LINUX-64-STATIC-NEXT: movl $ddst+262144, %eax8514; LINUX-64-STATIC-NEXT: retq8515;8516; LINUX-32-STATIC-LABEL: bam04:8517; LINUX-32-STATIC: # %bb.0: # %entry8518; LINUX-32-STATIC-NEXT: movl $ddst+262144, %eax8519; LINUX-32-STATIC-NEXT: retl8520;8521; LINUX-32-PIC-LABEL: bam04:8522; LINUX-32-PIC: # %bb.0: # %entry8523; LINUX-32-PIC-NEXT: calll .L104$pb8524; LINUX-32-PIC-NEXT: .L104$pb:8525; LINUX-32-PIC-NEXT: popl %eax8526; LINUX-32-PIC-NEXT: .Ltmp104:8527; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp104-.L104$pb), %eax8528; LINUX-32-PIC-NEXT: leal .Lddst$local@GOTOFF+262144(%eax), %eax8529; LINUX-32-PIC-NEXT: retl8530;8531; LINUX-64-PIC-LABEL: bam04:8532; LINUX-64-PIC: # %bb.0: # %entry8533; LINUX-64-PIC-NEXT: leaq .Lddst$local+262144(%rip), %rax8534; LINUX-64-PIC-NEXT: retq8535;8536; DARWIN-32-STATIC-LABEL: bam04:8537; DARWIN-32-STATIC: ## %bb.0: ## %entry8538; DARWIN-32-STATIC-NEXT: movl $_ddst+262144, %eax8539; DARWIN-32-STATIC-NEXT: retl8540;8541; DARWIN-32-DYNAMIC-LABEL: bam04:8542; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry8543; DARWIN-32-DYNAMIC-NEXT: movl $_ddst+262144, %eax8544; DARWIN-32-DYNAMIC-NEXT: retl8545;8546; DARWIN-32-PIC-LABEL: bam04:8547; DARWIN-32-PIC: ## %bb.0: ## %entry8548; DARWIN-32-PIC-NEXT: calll L104$pb8549; DARWIN-32-PIC-NEXT: L104$pb:8550; DARWIN-32-PIC-NEXT: popl %eax8551; DARWIN-32-PIC-NEXT: leal _ddst-L104$pb+262144(%eax), %eax8552; DARWIN-32-PIC-NEXT: retl8553;8554; DARWIN-64-STATIC-LABEL: bam04:8555; DARWIN-64-STATIC: ## %bb.0: ## %entry8556; DARWIN-64-STATIC-NEXT: leaq _ddst+262144(%rip), %rax8557; DARWIN-64-STATIC-NEXT: retq8558;8559; DARWIN-64-DYNAMIC-LABEL: bam04:8560; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry8561; DARWIN-64-DYNAMIC-NEXT: leaq _ddst+262144(%rip), %rax8562; DARWIN-64-DYNAMIC-NEXT: retq8563;8564; DARWIN-64-PIC-LABEL: bam04:8565; DARWIN-64-PIC: ## %bb.0: ## %entry8566; DARWIN-64-PIC-NEXT: leaq _ddst+262144(%rip), %rax8567; DARWIN-64-PIC-NEXT: retq8568 8569entry:8570 ret ptr getelementptr ([131072 x i32], ptr @ddst, i32 0, i64 65536)8571}8572 8573define dso_local ptr @bam05() nounwind {8574; LINUX-64-STATIC-LABEL: bam05:8575; LINUX-64-STATIC: # %bb.0: # %entry8576; LINUX-64-STATIC-NEXT: movl $262144, %eax # imm = 0x400008577; LINUX-64-STATIC-NEXT: addq dptr(%rip), %rax8578; LINUX-64-STATIC-NEXT: retq8579;8580; LINUX-32-STATIC-LABEL: bam05:8581; LINUX-32-STATIC: # %bb.0: # %entry8582; LINUX-32-STATIC-NEXT: movl $262144, %eax # imm = 0x400008583; LINUX-32-STATIC-NEXT: addl dptr, %eax8584; LINUX-32-STATIC-NEXT: retl8585;8586; LINUX-32-PIC-LABEL: bam05:8587; LINUX-32-PIC: # %bb.0: # %entry8588; LINUX-32-PIC-NEXT: calll .L105$pb8589; LINUX-32-PIC-NEXT: .L105$pb:8590; LINUX-32-PIC-NEXT: popl %ecx8591; LINUX-32-PIC-NEXT: .Ltmp105:8592; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp105-.L105$pb), %ecx8593; LINUX-32-PIC-NEXT: movl $262144, %eax # imm = 0x400008594; LINUX-32-PIC-NEXT: addl .Ldptr$local@GOTOFF(%ecx), %eax8595; LINUX-32-PIC-NEXT: retl8596;8597; LINUX-64-PIC-LABEL: bam05:8598; LINUX-64-PIC: # %bb.0: # %entry8599; LINUX-64-PIC-NEXT: movl $262144, %eax # imm = 0x400008600; LINUX-64-PIC-NEXT: addq .Ldptr$local(%rip), %rax8601; LINUX-64-PIC-NEXT: retq8602;8603; DARWIN-32-STATIC-LABEL: bam05:8604; DARWIN-32-STATIC: ## %bb.0: ## %entry8605; DARWIN-32-STATIC-NEXT: movl $262144, %eax ## imm = 0x400008606; DARWIN-32-STATIC-NEXT: addl _dptr, %eax8607; DARWIN-32-STATIC-NEXT: retl8608;8609; DARWIN-32-DYNAMIC-LABEL: bam05:8610; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry8611; DARWIN-32-DYNAMIC-NEXT: movl $262144, %eax ## imm = 0x400008612; DARWIN-32-DYNAMIC-NEXT: addl _dptr, %eax8613; DARWIN-32-DYNAMIC-NEXT: retl8614;8615; DARWIN-32-PIC-LABEL: bam05:8616; DARWIN-32-PIC: ## %bb.0: ## %entry8617; DARWIN-32-PIC-NEXT: calll L105$pb8618; DARWIN-32-PIC-NEXT: L105$pb:8619; DARWIN-32-PIC-NEXT: popl %ecx8620; DARWIN-32-PIC-NEXT: movl $262144, %eax ## imm = 0x400008621; DARWIN-32-PIC-NEXT: addl _dptr-L105$pb(%ecx), %eax8622; DARWIN-32-PIC-NEXT: retl8623;8624; DARWIN-64-STATIC-LABEL: bam05:8625; DARWIN-64-STATIC: ## %bb.0: ## %entry8626; DARWIN-64-STATIC-NEXT: movl $262144, %eax ## imm = 0x400008627; DARWIN-64-STATIC-NEXT: addq _dptr(%rip), %rax8628; DARWIN-64-STATIC-NEXT: retq8629;8630; DARWIN-64-DYNAMIC-LABEL: bam05:8631; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry8632; DARWIN-64-DYNAMIC-NEXT: movl $262144, %eax ## imm = 0x400008633; DARWIN-64-DYNAMIC-NEXT: addq _dptr(%rip), %rax8634; DARWIN-64-DYNAMIC-NEXT: retq8635;8636; DARWIN-64-PIC-LABEL: bam05:8637; DARWIN-64-PIC: ## %bb.0: ## %entry8638; DARWIN-64-PIC-NEXT: movl $262144, %eax ## imm = 0x400008639; DARWIN-64-PIC-NEXT: addq _dptr(%rip), %rax8640; DARWIN-64-PIC-NEXT: retq8641 8642entry:8643 %0 = load ptr, ptr @dptr, align 88644 %1 = getelementptr i32, ptr %0, i64 655368645 ret ptr %18646}8647 8648define dso_local ptr @bam06() nounwind {8649; LINUX-64-STATIC-LABEL: bam06:8650; LINUX-64-STATIC: # %bb.0: # %entry8651; LINUX-64-STATIC-NEXT: movl $lsrc+262144, %eax8652; LINUX-64-STATIC-NEXT: retq8653;8654; LINUX-32-STATIC-LABEL: bam06:8655; LINUX-32-STATIC: # %bb.0: # %entry8656; LINUX-32-STATIC-NEXT: movl $lsrc+262144, %eax8657; LINUX-32-STATIC-NEXT: retl8658;8659; LINUX-32-PIC-LABEL: bam06:8660; LINUX-32-PIC: # %bb.0: # %entry8661; LINUX-32-PIC-NEXT: calll .L106$pb8662; LINUX-32-PIC-NEXT: .L106$pb:8663; LINUX-32-PIC-NEXT: popl %eax8664; LINUX-32-PIC-NEXT: .Ltmp106:8665; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp106-.L106$pb), %eax8666; LINUX-32-PIC-NEXT: leal lsrc@GOTOFF+262144(%eax), %eax8667; LINUX-32-PIC-NEXT: retl8668;8669; LINUX-64-PIC-LABEL: bam06:8670; LINUX-64-PIC: # %bb.0: # %entry8671; LINUX-64-PIC-NEXT: leaq lsrc+262144(%rip), %rax8672; LINUX-64-PIC-NEXT: retq8673;8674; DARWIN-32-STATIC-LABEL: bam06:8675; DARWIN-32-STATIC: ## %bb.0: ## %entry8676; DARWIN-32-STATIC-NEXT: movl $_lsrc+262144, %eax8677; DARWIN-32-STATIC-NEXT: retl8678;8679; DARWIN-32-DYNAMIC-LABEL: bam06:8680; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry8681; DARWIN-32-DYNAMIC-NEXT: movl $_lsrc+262144, %eax8682; DARWIN-32-DYNAMIC-NEXT: retl8683;8684; DARWIN-32-PIC-LABEL: bam06:8685; DARWIN-32-PIC: ## %bb.0: ## %entry8686; DARWIN-32-PIC-NEXT: calll L106$pb8687; DARWIN-32-PIC-NEXT: L106$pb:8688; DARWIN-32-PIC-NEXT: popl %eax8689; DARWIN-32-PIC-NEXT: leal _lsrc-L106$pb+262144(%eax), %eax8690; DARWIN-32-PIC-NEXT: retl8691;8692; DARWIN-64-STATIC-LABEL: bam06:8693; DARWIN-64-STATIC: ## %bb.0: ## %entry8694; DARWIN-64-STATIC-NEXT: leaq _lsrc+262144(%rip), %rax8695; DARWIN-64-STATIC-NEXT: retq8696;8697; DARWIN-64-DYNAMIC-LABEL: bam06:8698; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry8699; DARWIN-64-DYNAMIC-NEXT: leaq _lsrc+262144(%rip), %rax8700; DARWIN-64-DYNAMIC-NEXT: retq8701;8702; DARWIN-64-PIC-LABEL: bam06:8703; DARWIN-64-PIC: ## %bb.0: ## %entry8704; DARWIN-64-PIC-NEXT: leaq _lsrc+262144(%rip), %rax8705; DARWIN-64-PIC-NEXT: retq8706 8707entry:8708 ret ptr getelementptr ([131072 x i32], ptr @lsrc, i32 0, i64 65536)8709}8710 8711define dso_local ptr @bam07() nounwind {8712; LINUX-64-STATIC-LABEL: bam07:8713; LINUX-64-STATIC: # %bb.0: # %entry8714; LINUX-64-STATIC-NEXT: movl $ldst+262144, %eax8715; LINUX-64-STATIC-NEXT: retq8716;8717; LINUX-32-STATIC-LABEL: bam07:8718; LINUX-32-STATIC: # %bb.0: # %entry8719; LINUX-32-STATIC-NEXT: movl $ldst+262144, %eax8720; LINUX-32-STATIC-NEXT: retl8721;8722; LINUX-32-PIC-LABEL: bam07:8723; LINUX-32-PIC: # %bb.0: # %entry8724; LINUX-32-PIC-NEXT: calll .L107$pb8725; LINUX-32-PIC-NEXT: .L107$pb:8726; LINUX-32-PIC-NEXT: popl %eax8727; LINUX-32-PIC-NEXT: .Ltmp107:8728; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp107-.L107$pb), %eax8729; LINUX-32-PIC-NEXT: leal ldst@GOTOFF+262144(%eax), %eax8730; LINUX-32-PIC-NEXT: retl8731;8732; LINUX-64-PIC-LABEL: bam07:8733; LINUX-64-PIC: # %bb.0: # %entry8734; LINUX-64-PIC-NEXT: leaq ldst+262144(%rip), %rax8735; LINUX-64-PIC-NEXT: retq8736;8737; DARWIN-32-STATIC-LABEL: bam07:8738; DARWIN-32-STATIC: ## %bb.0: ## %entry8739; DARWIN-32-STATIC-NEXT: movl $_ldst+262144, %eax8740; DARWIN-32-STATIC-NEXT: retl8741;8742; DARWIN-32-DYNAMIC-LABEL: bam07:8743; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry8744; DARWIN-32-DYNAMIC-NEXT: movl $_ldst+262144, %eax8745; DARWIN-32-DYNAMIC-NEXT: retl8746;8747; DARWIN-32-PIC-LABEL: bam07:8748; DARWIN-32-PIC: ## %bb.0: ## %entry8749; DARWIN-32-PIC-NEXT: calll L107$pb8750; DARWIN-32-PIC-NEXT: L107$pb:8751; DARWIN-32-PIC-NEXT: popl %eax8752; DARWIN-32-PIC-NEXT: leal _ldst-L107$pb+262144(%eax), %eax8753; DARWIN-32-PIC-NEXT: retl8754;8755; DARWIN-64-STATIC-LABEL: bam07:8756; DARWIN-64-STATIC: ## %bb.0: ## %entry8757; DARWIN-64-STATIC-NEXT: leaq _ldst+262144(%rip), %rax8758; DARWIN-64-STATIC-NEXT: retq8759;8760; DARWIN-64-DYNAMIC-LABEL: bam07:8761; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry8762; DARWIN-64-DYNAMIC-NEXT: leaq _ldst+262144(%rip), %rax8763; DARWIN-64-DYNAMIC-NEXT: retq8764;8765; DARWIN-64-PIC-LABEL: bam07:8766; DARWIN-64-PIC: ## %bb.0: ## %entry8767; DARWIN-64-PIC-NEXT: leaq _ldst+262144(%rip), %rax8768; DARWIN-64-PIC-NEXT: retq8769 8770entry:8771 ret ptr getelementptr ([131072 x i32], ptr @ldst, i32 0, i64 65536)8772}8773 8774define dso_local ptr @bam08() nounwind {8775; LINUX-64-STATIC-LABEL: bam08:8776; LINUX-64-STATIC: # %bb.0: # %entry8777; LINUX-64-STATIC-NEXT: movl $262144, %eax # imm = 0x400008778; LINUX-64-STATIC-NEXT: addq lptr(%rip), %rax8779; LINUX-64-STATIC-NEXT: retq8780;8781; LINUX-32-STATIC-LABEL: bam08:8782; LINUX-32-STATIC: # %bb.0: # %entry8783; LINUX-32-STATIC-NEXT: movl $262144, %eax # imm = 0x400008784; LINUX-32-STATIC-NEXT: addl lptr, %eax8785; LINUX-32-STATIC-NEXT: retl8786;8787; LINUX-32-PIC-LABEL: bam08:8788; LINUX-32-PIC: # %bb.0: # %entry8789; LINUX-32-PIC-NEXT: calll .L108$pb8790; LINUX-32-PIC-NEXT: .L108$pb:8791; LINUX-32-PIC-NEXT: popl %ecx8792; LINUX-32-PIC-NEXT: .Ltmp108:8793; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp108-.L108$pb), %ecx8794; LINUX-32-PIC-NEXT: movl $262144, %eax # imm = 0x400008795; LINUX-32-PIC-NEXT: addl lptr@GOTOFF(%ecx), %eax8796; LINUX-32-PIC-NEXT: retl8797;8798; LINUX-64-PIC-LABEL: bam08:8799; LINUX-64-PIC: # %bb.0: # %entry8800; LINUX-64-PIC-NEXT: movl $262144, %eax # imm = 0x400008801; LINUX-64-PIC-NEXT: addq lptr(%rip), %rax8802; LINUX-64-PIC-NEXT: retq8803;8804; DARWIN-32-STATIC-LABEL: bam08:8805; DARWIN-32-STATIC: ## %bb.0: ## %entry8806; DARWIN-32-STATIC-NEXT: movl $262144, %eax ## imm = 0x400008807; DARWIN-32-STATIC-NEXT: addl _lptr, %eax8808; DARWIN-32-STATIC-NEXT: retl8809;8810; DARWIN-32-DYNAMIC-LABEL: bam08:8811; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry8812; DARWIN-32-DYNAMIC-NEXT: movl $262144, %eax ## imm = 0x400008813; DARWIN-32-DYNAMIC-NEXT: addl _lptr, %eax8814; DARWIN-32-DYNAMIC-NEXT: retl8815;8816; DARWIN-32-PIC-LABEL: bam08:8817; DARWIN-32-PIC: ## %bb.0: ## %entry8818; DARWIN-32-PIC-NEXT: calll L108$pb8819; DARWIN-32-PIC-NEXT: L108$pb:8820; DARWIN-32-PIC-NEXT: popl %ecx8821; DARWIN-32-PIC-NEXT: movl $262144, %eax ## imm = 0x400008822; DARWIN-32-PIC-NEXT: addl _lptr-L108$pb(%ecx), %eax8823; DARWIN-32-PIC-NEXT: retl8824;8825; DARWIN-64-STATIC-LABEL: bam08:8826; DARWIN-64-STATIC: ## %bb.0: ## %entry8827; DARWIN-64-STATIC-NEXT: movl $262144, %eax ## imm = 0x400008828; DARWIN-64-STATIC-NEXT: addq _lptr(%rip), %rax8829; DARWIN-64-STATIC-NEXT: retq8830;8831; DARWIN-64-DYNAMIC-LABEL: bam08:8832; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry8833; DARWIN-64-DYNAMIC-NEXT: movl $262144, %eax ## imm = 0x400008834; DARWIN-64-DYNAMIC-NEXT: addq _lptr(%rip), %rax8835; DARWIN-64-DYNAMIC-NEXT: retq8836;8837; DARWIN-64-PIC-LABEL: bam08:8838; DARWIN-64-PIC: ## %bb.0: ## %entry8839; DARWIN-64-PIC-NEXT: movl $262144, %eax ## imm = 0x400008840; DARWIN-64-PIC-NEXT: addq _lptr(%rip), %rax8841; DARWIN-64-PIC-NEXT: retq8842 8843entry:8844 %0 = load ptr, ptr @lptr, align 88845 %1 = getelementptr i32, ptr %0, i64 655368846 ret ptr %18847}8848 8849define dso_local ptr @cat00(i64 %i) nounwind {8850; LINUX-64-STATIC-LABEL: cat00:8851; LINUX-64-STATIC: # %bb.0: # %entry8852; LINUX-64-STATIC-NEXT: movq src@GOTPCREL(%rip), %rax8853; LINUX-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax8854; LINUX-64-STATIC-NEXT: retq8855;8856; LINUX-32-STATIC-LABEL: cat00:8857; LINUX-32-STATIC: # %bb.0: # %entry8858; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax8859; LINUX-32-STATIC-NEXT: leal src+64(,%eax,4), %eax8860; LINUX-32-STATIC-NEXT: retl8861;8862; LINUX-32-PIC-LABEL: cat00:8863; LINUX-32-PIC: # %bb.0: # %entry8864; LINUX-32-PIC-NEXT: calll .L109$pb8865; LINUX-32-PIC-NEXT: .L109$pb:8866; LINUX-32-PIC-NEXT: popl %eax8867; LINUX-32-PIC-NEXT: .Ltmp109:8868; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp109-.L109$pb), %eax8869; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx8870; LINUX-32-PIC-NEXT: movl src@GOT(%eax), %eax8871; LINUX-32-PIC-NEXT: leal 64(%eax,%ecx,4), %eax8872; LINUX-32-PIC-NEXT: retl8873;8874; LINUX-64-PIC-LABEL: cat00:8875; LINUX-64-PIC: # %bb.0: # %entry8876; LINUX-64-PIC-NEXT: movq src@GOTPCREL(%rip), %rax8877; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax8878; LINUX-64-PIC-NEXT: retq8879;8880; DARWIN-32-STATIC-LABEL: cat00:8881; DARWIN-32-STATIC: ## %bb.0: ## %entry8882; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax8883; DARWIN-32-STATIC-NEXT: leal _src+64(,%eax,4), %eax8884; DARWIN-32-STATIC-NEXT: retl8885;8886; DARWIN-32-DYNAMIC-LABEL: cat00:8887; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry8888; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax8889; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %ecx8890; DARWIN-32-DYNAMIC-NEXT: leal 64(%ecx,%eax,4), %eax8891; DARWIN-32-DYNAMIC-NEXT: retl8892;8893; DARWIN-32-PIC-LABEL: cat00:8894; DARWIN-32-PIC: ## %bb.0: ## %entry8895; DARWIN-32-PIC-NEXT: calll L109$pb8896; DARWIN-32-PIC-NEXT: L109$pb:8897; DARWIN-32-PIC-NEXT: popl %eax8898; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx8899; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L109$pb(%eax), %eax8900; DARWIN-32-PIC-NEXT: leal 64(%eax,%ecx,4), %eax8901; DARWIN-32-PIC-NEXT: retl8902;8903; DARWIN-64-STATIC-LABEL: cat00:8904; DARWIN-64-STATIC: ## %bb.0: ## %entry8905; DARWIN-64-STATIC-NEXT: movq _src@GOTPCREL(%rip), %rax8906; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax8907; DARWIN-64-STATIC-NEXT: retq8908;8909; DARWIN-64-DYNAMIC-LABEL: cat00:8910; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry8911; DARWIN-64-DYNAMIC-NEXT: movq _src@GOTPCREL(%rip), %rax8912; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax8913; DARWIN-64-DYNAMIC-NEXT: retq8914;8915; DARWIN-64-PIC-LABEL: cat00:8916; DARWIN-64-PIC: ## %bb.0: ## %entry8917; DARWIN-64-PIC-NEXT: movq _src@GOTPCREL(%rip), %rax8918; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax8919; DARWIN-64-PIC-NEXT: retq8920 8921entry:8922 %0 = add i64 %i, 168923 %1 = getelementptr [131072 x i32], ptr @src, i64 0, i64 %08924 ret ptr %18925}8926 8927define dso_local ptr @cxt00(i64 %i) nounwind {8928; LINUX-64-STATIC-LABEL: cxt00:8929; LINUX-64-STATIC: # %bb.0: # %entry8930; LINUX-64-STATIC-NEXT: movq xsrc@GOTPCREL(%rip), %rax8931; LINUX-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax8932; LINUX-64-STATIC-NEXT: retq8933;8934; LINUX-32-STATIC-LABEL: cxt00:8935; LINUX-32-STATIC: # %bb.0: # %entry8936; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax8937; LINUX-32-STATIC-NEXT: leal xsrc+64(,%eax,4), %eax8938; LINUX-32-STATIC-NEXT: retl8939;8940; LINUX-32-PIC-LABEL: cxt00:8941; LINUX-32-PIC: # %bb.0: # %entry8942; LINUX-32-PIC-NEXT: calll .L110$pb8943; LINUX-32-PIC-NEXT: .L110$pb:8944; LINUX-32-PIC-NEXT: popl %eax8945; LINUX-32-PIC-NEXT: .Ltmp110:8946; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp110-.L110$pb), %eax8947; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx8948; LINUX-32-PIC-NEXT: movl xsrc@GOT(%eax), %eax8949; LINUX-32-PIC-NEXT: leal 64(%eax,%ecx,4), %eax8950; LINUX-32-PIC-NEXT: retl8951;8952; LINUX-64-PIC-LABEL: cxt00:8953; LINUX-64-PIC: # %bb.0: # %entry8954; LINUX-64-PIC-NEXT: movq xsrc@GOTPCREL(%rip), %rax8955; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax8956; LINUX-64-PIC-NEXT: retq8957;8958; DARWIN-32-STATIC-LABEL: cxt00:8959; DARWIN-32-STATIC: ## %bb.0: ## %entry8960; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax8961; DARWIN-32-STATIC-NEXT: leal _xsrc+64(,%eax,4), %eax8962; DARWIN-32-STATIC-NEXT: retl8963;8964; DARWIN-32-DYNAMIC-LABEL: cxt00:8965; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry8966; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax8967; DARWIN-32-DYNAMIC-NEXT: movl L_xsrc$non_lazy_ptr, %ecx8968; DARWIN-32-DYNAMIC-NEXT: leal 64(%ecx,%eax,4), %eax8969; DARWIN-32-DYNAMIC-NEXT: retl8970;8971; DARWIN-32-PIC-LABEL: cxt00:8972; DARWIN-32-PIC: ## %bb.0: ## %entry8973; DARWIN-32-PIC-NEXT: calll L110$pb8974; DARWIN-32-PIC-NEXT: L110$pb:8975; DARWIN-32-PIC-NEXT: popl %eax8976; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx8977; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-L110$pb(%eax), %eax8978; DARWIN-32-PIC-NEXT: leal 64(%eax,%ecx,4), %eax8979; DARWIN-32-PIC-NEXT: retl8980;8981; DARWIN-64-STATIC-LABEL: cxt00:8982; DARWIN-64-STATIC: ## %bb.0: ## %entry8983; DARWIN-64-STATIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax8984; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax8985; DARWIN-64-STATIC-NEXT: retq8986;8987; DARWIN-64-DYNAMIC-LABEL: cxt00:8988; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry8989; DARWIN-64-DYNAMIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax8990; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax8991; DARWIN-64-DYNAMIC-NEXT: retq8992;8993; DARWIN-64-PIC-LABEL: cxt00:8994; DARWIN-64-PIC: ## %bb.0: ## %entry8995; DARWIN-64-PIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax8996; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax8997; DARWIN-64-PIC-NEXT: retq8998 8999entry:9000 %0 = add i64 %i, 169001 %1 = getelementptr [32 x i32], ptr @xsrc, i64 0, i64 %09002 ret ptr %19003}9004 9005define dso_local ptr @cat01(i64 %i) nounwind {9006; LINUX-64-STATIC-LABEL: cat01:9007; LINUX-64-STATIC: # %bb.0: # %entry9008; LINUX-64-STATIC-NEXT: movq dst@GOTPCREL(%rip), %rax9009; LINUX-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax9010; LINUX-64-STATIC-NEXT: retq9011;9012; LINUX-32-STATIC-LABEL: cat01:9013; LINUX-32-STATIC: # %bb.0: # %entry9014; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax9015; LINUX-32-STATIC-NEXT: leal dst+64(,%eax,4), %eax9016; LINUX-32-STATIC-NEXT: retl9017;9018; LINUX-32-PIC-LABEL: cat01:9019; LINUX-32-PIC: # %bb.0: # %entry9020; LINUX-32-PIC-NEXT: calll .L111$pb9021; LINUX-32-PIC-NEXT: .L111$pb:9022; LINUX-32-PIC-NEXT: popl %eax9023; LINUX-32-PIC-NEXT: .Ltmp111:9024; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp111-.L111$pb), %eax9025; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx9026; LINUX-32-PIC-NEXT: movl dst@GOT(%eax), %eax9027; LINUX-32-PIC-NEXT: leal 64(%eax,%ecx,4), %eax9028; LINUX-32-PIC-NEXT: retl9029;9030; LINUX-64-PIC-LABEL: cat01:9031; LINUX-64-PIC: # %bb.0: # %entry9032; LINUX-64-PIC-NEXT: movq dst@GOTPCREL(%rip), %rax9033; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax9034; LINUX-64-PIC-NEXT: retq9035;9036; DARWIN-32-STATIC-LABEL: cat01:9037; DARWIN-32-STATIC: ## %bb.0: ## %entry9038; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax9039; DARWIN-32-STATIC-NEXT: leal _dst+64(,%eax,4), %eax9040; DARWIN-32-STATIC-NEXT: retl9041;9042; DARWIN-32-DYNAMIC-LABEL: cat01:9043; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry9044; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax9045; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, %ecx9046; DARWIN-32-DYNAMIC-NEXT: leal 64(%ecx,%eax,4), %eax9047; DARWIN-32-DYNAMIC-NEXT: retl9048;9049; DARWIN-32-PIC-LABEL: cat01:9050; DARWIN-32-PIC: ## %bb.0: ## %entry9051; DARWIN-32-PIC-NEXT: calll L111$pb9052; DARWIN-32-PIC-NEXT: L111$pb:9053; DARWIN-32-PIC-NEXT: popl %eax9054; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx9055; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L111$pb(%eax), %eax9056; DARWIN-32-PIC-NEXT: leal 64(%eax,%ecx,4), %eax9057; DARWIN-32-PIC-NEXT: retl9058;9059; DARWIN-64-STATIC-LABEL: cat01:9060; DARWIN-64-STATIC: ## %bb.0: ## %entry9061; DARWIN-64-STATIC-NEXT: movq _dst@GOTPCREL(%rip), %rax9062; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax9063; DARWIN-64-STATIC-NEXT: retq9064;9065; DARWIN-64-DYNAMIC-LABEL: cat01:9066; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry9067; DARWIN-64-DYNAMIC-NEXT: movq _dst@GOTPCREL(%rip), %rax9068; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax9069; DARWIN-64-DYNAMIC-NEXT: retq9070;9071; DARWIN-64-PIC-LABEL: cat01:9072; DARWIN-64-PIC: ## %bb.0: ## %entry9073; DARWIN-64-PIC-NEXT: movq _dst@GOTPCREL(%rip), %rax9074; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax9075; DARWIN-64-PIC-NEXT: retq9076 9077entry:9078 %0 = add i64 %i, 169079 %1 = getelementptr [131072 x i32], ptr @dst, i64 0, i64 %09080 ret ptr %19081}9082 9083define dso_local ptr @cxt01(i64 %i) nounwind {9084; LINUX-64-STATIC-LABEL: cxt01:9085; LINUX-64-STATIC: # %bb.0: # %entry9086; LINUX-64-STATIC-NEXT: movq xdst@GOTPCREL(%rip), %rax9087; LINUX-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax9088; LINUX-64-STATIC-NEXT: retq9089;9090; LINUX-32-STATIC-LABEL: cxt01:9091; LINUX-32-STATIC: # %bb.0: # %entry9092; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax9093; LINUX-32-STATIC-NEXT: leal xdst+64(,%eax,4), %eax9094; LINUX-32-STATIC-NEXT: retl9095;9096; LINUX-32-PIC-LABEL: cxt01:9097; LINUX-32-PIC: # %bb.0: # %entry9098; LINUX-32-PIC-NEXT: calll .L112$pb9099; LINUX-32-PIC-NEXT: .L112$pb:9100; LINUX-32-PIC-NEXT: popl %eax9101; LINUX-32-PIC-NEXT: .Ltmp112:9102; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp112-.L112$pb), %eax9103; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx9104; LINUX-32-PIC-NEXT: movl xdst@GOT(%eax), %eax9105; LINUX-32-PIC-NEXT: leal 64(%eax,%ecx,4), %eax9106; LINUX-32-PIC-NEXT: retl9107;9108; LINUX-64-PIC-LABEL: cxt01:9109; LINUX-64-PIC: # %bb.0: # %entry9110; LINUX-64-PIC-NEXT: movq xdst@GOTPCREL(%rip), %rax9111; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax9112; LINUX-64-PIC-NEXT: retq9113;9114; DARWIN-32-STATIC-LABEL: cxt01:9115; DARWIN-32-STATIC: ## %bb.0: ## %entry9116; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax9117; DARWIN-32-STATIC-NEXT: leal _xdst+64(,%eax,4), %eax9118; DARWIN-32-STATIC-NEXT: retl9119;9120; DARWIN-32-DYNAMIC-LABEL: cxt01:9121; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry9122; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax9123; DARWIN-32-DYNAMIC-NEXT: movl L_xdst$non_lazy_ptr, %ecx9124; DARWIN-32-DYNAMIC-NEXT: leal 64(%ecx,%eax,4), %eax9125; DARWIN-32-DYNAMIC-NEXT: retl9126;9127; DARWIN-32-PIC-LABEL: cxt01:9128; DARWIN-32-PIC: ## %bb.0: ## %entry9129; DARWIN-32-PIC-NEXT: calll L112$pb9130; DARWIN-32-PIC-NEXT: L112$pb:9131; DARWIN-32-PIC-NEXT: popl %eax9132; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx9133; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-L112$pb(%eax), %eax9134; DARWIN-32-PIC-NEXT: leal 64(%eax,%ecx,4), %eax9135; DARWIN-32-PIC-NEXT: retl9136;9137; DARWIN-64-STATIC-LABEL: cxt01:9138; DARWIN-64-STATIC: ## %bb.0: ## %entry9139; DARWIN-64-STATIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax9140; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax9141; DARWIN-64-STATIC-NEXT: retq9142;9143; DARWIN-64-DYNAMIC-LABEL: cxt01:9144; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry9145; DARWIN-64-DYNAMIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax9146; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax9147; DARWIN-64-DYNAMIC-NEXT: retq9148;9149; DARWIN-64-PIC-LABEL: cxt01:9150; DARWIN-64-PIC: ## %bb.0: ## %entry9151; DARWIN-64-PIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax9152; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax9153; DARWIN-64-PIC-NEXT: retq9154 9155entry:9156 %0 = add i64 %i, 169157 %1 = getelementptr [32 x i32], ptr @xdst, i64 0, i64 %09158 ret ptr %19159}9160 9161define dso_local ptr @cat02(i64 %i) nounwind {9162; LINUX-64-STATIC-LABEL: cat02:9163; LINUX-64-STATIC: # %bb.0: # %entry9164; LINUX-64-STATIC-NEXT: movq ptr@GOTPCREL(%rip), %rax9165; LINUX-64-STATIC-NEXT: movq (%rax), %rax9166; LINUX-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax9167; LINUX-64-STATIC-NEXT: retq9168;9169; LINUX-32-STATIC-LABEL: cat02:9170; LINUX-32-STATIC: # %bb.0: # %entry9171; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax9172; LINUX-32-STATIC-NEXT: movl ptr, %ecx9173; LINUX-32-STATIC-NEXT: leal 64(%ecx,%eax,4), %eax9174; LINUX-32-STATIC-NEXT: retl9175;9176; LINUX-32-PIC-LABEL: cat02:9177; LINUX-32-PIC: # %bb.0: # %entry9178; LINUX-32-PIC-NEXT: calll .L113$pb9179; LINUX-32-PIC-NEXT: .L113$pb:9180; LINUX-32-PIC-NEXT: popl %eax9181; LINUX-32-PIC-NEXT: .Ltmp113:9182; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp113-.L113$pb), %eax9183; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax9184; LINUX-32-PIC-NEXT: movl (%eax), %eax9185; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx9186; LINUX-32-PIC-NEXT: leal 64(%eax,%ecx,4), %eax9187; LINUX-32-PIC-NEXT: retl9188;9189; LINUX-64-PIC-LABEL: cat02:9190; LINUX-64-PIC: # %bb.0: # %entry9191; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rax9192; LINUX-64-PIC-NEXT: movq (%rax), %rax9193; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax9194; LINUX-64-PIC-NEXT: retq9195;9196; DARWIN-32-STATIC-LABEL: cat02:9197; DARWIN-32-STATIC: ## %bb.0: ## %entry9198; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax9199; DARWIN-32-STATIC-NEXT: movl _ptr, %ecx9200; DARWIN-32-STATIC-NEXT: leal 64(%ecx,%eax,4), %eax9201; DARWIN-32-STATIC-NEXT: retl9202;9203; DARWIN-32-DYNAMIC-LABEL: cat02:9204; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry9205; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %eax9206; DARWIN-32-DYNAMIC-NEXT: movl (%eax), %eax9207; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %ecx9208; DARWIN-32-DYNAMIC-NEXT: leal 64(%eax,%ecx,4), %eax9209; DARWIN-32-DYNAMIC-NEXT: retl9210;9211; DARWIN-32-PIC-LABEL: cat02:9212; DARWIN-32-PIC: ## %bb.0: ## %entry9213; DARWIN-32-PIC-NEXT: calll L113$pb9214; DARWIN-32-PIC-NEXT: L113$pb:9215; DARWIN-32-PIC-NEXT: popl %eax9216; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L113$pb(%eax), %eax9217; DARWIN-32-PIC-NEXT: movl (%eax), %eax9218; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx9219; DARWIN-32-PIC-NEXT: leal 64(%eax,%ecx,4), %eax9220; DARWIN-32-PIC-NEXT: retl9221;9222; DARWIN-64-STATIC-LABEL: cat02:9223; DARWIN-64-STATIC: ## %bb.0: ## %entry9224; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax9225; DARWIN-64-STATIC-NEXT: movq (%rax), %rax9226; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax9227; DARWIN-64-STATIC-NEXT: retq9228;9229; DARWIN-64-DYNAMIC-LABEL: cat02:9230; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry9231; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax9232; DARWIN-64-DYNAMIC-NEXT: movq (%rax), %rax9233; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax9234; DARWIN-64-DYNAMIC-NEXT: retq9235;9236; DARWIN-64-PIC-LABEL: cat02:9237; DARWIN-64-PIC: ## %bb.0: ## %entry9238; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax9239; DARWIN-64-PIC-NEXT: movq (%rax), %rax9240; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax9241; DARWIN-64-PIC-NEXT: retq9242 9243entry:9244 %0 = load ptr, ptr @ptr, align 89245 %1 = add i64 %i, 169246 %2 = getelementptr i32, ptr %0, i64 %19247 ret ptr %29248}9249 9250define dso_local ptr @cat03(i64 %i) nounwind {9251; LINUX-64-STATIC-LABEL: cat03:9252; LINUX-64-STATIC: # %bb.0: # %entry9253; LINUX-64-STATIC-NEXT: leaq dsrc+64(,%rdi,4), %rax9254; LINUX-64-STATIC-NEXT: retq9255;9256; LINUX-32-STATIC-LABEL: cat03:9257; LINUX-32-STATIC: # %bb.0: # %entry9258; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax9259; LINUX-32-STATIC-NEXT: leal dsrc+64(,%eax,4), %eax9260; LINUX-32-STATIC-NEXT: retl9261;9262; LINUX-32-PIC-LABEL: cat03:9263; LINUX-32-PIC: # %bb.0: # %entry9264; LINUX-32-PIC-NEXT: calll .L114$pb9265; LINUX-32-PIC-NEXT: .L114$pb:9266; LINUX-32-PIC-NEXT: popl %eax9267; LINUX-32-PIC-NEXT: .Ltmp114:9268; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp114-.L114$pb), %eax9269; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx9270; LINUX-32-PIC-NEXT: leal .Ldsrc$local@GOTOFF+64(%eax,%ecx,4), %eax9271; LINUX-32-PIC-NEXT: retl9272;9273; LINUX-64-PIC-LABEL: cat03:9274; LINUX-64-PIC: # %bb.0: # %entry9275; LINUX-64-PIC-NEXT: leaq .Ldsrc$local(%rip), %rax9276; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax9277; LINUX-64-PIC-NEXT: retq9278;9279; DARWIN-32-STATIC-LABEL: cat03:9280; DARWIN-32-STATIC: ## %bb.0: ## %entry9281; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax9282; DARWIN-32-STATIC-NEXT: leal _dsrc+64(,%eax,4), %eax9283; DARWIN-32-STATIC-NEXT: retl9284;9285; DARWIN-32-DYNAMIC-LABEL: cat03:9286; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry9287; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax9288; DARWIN-32-DYNAMIC-NEXT: leal _dsrc+64(,%eax,4), %eax9289; DARWIN-32-DYNAMIC-NEXT: retl9290;9291; DARWIN-32-PIC-LABEL: cat03:9292; DARWIN-32-PIC: ## %bb.0: ## %entry9293; DARWIN-32-PIC-NEXT: calll L114$pb9294; DARWIN-32-PIC-NEXT: L114$pb:9295; DARWIN-32-PIC-NEXT: popl %eax9296; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx9297; DARWIN-32-PIC-NEXT: leal _dsrc-L114$pb+64(%eax,%ecx,4), %eax9298; DARWIN-32-PIC-NEXT: retl9299;9300; DARWIN-64-STATIC-LABEL: cat03:9301; DARWIN-64-STATIC: ## %bb.0: ## %entry9302; DARWIN-64-STATIC-NEXT: leaq _dsrc(%rip), %rax9303; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax9304; DARWIN-64-STATIC-NEXT: retq9305;9306; DARWIN-64-DYNAMIC-LABEL: cat03:9307; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry9308; DARWIN-64-DYNAMIC-NEXT: leaq _dsrc(%rip), %rax9309; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax9310; DARWIN-64-DYNAMIC-NEXT: retq9311;9312; DARWIN-64-PIC-LABEL: cat03:9313; DARWIN-64-PIC: ## %bb.0: ## %entry9314; DARWIN-64-PIC-NEXT: leaq _dsrc(%rip), %rax9315; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax9316; DARWIN-64-PIC-NEXT: retq9317 9318entry:9319 %0 = add i64 %i, 169320 %1 = getelementptr [131072 x i32], ptr @dsrc, i64 0, i64 %09321 ret ptr %19322}9323 9324define dso_local ptr @cat04(i64 %i) nounwind {9325; LINUX-64-STATIC-LABEL: cat04:9326; LINUX-64-STATIC: # %bb.0: # %entry9327; LINUX-64-STATIC-NEXT: leaq ddst+64(,%rdi,4), %rax9328; LINUX-64-STATIC-NEXT: retq9329;9330; LINUX-32-STATIC-LABEL: cat04:9331; LINUX-32-STATIC: # %bb.0: # %entry9332; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax9333; LINUX-32-STATIC-NEXT: leal ddst+64(,%eax,4), %eax9334; LINUX-32-STATIC-NEXT: retl9335;9336; LINUX-32-PIC-LABEL: cat04:9337; LINUX-32-PIC: # %bb.0: # %entry9338; LINUX-32-PIC-NEXT: calll .L115$pb9339; LINUX-32-PIC-NEXT: .L115$pb:9340; LINUX-32-PIC-NEXT: popl %eax9341; LINUX-32-PIC-NEXT: .Ltmp115:9342; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp115-.L115$pb), %eax9343; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx9344; LINUX-32-PIC-NEXT: leal .Lddst$local@GOTOFF+64(%eax,%ecx,4), %eax9345; LINUX-32-PIC-NEXT: retl9346;9347; LINUX-64-PIC-LABEL: cat04:9348; LINUX-64-PIC: # %bb.0: # %entry9349; LINUX-64-PIC-NEXT: leaq .Lddst$local(%rip), %rax9350; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax9351; LINUX-64-PIC-NEXT: retq9352;9353; DARWIN-32-STATIC-LABEL: cat04:9354; DARWIN-32-STATIC: ## %bb.0: ## %entry9355; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax9356; DARWIN-32-STATIC-NEXT: leal _ddst+64(,%eax,4), %eax9357; DARWIN-32-STATIC-NEXT: retl9358;9359; DARWIN-32-DYNAMIC-LABEL: cat04:9360; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry9361; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax9362; DARWIN-32-DYNAMIC-NEXT: leal _ddst+64(,%eax,4), %eax9363; DARWIN-32-DYNAMIC-NEXT: retl9364;9365; DARWIN-32-PIC-LABEL: cat04:9366; DARWIN-32-PIC: ## %bb.0: ## %entry9367; DARWIN-32-PIC-NEXT: calll L115$pb9368; DARWIN-32-PIC-NEXT: L115$pb:9369; DARWIN-32-PIC-NEXT: popl %eax9370; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx9371; DARWIN-32-PIC-NEXT: leal _ddst-L115$pb+64(%eax,%ecx,4), %eax9372; DARWIN-32-PIC-NEXT: retl9373;9374; DARWIN-64-STATIC-LABEL: cat04:9375; DARWIN-64-STATIC: ## %bb.0: ## %entry9376; DARWIN-64-STATIC-NEXT: leaq _ddst(%rip), %rax9377; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax9378; DARWIN-64-STATIC-NEXT: retq9379;9380; DARWIN-64-DYNAMIC-LABEL: cat04:9381; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry9382; DARWIN-64-DYNAMIC-NEXT: leaq _ddst(%rip), %rax9383; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax9384; DARWIN-64-DYNAMIC-NEXT: retq9385;9386; DARWIN-64-PIC-LABEL: cat04:9387; DARWIN-64-PIC: ## %bb.0: ## %entry9388; DARWIN-64-PIC-NEXT: leaq _ddst(%rip), %rax9389; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax9390; DARWIN-64-PIC-NEXT: retq9391 9392entry:9393 %0 = add i64 %i, 169394 %1 = getelementptr [131072 x i32], ptr @ddst, i64 0, i64 %09395 ret ptr %19396}9397 9398define dso_local ptr @cat05(i64 %i) nounwind {9399; LINUX-64-STATIC-LABEL: cat05:9400; LINUX-64-STATIC: # %bb.0: # %entry9401; LINUX-64-STATIC-NEXT: movq dptr(%rip), %rax9402; LINUX-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax9403; LINUX-64-STATIC-NEXT: retq9404;9405; LINUX-32-STATIC-LABEL: cat05:9406; LINUX-32-STATIC: # %bb.0: # %entry9407; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax9408; LINUX-32-STATIC-NEXT: movl dptr, %ecx9409; LINUX-32-STATIC-NEXT: leal 64(%ecx,%eax,4), %eax9410; LINUX-32-STATIC-NEXT: retl9411;9412; LINUX-32-PIC-LABEL: cat05:9413; LINUX-32-PIC: # %bb.0: # %entry9414; LINUX-32-PIC-NEXT: calll .L116$pb9415; LINUX-32-PIC-NEXT: .L116$pb:9416; LINUX-32-PIC-NEXT: popl %eax9417; LINUX-32-PIC-NEXT: .Ltmp116:9418; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp116-.L116$pb), %eax9419; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx9420; LINUX-32-PIC-NEXT: movl .Ldptr$local@GOTOFF(%eax), %eax9421; LINUX-32-PIC-NEXT: leal 64(%eax,%ecx,4), %eax9422; LINUX-32-PIC-NEXT: retl9423;9424; LINUX-64-PIC-LABEL: cat05:9425; LINUX-64-PIC: # %bb.0: # %entry9426; LINUX-64-PIC-NEXT: movq .Ldptr$local(%rip), %rax9427; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax9428; LINUX-64-PIC-NEXT: retq9429;9430; DARWIN-32-STATIC-LABEL: cat05:9431; DARWIN-32-STATIC: ## %bb.0: ## %entry9432; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax9433; DARWIN-32-STATIC-NEXT: movl _dptr, %ecx9434; DARWIN-32-STATIC-NEXT: leal 64(%ecx,%eax,4), %eax9435; DARWIN-32-STATIC-NEXT: retl9436;9437; DARWIN-32-DYNAMIC-LABEL: cat05:9438; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry9439; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax9440; DARWIN-32-DYNAMIC-NEXT: movl _dptr, %ecx9441; DARWIN-32-DYNAMIC-NEXT: leal 64(%ecx,%eax,4), %eax9442; DARWIN-32-DYNAMIC-NEXT: retl9443;9444; DARWIN-32-PIC-LABEL: cat05:9445; DARWIN-32-PIC: ## %bb.0: ## %entry9446; DARWIN-32-PIC-NEXT: calll L116$pb9447; DARWIN-32-PIC-NEXT: L116$pb:9448; DARWIN-32-PIC-NEXT: popl %eax9449; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx9450; DARWIN-32-PIC-NEXT: movl _dptr-L116$pb(%eax), %eax9451; DARWIN-32-PIC-NEXT: leal 64(%eax,%ecx,4), %eax9452; DARWIN-32-PIC-NEXT: retl9453;9454; DARWIN-64-STATIC-LABEL: cat05:9455; DARWIN-64-STATIC: ## %bb.0: ## %entry9456; DARWIN-64-STATIC-NEXT: movq _dptr(%rip), %rax9457; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax9458; DARWIN-64-STATIC-NEXT: retq9459;9460; DARWIN-64-DYNAMIC-LABEL: cat05:9461; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry9462; DARWIN-64-DYNAMIC-NEXT: movq _dptr(%rip), %rax9463; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax9464; DARWIN-64-DYNAMIC-NEXT: retq9465;9466; DARWIN-64-PIC-LABEL: cat05:9467; DARWIN-64-PIC: ## %bb.0: ## %entry9468; DARWIN-64-PIC-NEXT: movq _dptr(%rip), %rax9469; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax9470; DARWIN-64-PIC-NEXT: retq9471 9472entry:9473 %0 = load ptr, ptr @dptr, align 89474 %1 = add i64 %i, 169475 %2 = getelementptr i32, ptr %0, i64 %19476 ret ptr %29477}9478 9479define dso_local ptr @cat06(i64 %i) nounwind {9480; LINUX-64-STATIC-LABEL: cat06:9481; LINUX-64-STATIC: # %bb.0: # %entry9482; LINUX-64-STATIC-NEXT: leaq lsrc+64(,%rdi,4), %rax9483; LINUX-64-STATIC-NEXT: retq9484;9485; LINUX-32-STATIC-LABEL: cat06:9486; LINUX-32-STATIC: # %bb.0: # %entry9487; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax9488; LINUX-32-STATIC-NEXT: leal lsrc+64(,%eax,4), %eax9489; LINUX-32-STATIC-NEXT: retl9490;9491; LINUX-32-PIC-LABEL: cat06:9492; LINUX-32-PIC: # %bb.0: # %entry9493; LINUX-32-PIC-NEXT: calll .L117$pb9494; LINUX-32-PIC-NEXT: .L117$pb:9495; LINUX-32-PIC-NEXT: popl %eax9496; LINUX-32-PIC-NEXT: .Ltmp117:9497; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp117-.L117$pb), %eax9498; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx9499; LINUX-32-PIC-NEXT: leal lsrc@GOTOFF+64(%eax,%ecx,4), %eax9500; LINUX-32-PIC-NEXT: retl9501;9502; LINUX-64-PIC-LABEL: cat06:9503; LINUX-64-PIC: # %bb.0: # %entry9504; LINUX-64-PIC-NEXT: leaq lsrc(%rip), %rax9505; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax9506; LINUX-64-PIC-NEXT: retq9507;9508; DARWIN-32-STATIC-LABEL: cat06:9509; DARWIN-32-STATIC: ## %bb.0: ## %entry9510; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax9511; DARWIN-32-STATIC-NEXT: leal _lsrc+64(,%eax,4), %eax9512; DARWIN-32-STATIC-NEXT: retl9513;9514; DARWIN-32-DYNAMIC-LABEL: cat06:9515; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry9516; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax9517; DARWIN-32-DYNAMIC-NEXT: leal _lsrc+64(,%eax,4), %eax9518; DARWIN-32-DYNAMIC-NEXT: retl9519;9520; DARWIN-32-PIC-LABEL: cat06:9521; DARWIN-32-PIC: ## %bb.0: ## %entry9522; DARWIN-32-PIC-NEXT: calll L117$pb9523; DARWIN-32-PIC-NEXT: L117$pb:9524; DARWIN-32-PIC-NEXT: popl %eax9525; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx9526; DARWIN-32-PIC-NEXT: leal _lsrc-L117$pb+64(%eax,%ecx,4), %eax9527; DARWIN-32-PIC-NEXT: retl9528;9529; DARWIN-64-STATIC-LABEL: cat06:9530; DARWIN-64-STATIC: ## %bb.0: ## %entry9531; DARWIN-64-STATIC-NEXT: leaq _lsrc(%rip), %rax9532; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax9533; DARWIN-64-STATIC-NEXT: retq9534;9535; DARWIN-64-DYNAMIC-LABEL: cat06:9536; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry9537; DARWIN-64-DYNAMIC-NEXT: leaq _lsrc(%rip), %rax9538; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax9539; DARWIN-64-DYNAMIC-NEXT: retq9540;9541; DARWIN-64-PIC-LABEL: cat06:9542; DARWIN-64-PIC: ## %bb.0: ## %entry9543; DARWIN-64-PIC-NEXT: leaq _lsrc(%rip), %rax9544; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax9545; DARWIN-64-PIC-NEXT: retq9546 9547entry:9548 %0 = add i64 %i, 169549 %1 = getelementptr [131072 x i32], ptr @lsrc, i64 0, i64 %09550 ret ptr %19551}9552 9553define dso_local ptr @cat07(i64 %i) nounwind {9554; LINUX-64-STATIC-LABEL: cat07:9555; LINUX-64-STATIC: # %bb.0: # %entry9556; LINUX-64-STATIC-NEXT: leaq ldst+64(,%rdi,4), %rax9557; LINUX-64-STATIC-NEXT: retq9558;9559; LINUX-32-STATIC-LABEL: cat07:9560; LINUX-32-STATIC: # %bb.0: # %entry9561; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax9562; LINUX-32-STATIC-NEXT: leal ldst+64(,%eax,4), %eax9563; LINUX-32-STATIC-NEXT: retl9564;9565; LINUX-32-PIC-LABEL: cat07:9566; LINUX-32-PIC: # %bb.0: # %entry9567; LINUX-32-PIC-NEXT: calll .L118$pb9568; LINUX-32-PIC-NEXT: .L118$pb:9569; LINUX-32-PIC-NEXT: popl %eax9570; LINUX-32-PIC-NEXT: .Ltmp118:9571; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp118-.L118$pb), %eax9572; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx9573; LINUX-32-PIC-NEXT: leal ldst@GOTOFF+64(%eax,%ecx,4), %eax9574; LINUX-32-PIC-NEXT: retl9575;9576; LINUX-64-PIC-LABEL: cat07:9577; LINUX-64-PIC: # %bb.0: # %entry9578; LINUX-64-PIC-NEXT: leaq ldst(%rip), %rax9579; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax9580; LINUX-64-PIC-NEXT: retq9581;9582; DARWIN-32-STATIC-LABEL: cat07:9583; DARWIN-32-STATIC: ## %bb.0: ## %entry9584; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax9585; DARWIN-32-STATIC-NEXT: leal _ldst+64(,%eax,4), %eax9586; DARWIN-32-STATIC-NEXT: retl9587;9588; DARWIN-32-DYNAMIC-LABEL: cat07:9589; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry9590; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax9591; DARWIN-32-DYNAMIC-NEXT: leal _ldst+64(,%eax,4), %eax9592; DARWIN-32-DYNAMIC-NEXT: retl9593;9594; DARWIN-32-PIC-LABEL: cat07:9595; DARWIN-32-PIC: ## %bb.0: ## %entry9596; DARWIN-32-PIC-NEXT: calll L118$pb9597; DARWIN-32-PIC-NEXT: L118$pb:9598; DARWIN-32-PIC-NEXT: popl %eax9599; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx9600; DARWIN-32-PIC-NEXT: leal _ldst-L118$pb+64(%eax,%ecx,4), %eax9601; DARWIN-32-PIC-NEXT: retl9602;9603; DARWIN-64-STATIC-LABEL: cat07:9604; DARWIN-64-STATIC: ## %bb.0: ## %entry9605; DARWIN-64-STATIC-NEXT: leaq _ldst(%rip), %rax9606; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax9607; DARWIN-64-STATIC-NEXT: retq9608;9609; DARWIN-64-DYNAMIC-LABEL: cat07:9610; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry9611; DARWIN-64-DYNAMIC-NEXT: leaq _ldst(%rip), %rax9612; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax9613; DARWIN-64-DYNAMIC-NEXT: retq9614;9615; DARWIN-64-PIC-LABEL: cat07:9616; DARWIN-64-PIC: ## %bb.0: ## %entry9617; DARWIN-64-PIC-NEXT: leaq _ldst(%rip), %rax9618; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax9619; DARWIN-64-PIC-NEXT: retq9620 9621entry:9622 %0 = add i64 %i, 169623 %1 = getelementptr [131072 x i32], ptr @ldst, i64 0, i64 %09624 ret ptr %19625}9626 9627define dso_local ptr @cat08(i64 %i) nounwind {9628; LINUX-64-STATIC-LABEL: cat08:9629; LINUX-64-STATIC: # %bb.0: # %entry9630; LINUX-64-STATIC-NEXT: movq lptr(%rip), %rax9631; LINUX-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax9632; LINUX-64-STATIC-NEXT: retq9633;9634; LINUX-32-STATIC-LABEL: cat08:9635; LINUX-32-STATIC: # %bb.0: # %entry9636; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax9637; LINUX-32-STATIC-NEXT: movl lptr, %ecx9638; LINUX-32-STATIC-NEXT: leal 64(%ecx,%eax,4), %eax9639; LINUX-32-STATIC-NEXT: retl9640;9641; LINUX-32-PIC-LABEL: cat08:9642; LINUX-32-PIC: # %bb.0: # %entry9643; LINUX-32-PIC-NEXT: calll .L119$pb9644; LINUX-32-PIC-NEXT: .L119$pb:9645; LINUX-32-PIC-NEXT: popl %eax9646; LINUX-32-PIC-NEXT: .Ltmp119:9647; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp119-.L119$pb), %eax9648; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx9649; LINUX-32-PIC-NEXT: movl lptr@GOTOFF(%eax), %eax9650; LINUX-32-PIC-NEXT: leal 64(%eax,%ecx,4), %eax9651; LINUX-32-PIC-NEXT: retl9652;9653; LINUX-64-PIC-LABEL: cat08:9654; LINUX-64-PIC: # %bb.0: # %entry9655; LINUX-64-PIC-NEXT: movq lptr(%rip), %rax9656; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax9657; LINUX-64-PIC-NEXT: retq9658;9659; DARWIN-32-STATIC-LABEL: cat08:9660; DARWIN-32-STATIC: ## %bb.0: ## %entry9661; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax9662; DARWIN-32-STATIC-NEXT: movl _lptr, %ecx9663; DARWIN-32-STATIC-NEXT: leal 64(%ecx,%eax,4), %eax9664; DARWIN-32-STATIC-NEXT: retl9665;9666; DARWIN-32-DYNAMIC-LABEL: cat08:9667; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry9668; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax9669; DARWIN-32-DYNAMIC-NEXT: movl _lptr, %ecx9670; DARWIN-32-DYNAMIC-NEXT: leal 64(%ecx,%eax,4), %eax9671; DARWIN-32-DYNAMIC-NEXT: retl9672;9673; DARWIN-32-PIC-LABEL: cat08:9674; DARWIN-32-PIC: ## %bb.0: ## %entry9675; DARWIN-32-PIC-NEXT: calll L119$pb9676; DARWIN-32-PIC-NEXT: L119$pb:9677; DARWIN-32-PIC-NEXT: popl %eax9678; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx9679; DARWIN-32-PIC-NEXT: movl _lptr-L119$pb(%eax), %eax9680; DARWIN-32-PIC-NEXT: leal 64(%eax,%ecx,4), %eax9681; DARWIN-32-PIC-NEXT: retl9682;9683; DARWIN-64-STATIC-LABEL: cat08:9684; DARWIN-64-STATIC: ## %bb.0: ## %entry9685; DARWIN-64-STATIC-NEXT: movq _lptr(%rip), %rax9686; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax9687; DARWIN-64-STATIC-NEXT: retq9688;9689; DARWIN-64-DYNAMIC-LABEL: cat08:9690; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry9691; DARWIN-64-DYNAMIC-NEXT: movq _lptr(%rip), %rax9692; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax9693; DARWIN-64-DYNAMIC-NEXT: retq9694;9695; DARWIN-64-PIC-LABEL: cat08:9696; DARWIN-64-PIC: ## %bb.0: ## %entry9697; DARWIN-64-PIC-NEXT: movq _lptr(%rip), %rax9698; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax9699; DARWIN-64-PIC-NEXT: retq9700 9701entry:9702 %0 = load ptr, ptr @lptr, align 89703 %1 = add i64 %i, 169704 %2 = getelementptr i32, ptr %0, i64 %19705 ret ptr %29706}9707 9708define dso_local ptr @cam00(i64 %i) nounwind {9709; LINUX-64-STATIC-LABEL: cam00:9710; LINUX-64-STATIC: # %bb.0: # %entry9711; LINUX-64-STATIC-NEXT: movq src@GOTPCREL(%rip), %rax9712; LINUX-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax9713; LINUX-64-STATIC-NEXT: retq9714;9715; LINUX-32-STATIC-LABEL: cam00:9716; LINUX-32-STATIC: # %bb.0: # %entry9717; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax9718; LINUX-32-STATIC-NEXT: leal src+262144(,%eax,4), %eax9719; LINUX-32-STATIC-NEXT: retl9720;9721; LINUX-32-PIC-LABEL: cam00:9722; LINUX-32-PIC: # %bb.0: # %entry9723; LINUX-32-PIC-NEXT: calll .L120$pb9724; LINUX-32-PIC-NEXT: .L120$pb:9725; LINUX-32-PIC-NEXT: popl %eax9726; LINUX-32-PIC-NEXT: .Ltmp120:9727; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp120-.L120$pb), %eax9728; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx9729; LINUX-32-PIC-NEXT: movl src@GOT(%eax), %eax9730; LINUX-32-PIC-NEXT: leal 262144(%eax,%ecx,4), %eax9731; LINUX-32-PIC-NEXT: retl9732;9733; LINUX-64-PIC-LABEL: cam00:9734; LINUX-64-PIC: # %bb.0: # %entry9735; LINUX-64-PIC-NEXT: movq src@GOTPCREL(%rip), %rax9736; LINUX-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax9737; LINUX-64-PIC-NEXT: retq9738;9739; DARWIN-32-STATIC-LABEL: cam00:9740; DARWIN-32-STATIC: ## %bb.0: ## %entry9741; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax9742; DARWIN-32-STATIC-NEXT: leal _src+262144(,%eax,4), %eax9743; DARWIN-32-STATIC-NEXT: retl9744;9745; DARWIN-32-DYNAMIC-LABEL: cam00:9746; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry9747; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax9748; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %ecx9749; DARWIN-32-DYNAMIC-NEXT: leal 262144(%ecx,%eax,4), %eax9750; DARWIN-32-DYNAMIC-NEXT: retl9751;9752; DARWIN-32-PIC-LABEL: cam00:9753; DARWIN-32-PIC: ## %bb.0: ## %entry9754; DARWIN-32-PIC-NEXT: calll L120$pb9755; DARWIN-32-PIC-NEXT: L120$pb:9756; DARWIN-32-PIC-NEXT: popl %eax9757; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx9758; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L120$pb(%eax), %eax9759; DARWIN-32-PIC-NEXT: leal 262144(%eax,%ecx,4), %eax9760; DARWIN-32-PIC-NEXT: retl9761;9762; DARWIN-64-STATIC-LABEL: cam00:9763; DARWIN-64-STATIC: ## %bb.0: ## %entry9764; DARWIN-64-STATIC-NEXT: movq _src@GOTPCREL(%rip), %rax9765; DARWIN-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax9766; DARWIN-64-STATIC-NEXT: retq9767;9768; DARWIN-64-DYNAMIC-LABEL: cam00:9769; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry9770; DARWIN-64-DYNAMIC-NEXT: movq _src@GOTPCREL(%rip), %rax9771; DARWIN-64-DYNAMIC-NEXT: leaq 262144(%rax,%rdi,4), %rax9772; DARWIN-64-DYNAMIC-NEXT: retq9773;9774; DARWIN-64-PIC-LABEL: cam00:9775; DARWIN-64-PIC: ## %bb.0: ## %entry9776; DARWIN-64-PIC-NEXT: movq _src@GOTPCREL(%rip), %rax9777; DARWIN-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax9778; DARWIN-64-PIC-NEXT: retq9779 9780entry:9781 %0 = add i64 %i, 655369782 %1 = getelementptr [131072 x i32], ptr @src, i64 0, i64 %09783 ret ptr %19784}9785 9786define dso_local ptr @cxm00(i64 %i) nounwind {9787; LINUX-64-STATIC-LABEL: cxm00:9788; LINUX-64-STATIC: # %bb.0: # %entry9789; LINUX-64-STATIC-NEXT: movq xsrc@GOTPCREL(%rip), %rax9790; LINUX-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax9791; LINUX-64-STATIC-NEXT: retq9792;9793; LINUX-32-STATIC-LABEL: cxm00:9794; LINUX-32-STATIC: # %bb.0: # %entry9795; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax9796; LINUX-32-STATIC-NEXT: leal xsrc+262144(,%eax,4), %eax9797; LINUX-32-STATIC-NEXT: retl9798;9799; LINUX-32-PIC-LABEL: cxm00:9800; LINUX-32-PIC: # %bb.0: # %entry9801; LINUX-32-PIC-NEXT: calll .L121$pb9802; LINUX-32-PIC-NEXT: .L121$pb:9803; LINUX-32-PIC-NEXT: popl %eax9804; LINUX-32-PIC-NEXT: .Ltmp121:9805; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp121-.L121$pb), %eax9806; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx9807; LINUX-32-PIC-NEXT: movl xsrc@GOT(%eax), %eax9808; LINUX-32-PIC-NEXT: leal 262144(%eax,%ecx,4), %eax9809; LINUX-32-PIC-NEXT: retl9810;9811; LINUX-64-PIC-LABEL: cxm00:9812; LINUX-64-PIC: # %bb.0: # %entry9813; LINUX-64-PIC-NEXT: movq xsrc@GOTPCREL(%rip), %rax9814; LINUX-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax9815; LINUX-64-PIC-NEXT: retq9816;9817; DARWIN-32-STATIC-LABEL: cxm00:9818; DARWIN-32-STATIC: ## %bb.0: ## %entry9819; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax9820; DARWIN-32-STATIC-NEXT: leal _xsrc+262144(,%eax,4), %eax9821; DARWIN-32-STATIC-NEXT: retl9822;9823; DARWIN-32-DYNAMIC-LABEL: cxm00:9824; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry9825; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax9826; DARWIN-32-DYNAMIC-NEXT: movl L_xsrc$non_lazy_ptr, %ecx9827; DARWIN-32-DYNAMIC-NEXT: leal 262144(%ecx,%eax,4), %eax9828; DARWIN-32-DYNAMIC-NEXT: retl9829;9830; DARWIN-32-PIC-LABEL: cxm00:9831; DARWIN-32-PIC: ## %bb.0: ## %entry9832; DARWIN-32-PIC-NEXT: calll L121$pb9833; DARWIN-32-PIC-NEXT: L121$pb:9834; DARWIN-32-PIC-NEXT: popl %eax9835; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx9836; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-L121$pb(%eax), %eax9837; DARWIN-32-PIC-NEXT: leal 262144(%eax,%ecx,4), %eax9838; DARWIN-32-PIC-NEXT: retl9839;9840; DARWIN-64-STATIC-LABEL: cxm00:9841; DARWIN-64-STATIC: ## %bb.0: ## %entry9842; DARWIN-64-STATIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax9843; DARWIN-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax9844; DARWIN-64-STATIC-NEXT: retq9845;9846; DARWIN-64-DYNAMIC-LABEL: cxm00:9847; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry9848; DARWIN-64-DYNAMIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax9849; DARWIN-64-DYNAMIC-NEXT: leaq 262144(%rax,%rdi,4), %rax9850; DARWIN-64-DYNAMIC-NEXT: retq9851;9852; DARWIN-64-PIC-LABEL: cxm00:9853; DARWIN-64-PIC: ## %bb.0: ## %entry9854; DARWIN-64-PIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax9855; DARWIN-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax9856; DARWIN-64-PIC-NEXT: retq9857 9858entry:9859 %0 = add i64 %i, 655369860 %1 = getelementptr [32 x i32], ptr @xsrc, i64 0, i64 %09861 ret ptr %19862}9863 9864define dso_local ptr @cam01(i64 %i) nounwind {9865; LINUX-64-STATIC-LABEL: cam01:9866; LINUX-64-STATIC: # %bb.0: # %entry9867; LINUX-64-STATIC-NEXT: movq dst@GOTPCREL(%rip), %rax9868; LINUX-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax9869; LINUX-64-STATIC-NEXT: retq9870;9871; LINUX-32-STATIC-LABEL: cam01:9872; LINUX-32-STATIC: # %bb.0: # %entry9873; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax9874; LINUX-32-STATIC-NEXT: leal dst+262144(,%eax,4), %eax9875; LINUX-32-STATIC-NEXT: retl9876;9877; LINUX-32-PIC-LABEL: cam01:9878; LINUX-32-PIC: # %bb.0: # %entry9879; LINUX-32-PIC-NEXT: calll .L122$pb9880; LINUX-32-PIC-NEXT: .L122$pb:9881; LINUX-32-PIC-NEXT: popl %eax9882; LINUX-32-PIC-NEXT: .Ltmp122:9883; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp122-.L122$pb), %eax9884; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx9885; LINUX-32-PIC-NEXT: movl dst@GOT(%eax), %eax9886; LINUX-32-PIC-NEXT: leal 262144(%eax,%ecx,4), %eax9887; LINUX-32-PIC-NEXT: retl9888;9889; LINUX-64-PIC-LABEL: cam01:9890; LINUX-64-PIC: # %bb.0: # %entry9891; LINUX-64-PIC-NEXT: movq dst@GOTPCREL(%rip), %rax9892; LINUX-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax9893; LINUX-64-PIC-NEXT: retq9894;9895; DARWIN-32-STATIC-LABEL: cam01:9896; DARWIN-32-STATIC: ## %bb.0: ## %entry9897; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax9898; DARWIN-32-STATIC-NEXT: leal _dst+262144(,%eax,4), %eax9899; DARWIN-32-STATIC-NEXT: retl9900;9901; DARWIN-32-DYNAMIC-LABEL: cam01:9902; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry9903; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax9904; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, %ecx9905; DARWIN-32-DYNAMIC-NEXT: leal 262144(%ecx,%eax,4), %eax9906; DARWIN-32-DYNAMIC-NEXT: retl9907;9908; DARWIN-32-PIC-LABEL: cam01:9909; DARWIN-32-PIC: ## %bb.0: ## %entry9910; DARWIN-32-PIC-NEXT: calll L122$pb9911; DARWIN-32-PIC-NEXT: L122$pb:9912; DARWIN-32-PIC-NEXT: popl %eax9913; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx9914; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L122$pb(%eax), %eax9915; DARWIN-32-PIC-NEXT: leal 262144(%eax,%ecx,4), %eax9916; DARWIN-32-PIC-NEXT: retl9917;9918; DARWIN-64-STATIC-LABEL: cam01:9919; DARWIN-64-STATIC: ## %bb.0: ## %entry9920; DARWIN-64-STATIC-NEXT: movq _dst@GOTPCREL(%rip), %rax9921; DARWIN-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax9922; DARWIN-64-STATIC-NEXT: retq9923;9924; DARWIN-64-DYNAMIC-LABEL: cam01:9925; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry9926; DARWIN-64-DYNAMIC-NEXT: movq _dst@GOTPCREL(%rip), %rax9927; DARWIN-64-DYNAMIC-NEXT: leaq 262144(%rax,%rdi,4), %rax9928; DARWIN-64-DYNAMIC-NEXT: retq9929;9930; DARWIN-64-PIC-LABEL: cam01:9931; DARWIN-64-PIC: ## %bb.0: ## %entry9932; DARWIN-64-PIC-NEXT: movq _dst@GOTPCREL(%rip), %rax9933; DARWIN-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax9934; DARWIN-64-PIC-NEXT: retq9935 9936entry:9937 %0 = add i64 %i, 655369938 %1 = getelementptr [131072 x i32], ptr @dst, i64 0, i64 %09939 ret ptr %19940}9941 9942define dso_local ptr @cxm01(i64 %i) nounwind {9943; LINUX-64-STATIC-LABEL: cxm01:9944; LINUX-64-STATIC: # %bb.0: # %entry9945; LINUX-64-STATIC-NEXT: movq xdst@GOTPCREL(%rip), %rax9946; LINUX-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax9947; LINUX-64-STATIC-NEXT: retq9948;9949; LINUX-32-STATIC-LABEL: cxm01:9950; LINUX-32-STATIC: # %bb.0: # %entry9951; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax9952; LINUX-32-STATIC-NEXT: leal xdst+262144(,%eax,4), %eax9953; LINUX-32-STATIC-NEXT: retl9954;9955; LINUX-32-PIC-LABEL: cxm01:9956; LINUX-32-PIC: # %bb.0: # %entry9957; LINUX-32-PIC-NEXT: calll .L123$pb9958; LINUX-32-PIC-NEXT: .L123$pb:9959; LINUX-32-PIC-NEXT: popl %eax9960; LINUX-32-PIC-NEXT: .Ltmp123:9961; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp123-.L123$pb), %eax9962; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx9963; LINUX-32-PIC-NEXT: movl xdst@GOT(%eax), %eax9964; LINUX-32-PIC-NEXT: leal 262144(%eax,%ecx,4), %eax9965; LINUX-32-PIC-NEXT: retl9966;9967; LINUX-64-PIC-LABEL: cxm01:9968; LINUX-64-PIC: # %bb.0: # %entry9969; LINUX-64-PIC-NEXT: movq xdst@GOTPCREL(%rip), %rax9970; LINUX-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax9971; LINUX-64-PIC-NEXT: retq9972;9973; DARWIN-32-STATIC-LABEL: cxm01:9974; DARWIN-32-STATIC: ## %bb.0: ## %entry9975; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax9976; DARWIN-32-STATIC-NEXT: leal _xdst+262144(,%eax,4), %eax9977; DARWIN-32-STATIC-NEXT: retl9978;9979; DARWIN-32-DYNAMIC-LABEL: cxm01:9980; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry9981; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax9982; DARWIN-32-DYNAMIC-NEXT: movl L_xdst$non_lazy_ptr, %ecx9983; DARWIN-32-DYNAMIC-NEXT: leal 262144(%ecx,%eax,4), %eax9984; DARWIN-32-DYNAMIC-NEXT: retl9985;9986; DARWIN-32-PIC-LABEL: cxm01:9987; DARWIN-32-PIC: ## %bb.0: ## %entry9988; DARWIN-32-PIC-NEXT: calll L123$pb9989; DARWIN-32-PIC-NEXT: L123$pb:9990; DARWIN-32-PIC-NEXT: popl %eax9991; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx9992; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-L123$pb(%eax), %eax9993; DARWIN-32-PIC-NEXT: leal 262144(%eax,%ecx,4), %eax9994; DARWIN-32-PIC-NEXT: retl9995;9996; DARWIN-64-STATIC-LABEL: cxm01:9997; DARWIN-64-STATIC: ## %bb.0: ## %entry9998; DARWIN-64-STATIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax9999; DARWIN-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax10000; DARWIN-64-STATIC-NEXT: retq10001;10002; DARWIN-64-DYNAMIC-LABEL: cxm01:10003; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry10004; DARWIN-64-DYNAMIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax10005; DARWIN-64-DYNAMIC-NEXT: leaq 262144(%rax,%rdi,4), %rax10006; DARWIN-64-DYNAMIC-NEXT: retq10007;10008; DARWIN-64-PIC-LABEL: cxm01:10009; DARWIN-64-PIC: ## %bb.0: ## %entry10010; DARWIN-64-PIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax10011; DARWIN-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax10012; DARWIN-64-PIC-NEXT: retq10013 10014entry:10015 %0 = add i64 %i, 6553610016 %1 = getelementptr [32 x i32], ptr @xdst, i64 0, i64 %010017 ret ptr %110018}10019 10020define dso_local ptr @cam02(i64 %i) nounwind {10021; LINUX-64-STATIC-LABEL: cam02:10022; LINUX-64-STATIC: # %bb.0: # %entry10023; LINUX-64-STATIC-NEXT: movq ptr@GOTPCREL(%rip), %rax10024; LINUX-64-STATIC-NEXT: movq (%rax), %rax10025; LINUX-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax10026; LINUX-64-STATIC-NEXT: retq10027;10028; LINUX-32-STATIC-LABEL: cam02:10029; LINUX-32-STATIC: # %bb.0: # %entry10030; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax10031; LINUX-32-STATIC-NEXT: movl ptr, %ecx10032; LINUX-32-STATIC-NEXT: leal 262144(%ecx,%eax,4), %eax10033; LINUX-32-STATIC-NEXT: retl10034;10035; LINUX-32-PIC-LABEL: cam02:10036; LINUX-32-PIC: # %bb.0: # %entry10037; LINUX-32-PIC-NEXT: calll .L124$pb10038; LINUX-32-PIC-NEXT: .L124$pb:10039; LINUX-32-PIC-NEXT: popl %eax10040; LINUX-32-PIC-NEXT: .Ltmp124:10041; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp124-.L124$pb), %eax10042; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax10043; LINUX-32-PIC-NEXT: movl (%eax), %eax10044; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx10045; LINUX-32-PIC-NEXT: leal 262144(%eax,%ecx,4), %eax10046; LINUX-32-PIC-NEXT: retl10047;10048; LINUX-64-PIC-LABEL: cam02:10049; LINUX-64-PIC: # %bb.0: # %entry10050; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rax10051; LINUX-64-PIC-NEXT: movq (%rax), %rax10052; LINUX-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax10053; LINUX-64-PIC-NEXT: retq10054;10055; DARWIN-32-STATIC-LABEL: cam02:10056; DARWIN-32-STATIC: ## %bb.0: ## %entry10057; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax10058; DARWIN-32-STATIC-NEXT: movl _ptr, %ecx10059; DARWIN-32-STATIC-NEXT: leal 262144(%ecx,%eax,4), %eax10060; DARWIN-32-STATIC-NEXT: retl10061;10062; DARWIN-32-DYNAMIC-LABEL: cam02:10063; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry10064; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %eax10065; DARWIN-32-DYNAMIC-NEXT: movl (%eax), %eax10066; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %ecx10067; DARWIN-32-DYNAMIC-NEXT: leal 262144(%eax,%ecx,4), %eax10068; DARWIN-32-DYNAMIC-NEXT: retl10069;10070; DARWIN-32-PIC-LABEL: cam02:10071; DARWIN-32-PIC: ## %bb.0: ## %entry10072; DARWIN-32-PIC-NEXT: calll L124$pb10073; DARWIN-32-PIC-NEXT: L124$pb:10074; DARWIN-32-PIC-NEXT: popl %eax10075; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L124$pb(%eax), %eax10076; DARWIN-32-PIC-NEXT: movl (%eax), %eax10077; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx10078; DARWIN-32-PIC-NEXT: leal 262144(%eax,%ecx,4), %eax10079; DARWIN-32-PIC-NEXT: retl10080;10081; DARWIN-64-STATIC-LABEL: cam02:10082; DARWIN-64-STATIC: ## %bb.0: ## %entry10083; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax10084; DARWIN-64-STATIC-NEXT: movq (%rax), %rax10085; DARWIN-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax10086; DARWIN-64-STATIC-NEXT: retq10087;10088; DARWIN-64-DYNAMIC-LABEL: cam02:10089; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry10090; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax10091; DARWIN-64-DYNAMIC-NEXT: movq (%rax), %rax10092; DARWIN-64-DYNAMIC-NEXT: leaq 262144(%rax,%rdi,4), %rax10093; DARWIN-64-DYNAMIC-NEXT: retq10094;10095; DARWIN-64-PIC-LABEL: cam02:10096; DARWIN-64-PIC: ## %bb.0: ## %entry10097; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax10098; DARWIN-64-PIC-NEXT: movq (%rax), %rax10099; DARWIN-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax10100; DARWIN-64-PIC-NEXT: retq10101 10102entry:10103 %0 = load ptr, ptr @ptr, align 810104 %1 = add i64 %i, 6553610105 %2 = getelementptr i32, ptr %0, i64 %110106 ret ptr %210107}10108 10109define dso_local ptr @cam03(i64 %i) nounwind {10110; LINUX-64-STATIC-LABEL: cam03:10111; LINUX-64-STATIC: # %bb.0: # %entry10112; LINUX-64-STATIC-NEXT: leaq dsrc+262144(,%rdi,4), %rax10113; LINUX-64-STATIC-NEXT: retq10114;10115; LINUX-32-STATIC-LABEL: cam03:10116; LINUX-32-STATIC: # %bb.0: # %entry10117; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax10118; LINUX-32-STATIC-NEXT: leal dsrc+262144(,%eax,4), %eax10119; LINUX-32-STATIC-NEXT: retl10120;10121; LINUX-32-PIC-LABEL: cam03:10122; LINUX-32-PIC: # %bb.0: # %entry10123; LINUX-32-PIC-NEXT: calll .L125$pb10124; LINUX-32-PIC-NEXT: .L125$pb:10125; LINUX-32-PIC-NEXT: popl %eax10126; LINUX-32-PIC-NEXT: .Ltmp125:10127; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp125-.L125$pb), %eax10128; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx10129; LINUX-32-PIC-NEXT: leal .Ldsrc$local@GOTOFF+262144(%eax,%ecx,4), %eax10130; LINUX-32-PIC-NEXT: retl10131;10132; LINUX-64-PIC-LABEL: cam03:10133; LINUX-64-PIC: # %bb.0: # %entry10134; LINUX-64-PIC-NEXT: leaq .Ldsrc$local(%rip), %rax10135; LINUX-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax10136; LINUX-64-PIC-NEXT: retq10137;10138; DARWIN-32-STATIC-LABEL: cam03:10139; DARWIN-32-STATIC: ## %bb.0: ## %entry10140; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax10141; DARWIN-32-STATIC-NEXT: leal _dsrc+262144(,%eax,4), %eax10142; DARWIN-32-STATIC-NEXT: retl10143;10144; DARWIN-32-DYNAMIC-LABEL: cam03:10145; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry10146; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax10147; DARWIN-32-DYNAMIC-NEXT: leal _dsrc+262144(,%eax,4), %eax10148; DARWIN-32-DYNAMIC-NEXT: retl10149;10150; DARWIN-32-PIC-LABEL: cam03:10151; DARWIN-32-PIC: ## %bb.0: ## %entry10152; DARWIN-32-PIC-NEXT: calll L125$pb10153; DARWIN-32-PIC-NEXT: L125$pb:10154; DARWIN-32-PIC-NEXT: popl %eax10155; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx10156; DARWIN-32-PIC-NEXT: leal _dsrc-L125$pb+262144(%eax,%ecx,4), %eax10157; DARWIN-32-PIC-NEXT: retl10158;10159; DARWIN-64-STATIC-LABEL: cam03:10160; DARWIN-64-STATIC: ## %bb.0: ## %entry10161; DARWIN-64-STATIC-NEXT: leaq _dsrc(%rip), %rax10162; DARWIN-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax10163; DARWIN-64-STATIC-NEXT: retq10164;10165; DARWIN-64-DYNAMIC-LABEL: cam03:10166; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry10167; DARWIN-64-DYNAMIC-NEXT: leaq _dsrc(%rip), %rax10168; DARWIN-64-DYNAMIC-NEXT: leaq 262144(%rax,%rdi,4), %rax10169; DARWIN-64-DYNAMIC-NEXT: retq10170;10171; DARWIN-64-PIC-LABEL: cam03:10172; DARWIN-64-PIC: ## %bb.0: ## %entry10173; DARWIN-64-PIC-NEXT: leaq _dsrc(%rip), %rax10174; DARWIN-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax10175; DARWIN-64-PIC-NEXT: retq10176 10177entry:10178 %0 = add i64 %i, 6553610179 %1 = getelementptr [131072 x i32], ptr @dsrc, i64 0, i64 %010180 ret ptr %110181}10182 10183define dso_local ptr @cam04(i64 %i) nounwind {10184; LINUX-64-STATIC-LABEL: cam04:10185; LINUX-64-STATIC: # %bb.0: # %entry10186; LINUX-64-STATIC-NEXT: leaq ddst+262144(,%rdi,4), %rax10187; LINUX-64-STATIC-NEXT: retq10188;10189; LINUX-32-STATIC-LABEL: cam04:10190; LINUX-32-STATIC: # %bb.0: # %entry10191; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax10192; LINUX-32-STATIC-NEXT: leal ddst+262144(,%eax,4), %eax10193; LINUX-32-STATIC-NEXT: retl10194;10195; LINUX-32-PIC-LABEL: cam04:10196; LINUX-32-PIC: # %bb.0: # %entry10197; LINUX-32-PIC-NEXT: calll .L126$pb10198; LINUX-32-PIC-NEXT: .L126$pb:10199; LINUX-32-PIC-NEXT: popl %eax10200; LINUX-32-PIC-NEXT: .Ltmp126:10201; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp126-.L126$pb), %eax10202; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx10203; LINUX-32-PIC-NEXT: leal .Lddst$local@GOTOFF+262144(%eax,%ecx,4), %eax10204; LINUX-32-PIC-NEXT: retl10205;10206; LINUX-64-PIC-LABEL: cam04:10207; LINUX-64-PIC: # %bb.0: # %entry10208; LINUX-64-PIC-NEXT: leaq .Lddst$local(%rip), %rax10209; LINUX-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax10210; LINUX-64-PIC-NEXT: retq10211;10212; DARWIN-32-STATIC-LABEL: cam04:10213; DARWIN-32-STATIC: ## %bb.0: ## %entry10214; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax10215; DARWIN-32-STATIC-NEXT: leal _ddst+262144(,%eax,4), %eax10216; DARWIN-32-STATIC-NEXT: retl10217;10218; DARWIN-32-DYNAMIC-LABEL: cam04:10219; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry10220; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax10221; DARWIN-32-DYNAMIC-NEXT: leal _ddst+262144(,%eax,4), %eax10222; DARWIN-32-DYNAMIC-NEXT: retl10223;10224; DARWIN-32-PIC-LABEL: cam04:10225; DARWIN-32-PIC: ## %bb.0: ## %entry10226; DARWIN-32-PIC-NEXT: calll L126$pb10227; DARWIN-32-PIC-NEXT: L126$pb:10228; DARWIN-32-PIC-NEXT: popl %eax10229; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx10230; DARWIN-32-PIC-NEXT: leal _ddst-L126$pb+262144(%eax,%ecx,4), %eax10231; DARWIN-32-PIC-NEXT: retl10232;10233; DARWIN-64-STATIC-LABEL: cam04:10234; DARWIN-64-STATIC: ## %bb.0: ## %entry10235; DARWIN-64-STATIC-NEXT: leaq _ddst(%rip), %rax10236; DARWIN-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax10237; DARWIN-64-STATIC-NEXT: retq10238;10239; DARWIN-64-DYNAMIC-LABEL: cam04:10240; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry10241; DARWIN-64-DYNAMIC-NEXT: leaq _ddst(%rip), %rax10242; DARWIN-64-DYNAMIC-NEXT: leaq 262144(%rax,%rdi,4), %rax10243; DARWIN-64-DYNAMIC-NEXT: retq10244;10245; DARWIN-64-PIC-LABEL: cam04:10246; DARWIN-64-PIC: ## %bb.0: ## %entry10247; DARWIN-64-PIC-NEXT: leaq _ddst(%rip), %rax10248; DARWIN-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax10249; DARWIN-64-PIC-NEXT: retq10250 10251entry:10252 %0 = add i64 %i, 6553610253 %1 = getelementptr [131072 x i32], ptr @ddst, i64 0, i64 %010254 ret ptr %110255}10256 10257define dso_local ptr @cam05(i64 %i) nounwind {10258; LINUX-64-STATIC-LABEL: cam05:10259; LINUX-64-STATIC: # %bb.0: # %entry10260; LINUX-64-STATIC-NEXT: movq dptr(%rip), %rax10261; LINUX-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax10262; LINUX-64-STATIC-NEXT: retq10263;10264; LINUX-32-STATIC-LABEL: cam05:10265; LINUX-32-STATIC: # %bb.0: # %entry10266; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax10267; LINUX-32-STATIC-NEXT: movl dptr, %ecx10268; LINUX-32-STATIC-NEXT: leal 262144(%ecx,%eax,4), %eax10269; LINUX-32-STATIC-NEXT: retl10270;10271; LINUX-32-PIC-LABEL: cam05:10272; LINUX-32-PIC: # %bb.0: # %entry10273; LINUX-32-PIC-NEXT: calll .L127$pb10274; LINUX-32-PIC-NEXT: .L127$pb:10275; LINUX-32-PIC-NEXT: popl %eax10276; LINUX-32-PIC-NEXT: .Ltmp127:10277; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp127-.L127$pb), %eax10278; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx10279; LINUX-32-PIC-NEXT: movl .Ldptr$local@GOTOFF(%eax), %eax10280; LINUX-32-PIC-NEXT: leal 262144(%eax,%ecx,4), %eax10281; LINUX-32-PIC-NEXT: retl10282;10283; LINUX-64-PIC-LABEL: cam05:10284; LINUX-64-PIC: # %bb.0: # %entry10285; LINUX-64-PIC-NEXT: movq .Ldptr$local(%rip), %rax10286; LINUX-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax10287; LINUX-64-PIC-NEXT: retq10288;10289; DARWIN-32-STATIC-LABEL: cam05:10290; DARWIN-32-STATIC: ## %bb.0: ## %entry10291; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax10292; DARWIN-32-STATIC-NEXT: movl _dptr, %ecx10293; DARWIN-32-STATIC-NEXT: leal 262144(%ecx,%eax,4), %eax10294; DARWIN-32-STATIC-NEXT: retl10295;10296; DARWIN-32-DYNAMIC-LABEL: cam05:10297; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry10298; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax10299; DARWIN-32-DYNAMIC-NEXT: movl _dptr, %ecx10300; DARWIN-32-DYNAMIC-NEXT: leal 262144(%ecx,%eax,4), %eax10301; DARWIN-32-DYNAMIC-NEXT: retl10302;10303; DARWIN-32-PIC-LABEL: cam05:10304; DARWIN-32-PIC: ## %bb.0: ## %entry10305; DARWIN-32-PIC-NEXT: calll L127$pb10306; DARWIN-32-PIC-NEXT: L127$pb:10307; DARWIN-32-PIC-NEXT: popl %eax10308; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx10309; DARWIN-32-PIC-NEXT: movl _dptr-L127$pb(%eax), %eax10310; DARWIN-32-PIC-NEXT: leal 262144(%eax,%ecx,4), %eax10311; DARWIN-32-PIC-NEXT: retl10312;10313; DARWIN-64-STATIC-LABEL: cam05:10314; DARWIN-64-STATIC: ## %bb.0: ## %entry10315; DARWIN-64-STATIC-NEXT: movq _dptr(%rip), %rax10316; DARWIN-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax10317; DARWIN-64-STATIC-NEXT: retq10318;10319; DARWIN-64-DYNAMIC-LABEL: cam05:10320; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry10321; DARWIN-64-DYNAMIC-NEXT: movq _dptr(%rip), %rax10322; DARWIN-64-DYNAMIC-NEXT: leaq 262144(%rax,%rdi,4), %rax10323; DARWIN-64-DYNAMIC-NEXT: retq10324;10325; DARWIN-64-PIC-LABEL: cam05:10326; DARWIN-64-PIC: ## %bb.0: ## %entry10327; DARWIN-64-PIC-NEXT: movq _dptr(%rip), %rax10328; DARWIN-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax10329; DARWIN-64-PIC-NEXT: retq10330 10331entry:10332 %0 = load ptr, ptr @dptr, align 810333 %1 = add i64 %i, 6553610334 %2 = getelementptr i32, ptr %0, i64 %110335 ret ptr %210336}10337 10338define dso_local ptr @cam06(i64 %i) nounwind {10339; LINUX-64-STATIC-LABEL: cam06:10340; LINUX-64-STATIC: # %bb.0: # %entry10341; LINUX-64-STATIC-NEXT: leaq lsrc+262144(,%rdi,4), %rax10342; LINUX-64-STATIC-NEXT: retq10343;10344; LINUX-32-STATIC-LABEL: cam06:10345; LINUX-32-STATIC: # %bb.0: # %entry10346; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax10347; LINUX-32-STATIC-NEXT: leal lsrc+262144(,%eax,4), %eax10348; LINUX-32-STATIC-NEXT: retl10349;10350; LINUX-32-PIC-LABEL: cam06:10351; LINUX-32-PIC: # %bb.0: # %entry10352; LINUX-32-PIC-NEXT: calll .L128$pb10353; LINUX-32-PIC-NEXT: .L128$pb:10354; LINUX-32-PIC-NEXT: popl %eax10355; LINUX-32-PIC-NEXT: .Ltmp128:10356; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp128-.L128$pb), %eax10357; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx10358; LINUX-32-PIC-NEXT: leal lsrc@GOTOFF+262144(%eax,%ecx,4), %eax10359; LINUX-32-PIC-NEXT: retl10360;10361; LINUX-64-PIC-LABEL: cam06:10362; LINUX-64-PIC: # %bb.0: # %entry10363; LINUX-64-PIC-NEXT: leaq lsrc(%rip), %rax10364; LINUX-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax10365; LINUX-64-PIC-NEXT: retq10366;10367; DARWIN-32-STATIC-LABEL: cam06:10368; DARWIN-32-STATIC: ## %bb.0: ## %entry10369; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax10370; DARWIN-32-STATIC-NEXT: leal _lsrc+262144(,%eax,4), %eax10371; DARWIN-32-STATIC-NEXT: retl10372;10373; DARWIN-32-DYNAMIC-LABEL: cam06:10374; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry10375; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax10376; DARWIN-32-DYNAMIC-NEXT: leal _lsrc+262144(,%eax,4), %eax10377; DARWIN-32-DYNAMIC-NEXT: retl10378;10379; DARWIN-32-PIC-LABEL: cam06:10380; DARWIN-32-PIC: ## %bb.0: ## %entry10381; DARWIN-32-PIC-NEXT: calll L128$pb10382; DARWIN-32-PIC-NEXT: L128$pb:10383; DARWIN-32-PIC-NEXT: popl %eax10384; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx10385; DARWIN-32-PIC-NEXT: leal _lsrc-L128$pb+262144(%eax,%ecx,4), %eax10386; DARWIN-32-PIC-NEXT: retl10387;10388; DARWIN-64-STATIC-LABEL: cam06:10389; DARWIN-64-STATIC: ## %bb.0: ## %entry10390; DARWIN-64-STATIC-NEXT: leaq _lsrc(%rip), %rax10391; DARWIN-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax10392; DARWIN-64-STATIC-NEXT: retq10393;10394; DARWIN-64-DYNAMIC-LABEL: cam06:10395; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry10396; DARWIN-64-DYNAMIC-NEXT: leaq _lsrc(%rip), %rax10397; DARWIN-64-DYNAMIC-NEXT: leaq 262144(%rax,%rdi,4), %rax10398; DARWIN-64-DYNAMIC-NEXT: retq10399;10400; DARWIN-64-PIC-LABEL: cam06:10401; DARWIN-64-PIC: ## %bb.0: ## %entry10402; DARWIN-64-PIC-NEXT: leaq _lsrc(%rip), %rax10403; DARWIN-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax10404; DARWIN-64-PIC-NEXT: retq10405 10406entry:10407 %0 = add i64 %i, 6553610408 %1 = getelementptr [131072 x i32], ptr @lsrc, i64 0, i64 %010409 ret ptr %110410}10411 10412define dso_local ptr @cam07(i64 %i) nounwind {10413; LINUX-64-STATIC-LABEL: cam07:10414; LINUX-64-STATIC: # %bb.0: # %entry10415; LINUX-64-STATIC-NEXT: leaq ldst+262144(,%rdi,4), %rax10416; LINUX-64-STATIC-NEXT: retq10417;10418; LINUX-32-STATIC-LABEL: cam07:10419; LINUX-32-STATIC: # %bb.0: # %entry10420; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax10421; LINUX-32-STATIC-NEXT: leal ldst+262144(,%eax,4), %eax10422; LINUX-32-STATIC-NEXT: retl10423;10424; LINUX-32-PIC-LABEL: cam07:10425; LINUX-32-PIC: # %bb.0: # %entry10426; LINUX-32-PIC-NEXT: calll .L129$pb10427; LINUX-32-PIC-NEXT: .L129$pb:10428; LINUX-32-PIC-NEXT: popl %eax10429; LINUX-32-PIC-NEXT: .Ltmp129:10430; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp129-.L129$pb), %eax10431; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx10432; LINUX-32-PIC-NEXT: leal ldst@GOTOFF+262144(%eax,%ecx,4), %eax10433; LINUX-32-PIC-NEXT: retl10434;10435; LINUX-64-PIC-LABEL: cam07:10436; LINUX-64-PIC: # %bb.0: # %entry10437; LINUX-64-PIC-NEXT: leaq ldst(%rip), %rax10438; LINUX-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax10439; LINUX-64-PIC-NEXT: retq10440;10441; DARWIN-32-STATIC-LABEL: cam07:10442; DARWIN-32-STATIC: ## %bb.0: ## %entry10443; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax10444; DARWIN-32-STATIC-NEXT: leal _ldst+262144(,%eax,4), %eax10445; DARWIN-32-STATIC-NEXT: retl10446;10447; DARWIN-32-DYNAMIC-LABEL: cam07:10448; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry10449; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax10450; DARWIN-32-DYNAMIC-NEXT: leal _ldst+262144(,%eax,4), %eax10451; DARWIN-32-DYNAMIC-NEXT: retl10452;10453; DARWIN-32-PIC-LABEL: cam07:10454; DARWIN-32-PIC: ## %bb.0: ## %entry10455; DARWIN-32-PIC-NEXT: calll L129$pb10456; DARWIN-32-PIC-NEXT: L129$pb:10457; DARWIN-32-PIC-NEXT: popl %eax10458; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx10459; DARWIN-32-PIC-NEXT: leal _ldst-L129$pb+262144(%eax,%ecx,4), %eax10460; DARWIN-32-PIC-NEXT: retl10461;10462; DARWIN-64-STATIC-LABEL: cam07:10463; DARWIN-64-STATIC: ## %bb.0: ## %entry10464; DARWIN-64-STATIC-NEXT: leaq _ldst(%rip), %rax10465; DARWIN-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax10466; DARWIN-64-STATIC-NEXT: retq10467;10468; DARWIN-64-DYNAMIC-LABEL: cam07:10469; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry10470; DARWIN-64-DYNAMIC-NEXT: leaq _ldst(%rip), %rax10471; DARWIN-64-DYNAMIC-NEXT: leaq 262144(%rax,%rdi,4), %rax10472; DARWIN-64-DYNAMIC-NEXT: retq10473;10474; DARWIN-64-PIC-LABEL: cam07:10475; DARWIN-64-PIC: ## %bb.0: ## %entry10476; DARWIN-64-PIC-NEXT: leaq _ldst(%rip), %rax10477; DARWIN-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax10478; DARWIN-64-PIC-NEXT: retq10479 10480entry:10481 %0 = add i64 %i, 6553610482 %1 = getelementptr [131072 x i32], ptr @ldst, i64 0, i64 %010483 ret ptr %110484}10485 10486define dso_local ptr @cam08(i64 %i) nounwind {10487; LINUX-64-STATIC-LABEL: cam08:10488; LINUX-64-STATIC: # %bb.0: # %entry10489; LINUX-64-STATIC-NEXT: movq lptr(%rip), %rax10490; LINUX-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax10491; LINUX-64-STATIC-NEXT: retq10492;10493; LINUX-32-STATIC-LABEL: cam08:10494; LINUX-32-STATIC: # %bb.0: # %entry10495; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax10496; LINUX-32-STATIC-NEXT: movl lptr, %ecx10497; LINUX-32-STATIC-NEXT: leal 262144(%ecx,%eax,4), %eax10498; LINUX-32-STATIC-NEXT: retl10499;10500; LINUX-32-PIC-LABEL: cam08:10501; LINUX-32-PIC: # %bb.0: # %entry10502; LINUX-32-PIC-NEXT: calll .L130$pb10503; LINUX-32-PIC-NEXT: .L130$pb:10504; LINUX-32-PIC-NEXT: popl %eax10505; LINUX-32-PIC-NEXT: .Ltmp130:10506; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp130-.L130$pb), %eax10507; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx10508; LINUX-32-PIC-NEXT: movl lptr@GOTOFF(%eax), %eax10509; LINUX-32-PIC-NEXT: leal 262144(%eax,%ecx,4), %eax10510; LINUX-32-PIC-NEXT: retl10511;10512; LINUX-64-PIC-LABEL: cam08:10513; LINUX-64-PIC: # %bb.0: # %entry10514; LINUX-64-PIC-NEXT: movq lptr(%rip), %rax10515; LINUX-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax10516; LINUX-64-PIC-NEXT: retq10517;10518; DARWIN-32-STATIC-LABEL: cam08:10519; DARWIN-32-STATIC: ## %bb.0: ## %entry10520; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax10521; DARWIN-32-STATIC-NEXT: movl _lptr, %ecx10522; DARWIN-32-STATIC-NEXT: leal 262144(%ecx,%eax,4), %eax10523; DARWIN-32-STATIC-NEXT: retl10524;10525; DARWIN-32-DYNAMIC-LABEL: cam08:10526; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry10527; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax10528; DARWIN-32-DYNAMIC-NEXT: movl _lptr, %ecx10529; DARWIN-32-DYNAMIC-NEXT: leal 262144(%ecx,%eax,4), %eax10530; DARWIN-32-DYNAMIC-NEXT: retl10531;10532; DARWIN-32-PIC-LABEL: cam08:10533; DARWIN-32-PIC: ## %bb.0: ## %entry10534; DARWIN-32-PIC-NEXT: calll L130$pb10535; DARWIN-32-PIC-NEXT: L130$pb:10536; DARWIN-32-PIC-NEXT: popl %eax10537; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx10538; DARWIN-32-PIC-NEXT: movl _lptr-L130$pb(%eax), %eax10539; DARWIN-32-PIC-NEXT: leal 262144(%eax,%ecx,4), %eax10540; DARWIN-32-PIC-NEXT: retl10541;10542; DARWIN-64-STATIC-LABEL: cam08:10543; DARWIN-64-STATIC: ## %bb.0: ## %entry10544; DARWIN-64-STATIC-NEXT: movq _lptr(%rip), %rax10545; DARWIN-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax10546; DARWIN-64-STATIC-NEXT: retq10547;10548; DARWIN-64-DYNAMIC-LABEL: cam08:10549; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry10550; DARWIN-64-DYNAMIC-NEXT: movq _lptr(%rip), %rax10551; DARWIN-64-DYNAMIC-NEXT: leaq 262144(%rax,%rdi,4), %rax10552; DARWIN-64-DYNAMIC-NEXT: retq10553;10554; DARWIN-64-PIC-LABEL: cam08:10555; DARWIN-64-PIC: ## %bb.0: ## %entry10556; DARWIN-64-PIC-NEXT: movq _lptr(%rip), %rax10557; DARWIN-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax10558; DARWIN-64-PIC-NEXT: retq10559 10560entry:10561 %0 = load ptr, ptr @lptr, align 810562 %1 = add i64 %i, 6553610563 %2 = getelementptr i32, ptr %0, i64 %110564 ret ptr %210565}10566 10567define dso_local void @lcallee() nounwind {10568; LINUX-64-STATIC-LABEL: lcallee:10569; LINUX-64-STATIC: # %bb.0: # %entry10570; LINUX-64-STATIC-NEXT: pushq %rax10571; LINUX-64-STATIC-NEXT: callq x@PLT10572; LINUX-64-STATIC-NEXT: callq x@PLT10573; LINUX-64-STATIC-NEXT: callq x@PLT10574; LINUX-64-STATIC-NEXT: callq x@PLT10575; LINUX-64-STATIC-NEXT: callq x@PLT10576; LINUX-64-STATIC-NEXT: callq x@PLT10577; LINUX-64-STATIC-NEXT: callq x@PLT10578; LINUX-64-STATIC-NEXT: popq %rax10579; LINUX-64-STATIC-NEXT: retq10580;10581; LINUX-32-STATIC-LABEL: lcallee:10582; LINUX-32-STATIC: # %bb.0: # %entry10583; LINUX-32-STATIC-NEXT: subl $12, %esp10584; LINUX-32-STATIC-NEXT: calll x@PLT10585; LINUX-32-STATIC-NEXT: calll x@PLT10586; LINUX-32-STATIC-NEXT: calll x@PLT10587; LINUX-32-STATIC-NEXT: calll x@PLT10588; LINUX-32-STATIC-NEXT: calll x@PLT10589; LINUX-32-STATIC-NEXT: calll x@PLT10590; LINUX-32-STATIC-NEXT: calll x@PLT10591; LINUX-32-STATIC-NEXT: addl $12, %esp10592; LINUX-32-STATIC-NEXT: retl10593;10594; LINUX-32-PIC-LABEL: lcallee:10595; LINUX-32-PIC: # %bb.0: # %entry10596; LINUX-32-PIC-NEXT: pushl %ebx10597; LINUX-32-PIC-NEXT: subl $8, %esp10598; LINUX-32-PIC-NEXT: calll .L131$pb10599; LINUX-32-PIC-NEXT: .L131$pb:10600; LINUX-32-PIC-NEXT: popl %ebx10601; LINUX-32-PIC-NEXT: .Ltmp131:10602; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp131-.L131$pb), %ebx10603; LINUX-32-PIC-NEXT: calll x@PLT10604; LINUX-32-PIC-NEXT: calll x@PLT10605; LINUX-32-PIC-NEXT: calll x@PLT10606; LINUX-32-PIC-NEXT: calll x@PLT10607; LINUX-32-PIC-NEXT: calll x@PLT10608; LINUX-32-PIC-NEXT: calll x@PLT10609; LINUX-32-PIC-NEXT: calll x@PLT10610; LINUX-32-PIC-NEXT: addl $8, %esp10611; LINUX-32-PIC-NEXT: popl %ebx10612; LINUX-32-PIC-NEXT: retl10613;10614; LINUX-64-PIC-LABEL: lcallee:10615; LINUX-64-PIC: # %bb.0: # %entry10616; LINUX-64-PIC-NEXT: pushq %rax10617; LINUX-64-PIC-NEXT: callq x@PLT10618; LINUX-64-PIC-NEXT: callq x@PLT10619; LINUX-64-PIC-NEXT: callq x@PLT10620; LINUX-64-PIC-NEXT: callq x@PLT10621; LINUX-64-PIC-NEXT: callq x@PLT10622; LINUX-64-PIC-NEXT: callq x@PLT10623; LINUX-64-PIC-NEXT: callq x@PLT10624; LINUX-64-PIC-NEXT: popq %rax10625; LINUX-64-PIC-NEXT: retq10626;10627; DARWIN-32-STATIC-LABEL: lcallee:10628; DARWIN-32-STATIC: ## %bb.0: ## %entry10629; DARWIN-32-STATIC-NEXT: subl $12, %esp10630; DARWIN-32-STATIC-NEXT: calll _x10631; DARWIN-32-STATIC-NEXT: calll _x10632; DARWIN-32-STATIC-NEXT: calll _x10633; DARWIN-32-STATIC-NEXT: calll _x10634; DARWIN-32-STATIC-NEXT: calll _x10635; DARWIN-32-STATIC-NEXT: calll _x10636; DARWIN-32-STATIC-NEXT: calll _x10637; DARWIN-32-STATIC-NEXT: addl $12, %esp10638; DARWIN-32-STATIC-NEXT: retl10639;10640; DARWIN-32-DYNAMIC-LABEL: lcallee:10641; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry10642; DARWIN-32-DYNAMIC-NEXT: subl $12, %esp10643; DARWIN-32-DYNAMIC-NEXT: calll _x10644; DARWIN-32-DYNAMIC-NEXT: calll _x10645; DARWIN-32-DYNAMIC-NEXT: calll _x10646; DARWIN-32-DYNAMIC-NEXT: calll _x10647; DARWIN-32-DYNAMIC-NEXT: calll _x10648; DARWIN-32-DYNAMIC-NEXT: calll _x10649; DARWIN-32-DYNAMIC-NEXT: calll _x10650; DARWIN-32-DYNAMIC-NEXT: addl $12, %esp10651; DARWIN-32-DYNAMIC-NEXT: retl10652;10653; DARWIN-32-PIC-LABEL: lcallee:10654; DARWIN-32-PIC: ## %bb.0: ## %entry10655; DARWIN-32-PIC-NEXT: subl $12, %esp10656; DARWIN-32-PIC-NEXT: calll _x10657; DARWIN-32-PIC-NEXT: calll _x10658; DARWIN-32-PIC-NEXT: calll _x10659; DARWIN-32-PIC-NEXT: calll _x10660; DARWIN-32-PIC-NEXT: calll _x10661; DARWIN-32-PIC-NEXT: calll _x10662; DARWIN-32-PIC-NEXT: calll _x10663; DARWIN-32-PIC-NEXT: addl $12, %esp10664; DARWIN-32-PIC-NEXT: retl10665;10666; DARWIN-64-STATIC-LABEL: lcallee:10667; DARWIN-64-STATIC: ## %bb.0: ## %entry10668; DARWIN-64-STATIC-NEXT: pushq %rax10669; DARWIN-64-STATIC-NEXT: callq _x10670; DARWIN-64-STATIC-NEXT: callq _x10671; DARWIN-64-STATIC-NEXT: callq _x10672; DARWIN-64-STATIC-NEXT: callq _x10673; DARWIN-64-STATIC-NEXT: callq _x10674; DARWIN-64-STATIC-NEXT: callq _x10675; DARWIN-64-STATIC-NEXT: callq _x10676; DARWIN-64-STATIC-NEXT: popq %rax10677; DARWIN-64-STATIC-NEXT: retq10678;10679; DARWIN-64-DYNAMIC-LABEL: lcallee:10680; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry10681; DARWIN-64-DYNAMIC-NEXT: pushq %rax10682; DARWIN-64-DYNAMIC-NEXT: callq _x10683; DARWIN-64-DYNAMIC-NEXT: callq _x10684; DARWIN-64-DYNAMIC-NEXT: callq _x10685; DARWIN-64-DYNAMIC-NEXT: callq _x10686; DARWIN-64-DYNAMIC-NEXT: callq _x10687; DARWIN-64-DYNAMIC-NEXT: callq _x10688; DARWIN-64-DYNAMIC-NEXT: callq _x10689; DARWIN-64-DYNAMIC-NEXT: popq %rax10690; DARWIN-64-DYNAMIC-NEXT: retq10691;10692; DARWIN-64-PIC-LABEL: lcallee:10693; DARWIN-64-PIC: ## %bb.0: ## %entry10694; DARWIN-64-PIC-NEXT: pushq %rax10695; DARWIN-64-PIC-NEXT: callq _x10696; DARWIN-64-PIC-NEXT: callq _x10697; DARWIN-64-PIC-NEXT: callq _x10698; DARWIN-64-PIC-NEXT: callq _x10699; DARWIN-64-PIC-NEXT: callq _x10700; DARWIN-64-PIC-NEXT: callq _x10701; DARWIN-64-PIC-NEXT: callq _x10702; DARWIN-64-PIC-NEXT: popq %rax10703; DARWIN-64-PIC-NEXT: retq10704 10705entry:10706 call void @x() nounwind10707 call void @x() nounwind10708 call void @x() nounwind10709 call void @x() nounwind10710 call void @x() nounwind10711 call void @x() nounwind10712 call void @x() nounwind10713 ret void10714}10715 10716declare void @x()10717 10718define internal void @dcallee() nounwind {10719; LINUX-64-STATIC-LABEL: dcallee:10720; LINUX-64-STATIC: # %bb.0: # %entry10721; LINUX-64-STATIC-NEXT: pushq %rax10722; LINUX-64-STATIC-NEXT: callq y@PLT10723; LINUX-64-STATIC-NEXT: callq y@PLT10724; LINUX-64-STATIC-NEXT: callq y@PLT10725; LINUX-64-STATIC-NEXT: callq y@PLT10726; LINUX-64-STATIC-NEXT: callq y@PLT10727; LINUX-64-STATIC-NEXT: callq y@PLT10728; LINUX-64-STATIC-NEXT: callq y@PLT10729; LINUX-64-STATIC-NEXT: popq %rax10730; LINUX-64-STATIC-NEXT: retq10731;10732; LINUX-32-STATIC-LABEL: dcallee:10733; LINUX-32-STATIC: # %bb.0: # %entry10734; LINUX-32-STATIC-NEXT: subl $12, %esp10735; LINUX-32-STATIC-NEXT: calll y@PLT10736; LINUX-32-STATIC-NEXT: calll y@PLT10737; LINUX-32-STATIC-NEXT: calll y@PLT10738; LINUX-32-STATIC-NEXT: calll y@PLT10739; LINUX-32-STATIC-NEXT: calll y@PLT10740; LINUX-32-STATIC-NEXT: calll y@PLT10741; LINUX-32-STATIC-NEXT: calll y@PLT10742; LINUX-32-STATIC-NEXT: addl $12, %esp10743; LINUX-32-STATIC-NEXT: retl10744;10745; LINUX-32-PIC-LABEL: dcallee:10746; LINUX-32-PIC: # %bb.0: # %entry10747; LINUX-32-PIC-NEXT: pushl %ebx10748; LINUX-32-PIC-NEXT: subl $8, %esp10749; LINUX-32-PIC-NEXT: calll .L132$pb10750; LINUX-32-PIC-NEXT: .L132$pb:10751; LINUX-32-PIC-NEXT: popl %ebx10752; LINUX-32-PIC-NEXT: .Ltmp132:10753; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp132-.L132$pb), %ebx10754; LINUX-32-PIC-NEXT: calll y@PLT10755; LINUX-32-PIC-NEXT: calll y@PLT10756; LINUX-32-PIC-NEXT: calll y@PLT10757; LINUX-32-PIC-NEXT: calll y@PLT10758; LINUX-32-PIC-NEXT: calll y@PLT10759; LINUX-32-PIC-NEXT: calll y@PLT10760; LINUX-32-PIC-NEXT: calll y@PLT10761; LINUX-32-PIC-NEXT: addl $8, %esp10762; LINUX-32-PIC-NEXT: popl %ebx10763; LINUX-32-PIC-NEXT: retl10764;10765; LINUX-64-PIC-LABEL: dcallee:10766; LINUX-64-PIC: # %bb.0: # %entry10767; LINUX-64-PIC-NEXT: pushq %rax10768; LINUX-64-PIC-NEXT: callq y@PLT10769; LINUX-64-PIC-NEXT: callq y@PLT10770; LINUX-64-PIC-NEXT: callq y@PLT10771; LINUX-64-PIC-NEXT: callq y@PLT10772; LINUX-64-PIC-NEXT: callq y@PLT10773; LINUX-64-PIC-NEXT: callq y@PLT10774; LINUX-64-PIC-NEXT: callq y@PLT10775; LINUX-64-PIC-NEXT: popq %rax10776; LINUX-64-PIC-NEXT: retq10777;10778; DARWIN-32-STATIC-LABEL: dcallee:10779; DARWIN-32-STATIC: ## %bb.0: ## %entry10780; DARWIN-32-STATIC-NEXT: subl $12, %esp10781; DARWIN-32-STATIC-NEXT: calll _y10782; DARWIN-32-STATIC-NEXT: calll _y10783; DARWIN-32-STATIC-NEXT: calll _y10784; DARWIN-32-STATIC-NEXT: calll _y10785; DARWIN-32-STATIC-NEXT: calll _y10786; DARWIN-32-STATIC-NEXT: calll _y10787; DARWIN-32-STATIC-NEXT: calll _y10788; DARWIN-32-STATIC-NEXT: addl $12, %esp10789; DARWIN-32-STATIC-NEXT: retl10790;10791; DARWIN-32-DYNAMIC-LABEL: dcallee:10792; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry10793; DARWIN-32-DYNAMIC-NEXT: subl $12, %esp10794; DARWIN-32-DYNAMIC-NEXT: calll _y10795; DARWIN-32-DYNAMIC-NEXT: calll _y10796; DARWIN-32-DYNAMIC-NEXT: calll _y10797; DARWIN-32-DYNAMIC-NEXT: calll _y10798; DARWIN-32-DYNAMIC-NEXT: calll _y10799; DARWIN-32-DYNAMIC-NEXT: calll _y10800; DARWIN-32-DYNAMIC-NEXT: calll _y10801; DARWIN-32-DYNAMIC-NEXT: addl $12, %esp10802; DARWIN-32-DYNAMIC-NEXT: retl10803;10804; DARWIN-32-PIC-LABEL: dcallee:10805; DARWIN-32-PIC: ## %bb.0: ## %entry10806; DARWIN-32-PIC-NEXT: subl $12, %esp10807; DARWIN-32-PIC-NEXT: calll _y10808; DARWIN-32-PIC-NEXT: calll _y10809; DARWIN-32-PIC-NEXT: calll _y10810; DARWIN-32-PIC-NEXT: calll _y10811; DARWIN-32-PIC-NEXT: calll _y10812; DARWIN-32-PIC-NEXT: calll _y10813; DARWIN-32-PIC-NEXT: calll _y10814; DARWIN-32-PIC-NEXT: addl $12, %esp10815; DARWIN-32-PIC-NEXT: retl10816;10817; DARWIN-64-STATIC-LABEL: dcallee:10818; DARWIN-64-STATIC: ## %bb.0: ## %entry10819; DARWIN-64-STATIC-NEXT: pushq %rax10820; DARWIN-64-STATIC-NEXT: callq _y10821; DARWIN-64-STATIC-NEXT: callq _y10822; DARWIN-64-STATIC-NEXT: callq _y10823; DARWIN-64-STATIC-NEXT: callq _y10824; DARWIN-64-STATIC-NEXT: callq _y10825; DARWIN-64-STATIC-NEXT: callq _y10826; DARWIN-64-STATIC-NEXT: callq _y10827; DARWIN-64-STATIC-NEXT: popq %rax10828; DARWIN-64-STATIC-NEXT: retq10829;10830; DARWIN-64-DYNAMIC-LABEL: dcallee:10831; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry10832; DARWIN-64-DYNAMIC-NEXT: pushq %rax10833; DARWIN-64-DYNAMIC-NEXT: callq _y10834; DARWIN-64-DYNAMIC-NEXT: callq _y10835; DARWIN-64-DYNAMIC-NEXT: callq _y10836; DARWIN-64-DYNAMIC-NEXT: callq _y10837; DARWIN-64-DYNAMIC-NEXT: callq _y10838; DARWIN-64-DYNAMIC-NEXT: callq _y10839; DARWIN-64-DYNAMIC-NEXT: callq _y10840; DARWIN-64-DYNAMIC-NEXT: popq %rax10841; DARWIN-64-DYNAMIC-NEXT: retq10842;10843; DARWIN-64-PIC-LABEL: dcallee:10844; DARWIN-64-PIC: ## %bb.0: ## %entry10845; DARWIN-64-PIC-NEXT: pushq %rax10846; DARWIN-64-PIC-NEXT: callq _y10847; DARWIN-64-PIC-NEXT: callq _y10848; DARWIN-64-PIC-NEXT: callq _y10849; DARWIN-64-PIC-NEXT: callq _y10850; DARWIN-64-PIC-NEXT: callq _y10851; DARWIN-64-PIC-NEXT: callq _y10852; DARWIN-64-PIC-NEXT: callq _y10853; DARWIN-64-PIC-NEXT: popq %rax10854; DARWIN-64-PIC-NEXT: retq10855 10856entry:10857 call void @y() nounwind10858 call void @y() nounwind10859 call void @y() nounwind10860 call void @y() nounwind10861 call void @y() nounwind10862 call void @y() nounwind10863 call void @y() nounwind10864 ret void10865}10866 10867declare void @y()10868 10869define dso_local ptr @address() nounwind {10870; LINUX-64-STATIC-LABEL: address:10871; LINUX-64-STATIC: # %bb.0: # %entry10872; LINUX-64-STATIC-NEXT: movq callee@GOTPCREL(%rip), %rax10873; LINUX-64-STATIC-NEXT: retq10874;10875; LINUX-32-STATIC-LABEL: address:10876; LINUX-32-STATIC: # %bb.0: # %entry10877; LINUX-32-STATIC-NEXT: movl $callee, %eax10878; LINUX-32-STATIC-NEXT: retl10879;10880; LINUX-32-PIC-LABEL: address:10881; LINUX-32-PIC: # %bb.0: # %entry10882; LINUX-32-PIC-NEXT: calll .L133$pb10883; LINUX-32-PIC-NEXT: .L133$pb:10884; LINUX-32-PIC-NEXT: popl %eax10885; LINUX-32-PIC-NEXT: .Ltmp133:10886; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp133-.L133$pb), %eax10887; LINUX-32-PIC-NEXT: movl callee@GOT(%eax), %eax10888; LINUX-32-PIC-NEXT: retl10889;10890; LINUX-64-PIC-LABEL: address:10891; LINUX-64-PIC: # %bb.0: # %entry10892; LINUX-64-PIC-NEXT: movq callee@GOTPCREL(%rip), %rax10893; LINUX-64-PIC-NEXT: retq10894;10895; DARWIN-32-STATIC-LABEL: address:10896; DARWIN-32-STATIC: ## %bb.0: ## %entry10897; DARWIN-32-STATIC-NEXT: movl $_callee, %eax10898; DARWIN-32-STATIC-NEXT: retl10899;10900; DARWIN-32-DYNAMIC-LABEL: address:10901; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry10902; DARWIN-32-DYNAMIC-NEXT: movl L_callee$non_lazy_ptr, %eax10903; DARWIN-32-DYNAMIC-NEXT: retl10904;10905; DARWIN-32-PIC-LABEL: address:10906; DARWIN-32-PIC: ## %bb.0: ## %entry10907; DARWIN-32-PIC-NEXT: calll L133$pb10908; DARWIN-32-PIC-NEXT: L133$pb:10909; DARWIN-32-PIC-NEXT: popl %eax10910; DARWIN-32-PIC-NEXT: movl L_callee$non_lazy_ptr-L133$pb(%eax), %eax10911; DARWIN-32-PIC-NEXT: retl10912;10913; DARWIN-64-STATIC-LABEL: address:10914; DARWIN-64-STATIC: ## %bb.0: ## %entry10915; DARWIN-64-STATIC-NEXT: movq _callee@GOTPCREL(%rip), %rax10916; DARWIN-64-STATIC-NEXT: retq10917;10918; DARWIN-64-DYNAMIC-LABEL: address:10919; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry10920; DARWIN-64-DYNAMIC-NEXT: movq _callee@GOTPCREL(%rip), %rax10921; DARWIN-64-DYNAMIC-NEXT: retq10922;10923; DARWIN-64-PIC-LABEL: address:10924; DARWIN-64-PIC: ## %bb.0: ## %entry10925; DARWIN-64-PIC-NEXT: movq _callee@GOTPCREL(%rip), %rax10926; DARWIN-64-PIC-NEXT: retq10927 10928entry:10929 ret ptr @callee10930}10931 10932declare void @callee()10933 10934define dso_local ptr @laddress() nounwind {10935; LINUX-64-STATIC-LABEL: laddress:10936; LINUX-64-STATIC: # %bb.0: # %entry10937; LINUX-64-STATIC-NEXT: movl $lcallee, %eax10938; LINUX-64-STATIC-NEXT: retq10939;10940; LINUX-32-STATIC-LABEL: laddress:10941; LINUX-32-STATIC: # %bb.0: # %entry10942; LINUX-32-STATIC-NEXT: movl $lcallee, %eax10943; LINUX-32-STATIC-NEXT: retl10944;10945; LINUX-32-PIC-LABEL: laddress:10946; LINUX-32-PIC: # %bb.0: # %entry10947; LINUX-32-PIC-NEXT: calll .L134$pb10948; LINUX-32-PIC-NEXT: .L134$pb:10949; LINUX-32-PIC-NEXT: popl %eax10950; LINUX-32-PIC-NEXT: .Ltmp134:10951; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp134-.L134$pb), %eax10952; LINUX-32-PIC-NEXT: leal .Llcallee$local@GOTOFF(%eax), %eax10953; LINUX-32-PIC-NEXT: retl10954;10955; LINUX-64-PIC-LABEL: laddress:10956; LINUX-64-PIC: # %bb.0: # %entry10957; LINUX-64-PIC-NEXT: leaq .Llcallee$local(%rip), %rax10958; LINUX-64-PIC-NEXT: retq10959;10960; DARWIN-32-STATIC-LABEL: laddress:10961; DARWIN-32-STATIC: ## %bb.0: ## %entry10962; DARWIN-32-STATIC-NEXT: movl $_lcallee, %eax10963; DARWIN-32-STATIC-NEXT: retl10964;10965; DARWIN-32-DYNAMIC-LABEL: laddress:10966; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry10967; DARWIN-32-DYNAMIC-NEXT: movl $_lcallee, %eax10968; DARWIN-32-DYNAMIC-NEXT: retl10969;10970; DARWIN-32-PIC-LABEL: laddress:10971; DARWIN-32-PIC: ## %bb.0: ## %entry10972; DARWIN-32-PIC-NEXT: calll L134$pb10973; DARWIN-32-PIC-NEXT: L134$pb:10974; DARWIN-32-PIC-NEXT: popl %eax10975; DARWIN-32-PIC-NEXT: leal _lcallee-L134$pb(%eax), %eax10976; DARWIN-32-PIC-NEXT: retl10977;10978; DARWIN-64-STATIC-LABEL: laddress:10979; DARWIN-64-STATIC: ## %bb.0: ## %entry10980; DARWIN-64-STATIC-NEXT: leaq _lcallee(%rip), %rax10981; DARWIN-64-STATIC-NEXT: retq10982;10983; DARWIN-64-DYNAMIC-LABEL: laddress:10984; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry10985; DARWIN-64-DYNAMIC-NEXT: leaq _lcallee(%rip), %rax10986; DARWIN-64-DYNAMIC-NEXT: retq10987;10988; DARWIN-64-PIC-LABEL: laddress:10989; DARWIN-64-PIC: ## %bb.0: ## %entry10990; DARWIN-64-PIC-NEXT: leaq _lcallee(%rip), %rax10991; DARWIN-64-PIC-NEXT: retq10992 10993entry:10994 ret ptr @lcallee10995}10996 10997define dso_local ptr @daddress() nounwind {10998; LINUX-64-STATIC-LABEL: daddress:10999; LINUX-64-STATIC: # %bb.0: # %entry11000; LINUX-64-STATIC-NEXT: movl $dcallee, %eax11001; LINUX-64-STATIC-NEXT: retq11002;11003; LINUX-32-STATIC-LABEL: daddress:11004; LINUX-32-STATIC: # %bb.0: # %entry11005; LINUX-32-STATIC-NEXT: movl $dcallee, %eax11006; LINUX-32-STATIC-NEXT: retl11007;11008; LINUX-32-PIC-LABEL: daddress:11009; LINUX-32-PIC: # %bb.0: # %entry11010; LINUX-32-PIC-NEXT: calll .L135$pb11011; LINUX-32-PIC-NEXT: .L135$pb:11012; LINUX-32-PIC-NEXT: popl %eax11013; LINUX-32-PIC-NEXT: .Ltmp135:11014; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp135-.L135$pb), %eax11015; LINUX-32-PIC-NEXT: leal dcallee@GOTOFF(%eax), %eax11016; LINUX-32-PIC-NEXT: retl11017;11018; LINUX-64-PIC-LABEL: daddress:11019; LINUX-64-PIC: # %bb.0: # %entry11020; LINUX-64-PIC-NEXT: leaq dcallee(%rip), %rax11021; LINUX-64-PIC-NEXT: retq11022;11023; DARWIN-32-STATIC-LABEL: daddress:11024; DARWIN-32-STATIC: ## %bb.0: ## %entry11025; DARWIN-32-STATIC-NEXT: movl $_dcallee, %eax11026; DARWIN-32-STATIC-NEXT: retl11027;11028; DARWIN-32-DYNAMIC-LABEL: daddress:11029; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry11030; DARWIN-32-DYNAMIC-NEXT: movl $_dcallee, %eax11031; DARWIN-32-DYNAMIC-NEXT: retl11032;11033; DARWIN-32-PIC-LABEL: daddress:11034; DARWIN-32-PIC: ## %bb.0: ## %entry11035; DARWIN-32-PIC-NEXT: calll L135$pb11036; DARWIN-32-PIC-NEXT: L135$pb:11037; DARWIN-32-PIC-NEXT: popl %eax11038; DARWIN-32-PIC-NEXT: leal _dcallee-L135$pb(%eax), %eax11039; DARWIN-32-PIC-NEXT: retl11040;11041; DARWIN-64-STATIC-LABEL: daddress:11042; DARWIN-64-STATIC: ## %bb.0: ## %entry11043; DARWIN-64-STATIC-NEXT: leaq _dcallee(%rip), %rax11044; DARWIN-64-STATIC-NEXT: retq11045;11046; DARWIN-64-DYNAMIC-LABEL: daddress:11047; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry11048; DARWIN-64-DYNAMIC-NEXT: leaq _dcallee(%rip), %rax11049; DARWIN-64-DYNAMIC-NEXT: retq11050;11051; DARWIN-64-PIC-LABEL: daddress:11052; DARWIN-64-PIC: ## %bb.0: ## %entry11053; DARWIN-64-PIC-NEXT: leaq _dcallee(%rip), %rax11054; DARWIN-64-PIC-NEXT: retq11055 11056entry:11057 ret ptr @dcallee11058}11059 11060define dso_local void @caller() nounwind {11061; LINUX-64-STATIC-LABEL: caller:11062; LINUX-64-STATIC: # %bb.0: # %entry11063; LINUX-64-STATIC-NEXT: pushq %rax11064; LINUX-64-STATIC-NEXT: callq callee@PLT11065; LINUX-64-STATIC-NEXT: callq callee@PLT11066; LINUX-64-STATIC-NEXT: popq %rax11067; LINUX-64-STATIC-NEXT: retq11068;11069; LINUX-32-STATIC-LABEL: caller:11070; LINUX-32-STATIC: # %bb.0: # %entry11071; LINUX-32-STATIC-NEXT: subl $12, %esp11072; LINUX-32-STATIC-NEXT: calll callee@PLT11073; LINUX-32-STATIC-NEXT: calll callee@PLT11074; LINUX-32-STATIC-NEXT: addl $12, %esp11075; LINUX-32-STATIC-NEXT: retl11076;11077; LINUX-32-PIC-LABEL: caller:11078; LINUX-32-PIC: # %bb.0: # %entry11079; LINUX-32-PIC-NEXT: pushl %ebx11080; LINUX-32-PIC-NEXT: subl $8, %esp11081; LINUX-32-PIC-NEXT: calll .L136$pb11082; LINUX-32-PIC-NEXT: .L136$pb:11083; LINUX-32-PIC-NEXT: popl %ebx11084; LINUX-32-PIC-NEXT: .Ltmp136:11085; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp136-.L136$pb), %ebx11086; LINUX-32-PIC-NEXT: calll callee@PLT11087; LINUX-32-PIC-NEXT: calll callee@PLT11088; LINUX-32-PIC-NEXT: addl $8, %esp11089; LINUX-32-PIC-NEXT: popl %ebx11090; LINUX-32-PIC-NEXT: retl11091;11092; LINUX-64-PIC-LABEL: caller:11093; LINUX-64-PIC: # %bb.0: # %entry11094; LINUX-64-PIC-NEXT: pushq %rax11095; LINUX-64-PIC-NEXT: callq callee@PLT11096; LINUX-64-PIC-NEXT: callq callee@PLT11097; LINUX-64-PIC-NEXT: popq %rax11098; LINUX-64-PIC-NEXT: retq11099;11100; DARWIN-32-STATIC-LABEL: caller:11101; DARWIN-32-STATIC: ## %bb.0: ## %entry11102; DARWIN-32-STATIC-NEXT: subl $12, %esp11103; DARWIN-32-STATIC-NEXT: calll _callee11104; DARWIN-32-STATIC-NEXT: calll _callee11105; DARWIN-32-STATIC-NEXT: addl $12, %esp11106; DARWIN-32-STATIC-NEXT: retl11107;11108; DARWIN-32-DYNAMIC-LABEL: caller:11109; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry11110; DARWIN-32-DYNAMIC-NEXT: subl $12, %esp11111; DARWIN-32-DYNAMIC-NEXT: calll _callee11112; DARWIN-32-DYNAMIC-NEXT: calll _callee11113; DARWIN-32-DYNAMIC-NEXT: addl $12, %esp11114; DARWIN-32-DYNAMIC-NEXT: retl11115;11116; DARWIN-32-PIC-LABEL: caller:11117; DARWIN-32-PIC: ## %bb.0: ## %entry11118; DARWIN-32-PIC-NEXT: subl $12, %esp11119; DARWIN-32-PIC-NEXT: calll _callee11120; DARWIN-32-PIC-NEXT: calll _callee11121; DARWIN-32-PIC-NEXT: addl $12, %esp11122; DARWIN-32-PIC-NEXT: retl11123;11124; DARWIN-64-STATIC-LABEL: caller:11125; DARWIN-64-STATIC: ## %bb.0: ## %entry11126; DARWIN-64-STATIC-NEXT: pushq %rax11127; DARWIN-64-STATIC-NEXT: callq _callee11128; DARWIN-64-STATIC-NEXT: callq _callee11129; DARWIN-64-STATIC-NEXT: popq %rax11130; DARWIN-64-STATIC-NEXT: retq11131;11132; DARWIN-64-DYNAMIC-LABEL: caller:11133; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry11134; DARWIN-64-DYNAMIC-NEXT: pushq %rax11135; DARWIN-64-DYNAMIC-NEXT: callq _callee11136; DARWIN-64-DYNAMIC-NEXT: callq _callee11137; DARWIN-64-DYNAMIC-NEXT: popq %rax11138; DARWIN-64-DYNAMIC-NEXT: retq11139;11140; DARWIN-64-PIC-LABEL: caller:11141; DARWIN-64-PIC: ## %bb.0: ## %entry11142; DARWIN-64-PIC-NEXT: pushq %rax11143; DARWIN-64-PIC-NEXT: callq _callee11144; DARWIN-64-PIC-NEXT: callq _callee11145; DARWIN-64-PIC-NEXT: popq %rax11146; DARWIN-64-PIC-NEXT: retq11147 11148entry:11149 call void @callee() nounwind11150 call void @callee() nounwind11151 ret void11152}11153 11154define dso_local void @dcaller() nounwind {11155; LINUX-64-STATIC-LABEL: dcaller:11156; LINUX-64-STATIC: # %bb.0: # %entry11157; LINUX-64-STATIC-NEXT: pushq %rax11158; LINUX-64-STATIC-NEXT: callq dcallee11159; LINUX-64-STATIC-NEXT: callq dcallee11160; LINUX-64-STATIC-NEXT: popq %rax11161; LINUX-64-STATIC-NEXT: retq11162;11163; LINUX-32-STATIC-LABEL: dcaller:11164; LINUX-32-STATIC: # %bb.0: # %entry11165; LINUX-32-STATIC-NEXT: subl $12, %esp11166; LINUX-32-STATIC-NEXT: calll dcallee11167; LINUX-32-STATIC-NEXT: calll dcallee11168; LINUX-32-STATIC-NEXT: addl $12, %esp11169; LINUX-32-STATIC-NEXT: retl11170;11171; LINUX-32-PIC-LABEL: dcaller:11172; LINUX-32-PIC: # %bb.0: # %entry11173; LINUX-32-PIC-NEXT: pushl %ebx11174; LINUX-32-PIC-NEXT: subl $8, %esp11175; LINUX-32-PIC-NEXT: calll .L137$pb11176; LINUX-32-PIC-NEXT: .L137$pb:11177; LINUX-32-PIC-NEXT: popl %ebx11178; LINUX-32-PIC-NEXT: .Ltmp137:11179; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp137-.L137$pb), %ebx11180; LINUX-32-PIC-NEXT: calll dcallee11181; LINUX-32-PIC-NEXT: calll dcallee11182; LINUX-32-PIC-NEXT: addl $8, %esp11183; LINUX-32-PIC-NEXT: popl %ebx11184; LINUX-32-PIC-NEXT: retl11185;11186; LINUX-64-PIC-LABEL: dcaller:11187; LINUX-64-PIC: # %bb.0: # %entry11188; LINUX-64-PIC-NEXT: pushq %rax11189; LINUX-64-PIC-NEXT: callq dcallee11190; LINUX-64-PIC-NEXT: callq dcallee11191; LINUX-64-PIC-NEXT: popq %rax11192; LINUX-64-PIC-NEXT: retq11193;11194; DARWIN-32-STATIC-LABEL: dcaller:11195; DARWIN-32-STATIC: ## %bb.0: ## %entry11196; DARWIN-32-STATIC-NEXT: subl $12, %esp11197; DARWIN-32-STATIC-NEXT: calll _dcallee11198; DARWIN-32-STATIC-NEXT: calll _dcallee11199; DARWIN-32-STATIC-NEXT: addl $12, %esp11200; DARWIN-32-STATIC-NEXT: retl11201;11202; DARWIN-32-DYNAMIC-LABEL: dcaller:11203; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry11204; DARWIN-32-DYNAMIC-NEXT: subl $12, %esp11205; DARWIN-32-DYNAMIC-NEXT: calll _dcallee11206; DARWIN-32-DYNAMIC-NEXT: calll _dcallee11207; DARWIN-32-DYNAMIC-NEXT: addl $12, %esp11208; DARWIN-32-DYNAMIC-NEXT: retl11209;11210; DARWIN-32-PIC-LABEL: dcaller:11211; DARWIN-32-PIC: ## %bb.0: ## %entry11212; DARWIN-32-PIC-NEXT: subl $12, %esp11213; DARWIN-32-PIC-NEXT: calll _dcallee11214; DARWIN-32-PIC-NEXT: calll _dcallee11215; DARWIN-32-PIC-NEXT: addl $12, %esp11216; DARWIN-32-PIC-NEXT: retl11217;11218; DARWIN-64-STATIC-LABEL: dcaller:11219; DARWIN-64-STATIC: ## %bb.0: ## %entry11220; DARWIN-64-STATIC-NEXT: pushq %rax11221; DARWIN-64-STATIC-NEXT: callq _dcallee11222; DARWIN-64-STATIC-NEXT: callq _dcallee11223; DARWIN-64-STATIC-NEXT: popq %rax11224; DARWIN-64-STATIC-NEXT: retq11225;11226; DARWIN-64-DYNAMIC-LABEL: dcaller:11227; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry11228; DARWIN-64-DYNAMIC-NEXT: pushq %rax11229; DARWIN-64-DYNAMIC-NEXT: callq _dcallee11230; DARWIN-64-DYNAMIC-NEXT: callq _dcallee11231; DARWIN-64-DYNAMIC-NEXT: popq %rax11232; DARWIN-64-DYNAMIC-NEXT: retq11233;11234; DARWIN-64-PIC-LABEL: dcaller:11235; DARWIN-64-PIC: ## %bb.0: ## %entry11236; DARWIN-64-PIC-NEXT: pushq %rax11237; DARWIN-64-PIC-NEXT: callq _dcallee11238; DARWIN-64-PIC-NEXT: callq _dcallee11239; DARWIN-64-PIC-NEXT: popq %rax11240; DARWIN-64-PIC-NEXT: retq11241 11242entry:11243 call void @dcallee() nounwind11244 call void @dcallee() nounwind11245 ret void11246}11247 11248define dso_local void @lcaller() nounwind {11249; LINUX-64-STATIC-LABEL: lcaller:11250; LINUX-64-STATIC: # %bb.0: # %entry11251; LINUX-64-STATIC-NEXT: pushq %rax11252; LINUX-64-STATIC-NEXT: callq lcallee11253; LINUX-64-STATIC-NEXT: callq lcallee11254; LINUX-64-STATIC-NEXT: popq %rax11255; LINUX-64-STATIC-NEXT: retq11256;11257; LINUX-32-STATIC-LABEL: lcaller:11258; LINUX-32-STATIC: # %bb.0: # %entry11259; LINUX-32-STATIC-NEXT: subl $12, %esp11260; LINUX-32-STATIC-NEXT: calll lcallee11261; LINUX-32-STATIC-NEXT: calll lcallee11262; LINUX-32-STATIC-NEXT: addl $12, %esp11263; LINUX-32-STATIC-NEXT: retl11264;11265; LINUX-32-PIC-LABEL: lcaller:11266; LINUX-32-PIC: # %bb.0: # %entry11267; LINUX-32-PIC-NEXT: pushl %ebx11268; LINUX-32-PIC-NEXT: subl $8, %esp11269; LINUX-32-PIC-NEXT: calll .L138$pb11270; LINUX-32-PIC-NEXT: .L138$pb:11271; LINUX-32-PIC-NEXT: popl %ebx11272; LINUX-32-PIC-NEXT: .Ltmp138:11273; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp138-.L138$pb), %ebx11274; LINUX-32-PIC-NEXT: calll .Llcallee$local11275; LINUX-32-PIC-NEXT: calll .Llcallee$local11276; LINUX-32-PIC-NEXT: addl $8, %esp11277; LINUX-32-PIC-NEXT: popl %ebx11278; LINUX-32-PIC-NEXT: retl11279;11280; LINUX-64-PIC-LABEL: lcaller:11281; LINUX-64-PIC: # %bb.0: # %entry11282; LINUX-64-PIC-NEXT: pushq %rax11283; LINUX-64-PIC-NEXT: callq .Llcallee$local11284; LINUX-64-PIC-NEXT: callq .Llcallee$local11285; LINUX-64-PIC-NEXT: popq %rax11286; LINUX-64-PIC-NEXT: retq11287;11288; DARWIN-32-STATIC-LABEL: lcaller:11289; DARWIN-32-STATIC: ## %bb.0: ## %entry11290; DARWIN-32-STATIC-NEXT: subl $12, %esp11291; DARWIN-32-STATIC-NEXT: calll _lcallee11292; DARWIN-32-STATIC-NEXT: calll _lcallee11293; DARWIN-32-STATIC-NEXT: addl $12, %esp11294; DARWIN-32-STATIC-NEXT: retl11295;11296; DARWIN-32-DYNAMIC-LABEL: lcaller:11297; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry11298; DARWIN-32-DYNAMIC-NEXT: subl $12, %esp11299; DARWIN-32-DYNAMIC-NEXT: calll _lcallee11300; DARWIN-32-DYNAMIC-NEXT: calll _lcallee11301; DARWIN-32-DYNAMIC-NEXT: addl $12, %esp11302; DARWIN-32-DYNAMIC-NEXT: retl11303;11304; DARWIN-32-PIC-LABEL: lcaller:11305; DARWIN-32-PIC: ## %bb.0: ## %entry11306; DARWIN-32-PIC-NEXT: subl $12, %esp11307; DARWIN-32-PIC-NEXT: calll _lcallee11308; DARWIN-32-PIC-NEXT: calll _lcallee11309; DARWIN-32-PIC-NEXT: addl $12, %esp11310; DARWIN-32-PIC-NEXT: retl11311;11312; DARWIN-64-STATIC-LABEL: lcaller:11313; DARWIN-64-STATIC: ## %bb.0: ## %entry11314; DARWIN-64-STATIC-NEXT: pushq %rax11315; DARWIN-64-STATIC-NEXT: callq _lcallee11316; DARWIN-64-STATIC-NEXT: callq _lcallee11317; DARWIN-64-STATIC-NEXT: popq %rax11318; DARWIN-64-STATIC-NEXT: retq11319;11320; DARWIN-64-DYNAMIC-LABEL: lcaller:11321; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry11322; DARWIN-64-DYNAMIC-NEXT: pushq %rax11323; DARWIN-64-DYNAMIC-NEXT: callq _lcallee11324; DARWIN-64-DYNAMIC-NEXT: callq _lcallee11325; DARWIN-64-DYNAMIC-NEXT: popq %rax11326; DARWIN-64-DYNAMIC-NEXT: retq11327;11328; DARWIN-64-PIC-LABEL: lcaller:11329; DARWIN-64-PIC: ## %bb.0: ## %entry11330; DARWIN-64-PIC-NEXT: pushq %rax11331; DARWIN-64-PIC-NEXT: callq _lcallee11332; DARWIN-64-PIC-NEXT: callq _lcallee11333; DARWIN-64-PIC-NEXT: popq %rax11334; DARWIN-64-PIC-NEXT: retq11335 11336entry:11337 call void @lcallee() nounwind11338 call void @lcallee() nounwind11339 ret void11340}11341 11342define dso_local void @tailcaller() nounwind {11343; LINUX-64-STATIC-LABEL: tailcaller:11344; LINUX-64-STATIC: # %bb.0: # %entry11345; LINUX-64-STATIC-NEXT: pushq %rax11346; LINUX-64-STATIC-NEXT: callq callee@PLT11347; LINUX-64-STATIC-NEXT: popq %rax11348; LINUX-64-STATIC-NEXT: retq11349;11350; LINUX-32-STATIC-LABEL: tailcaller:11351; LINUX-32-STATIC: # %bb.0: # %entry11352; LINUX-32-STATIC-NEXT: subl $12, %esp11353; LINUX-32-STATIC-NEXT: calll callee@PLT11354; LINUX-32-STATIC-NEXT: addl $12, %esp11355; LINUX-32-STATIC-NEXT: retl11356;11357; LINUX-32-PIC-LABEL: tailcaller:11358; LINUX-32-PIC: # %bb.0: # %entry11359; LINUX-32-PIC-NEXT: pushl %ebx11360; LINUX-32-PIC-NEXT: subl $8, %esp11361; LINUX-32-PIC-NEXT: calll .L139$pb11362; LINUX-32-PIC-NEXT: .L139$pb:11363; LINUX-32-PIC-NEXT: popl %ebx11364; LINUX-32-PIC-NEXT: .Ltmp139:11365; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp139-.L139$pb), %ebx11366; LINUX-32-PIC-NEXT: calll callee@PLT11367; LINUX-32-PIC-NEXT: addl $8, %esp11368; LINUX-32-PIC-NEXT: popl %ebx11369; LINUX-32-PIC-NEXT: retl11370;11371; LINUX-64-PIC-LABEL: tailcaller:11372; LINUX-64-PIC: # %bb.0: # %entry11373; LINUX-64-PIC-NEXT: pushq %rax11374; LINUX-64-PIC-NEXT: callq callee@PLT11375; LINUX-64-PIC-NEXT: popq %rax11376; LINUX-64-PIC-NEXT: retq11377;11378; DARWIN-32-STATIC-LABEL: tailcaller:11379; DARWIN-32-STATIC: ## %bb.0: ## %entry11380; DARWIN-32-STATIC-NEXT: subl $12, %esp11381; DARWIN-32-STATIC-NEXT: calll _callee11382; DARWIN-32-STATIC-NEXT: addl $12, %esp11383; DARWIN-32-STATIC-NEXT: retl11384;11385; DARWIN-32-DYNAMIC-LABEL: tailcaller:11386; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry11387; DARWIN-32-DYNAMIC-NEXT: subl $12, %esp11388; DARWIN-32-DYNAMIC-NEXT: calll _callee11389; DARWIN-32-DYNAMIC-NEXT: addl $12, %esp11390; DARWIN-32-DYNAMIC-NEXT: retl11391;11392; DARWIN-32-PIC-LABEL: tailcaller:11393; DARWIN-32-PIC: ## %bb.0: ## %entry11394; DARWIN-32-PIC-NEXT: subl $12, %esp11395; DARWIN-32-PIC-NEXT: calll _callee11396; DARWIN-32-PIC-NEXT: addl $12, %esp11397; DARWIN-32-PIC-NEXT: retl11398;11399; DARWIN-64-STATIC-LABEL: tailcaller:11400; DARWIN-64-STATIC: ## %bb.0: ## %entry11401; DARWIN-64-STATIC-NEXT: pushq %rax11402; DARWIN-64-STATIC-NEXT: callq _callee11403; DARWIN-64-STATIC-NEXT: popq %rax11404; DARWIN-64-STATIC-NEXT: retq11405;11406; DARWIN-64-DYNAMIC-LABEL: tailcaller:11407; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry11408; DARWIN-64-DYNAMIC-NEXT: pushq %rax11409; DARWIN-64-DYNAMIC-NEXT: callq _callee11410; DARWIN-64-DYNAMIC-NEXT: popq %rax11411; DARWIN-64-DYNAMIC-NEXT: retq11412;11413; DARWIN-64-PIC-LABEL: tailcaller:11414; DARWIN-64-PIC: ## %bb.0: ## %entry11415; DARWIN-64-PIC-NEXT: pushq %rax11416; DARWIN-64-PIC-NEXT: callq _callee11417; DARWIN-64-PIC-NEXT: popq %rax11418; DARWIN-64-PIC-NEXT: retq11419 11420entry:11421 call void @callee() nounwind11422 ret void11423}11424 11425define dso_local void @dtailcaller() nounwind {11426; LINUX-64-STATIC-LABEL: dtailcaller:11427; LINUX-64-STATIC: # %bb.0: # %entry11428; LINUX-64-STATIC-NEXT: pushq %rax11429; LINUX-64-STATIC-NEXT: callq dcallee11430; LINUX-64-STATIC-NEXT: popq %rax11431; LINUX-64-STATIC-NEXT: retq11432;11433; LINUX-32-STATIC-LABEL: dtailcaller:11434; LINUX-32-STATIC: # %bb.0: # %entry11435; LINUX-32-STATIC-NEXT: subl $12, %esp11436; LINUX-32-STATIC-NEXT: calll dcallee11437; LINUX-32-STATIC-NEXT: addl $12, %esp11438; LINUX-32-STATIC-NEXT: retl11439;11440; LINUX-32-PIC-LABEL: dtailcaller:11441; LINUX-32-PIC: # %bb.0: # %entry11442; LINUX-32-PIC-NEXT: pushl %ebx11443; LINUX-32-PIC-NEXT: subl $8, %esp11444; LINUX-32-PIC-NEXT: calll .L140$pb11445; LINUX-32-PIC-NEXT: .L140$pb:11446; LINUX-32-PIC-NEXT: popl %ebx11447; LINUX-32-PIC-NEXT: .Ltmp140:11448; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp140-.L140$pb), %ebx11449; LINUX-32-PIC-NEXT: calll dcallee11450; LINUX-32-PIC-NEXT: addl $8, %esp11451; LINUX-32-PIC-NEXT: popl %ebx11452; LINUX-32-PIC-NEXT: retl11453;11454; LINUX-64-PIC-LABEL: dtailcaller:11455; LINUX-64-PIC: # %bb.0: # %entry11456; LINUX-64-PIC-NEXT: pushq %rax11457; LINUX-64-PIC-NEXT: callq dcallee11458; LINUX-64-PIC-NEXT: popq %rax11459; LINUX-64-PIC-NEXT: retq11460;11461; DARWIN-32-STATIC-LABEL: dtailcaller:11462; DARWIN-32-STATIC: ## %bb.0: ## %entry11463; DARWIN-32-STATIC-NEXT: subl $12, %esp11464; DARWIN-32-STATIC-NEXT: calll _dcallee11465; DARWIN-32-STATIC-NEXT: addl $12, %esp11466; DARWIN-32-STATIC-NEXT: retl11467;11468; DARWIN-32-DYNAMIC-LABEL: dtailcaller:11469; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry11470; DARWIN-32-DYNAMIC-NEXT: subl $12, %esp11471; DARWIN-32-DYNAMIC-NEXT: calll _dcallee11472; DARWIN-32-DYNAMIC-NEXT: addl $12, %esp11473; DARWIN-32-DYNAMIC-NEXT: retl11474;11475; DARWIN-32-PIC-LABEL: dtailcaller:11476; DARWIN-32-PIC: ## %bb.0: ## %entry11477; DARWIN-32-PIC-NEXT: subl $12, %esp11478; DARWIN-32-PIC-NEXT: calll _dcallee11479; DARWIN-32-PIC-NEXT: addl $12, %esp11480; DARWIN-32-PIC-NEXT: retl11481;11482; DARWIN-64-STATIC-LABEL: dtailcaller:11483; DARWIN-64-STATIC: ## %bb.0: ## %entry11484; DARWIN-64-STATIC-NEXT: pushq %rax11485; DARWIN-64-STATIC-NEXT: callq _dcallee11486; DARWIN-64-STATIC-NEXT: popq %rax11487; DARWIN-64-STATIC-NEXT: retq11488;11489; DARWIN-64-DYNAMIC-LABEL: dtailcaller:11490; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry11491; DARWIN-64-DYNAMIC-NEXT: pushq %rax11492; DARWIN-64-DYNAMIC-NEXT: callq _dcallee11493; DARWIN-64-DYNAMIC-NEXT: popq %rax11494; DARWIN-64-DYNAMIC-NEXT: retq11495;11496; DARWIN-64-PIC-LABEL: dtailcaller:11497; DARWIN-64-PIC: ## %bb.0: ## %entry11498; DARWIN-64-PIC-NEXT: pushq %rax11499; DARWIN-64-PIC-NEXT: callq _dcallee11500; DARWIN-64-PIC-NEXT: popq %rax11501; DARWIN-64-PIC-NEXT: retq11502 11503entry:11504 call void @dcallee() nounwind11505 ret void11506}11507 11508define dso_local void @ltailcaller() nounwind {11509; LINUX-64-STATIC-LABEL: ltailcaller:11510; LINUX-64-STATIC: # %bb.0: # %entry11511; LINUX-64-STATIC-NEXT: pushq %rax11512; LINUX-64-STATIC-NEXT: callq lcallee11513; LINUX-64-STATIC-NEXT: popq %rax11514; LINUX-64-STATIC-NEXT: retq11515;11516; LINUX-32-STATIC-LABEL: ltailcaller:11517; LINUX-32-STATIC: # %bb.0: # %entry11518; LINUX-32-STATIC-NEXT: subl $12, %esp11519; LINUX-32-STATIC-NEXT: calll lcallee11520; LINUX-32-STATIC-NEXT: addl $12, %esp11521; LINUX-32-STATIC-NEXT: retl11522;11523; LINUX-32-PIC-LABEL: ltailcaller:11524; LINUX-32-PIC: # %bb.0: # %entry11525; LINUX-32-PIC-NEXT: pushl %ebx11526; LINUX-32-PIC-NEXT: subl $8, %esp11527; LINUX-32-PIC-NEXT: calll .L141$pb11528; LINUX-32-PIC-NEXT: .L141$pb:11529; LINUX-32-PIC-NEXT: popl %ebx11530; LINUX-32-PIC-NEXT: .Ltmp141:11531; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp141-.L141$pb), %ebx11532; LINUX-32-PIC-NEXT: calll .Llcallee$local11533; LINUX-32-PIC-NEXT: addl $8, %esp11534; LINUX-32-PIC-NEXT: popl %ebx11535; LINUX-32-PIC-NEXT: retl11536;11537; LINUX-64-PIC-LABEL: ltailcaller:11538; LINUX-64-PIC: # %bb.0: # %entry11539; LINUX-64-PIC-NEXT: pushq %rax11540; LINUX-64-PIC-NEXT: callq .Llcallee$local11541; LINUX-64-PIC-NEXT: popq %rax11542; LINUX-64-PIC-NEXT: retq11543;11544; DARWIN-32-STATIC-LABEL: ltailcaller:11545; DARWIN-32-STATIC: ## %bb.0: ## %entry11546; DARWIN-32-STATIC-NEXT: subl $12, %esp11547; DARWIN-32-STATIC-NEXT: calll _lcallee11548; DARWIN-32-STATIC-NEXT: addl $12, %esp11549; DARWIN-32-STATIC-NEXT: retl11550;11551; DARWIN-32-DYNAMIC-LABEL: ltailcaller:11552; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry11553; DARWIN-32-DYNAMIC-NEXT: subl $12, %esp11554; DARWIN-32-DYNAMIC-NEXT: calll _lcallee11555; DARWIN-32-DYNAMIC-NEXT: addl $12, %esp11556; DARWIN-32-DYNAMIC-NEXT: retl11557;11558; DARWIN-32-PIC-LABEL: ltailcaller:11559; DARWIN-32-PIC: ## %bb.0: ## %entry11560; DARWIN-32-PIC-NEXT: subl $12, %esp11561; DARWIN-32-PIC-NEXT: calll _lcallee11562; DARWIN-32-PIC-NEXT: addl $12, %esp11563; DARWIN-32-PIC-NEXT: retl11564;11565; DARWIN-64-STATIC-LABEL: ltailcaller:11566; DARWIN-64-STATIC: ## %bb.0: ## %entry11567; DARWIN-64-STATIC-NEXT: pushq %rax11568; DARWIN-64-STATIC-NEXT: callq _lcallee11569; DARWIN-64-STATIC-NEXT: popq %rax11570; DARWIN-64-STATIC-NEXT: retq11571;11572; DARWIN-64-DYNAMIC-LABEL: ltailcaller:11573; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry11574; DARWIN-64-DYNAMIC-NEXT: pushq %rax11575; DARWIN-64-DYNAMIC-NEXT: callq _lcallee11576; DARWIN-64-DYNAMIC-NEXT: popq %rax11577; DARWIN-64-DYNAMIC-NEXT: retq11578;11579; DARWIN-64-PIC-LABEL: ltailcaller:11580; DARWIN-64-PIC: ## %bb.0: ## %entry11581; DARWIN-64-PIC-NEXT: pushq %rax11582; DARWIN-64-PIC-NEXT: callq _lcallee11583; DARWIN-64-PIC-NEXT: popq %rax11584; DARWIN-64-PIC-NEXT: retq11585 11586entry:11587 call void @lcallee() nounwind11588 ret void11589}11590 11591define dso_local void @icaller() nounwind {11592; LINUX-64-STATIC-LABEL: icaller:11593; LINUX-64-STATIC: # %bb.0: # %entry11594; LINUX-64-STATIC-NEXT: pushq %rbx11595; LINUX-64-STATIC-NEXT: movq ifunc@GOTPCREL(%rip), %rbx11596; LINUX-64-STATIC-NEXT: callq *(%rbx)11597; LINUX-64-STATIC-NEXT: callq *(%rbx)11598; LINUX-64-STATIC-NEXT: popq %rbx11599; LINUX-64-STATIC-NEXT: retq11600;11601; LINUX-32-STATIC-LABEL: icaller:11602; LINUX-32-STATIC: # %bb.0: # %entry11603; LINUX-32-STATIC-NEXT: subl $12, %esp11604; LINUX-32-STATIC-NEXT: calll *ifunc11605; LINUX-32-STATIC-NEXT: calll *ifunc11606; LINUX-32-STATIC-NEXT: addl $12, %esp11607; LINUX-32-STATIC-NEXT: retl11608;11609; LINUX-32-PIC-LABEL: icaller:11610; LINUX-32-PIC: # %bb.0: # %entry11611; LINUX-32-PIC-NEXT: pushl %ebx11612; LINUX-32-PIC-NEXT: pushl %esi11613; LINUX-32-PIC-NEXT: pushl %eax11614; LINUX-32-PIC-NEXT: calll .L142$pb11615; LINUX-32-PIC-NEXT: .L142$pb:11616; LINUX-32-PIC-NEXT: popl %ebx11617; LINUX-32-PIC-NEXT: .Ltmp142:11618; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp142-.L142$pb), %ebx11619; LINUX-32-PIC-NEXT: movl ifunc@GOT(%ebx), %esi11620; LINUX-32-PIC-NEXT: calll *(%esi)11621; LINUX-32-PIC-NEXT: calll *(%esi)11622; LINUX-32-PIC-NEXT: addl $4, %esp11623; LINUX-32-PIC-NEXT: popl %esi11624; LINUX-32-PIC-NEXT: popl %ebx11625; LINUX-32-PIC-NEXT: retl11626;11627; LINUX-64-PIC-LABEL: icaller:11628; LINUX-64-PIC: # %bb.0: # %entry11629; LINUX-64-PIC-NEXT: pushq %rbx11630; LINUX-64-PIC-NEXT: movq ifunc@GOTPCREL(%rip), %rbx11631; LINUX-64-PIC-NEXT: callq *(%rbx)11632; LINUX-64-PIC-NEXT: callq *(%rbx)11633; LINUX-64-PIC-NEXT: popq %rbx11634; LINUX-64-PIC-NEXT: retq11635;11636; DARWIN-32-STATIC-LABEL: icaller:11637; DARWIN-32-STATIC: ## %bb.0: ## %entry11638; DARWIN-32-STATIC-NEXT: subl $12, %esp11639; DARWIN-32-STATIC-NEXT: calll *_ifunc11640; DARWIN-32-STATIC-NEXT: calll *_ifunc11641; DARWIN-32-STATIC-NEXT: addl $12, %esp11642; DARWIN-32-STATIC-NEXT: retl11643;11644; DARWIN-32-DYNAMIC-LABEL: icaller:11645; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry11646; DARWIN-32-DYNAMIC-NEXT: pushl %esi11647; DARWIN-32-DYNAMIC-NEXT: subl $8, %esp11648; DARWIN-32-DYNAMIC-NEXT: movl L_ifunc$non_lazy_ptr, %esi11649; DARWIN-32-DYNAMIC-NEXT: calll *(%esi)11650; DARWIN-32-DYNAMIC-NEXT: calll *(%esi)11651; DARWIN-32-DYNAMIC-NEXT: addl $8, %esp11652; DARWIN-32-DYNAMIC-NEXT: popl %esi11653; DARWIN-32-DYNAMIC-NEXT: retl11654;11655; DARWIN-32-PIC-LABEL: icaller:11656; DARWIN-32-PIC: ## %bb.0: ## %entry11657; DARWIN-32-PIC-NEXT: pushl %esi11658; DARWIN-32-PIC-NEXT: subl $8, %esp11659; DARWIN-32-PIC-NEXT: calll L142$pb11660; DARWIN-32-PIC-NEXT: L142$pb:11661; DARWIN-32-PIC-NEXT: popl %eax11662; DARWIN-32-PIC-NEXT: movl L_ifunc$non_lazy_ptr-L142$pb(%eax), %esi11663; DARWIN-32-PIC-NEXT: calll *(%esi)11664; DARWIN-32-PIC-NEXT: calll *(%esi)11665; DARWIN-32-PIC-NEXT: addl $8, %esp11666; DARWIN-32-PIC-NEXT: popl %esi11667; DARWIN-32-PIC-NEXT: retl11668;11669; DARWIN-64-STATIC-LABEL: icaller:11670; DARWIN-64-STATIC: ## %bb.0: ## %entry11671; DARWIN-64-STATIC-NEXT: pushq %rbx11672; DARWIN-64-STATIC-NEXT: movq _ifunc@GOTPCREL(%rip), %rbx11673; DARWIN-64-STATIC-NEXT: callq *(%rbx)11674; DARWIN-64-STATIC-NEXT: callq *(%rbx)11675; DARWIN-64-STATIC-NEXT: popq %rbx11676; DARWIN-64-STATIC-NEXT: retq11677;11678; DARWIN-64-DYNAMIC-LABEL: icaller:11679; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry11680; DARWIN-64-DYNAMIC-NEXT: pushq %rbx11681; DARWIN-64-DYNAMIC-NEXT: movq _ifunc@GOTPCREL(%rip), %rbx11682; DARWIN-64-DYNAMIC-NEXT: callq *(%rbx)11683; DARWIN-64-DYNAMIC-NEXT: callq *(%rbx)11684; DARWIN-64-DYNAMIC-NEXT: popq %rbx11685; DARWIN-64-DYNAMIC-NEXT: retq11686;11687; DARWIN-64-PIC-LABEL: icaller:11688; DARWIN-64-PIC: ## %bb.0: ## %entry11689; DARWIN-64-PIC-NEXT: pushq %rbx11690; DARWIN-64-PIC-NEXT: movq _ifunc@GOTPCREL(%rip), %rbx11691; DARWIN-64-PIC-NEXT: callq *(%rbx)11692; DARWIN-64-PIC-NEXT: callq *(%rbx)11693; DARWIN-64-PIC-NEXT: popq %rbx11694; DARWIN-64-PIC-NEXT: retq11695 11696entry:11697 %0 = load ptr, ptr @ifunc, align 811698 call void %0() nounwind11699 %1 = load ptr, ptr @ifunc, align 811700 call void %1() nounwind11701 ret void11702}11703 11704define dso_local void @dicaller() nounwind {11705; LINUX-64-STATIC-LABEL: dicaller:11706; LINUX-64-STATIC: # %bb.0: # %entry11707; LINUX-64-STATIC-NEXT: pushq %rax11708; LINUX-64-STATIC-NEXT: callq *difunc(%rip)11709; LINUX-64-STATIC-NEXT: callq *difunc(%rip)11710; LINUX-64-STATIC-NEXT: popq %rax11711; LINUX-64-STATIC-NEXT: retq11712;11713; LINUX-32-STATIC-LABEL: dicaller:11714; LINUX-32-STATIC: # %bb.0: # %entry11715; LINUX-32-STATIC-NEXT: subl $12, %esp11716; LINUX-32-STATIC-NEXT: calll *difunc11717; LINUX-32-STATIC-NEXT: calll *difunc11718; LINUX-32-STATIC-NEXT: addl $12, %esp11719; LINUX-32-STATIC-NEXT: retl11720;11721; LINUX-32-PIC-LABEL: dicaller:11722; LINUX-32-PIC: # %bb.0: # %entry11723; LINUX-32-PIC-NEXT: pushl %ebx11724; LINUX-32-PIC-NEXT: subl $8, %esp11725; LINUX-32-PIC-NEXT: calll .L143$pb11726; LINUX-32-PIC-NEXT: .L143$pb:11727; LINUX-32-PIC-NEXT: popl %ebx11728; LINUX-32-PIC-NEXT: .Ltmp143:11729; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp143-.L143$pb), %ebx11730; LINUX-32-PIC-NEXT: calll *.Ldifunc$local@GOTOFF(%ebx)11731; LINUX-32-PIC-NEXT: calll *.Ldifunc$local@GOTOFF(%ebx)11732; LINUX-32-PIC-NEXT: addl $8, %esp11733; LINUX-32-PIC-NEXT: popl %ebx11734; LINUX-32-PIC-NEXT: retl11735;11736; LINUX-64-PIC-LABEL: dicaller:11737; LINUX-64-PIC: # %bb.0: # %entry11738; LINUX-64-PIC-NEXT: pushq %rax11739; LINUX-64-PIC-NEXT: callq *.Ldifunc$local(%rip)11740; LINUX-64-PIC-NEXT: callq *.Ldifunc$local(%rip)11741; LINUX-64-PIC-NEXT: popq %rax11742; LINUX-64-PIC-NEXT: retq11743;11744; DARWIN-32-STATIC-LABEL: dicaller:11745; DARWIN-32-STATIC: ## %bb.0: ## %entry11746; DARWIN-32-STATIC-NEXT: subl $12, %esp11747; DARWIN-32-STATIC-NEXT: calll *_difunc11748; DARWIN-32-STATIC-NEXT: calll *_difunc11749; DARWIN-32-STATIC-NEXT: addl $12, %esp11750; DARWIN-32-STATIC-NEXT: retl11751;11752; DARWIN-32-DYNAMIC-LABEL: dicaller:11753; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry11754; DARWIN-32-DYNAMIC-NEXT: subl $12, %esp11755; DARWIN-32-DYNAMIC-NEXT: calll *_difunc11756; DARWIN-32-DYNAMIC-NEXT: calll *_difunc11757; DARWIN-32-DYNAMIC-NEXT: addl $12, %esp11758; DARWIN-32-DYNAMIC-NEXT: retl11759;11760; DARWIN-32-PIC-LABEL: dicaller:11761; DARWIN-32-PIC: ## %bb.0: ## %entry11762; DARWIN-32-PIC-NEXT: pushl %esi11763; DARWIN-32-PIC-NEXT: subl $8, %esp11764; DARWIN-32-PIC-NEXT: calll L143$pb11765; DARWIN-32-PIC-NEXT: L143$pb:11766; DARWIN-32-PIC-NEXT: popl %esi11767; DARWIN-32-PIC-NEXT: calll *_difunc-L143$pb(%esi)11768; DARWIN-32-PIC-NEXT: calll *_difunc-L143$pb(%esi)11769; DARWIN-32-PIC-NEXT: addl $8, %esp11770; DARWIN-32-PIC-NEXT: popl %esi11771; DARWIN-32-PIC-NEXT: retl11772;11773; DARWIN-64-STATIC-LABEL: dicaller:11774; DARWIN-64-STATIC: ## %bb.0: ## %entry11775; DARWIN-64-STATIC-NEXT: pushq %rax11776; DARWIN-64-STATIC-NEXT: callq *_difunc(%rip)11777; DARWIN-64-STATIC-NEXT: callq *_difunc(%rip)11778; DARWIN-64-STATIC-NEXT: popq %rax11779; DARWIN-64-STATIC-NEXT: retq11780;11781; DARWIN-64-DYNAMIC-LABEL: dicaller:11782; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry11783; DARWIN-64-DYNAMIC-NEXT: pushq %rax11784; DARWIN-64-DYNAMIC-NEXT: callq *_difunc(%rip)11785; DARWIN-64-DYNAMIC-NEXT: callq *_difunc(%rip)11786; DARWIN-64-DYNAMIC-NEXT: popq %rax11787; DARWIN-64-DYNAMIC-NEXT: retq11788;11789; DARWIN-64-PIC-LABEL: dicaller:11790; DARWIN-64-PIC: ## %bb.0: ## %entry11791; DARWIN-64-PIC-NEXT: pushq %rax11792; DARWIN-64-PIC-NEXT: callq *_difunc(%rip)11793; DARWIN-64-PIC-NEXT: callq *_difunc(%rip)11794; DARWIN-64-PIC-NEXT: popq %rax11795; DARWIN-64-PIC-NEXT: retq11796 11797entry:11798 %0 = load ptr, ptr @difunc, align 811799 call void %0() nounwind11800 %1 = load ptr, ptr @difunc, align 811801 call void %1() nounwind11802 ret void11803}11804 11805define dso_local void @licaller() nounwind {11806; LINUX-64-STATIC-LABEL: licaller:11807; LINUX-64-STATIC: # %bb.0: # %entry11808; LINUX-64-STATIC-NEXT: pushq %rax11809; LINUX-64-STATIC-NEXT: callq *lifunc(%rip)11810; LINUX-64-STATIC-NEXT: callq *lifunc(%rip)11811; LINUX-64-STATIC-NEXT: popq %rax11812; LINUX-64-STATIC-NEXT: retq11813;11814; LINUX-32-STATIC-LABEL: licaller:11815; LINUX-32-STATIC: # %bb.0: # %entry11816; LINUX-32-STATIC-NEXT: subl $12, %esp11817; LINUX-32-STATIC-NEXT: calll *lifunc11818; LINUX-32-STATIC-NEXT: calll *lifunc11819; LINUX-32-STATIC-NEXT: addl $12, %esp11820; LINUX-32-STATIC-NEXT: retl11821;11822; LINUX-32-PIC-LABEL: licaller:11823; LINUX-32-PIC: # %bb.0: # %entry11824; LINUX-32-PIC-NEXT: pushl %ebx11825; LINUX-32-PIC-NEXT: subl $8, %esp11826; LINUX-32-PIC-NEXT: calll .L144$pb11827; LINUX-32-PIC-NEXT: .L144$pb:11828; LINUX-32-PIC-NEXT: popl %ebx11829; LINUX-32-PIC-NEXT: .Ltmp144:11830; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp144-.L144$pb), %ebx11831; LINUX-32-PIC-NEXT: calll *lifunc@GOTOFF(%ebx)11832; LINUX-32-PIC-NEXT: calll *lifunc@GOTOFF(%ebx)11833; LINUX-32-PIC-NEXT: addl $8, %esp11834; LINUX-32-PIC-NEXT: popl %ebx11835; LINUX-32-PIC-NEXT: retl11836;11837; LINUX-64-PIC-LABEL: licaller:11838; LINUX-64-PIC: # %bb.0: # %entry11839; LINUX-64-PIC-NEXT: pushq %rax11840; LINUX-64-PIC-NEXT: callq *lifunc(%rip)11841; LINUX-64-PIC-NEXT: callq *lifunc(%rip)11842; LINUX-64-PIC-NEXT: popq %rax11843; LINUX-64-PIC-NEXT: retq11844;11845; DARWIN-32-STATIC-LABEL: licaller:11846; DARWIN-32-STATIC: ## %bb.0: ## %entry11847; DARWIN-32-STATIC-NEXT: subl $12, %esp11848; DARWIN-32-STATIC-NEXT: calll *_lifunc11849; DARWIN-32-STATIC-NEXT: calll *_lifunc11850; DARWIN-32-STATIC-NEXT: addl $12, %esp11851; DARWIN-32-STATIC-NEXT: retl11852;11853; DARWIN-32-DYNAMIC-LABEL: licaller:11854; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry11855; DARWIN-32-DYNAMIC-NEXT: subl $12, %esp11856; DARWIN-32-DYNAMIC-NEXT: calll *_lifunc11857; DARWIN-32-DYNAMIC-NEXT: calll *_lifunc11858; DARWIN-32-DYNAMIC-NEXT: addl $12, %esp11859; DARWIN-32-DYNAMIC-NEXT: retl11860;11861; DARWIN-32-PIC-LABEL: licaller:11862; DARWIN-32-PIC: ## %bb.0: ## %entry11863; DARWIN-32-PIC-NEXT: pushl %esi11864; DARWIN-32-PIC-NEXT: subl $8, %esp11865; DARWIN-32-PIC-NEXT: calll L144$pb11866; DARWIN-32-PIC-NEXT: L144$pb:11867; DARWIN-32-PIC-NEXT: popl %esi11868; DARWIN-32-PIC-NEXT: calll *_lifunc-L144$pb(%esi)11869; DARWIN-32-PIC-NEXT: calll *_lifunc-L144$pb(%esi)11870; DARWIN-32-PIC-NEXT: addl $8, %esp11871; DARWIN-32-PIC-NEXT: popl %esi11872; DARWIN-32-PIC-NEXT: retl11873;11874; DARWIN-64-STATIC-LABEL: licaller:11875; DARWIN-64-STATIC: ## %bb.0: ## %entry11876; DARWIN-64-STATIC-NEXT: pushq %rax11877; DARWIN-64-STATIC-NEXT: callq *_lifunc(%rip)11878; DARWIN-64-STATIC-NEXT: callq *_lifunc(%rip)11879; DARWIN-64-STATIC-NEXT: popq %rax11880; DARWIN-64-STATIC-NEXT: retq11881;11882; DARWIN-64-DYNAMIC-LABEL: licaller:11883; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry11884; DARWIN-64-DYNAMIC-NEXT: pushq %rax11885; DARWIN-64-DYNAMIC-NEXT: callq *_lifunc(%rip)11886; DARWIN-64-DYNAMIC-NEXT: callq *_lifunc(%rip)11887; DARWIN-64-DYNAMIC-NEXT: popq %rax11888; DARWIN-64-DYNAMIC-NEXT: retq11889;11890; DARWIN-64-PIC-LABEL: licaller:11891; DARWIN-64-PIC: ## %bb.0: ## %entry11892; DARWIN-64-PIC-NEXT: pushq %rax11893; DARWIN-64-PIC-NEXT: callq *_lifunc(%rip)11894; DARWIN-64-PIC-NEXT: callq *_lifunc(%rip)11895; DARWIN-64-PIC-NEXT: popq %rax11896; DARWIN-64-PIC-NEXT: retq11897 11898entry:11899 %0 = load ptr, ptr @lifunc, align 811900 call void %0() nounwind11901 %1 = load ptr, ptr @lifunc, align 811902 call void %1() nounwind11903 ret void11904}11905 11906define dso_local void @itailcaller() nounwind {11907; LINUX-64-STATIC-LABEL: itailcaller:11908; LINUX-64-STATIC: # %bb.0: # %entry11909; LINUX-64-STATIC-NEXT: pushq %rbx11910; LINUX-64-STATIC-NEXT: movq ifunc@GOTPCREL(%rip), %rbx11911; LINUX-64-STATIC-NEXT: callq *(%rbx)11912; LINUX-64-STATIC-NEXT: callq *(%rbx)11913; LINUX-64-STATIC-NEXT: popq %rbx11914; LINUX-64-STATIC-NEXT: retq11915;11916; LINUX-32-STATIC-LABEL: itailcaller:11917; LINUX-32-STATIC: # %bb.0: # %entry11918; LINUX-32-STATIC-NEXT: subl $12, %esp11919; LINUX-32-STATIC-NEXT: calll *ifunc11920; LINUX-32-STATIC-NEXT: calll *ifunc11921; LINUX-32-STATIC-NEXT: addl $12, %esp11922; LINUX-32-STATIC-NEXT: retl11923;11924; LINUX-32-PIC-LABEL: itailcaller:11925; LINUX-32-PIC: # %bb.0: # %entry11926; LINUX-32-PIC-NEXT: pushl %ebx11927; LINUX-32-PIC-NEXT: pushl %esi11928; LINUX-32-PIC-NEXT: pushl %eax11929; LINUX-32-PIC-NEXT: calll .L145$pb11930; LINUX-32-PIC-NEXT: .L145$pb:11931; LINUX-32-PIC-NEXT: popl %ebx11932; LINUX-32-PIC-NEXT: .Ltmp145:11933; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp145-.L145$pb), %ebx11934; LINUX-32-PIC-NEXT: movl ifunc@GOT(%ebx), %esi11935; LINUX-32-PIC-NEXT: calll *(%esi)11936; LINUX-32-PIC-NEXT: calll *(%esi)11937; LINUX-32-PIC-NEXT: addl $4, %esp11938; LINUX-32-PIC-NEXT: popl %esi11939; LINUX-32-PIC-NEXT: popl %ebx11940; LINUX-32-PIC-NEXT: retl11941;11942; LINUX-64-PIC-LABEL: itailcaller:11943; LINUX-64-PIC: # %bb.0: # %entry11944; LINUX-64-PIC-NEXT: pushq %rbx11945; LINUX-64-PIC-NEXT: movq ifunc@GOTPCREL(%rip), %rbx11946; LINUX-64-PIC-NEXT: callq *(%rbx)11947; LINUX-64-PIC-NEXT: callq *(%rbx)11948; LINUX-64-PIC-NEXT: popq %rbx11949; LINUX-64-PIC-NEXT: retq11950;11951; DARWIN-32-STATIC-LABEL: itailcaller:11952; DARWIN-32-STATIC: ## %bb.0: ## %entry11953; DARWIN-32-STATIC-NEXT: subl $12, %esp11954; DARWIN-32-STATIC-NEXT: calll *_ifunc11955; DARWIN-32-STATIC-NEXT: calll *_ifunc11956; DARWIN-32-STATIC-NEXT: addl $12, %esp11957; DARWIN-32-STATIC-NEXT: retl11958;11959; DARWIN-32-DYNAMIC-LABEL: itailcaller:11960; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry11961; DARWIN-32-DYNAMIC-NEXT: pushl %esi11962; DARWIN-32-DYNAMIC-NEXT: subl $8, %esp11963; DARWIN-32-DYNAMIC-NEXT: movl L_ifunc$non_lazy_ptr, %esi11964; DARWIN-32-DYNAMIC-NEXT: calll *(%esi)11965; DARWIN-32-DYNAMIC-NEXT: calll *(%esi)11966; DARWIN-32-DYNAMIC-NEXT: addl $8, %esp11967; DARWIN-32-DYNAMIC-NEXT: popl %esi11968; DARWIN-32-DYNAMIC-NEXT: retl11969;11970; DARWIN-32-PIC-LABEL: itailcaller:11971; DARWIN-32-PIC: ## %bb.0: ## %entry11972; DARWIN-32-PIC-NEXT: pushl %esi11973; DARWIN-32-PIC-NEXT: subl $8, %esp11974; DARWIN-32-PIC-NEXT: calll L145$pb11975; DARWIN-32-PIC-NEXT: L145$pb:11976; DARWIN-32-PIC-NEXT: popl %eax11977; DARWIN-32-PIC-NEXT: movl L_ifunc$non_lazy_ptr-L145$pb(%eax), %esi11978; DARWIN-32-PIC-NEXT: calll *(%esi)11979; DARWIN-32-PIC-NEXT: calll *(%esi)11980; DARWIN-32-PIC-NEXT: addl $8, %esp11981; DARWIN-32-PIC-NEXT: popl %esi11982; DARWIN-32-PIC-NEXT: retl11983;11984; DARWIN-64-STATIC-LABEL: itailcaller:11985; DARWIN-64-STATIC: ## %bb.0: ## %entry11986; DARWIN-64-STATIC-NEXT: pushq %rbx11987; DARWIN-64-STATIC-NEXT: movq _ifunc@GOTPCREL(%rip), %rbx11988; DARWIN-64-STATIC-NEXT: callq *(%rbx)11989; DARWIN-64-STATIC-NEXT: callq *(%rbx)11990; DARWIN-64-STATIC-NEXT: popq %rbx11991; DARWIN-64-STATIC-NEXT: retq11992;11993; DARWIN-64-DYNAMIC-LABEL: itailcaller:11994; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry11995; DARWIN-64-DYNAMIC-NEXT: pushq %rbx11996; DARWIN-64-DYNAMIC-NEXT: movq _ifunc@GOTPCREL(%rip), %rbx11997; DARWIN-64-DYNAMIC-NEXT: callq *(%rbx)11998; DARWIN-64-DYNAMIC-NEXT: callq *(%rbx)11999; DARWIN-64-DYNAMIC-NEXT: popq %rbx12000; DARWIN-64-DYNAMIC-NEXT: retq12001;12002; DARWIN-64-PIC-LABEL: itailcaller:12003; DARWIN-64-PIC: ## %bb.0: ## %entry12004; DARWIN-64-PIC-NEXT: pushq %rbx12005; DARWIN-64-PIC-NEXT: movq _ifunc@GOTPCREL(%rip), %rbx12006; DARWIN-64-PIC-NEXT: callq *(%rbx)12007; DARWIN-64-PIC-NEXT: callq *(%rbx)12008; DARWIN-64-PIC-NEXT: popq %rbx12009; DARWIN-64-PIC-NEXT: retq12010 12011entry:12012 %0 = load ptr, ptr @ifunc, align 812013 call void %0() nounwind12014 %1 = load ptr, ptr @ifunc, align 812015 call void %1() nounwind12016 ret void12017}12018 12019define dso_local void @ditailcaller() nounwind {12020; LINUX-64-STATIC-LABEL: ditailcaller:12021; LINUX-64-STATIC: # %bb.0: # %entry12022; LINUX-64-STATIC-NEXT: pushq %rax12023; LINUX-64-STATIC-NEXT: callq *difunc(%rip)12024; LINUX-64-STATIC-NEXT: popq %rax12025; LINUX-64-STATIC-NEXT: retq12026;12027; LINUX-32-STATIC-LABEL: ditailcaller:12028; LINUX-32-STATIC: # %bb.0: # %entry12029; LINUX-32-STATIC-NEXT: subl $12, %esp12030; LINUX-32-STATIC-NEXT: calll *difunc12031; LINUX-32-STATIC-NEXT: addl $12, %esp12032; LINUX-32-STATIC-NEXT: retl12033;12034; LINUX-32-PIC-LABEL: ditailcaller:12035; LINUX-32-PIC: # %bb.0: # %entry12036; LINUX-32-PIC-NEXT: pushl %ebx12037; LINUX-32-PIC-NEXT: subl $8, %esp12038; LINUX-32-PIC-NEXT: calll .L146$pb12039; LINUX-32-PIC-NEXT: .L146$pb:12040; LINUX-32-PIC-NEXT: popl %ebx12041; LINUX-32-PIC-NEXT: .Ltmp146:12042; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp146-.L146$pb), %ebx12043; LINUX-32-PIC-NEXT: calll *.Ldifunc$local@GOTOFF(%ebx)12044; LINUX-32-PIC-NEXT: addl $8, %esp12045; LINUX-32-PIC-NEXT: popl %ebx12046; LINUX-32-PIC-NEXT: retl12047;12048; LINUX-64-PIC-LABEL: ditailcaller:12049; LINUX-64-PIC: # %bb.0: # %entry12050; LINUX-64-PIC-NEXT: pushq %rax12051; LINUX-64-PIC-NEXT: callq *.Ldifunc$local(%rip)12052; LINUX-64-PIC-NEXT: popq %rax12053; LINUX-64-PIC-NEXT: retq12054;12055; DARWIN-32-STATIC-LABEL: ditailcaller:12056; DARWIN-32-STATIC: ## %bb.0: ## %entry12057; DARWIN-32-STATIC-NEXT: subl $12, %esp12058; DARWIN-32-STATIC-NEXT: calll *_difunc12059; DARWIN-32-STATIC-NEXT: addl $12, %esp12060; DARWIN-32-STATIC-NEXT: retl12061;12062; DARWIN-32-DYNAMIC-LABEL: ditailcaller:12063; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry12064; DARWIN-32-DYNAMIC-NEXT: subl $12, %esp12065; DARWIN-32-DYNAMIC-NEXT: calll *_difunc12066; DARWIN-32-DYNAMIC-NEXT: addl $12, %esp12067; DARWIN-32-DYNAMIC-NEXT: retl12068;12069; DARWIN-32-PIC-LABEL: ditailcaller:12070; DARWIN-32-PIC: ## %bb.0: ## %entry12071; DARWIN-32-PIC-NEXT: subl $12, %esp12072; DARWIN-32-PIC-NEXT: calll L146$pb12073; DARWIN-32-PIC-NEXT: L146$pb:12074; DARWIN-32-PIC-NEXT: popl %eax12075; DARWIN-32-PIC-NEXT: calll *_difunc-L146$pb(%eax)12076; DARWIN-32-PIC-NEXT: addl $12, %esp12077; DARWIN-32-PIC-NEXT: retl12078;12079; DARWIN-64-STATIC-LABEL: ditailcaller:12080; DARWIN-64-STATIC: ## %bb.0: ## %entry12081; DARWIN-64-STATIC-NEXT: pushq %rax12082; DARWIN-64-STATIC-NEXT: callq *_difunc(%rip)12083; DARWIN-64-STATIC-NEXT: popq %rax12084; DARWIN-64-STATIC-NEXT: retq12085;12086; DARWIN-64-DYNAMIC-LABEL: ditailcaller:12087; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry12088; DARWIN-64-DYNAMIC-NEXT: pushq %rax12089; DARWIN-64-DYNAMIC-NEXT: callq *_difunc(%rip)12090; DARWIN-64-DYNAMIC-NEXT: popq %rax12091; DARWIN-64-DYNAMIC-NEXT: retq12092;12093; DARWIN-64-PIC-LABEL: ditailcaller:12094; DARWIN-64-PIC: ## %bb.0: ## %entry12095; DARWIN-64-PIC-NEXT: pushq %rax12096; DARWIN-64-PIC-NEXT: callq *_difunc(%rip)12097; DARWIN-64-PIC-NEXT: popq %rax12098; DARWIN-64-PIC-NEXT: retq12099 12100entry:12101 %0 = load ptr, ptr @difunc, align 812102 call void %0() nounwind12103 ret void12104}12105 12106define dso_local void @litailcaller() nounwind {12107; LINUX-64-STATIC-LABEL: litailcaller:12108; LINUX-64-STATIC: # %bb.0: # %entry12109; LINUX-64-STATIC-NEXT: pushq %rax12110; LINUX-64-STATIC-NEXT: callq *lifunc(%rip)12111; LINUX-64-STATIC-NEXT: popq %rax12112; LINUX-64-STATIC-NEXT: retq12113;12114; LINUX-32-STATIC-LABEL: litailcaller:12115; LINUX-32-STATIC: # %bb.0: # %entry12116; LINUX-32-STATIC-NEXT: subl $12, %esp12117; LINUX-32-STATIC-NEXT: calll *lifunc12118; LINUX-32-STATIC-NEXT: addl $12, %esp12119; LINUX-32-STATIC-NEXT: retl12120;12121; LINUX-32-PIC-LABEL: litailcaller:12122; LINUX-32-PIC: # %bb.0: # %entry12123; LINUX-32-PIC-NEXT: pushl %ebx12124; LINUX-32-PIC-NEXT: subl $8, %esp12125; LINUX-32-PIC-NEXT: calll .L147$pb12126; LINUX-32-PIC-NEXT: .L147$pb:12127; LINUX-32-PIC-NEXT: popl %ebx12128; LINUX-32-PIC-NEXT: .Ltmp147:12129; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp147-.L147$pb), %ebx12130; LINUX-32-PIC-NEXT: calll *lifunc@GOTOFF(%ebx)12131; LINUX-32-PIC-NEXT: addl $8, %esp12132; LINUX-32-PIC-NEXT: popl %ebx12133; LINUX-32-PIC-NEXT: retl12134;12135; LINUX-64-PIC-LABEL: litailcaller:12136; LINUX-64-PIC: # %bb.0: # %entry12137; LINUX-64-PIC-NEXT: pushq %rax12138; LINUX-64-PIC-NEXT: callq *lifunc(%rip)12139; LINUX-64-PIC-NEXT: popq %rax12140; LINUX-64-PIC-NEXT: retq12141;12142; DARWIN-32-STATIC-LABEL: litailcaller:12143; DARWIN-32-STATIC: ## %bb.0: ## %entry12144; DARWIN-32-STATIC-NEXT: subl $12, %esp12145; DARWIN-32-STATIC-NEXT: calll *_lifunc12146; DARWIN-32-STATIC-NEXT: addl $12, %esp12147; DARWIN-32-STATIC-NEXT: retl12148;12149; DARWIN-32-DYNAMIC-LABEL: litailcaller:12150; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry12151; DARWIN-32-DYNAMIC-NEXT: subl $12, %esp12152; DARWIN-32-DYNAMIC-NEXT: calll *_lifunc12153; DARWIN-32-DYNAMIC-NEXT: addl $12, %esp12154; DARWIN-32-DYNAMIC-NEXT: retl12155;12156; DARWIN-32-PIC-LABEL: litailcaller:12157; DARWIN-32-PIC: ## %bb.0: ## %entry12158; DARWIN-32-PIC-NEXT: subl $12, %esp12159; DARWIN-32-PIC-NEXT: calll L147$pb12160; DARWIN-32-PIC-NEXT: L147$pb:12161; DARWIN-32-PIC-NEXT: popl %eax12162; DARWIN-32-PIC-NEXT: calll *_lifunc-L147$pb(%eax)12163; DARWIN-32-PIC-NEXT: addl $12, %esp12164; DARWIN-32-PIC-NEXT: retl12165;12166; DARWIN-64-STATIC-LABEL: litailcaller:12167; DARWIN-64-STATIC: ## %bb.0: ## %entry12168; DARWIN-64-STATIC-NEXT: pushq %rax12169; DARWIN-64-STATIC-NEXT: callq *_lifunc(%rip)12170; DARWIN-64-STATIC-NEXT: popq %rax12171; DARWIN-64-STATIC-NEXT: retq12172;12173; DARWIN-64-DYNAMIC-LABEL: litailcaller:12174; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry12175; DARWIN-64-DYNAMIC-NEXT: pushq %rax12176; DARWIN-64-DYNAMIC-NEXT: callq *_lifunc(%rip)12177; DARWIN-64-DYNAMIC-NEXT: popq %rax12178; DARWIN-64-DYNAMIC-NEXT: retq12179;12180; DARWIN-64-PIC-LABEL: litailcaller:12181; DARWIN-64-PIC: ## %bb.0: ## %entry12182; DARWIN-64-PIC-NEXT: pushq %rax12183; DARWIN-64-PIC-NEXT: callq *_lifunc(%rip)12184; DARWIN-64-PIC-NEXT: popq %rax12185; DARWIN-64-PIC-NEXT: retq12186 12187entry:12188 %0 = load ptr, ptr @lifunc, align 812189 call void %0() nounwind12190 ret void12191}12192