1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2; 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-STATIC 5; 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-STATIC 6; 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-PIC 7; 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-PIC 8 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-STATIC 10; 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-DYNAMIC 11; RUN: llc < %s -mtriple=i686-apple-darwin9 -relocation-model=pic -code-model=small -pre-RA-sched=list-ilp | FileCheck %s -check-prefix=DARWIN-32-PIC 12 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-STATIC 14; 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-DYNAMIC 15; 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-PIC 16 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 i32* 22@dsrc = dso_local global [131072 x i32] zeroinitializer, align 32 23@ddst = dso_local global [131072 x i32] zeroinitializer, align 32 24@dptr = dso_local global i32* null 25@lsrc = internal global [131072 x i32] zeroinitializer 26@ldst = internal global [131072 x i32] zeroinitializer 27@lptr = internal global i32* null 28@ifunc = external global void ()* 29@difunc = dso_local global void ()* null 30@lifunc = internal global void ()* null 31@lxsrc = internal global [32 x i32] zeroinitializer, align 32 32@lxdst = internal global [32 x i32] zeroinitializer, align 32 33@dxsrc = dso_local global [32 x i32] zeroinitializer, align 32 34@dxdst = dso_local global [32 x i32] zeroinitializer, align 32 35 36define dso_local void @foo00() nounwind { 37; LINUX-64-STATIC-LABEL: foo00: 38; LINUX-64-STATIC: # %bb.0: # %entry 39; LINUX-64-STATIC-NEXT: movq src@GOTPCREL(%rip), %rax 40; LINUX-64-STATIC-NEXT: movl (%rax), %eax 41; LINUX-64-STATIC-NEXT: movq dst@GOTPCREL(%rip), %rcx 42; LINUX-64-STATIC-NEXT: movl %eax, (%rcx) 43; LINUX-64-STATIC-NEXT: retq 44; 45; LINUX-32-STATIC-LABEL: foo00: 46; LINUX-32-STATIC: # %bb.0: # %entry 47; LINUX-32-STATIC-NEXT: movl src, %eax 48; LINUX-32-STATIC-NEXT: movl %eax, dst 49; LINUX-32-STATIC-NEXT: retl 50; 51; LINUX-32-PIC-LABEL: foo00: 52; LINUX-32-PIC: # %bb.0: # %entry 53; LINUX-32-PIC-NEXT: calll .L0$pb 54; LINUX-32-PIC-NEXT: .L0$pb: 55; LINUX-32-PIC-NEXT: popl %eax 56; LINUX-32-PIC-NEXT: .Ltmp0: 57; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp0-.L0$pb), %eax 58; LINUX-32-PIC-NEXT: movl src@GOT(%eax), %ecx 59; LINUX-32-PIC-NEXT: movl (%ecx), %ecx 60; LINUX-32-PIC-NEXT: movl dst@GOT(%eax), %eax 61; LINUX-32-PIC-NEXT: movl %ecx, (%eax) 62; LINUX-32-PIC-NEXT: retl 63; 64; LINUX-64-PIC-LABEL: foo00: 65; LINUX-64-PIC: # %bb.0: # %entry 66; LINUX-64-PIC-NEXT: movq src@GOTPCREL(%rip), %rax 67; LINUX-64-PIC-NEXT: movl (%rax), %eax 68; LINUX-64-PIC-NEXT: movq dst@GOTPCREL(%rip), %rcx 69; LINUX-64-PIC-NEXT: movl %eax, (%rcx) 70; LINUX-64-PIC-NEXT: retq 71; 72; DARWIN-32-STATIC-LABEL: foo00: 73; DARWIN-32-STATIC: ## %bb.0: ## %entry 74; DARWIN-32-STATIC-NEXT: movl _src, %eax 75; DARWIN-32-STATIC-NEXT: movl %eax, _dst 76; DARWIN-32-STATIC-NEXT: retl 77; 78; DARWIN-32-DYNAMIC-LABEL: foo00: 79; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 80; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %eax 81; DARWIN-32-DYNAMIC-NEXT: movl (%eax), %eax 82; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, %ecx 83; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx) 84; DARWIN-32-DYNAMIC-NEXT: retl 85; 86; DARWIN-32-PIC-LABEL: foo00: 87; DARWIN-32-PIC: ## %bb.0: ## %entry 88; DARWIN-32-PIC-NEXT: calll L0$pb 89; DARWIN-32-PIC-NEXT: L0$pb: 90; DARWIN-32-PIC-NEXT: popl %eax 91; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L0$pb(%eax), %ecx 92; DARWIN-32-PIC-NEXT: movl (%ecx), %ecx 93; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L0$pb(%eax), %eax 94; DARWIN-32-PIC-NEXT: movl %ecx, (%eax) 95; DARWIN-32-PIC-NEXT: retl 96; 97; DARWIN-64-STATIC-LABEL: foo00: 98; DARWIN-64-STATIC: ## %bb.0: ## %entry 99; DARWIN-64-STATIC-NEXT: movq _src@GOTPCREL(%rip), %rax 100; DARWIN-64-STATIC-NEXT: movl (%rax), %eax 101; DARWIN-64-STATIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx 102; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx) 103; DARWIN-64-STATIC-NEXT: retq 104; 105; DARWIN-64-DYNAMIC-LABEL: foo00: 106; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 107; DARWIN-64-DYNAMIC-NEXT: movq _src@GOTPCREL(%rip), %rax 108; DARWIN-64-DYNAMIC-NEXT: movl (%rax), %eax 109; DARWIN-64-DYNAMIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx 110; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx) 111; DARWIN-64-DYNAMIC-NEXT: retq 112; 113; DARWIN-64-PIC-LABEL: foo00: 114; DARWIN-64-PIC: ## %bb.0: ## %entry 115; DARWIN-64-PIC-NEXT: movq _src@GOTPCREL(%rip), %rax 116; DARWIN-64-PIC-NEXT: movl (%rax), %eax 117; DARWIN-64-PIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx 118; DARWIN-64-PIC-NEXT: movl %eax, (%rcx) 119; DARWIN-64-PIC-NEXT: retq 120 121entry: 122 %0 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @src, i32 0, i64 0), align 4 123 store i32 %0, i32* getelementptr ([131072 x i32], [131072 x i32]* @dst, i32 0, i64 0), align 4 124 ret void 125 126} 127 128define dso_local void @fxo00() nounwind { 129; LINUX-64-STATIC-LABEL: fxo00: 130; LINUX-64-STATIC: # %bb.0: # %entry 131; LINUX-64-STATIC-NEXT: movq xsrc@GOTPCREL(%rip), %rax 132; LINUX-64-STATIC-NEXT: movl (%rax), %eax 133; LINUX-64-STATIC-NEXT: movq xdst@GOTPCREL(%rip), %rcx 134; LINUX-64-STATIC-NEXT: movl %eax, (%rcx) 135; LINUX-64-STATIC-NEXT: retq 136; 137; LINUX-32-STATIC-LABEL: fxo00: 138; LINUX-32-STATIC: # %bb.0: # %entry 139; LINUX-32-STATIC-NEXT: movl xsrc, %eax 140; LINUX-32-STATIC-NEXT: movl %eax, xdst 141; LINUX-32-STATIC-NEXT: retl 142; 143; LINUX-32-PIC-LABEL: fxo00: 144; LINUX-32-PIC: # %bb.0: # %entry 145; LINUX-32-PIC-NEXT: calll .L1$pb 146; LINUX-32-PIC-NEXT: .L1$pb: 147; LINUX-32-PIC-NEXT: popl %eax 148; LINUX-32-PIC-NEXT: .Ltmp1: 149; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp1-.L1$pb), %eax 150; LINUX-32-PIC-NEXT: movl xsrc@GOT(%eax), %ecx 151; LINUX-32-PIC-NEXT: movl (%ecx), %ecx 152; LINUX-32-PIC-NEXT: movl xdst@GOT(%eax), %eax 153; LINUX-32-PIC-NEXT: movl %ecx, (%eax) 154; LINUX-32-PIC-NEXT: retl 155; 156; LINUX-64-PIC-LABEL: fxo00: 157; LINUX-64-PIC: # %bb.0: # %entry 158; LINUX-64-PIC-NEXT: movq xsrc@GOTPCREL(%rip), %rax 159; LINUX-64-PIC-NEXT: movl (%rax), %eax 160; LINUX-64-PIC-NEXT: movq xdst@GOTPCREL(%rip), %rcx 161; LINUX-64-PIC-NEXT: movl %eax, (%rcx) 162; LINUX-64-PIC-NEXT: retq 163; 164; DARWIN-32-STATIC-LABEL: fxo00: 165; DARWIN-32-STATIC: ## %bb.0: ## %entry 166; DARWIN-32-STATIC-NEXT: movl _xsrc, %eax 167; DARWIN-32-STATIC-NEXT: movl %eax, _xdst 168; DARWIN-32-STATIC-NEXT: retl 169; 170; DARWIN-32-DYNAMIC-LABEL: fxo00: 171; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 172; DARWIN-32-DYNAMIC-NEXT: movl L_xsrc$non_lazy_ptr, %eax 173; DARWIN-32-DYNAMIC-NEXT: movl (%eax), %eax 174; DARWIN-32-DYNAMIC-NEXT: movl L_xdst$non_lazy_ptr, %ecx 175; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx) 176; DARWIN-32-DYNAMIC-NEXT: retl 177; 178; DARWIN-32-PIC-LABEL: fxo00: 179; DARWIN-32-PIC: ## %bb.0: ## %entry 180; DARWIN-32-PIC-NEXT: calll L1$pb 181; DARWIN-32-PIC-NEXT: L1$pb: 182; DARWIN-32-PIC-NEXT: popl %eax 183; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-L1$pb(%eax), %ecx 184; DARWIN-32-PIC-NEXT: movl (%ecx), %ecx 185; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-L1$pb(%eax), %eax 186; DARWIN-32-PIC-NEXT: movl %ecx, (%eax) 187; DARWIN-32-PIC-NEXT: retl 188; 189; DARWIN-64-STATIC-LABEL: fxo00: 190; DARWIN-64-STATIC: ## %bb.0: ## %entry 191; DARWIN-64-STATIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 192; DARWIN-64-STATIC-NEXT: movl (%rax), %eax 193; DARWIN-64-STATIC-NEXT: movq _xdst@GOTPCREL(%rip), %rcx 194; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx) 195; DARWIN-64-STATIC-NEXT: retq 196; 197; DARWIN-64-DYNAMIC-LABEL: fxo00: 198; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 199; DARWIN-64-DYNAMIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 200; DARWIN-64-DYNAMIC-NEXT: movl (%rax), %eax 201; DARWIN-64-DYNAMIC-NEXT: movq _xdst@GOTPCREL(%rip), %rcx 202; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx) 203; DARWIN-64-DYNAMIC-NEXT: retq 204; 205; DARWIN-64-PIC-LABEL: fxo00: 206; DARWIN-64-PIC: ## %bb.0: ## %entry 207; DARWIN-64-PIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 208; DARWIN-64-PIC-NEXT: movl (%rax), %eax 209; DARWIN-64-PIC-NEXT: movq _xdst@GOTPCREL(%rip), %rcx 210; DARWIN-64-PIC-NEXT: movl %eax, (%rcx) 211; DARWIN-64-PIC-NEXT: retq 212 213entry: 214 %0 = load i32, i32* getelementptr ([32 x i32], [32 x i32]* @xsrc, i32 0, i64 0), align 4 215 store i32 %0, i32* getelementptr ([32 x i32], [32 x i32]* @xdst, i32 0, i64 0), align 4 216 ret void 217 218} 219 220define dso_local void @foo01() nounwind { 221; LINUX-64-STATIC-LABEL: foo01: 222; LINUX-64-STATIC: # %bb.0: # %entry 223; LINUX-64-STATIC-NEXT: movq dst@GOTPCREL(%rip), %rax 224; LINUX-64-STATIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx 225; LINUX-64-STATIC-NEXT: movq %rax, (%rcx) 226; LINUX-64-STATIC-NEXT: retq 227; 228; LINUX-32-STATIC-LABEL: foo01: 229; LINUX-32-STATIC: # %bb.0: # %entry 230; LINUX-32-STATIC-NEXT: movl $dst, ptr 231; LINUX-32-STATIC-NEXT: retl 232; 233; LINUX-32-PIC-LABEL: foo01: 234; LINUX-32-PIC: # %bb.0: # %entry 235; LINUX-32-PIC-NEXT: calll .L2$pb 236; LINUX-32-PIC-NEXT: .L2$pb: 237; LINUX-32-PIC-NEXT: popl %eax 238; LINUX-32-PIC-NEXT: .Ltmp2: 239; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp2-.L2$pb), %eax 240; LINUX-32-PIC-NEXT: movl dst@GOT(%eax), %ecx 241; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax 242; LINUX-32-PIC-NEXT: movl %ecx, (%eax) 243; LINUX-32-PIC-NEXT: retl 244; 245; LINUX-64-PIC-LABEL: foo01: 246; LINUX-64-PIC: # %bb.0: # %entry 247; LINUX-64-PIC-NEXT: movq dst@GOTPCREL(%rip), %rax 248; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx 249; LINUX-64-PIC-NEXT: movq %rax, (%rcx) 250; LINUX-64-PIC-NEXT: retq 251; 252; DARWIN-32-STATIC-LABEL: foo01: 253; DARWIN-32-STATIC: ## %bb.0: ## %entry 254; DARWIN-32-STATIC-NEXT: movl $_dst, _ptr 255; DARWIN-32-STATIC-NEXT: retl 256; 257; DARWIN-32-DYNAMIC-LABEL: foo01: 258; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 259; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, %eax 260; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx 261; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx) 262; DARWIN-32-DYNAMIC-NEXT: retl 263; 264; DARWIN-32-PIC-LABEL: foo01: 265; DARWIN-32-PIC: ## %bb.0: ## %entry 266; DARWIN-32-PIC-NEXT: calll L2$pb 267; DARWIN-32-PIC-NEXT: L2$pb: 268; DARWIN-32-PIC-NEXT: popl %eax 269; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L2$pb(%eax), %ecx 270; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L2$pb(%eax), %eax 271; DARWIN-32-PIC-NEXT: movl %ecx, (%eax) 272; DARWIN-32-PIC-NEXT: retl 273; 274; DARWIN-64-STATIC-LABEL: foo01: 275; DARWIN-64-STATIC: ## %bb.0: ## %entry 276; DARWIN-64-STATIC-NEXT: movq _dst@GOTPCREL(%rip), %rax 277; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 278; DARWIN-64-STATIC-NEXT: movq %rax, (%rcx) 279; DARWIN-64-STATIC-NEXT: retq 280; 281; DARWIN-64-DYNAMIC-LABEL: foo01: 282; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 283; DARWIN-64-DYNAMIC-NEXT: movq _dst@GOTPCREL(%rip), %rax 284; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 285; DARWIN-64-DYNAMIC-NEXT: movq %rax, (%rcx) 286; DARWIN-64-DYNAMIC-NEXT: retq 287; 288; DARWIN-64-PIC-LABEL: foo01: 289; DARWIN-64-PIC: ## %bb.0: ## %entry 290; DARWIN-64-PIC-NEXT: movq _dst@GOTPCREL(%rip), %rax 291; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 292; DARWIN-64-PIC-NEXT: movq %rax, (%rcx) 293; DARWIN-64-PIC-NEXT: retq 294 295entry: 296 store i32* getelementptr ([131072 x i32], [131072 x i32]* @dst, i32 0, i32 0), i32** @ptr, align 8 297 ret void 298} 299 300define dso_local void @fxo01() nounwind { 301; LINUX-64-STATIC-LABEL: fxo01: 302; LINUX-64-STATIC: # %bb.0: # %entry 303; LINUX-64-STATIC-NEXT: movq xdst@GOTPCREL(%rip), %rax 304; LINUX-64-STATIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx 305; LINUX-64-STATIC-NEXT: movq %rax, (%rcx) 306; LINUX-64-STATIC-NEXT: retq 307; 308; LINUX-32-STATIC-LABEL: fxo01: 309; LINUX-32-STATIC: # %bb.0: # %entry 310; LINUX-32-STATIC-NEXT: movl $xdst, ptr 311; LINUX-32-STATIC-NEXT: retl 312; 313; LINUX-32-PIC-LABEL: fxo01: 314; LINUX-32-PIC: # %bb.0: # %entry 315; LINUX-32-PIC-NEXT: calll .L3$pb 316; LINUX-32-PIC-NEXT: .L3$pb: 317; LINUX-32-PIC-NEXT: popl %eax 318; LINUX-32-PIC-NEXT: .Ltmp3: 319; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp3-.L3$pb), %eax 320; LINUX-32-PIC-NEXT: movl xdst@GOT(%eax), %ecx 321; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax 322; LINUX-32-PIC-NEXT: movl %ecx, (%eax) 323; LINUX-32-PIC-NEXT: retl 324; 325; LINUX-64-PIC-LABEL: fxo01: 326; LINUX-64-PIC: # %bb.0: # %entry 327; LINUX-64-PIC-NEXT: movq xdst@GOTPCREL(%rip), %rax 328; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx 329; LINUX-64-PIC-NEXT: movq %rax, (%rcx) 330; LINUX-64-PIC-NEXT: retq 331; 332; DARWIN-32-STATIC-LABEL: fxo01: 333; DARWIN-32-STATIC: ## %bb.0: ## %entry 334; DARWIN-32-STATIC-NEXT: movl $_xdst, _ptr 335; DARWIN-32-STATIC-NEXT: retl 336; 337; DARWIN-32-DYNAMIC-LABEL: fxo01: 338; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 339; DARWIN-32-DYNAMIC-NEXT: movl L_xdst$non_lazy_ptr, %eax 340; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx 341; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx) 342; DARWIN-32-DYNAMIC-NEXT: retl 343; 344; DARWIN-32-PIC-LABEL: fxo01: 345; DARWIN-32-PIC: ## %bb.0: ## %entry 346; DARWIN-32-PIC-NEXT: calll L3$pb 347; DARWIN-32-PIC-NEXT: L3$pb: 348; DARWIN-32-PIC-NEXT: popl %eax 349; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-L3$pb(%eax), %ecx 350; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L3$pb(%eax), %eax 351; DARWIN-32-PIC-NEXT: movl %ecx, (%eax) 352; DARWIN-32-PIC-NEXT: retl 353; 354; DARWIN-64-STATIC-LABEL: fxo01: 355; DARWIN-64-STATIC: ## %bb.0: ## %entry 356; DARWIN-64-STATIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax 357; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 358; DARWIN-64-STATIC-NEXT: movq %rax, (%rcx) 359; DARWIN-64-STATIC-NEXT: retq 360; 361; DARWIN-64-DYNAMIC-LABEL: fxo01: 362; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 363; DARWIN-64-DYNAMIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax 364; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 365; DARWIN-64-DYNAMIC-NEXT: movq %rax, (%rcx) 366; DARWIN-64-DYNAMIC-NEXT: retq 367; 368; DARWIN-64-PIC-LABEL: fxo01: 369; DARWIN-64-PIC: ## %bb.0: ## %entry 370; DARWIN-64-PIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax 371; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 372; DARWIN-64-PIC-NEXT: movq %rax, (%rcx) 373; DARWIN-64-PIC-NEXT: retq 374 375entry: 376 store i32* getelementptr ([32 x i32], [32 x i32]* @xdst, i32 0, i32 0), i32** @ptr, align 8 377 ret void 378} 379 380define dso_local void @foo02() nounwind { 381; LINUX-64-STATIC-LABEL: foo02: 382; LINUX-64-STATIC: # %bb.0: # %entry 383; LINUX-64-STATIC-NEXT: movq src@GOTPCREL(%rip), %rax 384; LINUX-64-STATIC-NEXT: movl (%rax), %eax 385; LINUX-64-STATIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx 386; LINUX-64-STATIC-NEXT: movq (%rcx), %rcx 387; LINUX-64-STATIC-NEXT: movl %eax, (%rcx) 388; LINUX-64-STATIC-NEXT: retq 389; 390; LINUX-32-STATIC-LABEL: foo02: 391; LINUX-32-STATIC: # %bb.0: # %entry 392; LINUX-32-STATIC-NEXT: movl src, %eax 393; LINUX-32-STATIC-NEXT: movl ptr, %ecx 394; LINUX-32-STATIC-NEXT: movl %eax, (%ecx) 395; LINUX-32-STATIC-NEXT: retl 396; 397; LINUX-32-PIC-LABEL: foo02: 398; LINUX-32-PIC: # %bb.0: # %entry 399; LINUX-32-PIC-NEXT: calll .L4$pb 400; LINUX-32-PIC-NEXT: .L4$pb: 401; LINUX-32-PIC-NEXT: popl %eax 402; LINUX-32-PIC-NEXT: .Ltmp4: 403; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp4-.L4$pb), %eax 404; LINUX-32-PIC-NEXT: movl src@GOT(%eax), %ecx 405; LINUX-32-PIC-NEXT: movl (%ecx), %ecx 406; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax 407; LINUX-32-PIC-NEXT: movl (%eax), %eax 408; LINUX-32-PIC-NEXT: movl %ecx, (%eax) 409; LINUX-32-PIC-NEXT: retl 410; 411; LINUX-64-PIC-LABEL: foo02: 412; LINUX-64-PIC: # %bb.0: # %entry 413; LINUX-64-PIC-NEXT: movq src@GOTPCREL(%rip), %rax 414; LINUX-64-PIC-NEXT: movl (%rax), %eax 415; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx 416; LINUX-64-PIC-NEXT: movq (%rcx), %rcx 417; LINUX-64-PIC-NEXT: movl %eax, (%rcx) 418; LINUX-64-PIC-NEXT: retq 419; 420; DARWIN-32-STATIC-LABEL: foo02: 421; DARWIN-32-STATIC: ## %bb.0: ## %entry 422; DARWIN-32-STATIC-NEXT: movl _src, %eax 423; DARWIN-32-STATIC-NEXT: movl _ptr, %ecx 424; DARWIN-32-STATIC-NEXT: movl %eax, (%ecx) 425; DARWIN-32-STATIC-NEXT: retl 426; 427; DARWIN-32-DYNAMIC-LABEL: foo02: 428; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 429; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %eax 430; DARWIN-32-DYNAMIC-NEXT: movl (%eax), %eax 431; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx 432; DARWIN-32-DYNAMIC-NEXT: movl (%ecx), %ecx 433; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx) 434; DARWIN-32-DYNAMIC-NEXT: retl 435; 436; DARWIN-32-PIC-LABEL: foo02: 437; DARWIN-32-PIC: ## %bb.0: ## %entry 438; DARWIN-32-PIC-NEXT: calll L4$pb 439; DARWIN-32-PIC-NEXT: L4$pb: 440; DARWIN-32-PIC-NEXT: popl %eax 441; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L4$pb(%eax), %ecx 442; DARWIN-32-PIC-NEXT: movl (%ecx), %ecx 443; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L4$pb(%eax), %eax 444; DARWIN-32-PIC-NEXT: movl (%eax), %eax 445; DARWIN-32-PIC-NEXT: movl %ecx, (%eax) 446; DARWIN-32-PIC-NEXT: retl 447; 448; DARWIN-64-STATIC-LABEL: foo02: 449; DARWIN-64-STATIC: ## %bb.0: ## %entry 450; DARWIN-64-STATIC-NEXT: movq _src@GOTPCREL(%rip), %rax 451; DARWIN-64-STATIC-NEXT: movl (%rax), %eax 452; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 453; DARWIN-64-STATIC-NEXT: movq (%rcx), %rcx 454; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx) 455; DARWIN-64-STATIC-NEXT: retq 456; 457; DARWIN-64-DYNAMIC-LABEL: foo02: 458; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 459; DARWIN-64-DYNAMIC-NEXT: movq _src@GOTPCREL(%rip), %rax 460; DARWIN-64-DYNAMIC-NEXT: movl (%rax), %eax 461; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 462; DARWIN-64-DYNAMIC-NEXT: movq (%rcx), %rcx 463; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx) 464; DARWIN-64-DYNAMIC-NEXT: retq 465; 466; DARWIN-64-PIC-LABEL: foo02: 467; DARWIN-64-PIC: ## %bb.0: ## %entry 468; DARWIN-64-PIC-NEXT: movq _src@GOTPCREL(%rip), %rax 469; DARWIN-64-PIC-NEXT: movl (%rax), %eax 470; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 471; DARWIN-64-PIC-NEXT: movq (%rcx), %rcx 472; DARWIN-64-PIC-NEXT: movl %eax, (%rcx) 473; DARWIN-64-PIC-NEXT: retq 474 475entry: 476 %0 = load i32*, i32** @ptr, align 8 477 %1 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @src, i32 0, i64 0), align 4 478 store i32 %1, i32* %0, align 4 479 ret void 480} 481 482define dso_local void @fxo02() nounwind { 483; LINUX-64-STATIC-LABEL: fxo02: 484; LINUX-64-STATIC: # %bb.0: # %entry 485; LINUX-64-STATIC-NEXT: movq xsrc@GOTPCREL(%rip), %rax 486; LINUX-64-STATIC-NEXT: movl (%rax), %eax 487; LINUX-64-STATIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx 488; LINUX-64-STATIC-NEXT: movq (%rcx), %rcx 489; LINUX-64-STATIC-NEXT: movl %eax, (%rcx) 490; LINUX-64-STATIC-NEXT: retq 491; 492; LINUX-32-STATIC-LABEL: fxo02: 493; LINUX-32-STATIC: # %bb.0: # %entry 494; LINUX-32-STATIC-NEXT: movl xsrc, %eax 495; LINUX-32-STATIC-NEXT: movl ptr, %ecx 496; LINUX-32-STATIC-NEXT: movl %eax, (%ecx) 497; LINUX-32-STATIC-NEXT: retl 498; 499; LINUX-32-PIC-LABEL: fxo02: 500; LINUX-32-PIC: # %bb.0: # %entry 501; LINUX-32-PIC-NEXT: calll .L5$pb 502; LINUX-32-PIC-NEXT: .L5$pb: 503; LINUX-32-PIC-NEXT: popl %eax 504; LINUX-32-PIC-NEXT: .Ltmp5: 505; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp5-.L5$pb), %eax 506; LINUX-32-PIC-NEXT: movl xsrc@GOT(%eax), %ecx 507; LINUX-32-PIC-NEXT: movl (%ecx), %ecx 508; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax 509; LINUX-32-PIC-NEXT: movl (%eax), %eax 510; LINUX-32-PIC-NEXT: movl %ecx, (%eax) 511; LINUX-32-PIC-NEXT: retl 512; 513; LINUX-64-PIC-LABEL: fxo02: 514; LINUX-64-PIC: # %bb.0: # %entry 515; LINUX-64-PIC-NEXT: movq xsrc@GOTPCREL(%rip), %rax 516; LINUX-64-PIC-NEXT: movl (%rax), %eax 517; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx 518; LINUX-64-PIC-NEXT: movq (%rcx), %rcx 519; LINUX-64-PIC-NEXT: movl %eax, (%rcx) 520; LINUX-64-PIC-NEXT: retq 521; 522; DARWIN-32-STATIC-LABEL: fxo02: 523; DARWIN-32-STATIC: ## %bb.0: ## %entry 524; DARWIN-32-STATIC-NEXT: movl _xsrc, %eax 525; DARWIN-32-STATIC-NEXT: movl _ptr, %ecx 526; DARWIN-32-STATIC-NEXT: movl %eax, (%ecx) 527; DARWIN-32-STATIC-NEXT: retl 528; 529; DARWIN-32-DYNAMIC-LABEL: fxo02: 530; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 531; DARWIN-32-DYNAMIC-NEXT: movl L_xsrc$non_lazy_ptr, %eax 532; DARWIN-32-DYNAMIC-NEXT: movl (%eax), %eax 533; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx 534; DARWIN-32-DYNAMIC-NEXT: movl (%ecx), %ecx 535; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx) 536; DARWIN-32-DYNAMIC-NEXT: retl 537; 538; DARWIN-32-PIC-LABEL: fxo02: 539; DARWIN-32-PIC: ## %bb.0: ## %entry 540; DARWIN-32-PIC-NEXT: calll L5$pb 541; DARWIN-32-PIC-NEXT: L5$pb: 542; DARWIN-32-PIC-NEXT: popl %eax 543; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-L5$pb(%eax), %ecx 544; DARWIN-32-PIC-NEXT: movl (%ecx), %ecx 545; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L5$pb(%eax), %eax 546; DARWIN-32-PIC-NEXT: movl (%eax), %eax 547; DARWIN-32-PIC-NEXT: movl %ecx, (%eax) 548; DARWIN-32-PIC-NEXT: retl 549; 550; DARWIN-64-STATIC-LABEL: fxo02: 551; DARWIN-64-STATIC: ## %bb.0: ## %entry 552; DARWIN-64-STATIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 553; DARWIN-64-STATIC-NEXT: movl (%rax), %eax 554; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 555; DARWIN-64-STATIC-NEXT: movq (%rcx), %rcx 556; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx) 557; DARWIN-64-STATIC-NEXT: retq 558; 559; DARWIN-64-DYNAMIC-LABEL: fxo02: 560; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 561; DARWIN-64-DYNAMIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 562; DARWIN-64-DYNAMIC-NEXT: movl (%rax), %eax 563; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 564; DARWIN-64-DYNAMIC-NEXT: movq (%rcx), %rcx 565; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx) 566; DARWIN-64-DYNAMIC-NEXT: retq 567; 568; DARWIN-64-PIC-LABEL: fxo02: 569; DARWIN-64-PIC: ## %bb.0: ## %entry 570; DARWIN-64-PIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 571; DARWIN-64-PIC-NEXT: movl (%rax), %eax 572; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 573; DARWIN-64-PIC-NEXT: movq (%rcx), %rcx 574; DARWIN-64-PIC-NEXT: movl %eax, (%rcx) 575; DARWIN-64-PIC-NEXT: retq 576 577entry: 578 %0 = load i32*, i32** @ptr, align 8 579 %1 = load i32, i32* getelementptr ([32 x i32], [32 x i32]* @xsrc, i32 0, i64 0), align 4 580 store i32 %1, i32* %0, align 4 581 ret void 582} 583 584define dso_local void @foo03() nounwind { 585; LINUX-64-STATIC-LABEL: foo03: 586; LINUX-64-STATIC: # %bb.0: # %entry 587; LINUX-64-STATIC-NEXT: movl dsrc(%rip), %eax 588; LINUX-64-STATIC-NEXT: movl %eax, ddst(%rip) 589; LINUX-64-STATIC-NEXT: retq 590; 591; LINUX-32-STATIC-LABEL: foo03: 592; LINUX-32-STATIC: # %bb.0: # %entry 593; LINUX-32-STATIC-NEXT: movl dsrc, %eax 594; LINUX-32-STATIC-NEXT: movl %eax, ddst 595; LINUX-32-STATIC-NEXT: retl 596; 597; LINUX-32-PIC-LABEL: foo03: 598; LINUX-32-PIC: # %bb.0: # %entry 599; LINUX-32-PIC-NEXT: calll .L6$pb 600; LINUX-32-PIC-NEXT: .L6$pb: 601; LINUX-32-PIC-NEXT: popl %eax 602; LINUX-32-PIC-NEXT: .Ltmp6: 603; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp6-.L6$pb), %eax 604; LINUX-32-PIC-NEXT: movl .Ldsrc$local@GOTOFF(%eax), %ecx 605; LINUX-32-PIC-NEXT: movl %ecx, .Lddst$local@GOTOFF(%eax) 606; LINUX-32-PIC-NEXT: retl 607; 608; LINUX-64-PIC-LABEL: foo03: 609; LINUX-64-PIC: # %bb.0: # %entry 610; LINUX-64-PIC-NEXT: movl .Ldsrc$local(%rip), %eax 611; LINUX-64-PIC-NEXT: movl %eax, .Lddst$local(%rip) 612; LINUX-64-PIC-NEXT: retq 613; 614; DARWIN-32-STATIC-LABEL: foo03: 615; DARWIN-32-STATIC: ## %bb.0: ## %entry 616; DARWIN-32-STATIC-NEXT: movl _dsrc, %eax 617; DARWIN-32-STATIC-NEXT: movl %eax, _ddst 618; DARWIN-32-STATIC-NEXT: retl 619; 620; DARWIN-32-DYNAMIC-LABEL: foo03: 621; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 622; DARWIN-32-DYNAMIC-NEXT: movl _dsrc, %eax 623; DARWIN-32-DYNAMIC-NEXT: movl %eax, _ddst 624; DARWIN-32-DYNAMIC-NEXT: retl 625; 626; DARWIN-32-PIC-LABEL: foo03: 627; DARWIN-32-PIC: ## %bb.0: ## %entry 628; DARWIN-32-PIC-NEXT: calll L6$pb 629; DARWIN-32-PIC-NEXT: L6$pb: 630; DARWIN-32-PIC-NEXT: popl %eax 631; DARWIN-32-PIC-NEXT: movl _dsrc-L6$pb(%eax), %ecx 632; DARWIN-32-PIC-NEXT: movl %ecx, _ddst-L6$pb(%eax) 633; DARWIN-32-PIC-NEXT: retl 634; 635; DARWIN-64-STATIC-LABEL: foo03: 636; DARWIN-64-STATIC: ## %bb.0: ## %entry 637; DARWIN-64-STATIC-NEXT: movl _dsrc(%rip), %eax 638; DARWIN-64-STATIC-NEXT: movl %eax, _ddst(%rip) 639; DARWIN-64-STATIC-NEXT: retq 640; 641; DARWIN-64-DYNAMIC-LABEL: foo03: 642; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 643; DARWIN-64-DYNAMIC-NEXT: movl _dsrc(%rip), %eax 644; DARWIN-64-DYNAMIC-NEXT: movl %eax, _ddst(%rip) 645; DARWIN-64-DYNAMIC-NEXT: retq 646; 647; DARWIN-64-PIC-LABEL: foo03: 648; DARWIN-64-PIC: ## %bb.0: ## %entry 649; DARWIN-64-PIC-NEXT: movl _dsrc(%rip), %eax 650; DARWIN-64-PIC-NEXT: movl %eax, _ddst(%rip) 651; DARWIN-64-PIC-NEXT: retq 652 653entry: 654 %0 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @dsrc, i32 0, i64 0), align 32 655 store i32 %0, i32* getelementptr ([131072 x i32], [131072 x i32]* @ddst, i32 0, i64 0), align 32 656 ret void 657} 658 659define dso_local void @foo04() nounwind { 660; LINUX-64-STATIC-LABEL: foo04: 661; LINUX-64-STATIC: # %bb.0: # %entry 662; LINUX-64-STATIC-NEXT: movq $ddst, dptr(%rip) 663; LINUX-64-STATIC-NEXT: retq 664; 665; LINUX-32-STATIC-LABEL: foo04: 666; LINUX-32-STATIC: # %bb.0: # %entry 667; LINUX-32-STATIC-NEXT: movl $ddst, dptr 668; LINUX-32-STATIC-NEXT: retl 669; 670; LINUX-32-PIC-LABEL: foo04: 671; LINUX-32-PIC: # %bb.0: # %entry 672; LINUX-32-PIC-NEXT: calll .L7$pb 673; LINUX-32-PIC-NEXT: .L7$pb: 674; LINUX-32-PIC-NEXT: popl %eax 675; LINUX-32-PIC-NEXT: .Ltmp7: 676; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp7-.L7$pb), %eax 677; LINUX-32-PIC-NEXT: leal .Lddst$local@GOTOFF(%eax), %ecx 678; LINUX-32-PIC-NEXT: movl %ecx, .Ldptr$local@GOTOFF(%eax) 679; LINUX-32-PIC-NEXT: retl 680; 681; LINUX-64-PIC-LABEL: foo04: 682; LINUX-64-PIC: # %bb.0: # %entry 683; LINUX-64-PIC-NEXT: leaq .Lddst$local(%rip), %rax 684; LINUX-64-PIC-NEXT: movq %rax, .Ldptr$local(%rip) 685; LINUX-64-PIC-NEXT: retq 686; 687; DARWIN-32-STATIC-LABEL: foo04: 688; DARWIN-32-STATIC: ## %bb.0: ## %entry 689; DARWIN-32-STATIC-NEXT: movl $_ddst, _dptr 690; DARWIN-32-STATIC-NEXT: retl 691; 692; DARWIN-32-DYNAMIC-LABEL: foo04: 693; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 694; DARWIN-32-DYNAMIC-NEXT: movl $_ddst, _dptr 695; DARWIN-32-DYNAMIC-NEXT: retl 696; 697; DARWIN-32-PIC-LABEL: foo04: 698; DARWIN-32-PIC: ## %bb.0: ## %entry 699; DARWIN-32-PIC-NEXT: calll L7$pb 700; DARWIN-32-PIC-NEXT: L7$pb: 701; DARWIN-32-PIC-NEXT: popl %eax 702; DARWIN-32-PIC-NEXT: leal _ddst-L7$pb(%eax), %ecx 703; DARWIN-32-PIC-NEXT: movl %ecx, _dptr-L7$pb(%eax) 704; DARWIN-32-PIC-NEXT: retl 705; 706; DARWIN-64-STATIC-LABEL: foo04: 707; DARWIN-64-STATIC: ## %bb.0: ## %entry 708; DARWIN-64-STATIC-NEXT: leaq _ddst(%rip), %rax 709; DARWIN-64-STATIC-NEXT: movq %rax, _dptr(%rip) 710; DARWIN-64-STATIC-NEXT: retq 711; 712; DARWIN-64-DYNAMIC-LABEL: foo04: 713; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 714; DARWIN-64-DYNAMIC-NEXT: leaq _ddst(%rip), %rax 715; DARWIN-64-DYNAMIC-NEXT: movq %rax, _dptr(%rip) 716; DARWIN-64-DYNAMIC-NEXT: retq 717; 718; DARWIN-64-PIC-LABEL: foo04: 719; DARWIN-64-PIC: ## %bb.0: ## %entry 720; DARWIN-64-PIC-NEXT: leaq _ddst(%rip), %rax 721; DARWIN-64-PIC-NEXT: movq %rax, _dptr(%rip) 722; DARWIN-64-PIC-NEXT: retq 723 724entry: 725 store i32* getelementptr ([131072 x i32], [131072 x i32]* @ddst, i32 0, i32 0), i32** @dptr, align 8 726 ret void 727} 728 729define dso_local void @foo05() nounwind { 730; LINUX-64-STATIC-LABEL: foo05: 731; LINUX-64-STATIC: # %bb.0: # %entry 732; LINUX-64-STATIC-NEXT: movl dsrc(%rip), %eax 733; LINUX-64-STATIC-NEXT: movq dptr(%rip), %rcx 734; LINUX-64-STATIC-NEXT: movl %eax, (%rcx) 735; LINUX-64-STATIC-NEXT: retq 736; 737; LINUX-32-STATIC-LABEL: foo05: 738; LINUX-32-STATIC: # %bb.0: # %entry 739; LINUX-32-STATIC-NEXT: movl dsrc, %eax 740; LINUX-32-STATIC-NEXT: movl dptr, %ecx 741; LINUX-32-STATIC-NEXT: movl %eax, (%ecx) 742; LINUX-32-STATIC-NEXT: retl 743; 744; LINUX-32-PIC-LABEL: foo05: 745; LINUX-32-PIC: # %bb.0: # %entry 746; LINUX-32-PIC-NEXT: calll .L8$pb 747; LINUX-32-PIC-NEXT: .L8$pb: 748; LINUX-32-PIC-NEXT: popl %eax 749; LINUX-32-PIC-NEXT: .Ltmp8: 750; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp8-.L8$pb), %eax 751; LINUX-32-PIC-NEXT: movl .Ldsrc$local@GOTOFF(%eax), %ecx 752; LINUX-32-PIC-NEXT: movl .Ldptr$local@GOTOFF(%eax), %eax 753; LINUX-32-PIC-NEXT: movl %ecx, (%eax) 754; LINUX-32-PIC-NEXT: retl 755; 756; LINUX-64-PIC-LABEL: foo05: 757; LINUX-64-PIC: # %bb.0: # %entry 758; LINUX-64-PIC-NEXT: movl .Ldsrc$local(%rip), %eax 759; LINUX-64-PIC-NEXT: movq .Ldptr$local(%rip), %rcx 760; LINUX-64-PIC-NEXT: movl %eax, (%rcx) 761; LINUX-64-PIC-NEXT: retq 762; 763; DARWIN-32-STATIC-LABEL: foo05: 764; DARWIN-32-STATIC: ## %bb.0: ## %entry 765; DARWIN-32-STATIC-NEXT: movl _dsrc, %eax 766; DARWIN-32-STATIC-NEXT: movl _dptr, %ecx 767; DARWIN-32-STATIC-NEXT: movl %eax, (%ecx) 768; DARWIN-32-STATIC-NEXT: retl 769; 770; DARWIN-32-DYNAMIC-LABEL: foo05: 771; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 772; DARWIN-32-DYNAMIC-NEXT: movl _dsrc, %eax 773; DARWIN-32-DYNAMIC-NEXT: movl _dptr, %ecx 774; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx) 775; DARWIN-32-DYNAMIC-NEXT: retl 776; 777; DARWIN-32-PIC-LABEL: foo05: 778; DARWIN-32-PIC: ## %bb.0: ## %entry 779; DARWIN-32-PIC-NEXT: calll L8$pb 780; DARWIN-32-PIC-NEXT: L8$pb: 781; DARWIN-32-PIC-NEXT: popl %eax 782; DARWIN-32-PIC-NEXT: movl _dsrc-L8$pb(%eax), %ecx 783; DARWIN-32-PIC-NEXT: movl _dptr-L8$pb(%eax), %eax 784; DARWIN-32-PIC-NEXT: movl %ecx, (%eax) 785; DARWIN-32-PIC-NEXT: retl 786; 787; DARWIN-64-STATIC-LABEL: foo05: 788; DARWIN-64-STATIC: ## %bb.0: ## %entry 789; DARWIN-64-STATIC-NEXT: movl _dsrc(%rip), %eax 790; DARWIN-64-STATIC-NEXT: movq _dptr(%rip), %rcx 791; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx) 792; DARWIN-64-STATIC-NEXT: retq 793; 794; DARWIN-64-DYNAMIC-LABEL: foo05: 795; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 796; DARWIN-64-DYNAMIC-NEXT: movl _dsrc(%rip), %eax 797; DARWIN-64-DYNAMIC-NEXT: movq _dptr(%rip), %rcx 798; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx) 799; DARWIN-64-DYNAMIC-NEXT: retq 800; 801; DARWIN-64-PIC-LABEL: foo05: 802; DARWIN-64-PIC: ## %bb.0: ## %entry 803; DARWIN-64-PIC-NEXT: movl _dsrc(%rip), %eax 804; DARWIN-64-PIC-NEXT: movq _dptr(%rip), %rcx 805; DARWIN-64-PIC-NEXT: movl %eax, (%rcx) 806; DARWIN-64-PIC-NEXT: retq 807 808entry: 809 %0 = load i32*, i32** @dptr, align 8 810 %1 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @dsrc, i32 0, i64 0), align 32 811 store i32 %1, i32* %0, align 4 812 ret void 813} 814 815define dso_local void @foo06() nounwind { 816; LINUX-64-STATIC-LABEL: foo06: 817; LINUX-64-STATIC: # %bb.0: # %entry 818; LINUX-64-STATIC-NEXT: movl lsrc(%rip), %eax 819; LINUX-64-STATIC-NEXT: movl %eax, ldst(%rip) 820; LINUX-64-STATIC-NEXT: retq 821; 822; LINUX-32-STATIC-LABEL: foo06: 823; LINUX-32-STATIC: # %bb.0: # %entry 824; LINUX-32-STATIC-NEXT: movl lsrc, %eax 825; LINUX-32-STATIC-NEXT: movl %eax, ldst 826; LINUX-32-STATIC-NEXT: retl 827; 828; LINUX-32-PIC-LABEL: foo06: 829; LINUX-32-PIC: # %bb.0: # %entry 830; LINUX-32-PIC-NEXT: calll .L9$pb 831; LINUX-32-PIC-NEXT: .L9$pb: 832; LINUX-32-PIC-NEXT: popl %eax 833; LINUX-32-PIC-NEXT: .Ltmp9: 834; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp9-.L9$pb), %eax 835; LINUX-32-PIC-NEXT: movl lsrc@GOTOFF(%eax), %ecx 836; LINUX-32-PIC-NEXT: movl %ecx, ldst@GOTOFF(%eax) 837; LINUX-32-PIC-NEXT: retl 838; 839; LINUX-64-PIC-LABEL: foo06: 840; LINUX-64-PIC: # %bb.0: # %entry 841; LINUX-64-PIC-NEXT: movl lsrc(%rip), %eax 842; LINUX-64-PIC-NEXT: movl %eax, ldst(%rip) 843; LINUX-64-PIC-NEXT: retq 844; 845; DARWIN-32-STATIC-LABEL: foo06: 846; DARWIN-32-STATIC: ## %bb.0: ## %entry 847; DARWIN-32-STATIC-NEXT: movl _lsrc, %eax 848; DARWIN-32-STATIC-NEXT: movl %eax, _ldst 849; DARWIN-32-STATIC-NEXT: retl 850; 851; DARWIN-32-DYNAMIC-LABEL: foo06: 852; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 853; DARWIN-32-DYNAMIC-NEXT: movl _lsrc, %eax 854; DARWIN-32-DYNAMIC-NEXT: movl %eax, _ldst 855; DARWIN-32-DYNAMIC-NEXT: retl 856; 857; DARWIN-32-PIC-LABEL: foo06: 858; DARWIN-32-PIC: ## %bb.0: ## %entry 859; DARWIN-32-PIC-NEXT: calll L9$pb 860; DARWIN-32-PIC-NEXT: L9$pb: 861; DARWIN-32-PIC-NEXT: popl %eax 862; DARWIN-32-PIC-NEXT: movl _lsrc-L9$pb(%eax), %ecx 863; DARWIN-32-PIC-NEXT: movl %ecx, _ldst-L9$pb(%eax) 864; DARWIN-32-PIC-NEXT: retl 865; 866; DARWIN-64-STATIC-LABEL: foo06: 867; DARWIN-64-STATIC: ## %bb.0: ## %entry 868; DARWIN-64-STATIC-NEXT: movl _lsrc(%rip), %eax 869; DARWIN-64-STATIC-NEXT: movl %eax, _ldst(%rip) 870; DARWIN-64-STATIC-NEXT: retq 871; 872; DARWIN-64-DYNAMIC-LABEL: foo06: 873; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 874; DARWIN-64-DYNAMIC-NEXT: movl _lsrc(%rip), %eax 875; DARWIN-64-DYNAMIC-NEXT: movl %eax, _ldst(%rip) 876; DARWIN-64-DYNAMIC-NEXT: retq 877; 878; DARWIN-64-PIC-LABEL: foo06: 879; DARWIN-64-PIC: ## %bb.0: ## %entry 880; DARWIN-64-PIC-NEXT: movl _lsrc(%rip), %eax 881; DARWIN-64-PIC-NEXT: movl %eax, _ldst(%rip) 882; DARWIN-64-PIC-NEXT: retq 883 884entry: 885 %0 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @lsrc, i32 0, i64 0), align 4 886 store i32 %0, i32* getelementptr ([131072 x i32], [131072 x i32]* @ldst, i32 0, i64 0), align 4 887 ret void 888} 889 890define dso_local void @foo07() nounwind { 891; LINUX-64-STATIC-LABEL: foo07: 892; LINUX-64-STATIC: # %bb.0: # %entry 893; LINUX-64-STATIC-NEXT: movq $ldst, lptr(%rip) 894; LINUX-64-STATIC-NEXT: retq 895; 896; LINUX-32-STATIC-LABEL: foo07: 897; LINUX-32-STATIC: # %bb.0: # %entry 898; LINUX-32-STATIC-NEXT: movl $ldst, lptr 899; LINUX-32-STATIC-NEXT: retl 900; 901; LINUX-32-PIC-LABEL: foo07: 902; LINUX-32-PIC: # %bb.0: # %entry 903; LINUX-32-PIC-NEXT: calll .L10$pb 904; LINUX-32-PIC-NEXT: .L10$pb: 905; LINUX-32-PIC-NEXT: popl %eax 906; LINUX-32-PIC-NEXT: .Ltmp10: 907; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp10-.L10$pb), %eax 908; LINUX-32-PIC-NEXT: leal ldst@GOTOFF(%eax), %ecx 909; LINUX-32-PIC-NEXT: movl %ecx, lptr@GOTOFF(%eax) 910; LINUX-32-PIC-NEXT: retl 911; 912; LINUX-64-PIC-LABEL: foo07: 913; LINUX-64-PIC: # %bb.0: # %entry 914; LINUX-64-PIC-NEXT: leaq ldst(%rip), %rax 915; LINUX-64-PIC-NEXT: movq %rax, lptr(%rip) 916; LINUX-64-PIC-NEXT: retq 917; 918; DARWIN-32-STATIC-LABEL: foo07: 919; DARWIN-32-STATIC: ## %bb.0: ## %entry 920; DARWIN-32-STATIC-NEXT: movl $_ldst, _lptr 921; DARWIN-32-STATIC-NEXT: retl 922; 923; DARWIN-32-DYNAMIC-LABEL: foo07: 924; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 925; DARWIN-32-DYNAMIC-NEXT: movl $_ldst, _lptr 926; DARWIN-32-DYNAMIC-NEXT: retl 927; 928; DARWIN-32-PIC-LABEL: foo07: 929; DARWIN-32-PIC: ## %bb.0: ## %entry 930; DARWIN-32-PIC-NEXT: calll L10$pb 931; DARWIN-32-PIC-NEXT: L10$pb: 932; DARWIN-32-PIC-NEXT: popl %eax 933; DARWIN-32-PIC-NEXT: leal _ldst-L10$pb(%eax), %ecx 934; DARWIN-32-PIC-NEXT: movl %ecx, _lptr-L10$pb(%eax) 935; DARWIN-32-PIC-NEXT: retl 936; 937; DARWIN-64-STATIC-LABEL: foo07: 938; DARWIN-64-STATIC: ## %bb.0: ## %entry 939; DARWIN-64-STATIC-NEXT: leaq _ldst(%rip), %rax 940; DARWIN-64-STATIC-NEXT: movq %rax, _lptr(%rip) 941; DARWIN-64-STATIC-NEXT: retq 942; 943; DARWIN-64-DYNAMIC-LABEL: foo07: 944; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 945; DARWIN-64-DYNAMIC-NEXT: leaq _ldst(%rip), %rax 946; DARWIN-64-DYNAMIC-NEXT: movq %rax, _lptr(%rip) 947; DARWIN-64-DYNAMIC-NEXT: retq 948; 949; DARWIN-64-PIC-LABEL: foo07: 950; DARWIN-64-PIC: ## %bb.0: ## %entry 951; DARWIN-64-PIC-NEXT: leaq _ldst(%rip), %rax 952; DARWIN-64-PIC-NEXT: movq %rax, _lptr(%rip) 953; DARWIN-64-PIC-NEXT: retq 954 955entry: 956 store i32* getelementptr ([131072 x i32], [131072 x i32]* @ldst, i32 0, i32 0), i32** @lptr, align 8 957 ret void 958} 959 960define dso_local void @foo08() nounwind { 961; LINUX-64-STATIC-LABEL: foo08: 962; LINUX-64-STATIC: # %bb.0: # %entry 963; LINUX-64-STATIC-NEXT: movl lsrc(%rip), %eax 964; LINUX-64-STATIC-NEXT: movq lptr(%rip), %rcx 965; LINUX-64-STATIC-NEXT: movl %eax, (%rcx) 966; LINUX-64-STATIC-NEXT: retq 967; 968; LINUX-32-STATIC-LABEL: foo08: 969; LINUX-32-STATIC: # %bb.0: # %entry 970; LINUX-32-STATIC-NEXT: movl lsrc, %eax 971; LINUX-32-STATIC-NEXT: movl lptr, %ecx 972; LINUX-32-STATIC-NEXT: movl %eax, (%ecx) 973; LINUX-32-STATIC-NEXT: retl 974; 975; LINUX-32-PIC-LABEL: foo08: 976; LINUX-32-PIC: # %bb.0: # %entry 977; LINUX-32-PIC-NEXT: calll .L11$pb 978; LINUX-32-PIC-NEXT: .L11$pb: 979; LINUX-32-PIC-NEXT: popl %eax 980; LINUX-32-PIC-NEXT: .Ltmp11: 981; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp11-.L11$pb), %eax 982; LINUX-32-PIC-NEXT: movl lsrc@GOTOFF(%eax), %ecx 983; LINUX-32-PIC-NEXT: movl lptr@GOTOFF(%eax), %eax 984; LINUX-32-PIC-NEXT: movl %ecx, (%eax) 985; LINUX-32-PIC-NEXT: retl 986; 987; LINUX-64-PIC-LABEL: foo08: 988; LINUX-64-PIC: # %bb.0: # %entry 989; LINUX-64-PIC-NEXT: movl lsrc(%rip), %eax 990; LINUX-64-PIC-NEXT: movq lptr(%rip), %rcx 991; LINUX-64-PIC-NEXT: movl %eax, (%rcx) 992; LINUX-64-PIC-NEXT: retq 993; 994; DARWIN-32-STATIC-LABEL: foo08: 995; DARWIN-32-STATIC: ## %bb.0: ## %entry 996; DARWIN-32-STATIC-NEXT: movl _lsrc, %eax 997; DARWIN-32-STATIC-NEXT: movl _lptr, %ecx 998; DARWIN-32-STATIC-NEXT: movl %eax, (%ecx) 999; DARWIN-32-STATIC-NEXT: retl 1000; 1001; DARWIN-32-DYNAMIC-LABEL: foo08: 1002; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 1003; DARWIN-32-DYNAMIC-NEXT: movl _lsrc, %eax 1004; DARWIN-32-DYNAMIC-NEXT: movl _lptr, %ecx 1005; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx) 1006; DARWIN-32-DYNAMIC-NEXT: retl 1007; 1008; DARWIN-32-PIC-LABEL: foo08: 1009; DARWIN-32-PIC: ## %bb.0: ## %entry 1010; DARWIN-32-PIC-NEXT: calll L11$pb 1011; DARWIN-32-PIC-NEXT: L11$pb: 1012; DARWIN-32-PIC-NEXT: popl %eax 1013; DARWIN-32-PIC-NEXT: movl _lsrc-L11$pb(%eax), %ecx 1014; DARWIN-32-PIC-NEXT: movl _lptr-L11$pb(%eax), %eax 1015; DARWIN-32-PIC-NEXT: movl %ecx, (%eax) 1016; DARWIN-32-PIC-NEXT: retl 1017; 1018; DARWIN-64-STATIC-LABEL: foo08: 1019; DARWIN-64-STATIC: ## %bb.0: ## %entry 1020; DARWIN-64-STATIC-NEXT: movl _lsrc(%rip), %eax 1021; DARWIN-64-STATIC-NEXT: movq _lptr(%rip), %rcx 1022; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx) 1023; DARWIN-64-STATIC-NEXT: retq 1024; 1025; DARWIN-64-DYNAMIC-LABEL: foo08: 1026; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 1027; DARWIN-64-DYNAMIC-NEXT: movl _lsrc(%rip), %eax 1028; DARWIN-64-DYNAMIC-NEXT: movq _lptr(%rip), %rcx 1029; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx) 1030; DARWIN-64-DYNAMIC-NEXT: retq 1031; 1032; DARWIN-64-PIC-LABEL: foo08: 1033; DARWIN-64-PIC: ## %bb.0: ## %entry 1034; DARWIN-64-PIC-NEXT: movl _lsrc(%rip), %eax 1035; DARWIN-64-PIC-NEXT: movq _lptr(%rip), %rcx 1036; DARWIN-64-PIC-NEXT: movl %eax, (%rcx) 1037; DARWIN-64-PIC-NEXT: retq 1038 1039entry: 1040 %0 = load i32*, i32** @lptr, align 8 1041 %1 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @lsrc, i32 0, i64 0), align 4 1042 store i32 %1, i32* %0, align 4 1043 ret void 1044} 1045 1046define dso_local void @qux00() nounwind { 1047; LINUX-64-STATIC-LABEL: qux00: 1048; LINUX-64-STATIC: # %bb.0: # %entry 1049; LINUX-64-STATIC-NEXT: movq src@GOTPCREL(%rip), %rax 1050; LINUX-64-STATIC-NEXT: movl 64(%rax), %eax 1051; LINUX-64-STATIC-NEXT: movq dst@GOTPCREL(%rip), %rcx 1052; LINUX-64-STATIC-NEXT: movl %eax, 64(%rcx) 1053; LINUX-64-STATIC-NEXT: retq 1054; 1055; LINUX-32-STATIC-LABEL: qux00: 1056; LINUX-32-STATIC: # %bb.0: # %entry 1057; LINUX-32-STATIC-NEXT: movl src+64, %eax 1058; LINUX-32-STATIC-NEXT: movl %eax, dst+64 1059; LINUX-32-STATIC-NEXT: retl 1060; 1061; LINUX-32-PIC-LABEL: qux00: 1062; LINUX-32-PIC: # %bb.0: # %entry 1063; LINUX-32-PIC-NEXT: calll .L12$pb 1064; LINUX-32-PIC-NEXT: .L12$pb: 1065; LINUX-32-PIC-NEXT: popl %eax 1066; LINUX-32-PIC-NEXT: .Ltmp12: 1067; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp12-.L12$pb), %eax 1068; LINUX-32-PIC-NEXT: movl src@GOT(%eax), %ecx 1069; LINUX-32-PIC-NEXT: movl 64(%ecx), %ecx 1070; LINUX-32-PIC-NEXT: movl dst@GOT(%eax), %eax 1071; LINUX-32-PIC-NEXT: movl %ecx, 64(%eax) 1072; LINUX-32-PIC-NEXT: retl 1073; 1074; LINUX-64-PIC-LABEL: qux00: 1075; LINUX-64-PIC: # %bb.0: # %entry 1076; LINUX-64-PIC-NEXT: movq src@GOTPCREL(%rip), %rax 1077; LINUX-64-PIC-NEXT: movl 64(%rax), %eax 1078; LINUX-64-PIC-NEXT: movq dst@GOTPCREL(%rip), %rcx 1079; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx) 1080; LINUX-64-PIC-NEXT: retq 1081; 1082; DARWIN-32-STATIC-LABEL: qux00: 1083; DARWIN-32-STATIC: ## %bb.0: ## %entry 1084; DARWIN-32-STATIC-NEXT: movl _src+64, %eax 1085; DARWIN-32-STATIC-NEXT: movl %eax, _dst+64 1086; DARWIN-32-STATIC-NEXT: retl 1087; 1088; DARWIN-32-DYNAMIC-LABEL: qux00: 1089; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 1090; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %eax 1091; DARWIN-32-DYNAMIC-NEXT: movl 64(%eax), %eax 1092; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, %ecx 1093; DARWIN-32-DYNAMIC-NEXT: movl %eax, 64(%ecx) 1094; DARWIN-32-DYNAMIC-NEXT: retl 1095; 1096; DARWIN-32-PIC-LABEL: qux00: 1097; DARWIN-32-PIC: ## %bb.0: ## %entry 1098; DARWIN-32-PIC-NEXT: calll L12$pb 1099; DARWIN-32-PIC-NEXT: L12$pb: 1100; DARWIN-32-PIC-NEXT: popl %eax 1101; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L12$pb(%eax), %ecx 1102; DARWIN-32-PIC-NEXT: movl 64(%ecx), %ecx 1103; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L12$pb(%eax), %eax 1104; DARWIN-32-PIC-NEXT: movl %ecx, 64(%eax) 1105; DARWIN-32-PIC-NEXT: retl 1106; 1107; DARWIN-64-STATIC-LABEL: qux00: 1108; DARWIN-64-STATIC: ## %bb.0: ## %entry 1109; DARWIN-64-STATIC-NEXT: movq _src@GOTPCREL(%rip), %rax 1110; DARWIN-64-STATIC-NEXT: movl 64(%rax), %eax 1111; DARWIN-64-STATIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx 1112; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx) 1113; DARWIN-64-STATIC-NEXT: retq 1114; 1115; DARWIN-64-DYNAMIC-LABEL: qux00: 1116; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 1117; DARWIN-64-DYNAMIC-NEXT: movq _src@GOTPCREL(%rip), %rax 1118; DARWIN-64-DYNAMIC-NEXT: movl 64(%rax), %eax 1119; DARWIN-64-DYNAMIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx 1120; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx) 1121; DARWIN-64-DYNAMIC-NEXT: retq 1122; 1123; DARWIN-64-PIC-LABEL: qux00: 1124; DARWIN-64-PIC: ## %bb.0: ## %entry 1125; DARWIN-64-PIC-NEXT: movq _src@GOTPCREL(%rip), %rax 1126; DARWIN-64-PIC-NEXT: movl 64(%rax), %eax 1127; DARWIN-64-PIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx 1128; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx) 1129; DARWIN-64-PIC-NEXT: retq 1130 1131entry: 1132 %0 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @src, i32 0, i64 16), align 4 1133 store i32 %0, i32* getelementptr ([131072 x i32], [131072 x i32]* @dst, i32 0, i64 16), align 4 1134 ret void 1135} 1136 1137define dso_local void @qxx00() nounwind { 1138; LINUX-64-STATIC-LABEL: qxx00: 1139; LINUX-64-STATIC: # %bb.0: # %entry 1140; LINUX-64-STATIC-NEXT: movq xsrc@GOTPCREL(%rip), %rax 1141; LINUX-64-STATIC-NEXT: movl 64(%rax), %eax 1142; LINUX-64-STATIC-NEXT: movq xdst@GOTPCREL(%rip), %rcx 1143; LINUX-64-STATIC-NEXT: movl %eax, 64(%rcx) 1144; LINUX-64-STATIC-NEXT: retq 1145; 1146; LINUX-32-STATIC-LABEL: qxx00: 1147; LINUX-32-STATIC: # %bb.0: # %entry 1148; LINUX-32-STATIC-NEXT: movl xsrc+64, %eax 1149; LINUX-32-STATIC-NEXT: movl %eax, xdst+64 1150; LINUX-32-STATIC-NEXT: retl 1151; 1152; LINUX-32-PIC-LABEL: qxx00: 1153; LINUX-32-PIC: # %bb.0: # %entry 1154; LINUX-32-PIC-NEXT: calll .L13$pb 1155; LINUX-32-PIC-NEXT: .L13$pb: 1156; LINUX-32-PIC-NEXT: popl %eax 1157; LINUX-32-PIC-NEXT: .Ltmp13: 1158; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp13-.L13$pb), %eax 1159; LINUX-32-PIC-NEXT: movl xsrc@GOT(%eax), %ecx 1160; LINUX-32-PIC-NEXT: movl 64(%ecx), %ecx 1161; LINUX-32-PIC-NEXT: movl xdst@GOT(%eax), %eax 1162; LINUX-32-PIC-NEXT: movl %ecx, 64(%eax) 1163; LINUX-32-PIC-NEXT: retl 1164; 1165; LINUX-64-PIC-LABEL: qxx00: 1166; LINUX-64-PIC: # %bb.0: # %entry 1167; LINUX-64-PIC-NEXT: movq xsrc@GOTPCREL(%rip), %rax 1168; LINUX-64-PIC-NEXT: movl 64(%rax), %eax 1169; LINUX-64-PIC-NEXT: movq xdst@GOTPCREL(%rip), %rcx 1170; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx) 1171; LINUX-64-PIC-NEXT: retq 1172; 1173; DARWIN-32-STATIC-LABEL: qxx00: 1174; DARWIN-32-STATIC: ## %bb.0: ## %entry 1175; DARWIN-32-STATIC-NEXT: movl _xsrc+64, %eax 1176; DARWIN-32-STATIC-NEXT: movl %eax, _xdst+64 1177; DARWIN-32-STATIC-NEXT: retl 1178; 1179; DARWIN-32-DYNAMIC-LABEL: qxx00: 1180; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 1181; DARWIN-32-DYNAMIC-NEXT: movl L_xsrc$non_lazy_ptr, %eax 1182; DARWIN-32-DYNAMIC-NEXT: movl 64(%eax), %eax 1183; DARWIN-32-DYNAMIC-NEXT: movl L_xdst$non_lazy_ptr, %ecx 1184; DARWIN-32-DYNAMIC-NEXT: movl %eax, 64(%ecx) 1185; DARWIN-32-DYNAMIC-NEXT: retl 1186; 1187; DARWIN-32-PIC-LABEL: qxx00: 1188; DARWIN-32-PIC: ## %bb.0: ## %entry 1189; DARWIN-32-PIC-NEXT: calll L13$pb 1190; DARWIN-32-PIC-NEXT: L13$pb: 1191; DARWIN-32-PIC-NEXT: popl %eax 1192; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-L13$pb(%eax), %ecx 1193; DARWIN-32-PIC-NEXT: movl 64(%ecx), %ecx 1194; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-L13$pb(%eax), %eax 1195; DARWIN-32-PIC-NEXT: movl %ecx, 64(%eax) 1196; DARWIN-32-PIC-NEXT: retl 1197; 1198; DARWIN-64-STATIC-LABEL: qxx00: 1199; DARWIN-64-STATIC: ## %bb.0: ## %entry 1200; DARWIN-64-STATIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 1201; DARWIN-64-STATIC-NEXT: movl 64(%rax), %eax 1202; DARWIN-64-STATIC-NEXT: movq _xdst@GOTPCREL(%rip), %rcx 1203; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx) 1204; DARWIN-64-STATIC-NEXT: retq 1205; 1206; DARWIN-64-DYNAMIC-LABEL: qxx00: 1207; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 1208; DARWIN-64-DYNAMIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 1209; DARWIN-64-DYNAMIC-NEXT: movl 64(%rax), %eax 1210; DARWIN-64-DYNAMIC-NEXT: movq _xdst@GOTPCREL(%rip), %rcx 1211; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx) 1212; DARWIN-64-DYNAMIC-NEXT: retq 1213; 1214; DARWIN-64-PIC-LABEL: qxx00: 1215; DARWIN-64-PIC: ## %bb.0: ## %entry 1216; DARWIN-64-PIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 1217; DARWIN-64-PIC-NEXT: movl 64(%rax), %eax 1218; DARWIN-64-PIC-NEXT: movq _xdst@GOTPCREL(%rip), %rcx 1219; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx) 1220; DARWIN-64-PIC-NEXT: retq 1221 1222entry: 1223 %0 = load i32, i32* getelementptr ([32 x i32], [32 x i32]* @xsrc, i32 0, i64 16), align 4 1224 store i32 %0, i32* getelementptr ([32 x i32], [32 x i32]* @xdst, i32 0, i64 16), align 4 1225 ret void 1226} 1227 1228define dso_local void @qux01() nounwind { 1229; LINUX-64-STATIC-LABEL: qux01: 1230; LINUX-64-STATIC: # %bb.0: # %entry 1231; LINUX-64-STATIC-NEXT: movq dst@GOTPCREL(%rip), %rax 1232; LINUX-64-STATIC-NEXT: addq $64, %rax 1233; LINUX-64-STATIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx 1234; LINUX-64-STATIC-NEXT: movq %rax, (%rcx) 1235; LINUX-64-STATIC-NEXT: retq 1236; 1237; LINUX-32-STATIC-LABEL: qux01: 1238; LINUX-32-STATIC: # %bb.0: # %entry 1239; LINUX-32-STATIC-NEXT: leal dst+64, %eax 1240; LINUX-32-STATIC-NEXT: movl %eax, ptr 1241; LINUX-32-STATIC-NEXT: retl 1242; 1243; LINUX-32-PIC-LABEL: qux01: 1244; LINUX-32-PIC: # %bb.0: # %entry 1245; LINUX-32-PIC-NEXT: calll .L14$pb 1246; LINUX-32-PIC-NEXT: .L14$pb: 1247; LINUX-32-PIC-NEXT: popl %eax 1248; LINUX-32-PIC-NEXT: .Ltmp14: 1249; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp14-.L14$pb), %eax 1250; LINUX-32-PIC-NEXT: movl dst@GOT(%eax), %ecx 1251; LINUX-32-PIC-NEXT: addl $64, %ecx 1252; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax 1253; LINUX-32-PIC-NEXT: movl %ecx, (%eax) 1254; LINUX-32-PIC-NEXT: retl 1255; 1256; LINUX-64-PIC-LABEL: qux01: 1257; LINUX-64-PIC: # %bb.0: # %entry 1258; LINUX-64-PIC-NEXT: movq dst@GOTPCREL(%rip), %rax 1259; LINUX-64-PIC-NEXT: addq $64, %rax 1260; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx 1261; LINUX-64-PIC-NEXT: movq %rax, (%rcx) 1262; LINUX-64-PIC-NEXT: retq 1263; 1264; DARWIN-32-STATIC-LABEL: qux01: 1265; DARWIN-32-STATIC: ## %bb.0: ## %entry 1266; DARWIN-32-STATIC-NEXT: movl $_dst+64, _ptr 1267; DARWIN-32-STATIC-NEXT: retl 1268; 1269; DARWIN-32-DYNAMIC-LABEL: qux01: 1270; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 1271; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, %eax 1272; DARWIN-32-DYNAMIC-NEXT: addl $64, %eax 1273; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx 1274; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx) 1275; DARWIN-32-DYNAMIC-NEXT: retl 1276; 1277; DARWIN-32-PIC-LABEL: qux01: 1278; DARWIN-32-PIC: ## %bb.0: ## %entry 1279; DARWIN-32-PIC-NEXT: calll L14$pb 1280; DARWIN-32-PIC-NEXT: L14$pb: 1281; DARWIN-32-PIC-NEXT: popl %eax 1282; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L14$pb(%eax), %ecx 1283; DARWIN-32-PIC-NEXT: addl $64, %ecx 1284; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L14$pb(%eax), %eax 1285; DARWIN-32-PIC-NEXT: movl %ecx, (%eax) 1286; DARWIN-32-PIC-NEXT: retl 1287; 1288; DARWIN-64-STATIC-LABEL: qux01: 1289; DARWIN-64-STATIC: ## %bb.0: ## %entry 1290; DARWIN-64-STATIC-NEXT: movq _dst@GOTPCREL(%rip), %rax 1291; DARWIN-64-STATIC-NEXT: addq $64, %rax 1292; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 1293; DARWIN-64-STATIC-NEXT: movq %rax, (%rcx) 1294; DARWIN-64-STATIC-NEXT: retq 1295; 1296; DARWIN-64-DYNAMIC-LABEL: qux01: 1297; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 1298; DARWIN-64-DYNAMIC-NEXT: movq _dst@GOTPCREL(%rip), %rax 1299; DARWIN-64-DYNAMIC-NEXT: addq $64, %rax 1300; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 1301; DARWIN-64-DYNAMIC-NEXT: movq %rax, (%rcx) 1302; DARWIN-64-DYNAMIC-NEXT: retq 1303; 1304; DARWIN-64-PIC-LABEL: qux01: 1305; DARWIN-64-PIC: ## %bb.0: ## %entry 1306; DARWIN-64-PIC-NEXT: movq _dst@GOTPCREL(%rip), %rax 1307; DARWIN-64-PIC-NEXT: addq $64, %rax 1308; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 1309; DARWIN-64-PIC-NEXT: movq %rax, (%rcx) 1310; DARWIN-64-PIC-NEXT: retq 1311 1312entry: 1313 store i32* getelementptr ([131072 x i32], [131072 x i32]* @dst, i32 0, i64 16), i32** @ptr, align 8 1314 ret void 1315} 1316 1317define dso_local void @qxx01() nounwind { 1318; LINUX-64-STATIC-LABEL: qxx01: 1319; LINUX-64-STATIC: # %bb.0: # %entry 1320; LINUX-64-STATIC-NEXT: movq xdst@GOTPCREL(%rip), %rax 1321; LINUX-64-STATIC-NEXT: addq $64, %rax 1322; LINUX-64-STATIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx 1323; LINUX-64-STATIC-NEXT: movq %rax, (%rcx) 1324; LINUX-64-STATIC-NEXT: retq 1325; 1326; LINUX-32-STATIC-LABEL: qxx01: 1327; LINUX-32-STATIC: # %bb.0: # %entry 1328; LINUX-32-STATIC-NEXT: leal xdst+64, %eax 1329; LINUX-32-STATIC-NEXT: movl %eax, ptr 1330; LINUX-32-STATIC-NEXT: retl 1331; 1332; LINUX-32-PIC-LABEL: qxx01: 1333; LINUX-32-PIC: # %bb.0: # %entry 1334; LINUX-32-PIC-NEXT: calll .L15$pb 1335; LINUX-32-PIC-NEXT: .L15$pb: 1336; LINUX-32-PIC-NEXT: popl %eax 1337; LINUX-32-PIC-NEXT: .Ltmp15: 1338; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp15-.L15$pb), %eax 1339; LINUX-32-PIC-NEXT: movl xdst@GOT(%eax), %ecx 1340; LINUX-32-PIC-NEXT: addl $64, %ecx 1341; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax 1342; LINUX-32-PIC-NEXT: movl %ecx, (%eax) 1343; LINUX-32-PIC-NEXT: retl 1344; 1345; LINUX-64-PIC-LABEL: qxx01: 1346; LINUX-64-PIC: # %bb.0: # %entry 1347; LINUX-64-PIC-NEXT: movq xdst@GOTPCREL(%rip), %rax 1348; LINUX-64-PIC-NEXT: addq $64, %rax 1349; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx 1350; LINUX-64-PIC-NEXT: movq %rax, (%rcx) 1351; LINUX-64-PIC-NEXT: retq 1352; 1353; DARWIN-32-STATIC-LABEL: qxx01: 1354; DARWIN-32-STATIC: ## %bb.0: ## %entry 1355; DARWIN-32-STATIC-NEXT: movl $_xdst+64, _ptr 1356; DARWIN-32-STATIC-NEXT: retl 1357; 1358; DARWIN-32-DYNAMIC-LABEL: qxx01: 1359; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 1360; DARWIN-32-DYNAMIC-NEXT: movl L_xdst$non_lazy_ptr, %eax 1361; DARWIN-32-DYNAMIC-NEXT: addl $64, %eax 1362; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx 1363; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx) 1364; DARWIN-32-DYNAMIC-NEXT: retl 1365; 1366; DARWIN-32-PIC-LABEL: qxx01: 1367; DARWIN-32-PIC: ## %bb.0: ## %entry 1368; DARWIN-32-PIC-NEXT: calll L15$pb 1369; DARWIN-32-PIC-NEXT: L15$pb: 1370; DARWIN-32-PIC-NEXT: popl %eax 1371; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-L15$pb(%eax), %ecx 1372; DARWIN-32-PIC-NEXT: addl $64, %ecx 1373; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L15$pb(%eax), %eax 1374; DARWIN-32-PIC-NEXT: movl %ecx, (%eax) 1375; DARWIN-32-PIC-NEXT: retl 1376; 1377; DARWIN-64-STATIC-LABEL: qxx01: 1378; DARWIN-64-STATIC: ## %bb.0: ## %entry 1379; DARWIN-64-STATIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax 1380; DARWIN-64-STATIC-NEXT: addq $64, %rax 1381; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 1382; DARWIN-64-STATIC-NEXT: movq %rax, (%rcx) 1383; DARWIN-64-STATIC-NEXT: retq 1384; 1385; DARWIN-64-DYNAMIC-LABEL: qxx01: 1386; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 1387; DARWIN-64-DYNAMIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax 1388; DARWIN-64-DYNAMIC-NEXT: addq $64, %rax 1389; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 1390; DARWIN-64-DYNAMIC-NEXT: movq %rax, (%rcx) 1391; DARWIN-64-DYNAMIC-NEXT: retq 1392; 1393; DARWIN-64-PIC-LABEL: qxx01: 1394; DARWIN-64-PIC: ## %bb.0: ## %entry 1395; DARWIN-64-PIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax 1396; DARWIN-64-PIC-NEXT: addq $64, %rax 1397; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 1398; DARWIN-64-PIC-NEXT: movq %rax, (%rcx) 1399; DARWIN-64-PIC-NEXT: retq 1400 1401entry: 1402 store i32* getelementptr ([32 x i32], [32 x i32]* @xdst, i32 0, i64 16), i32** @ptr, align 8 1403 ret void 1404} 1405 1406define dso_local void @qux02() nounwind { 1407; LINUX-64-STATIC-LABEL: qux02: 1408; LINUX-64-STATIC: # %bb.0: # %entry 1409; LINUX-64-STATIC-NEXT: movq src@GOTPCREL(%rip), %rax 1410; LINUX-64-STATIC-NEXT: movl 64(%rax), %eax 1411; LINUX-64-STATIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx 1412; LINUX-64-STATIC-NEXT: movq (%rcx), %rcx 1413; LINUX-64-STATIC-NEXT: movl %eax, 64(%rcx) 1414; LINUX-64-STATIC-NEXT: retq 1415; 1416; LINUX-32-STATIC-LABEL: qux02: 1417; LINUX-32-STATIC: # %bb.0: # %entry 1418; LINUX-32-STATIC-NEXT: movl src+64, %eax 1419; LINUX-32-STATIC-NEXT: movl ptr, %ecx 1420; LINUX-32-STATIC-NEXT: movl %eax, 64(%ecx) 1421; LINUX-32-STATIC-NEXT: retl 1422; 1423; LINUX-32-PIC-LABEL: qux02: 1424; LINUX-32-PIC: # %bb.0: # %entry 1425; LINUX-32-PIC-NEXT: calll .L16$pb 1426; LINUX-32-PIC-NEXT: .L16$pb: 1427; LINUX-32-PIC-NEXT: popl %eax 1428; LINUX-32-PIC-NEXT: .Ltmp16: 1429; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp16-.L16$pb), %eax 1430; LINUX-32-PIC-NEXT: movl src@GOT(%eax), %ecx 1431; LINUX-32-PIC-NEXT: movl 64(%ecx), %ecx 1432; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax 1433; LINUX-32-PIC-NEXT: movl (%eax), %eax 1434; LINUX-32-PIC-NEXT: movl %ecx, 64(%eax) 1435; LINUX-32-PIC-NEXT: retl 1436; 1437; LINUX-64-PIC-LABEL: qux02: 1438; LINUX-64-PIC: # %bb.0: # %entry 1439; LINUX-64-PIC-NEXT: movq src@GOTPCREL(%rip), %rax 1440; LINUX-64-PIC-NEXT: movl 64(%rax), %eax 1441; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx 1442; LINUX-64-PIC-NEXT: movq (%rcx), %rcx 1443; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx) 1444; LINUX-64-PIC-NEXT: retq 1445; 1446; DARWIN-32-STATIC-LABEL: qux02: 1447; DARWIN-32-STATIC: ## %bb.0: ## %entry 1448; DARWIN-32-STATIC-NEXT: movl _src+64, %eax 1449; DARWIN-32-STATIC-NEXT: movl _ptr, %ecx 1450; DARWIN-32-STATIC-NEXT: movl %eax, 64(%ecx) 1451; DARWIN-32-STATIC-NEXT: retl 1452; 1453; DARWIN-32-DYNAMIC-LABEL: qux02: 1454; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 1455; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %eax 1456; DARWIN-32-DYNAMIC-NEXT: movl 64(%eax), %eax 1457; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx 1458; DARWIN-32-DYNAMIC-NEXT: movl (%ecx), %ecx 1459; DARWIN-32-DYNAMIC-NEXT: movl %eax, 64(%ecx) 1460; DARWIN-32-DYNAMIC-NEXT: retl 1461; 1462; DARWIN-32-PIC-LABEL: qux02: 1463; DARWIN-32-PIC: ## %bb.0: ## %entry 1464; DARWIN-32-PIC-NEXT: calll L16$pb 1465; DARWIN-32-PIC-NEXT: L16$pb: 1466; DARWIN-32-PIC-NEXT: popl %eax 1467; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L16$pb(%eax), %ecx 1468; DARWIN-32-PIC-NEXT: movl 64(%ecx), %ecx 1469; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L16$pb(%eax), %eax 1470; DARWIN-32-PIC-NEXT: movl (%eax), %eax 1471; DARWIN-32-PIC-NEXT: movl %ecx, 64(%eax) 1472; DARWIN-32-PIC-NEXT: retl 1473; 1474; DARWIN-64-STATIC-LABEL: qux02: 1475; DARWIN-64-STATIC: ## %bb.0: ## %entry 1476; DARWIN-64-STATIC-NEXT: movq _src@GOTPCREL(%rip), %rax 1477; DARWIN-64-STATIC-NEXT: movl 64(%rax), %eax 1478; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 1479; DARWIN-64-STATIC-NEXT: movq (%rcx), %rcx 1480; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx) 1481; DARWIN-64-STATIC-NEXT: retq 1482; 1483; DARWIN-64-DYNAMIC-LABEL: qux02: 1484; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 1485; DARWIN-64-DYNAMIC-NEXT: movq _src@GOTPCREL(%rip), %rax 1486; DARWIN-64-DYNAMIC-NEXT: movl 64(%rax), %eax 1487; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 1488; DARWIN-64-DYNAMIC-NEXT: movq (%rcx), %rcx 1489; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx) 1490; DARWIN-64-DYNAMIC-NEXT: retq 1491; 1492; DARWIN-64-PIC-LABEL: qux02: 1493; DARWIN-64-PIC: ## %bb.0: ## %entry 1494; DARWIN-64-PIC-NEXT: movq _src@GOTPCREL(%rip), %rax 1495; DARWIN-64-PIC-NEXT: movl 64(%rax), %eax 1496; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 1497; DARWIN-64-PIC-NEXT: movq (%rcx), %rcx 1498; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx) 1499; DARWIN-64-PIC-NEXT: retq 1500 1501entry: 1502 %0 = load i32*, i32** @ptr, align 8 1503 %1 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @src, i32 0, i64 16), align 4 1504 %2 = getelementptr i32, i32* %0, i64 16 1505 store i32 %1, i32* %2, align 4 1506 ret void 1507} 1508 1509define dso_local void @qxx02() nounwind { 1510; LINUX-64-STATIC-LABEL: qxx02: 1511; LINUX-64-STATIC: # %bb.0: # %entry 1512; LINUX-64-STATIC-NEXT: movq xsrc@GOTPCREL(%rip), %rax 1513; LINUX-64-STATIC-NEXT: movl 64(%rax), %eax 1514; LINUX-64-STATIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx 1515; LINUX-64-STATIC-NEXT: movq (%rcx), %rcx 1516; LINUX-64-STATIC-NEXT: movl %eax, 64(%rcx) 1517; LINUX-64-STATIC-NEXT: retq 1518; 1519; LINUX-32-STATIC-LABEL: qxx02: 1520; LINUX-32-STATIC: # %bb.0: # %entry 1521; LINUX-32-STATIC-NEXT: movl xsrc+64, %eax 1522; LINUX-32-STATIC-NEXT: movl ptr, %ecx 1523; LINUX-32-STATIC-NEXT: movl %eax, 64(%ecx) 1524; LINUX-32-STATIC-NEXT: retl 1525; 1526; LINUX-32-PIC-LABEL: qxx02: 1527; LINUX-32-PIC: # %bb.0: # %entry 1528; LINUX-32-PIC-NEXT: calll .L17$pb 1529; LINUX-32-PIC-NEXT: .L17$pb: 1530; LINUX-32-PIC-NEXT: popl %eax 1531; LINUX-32-PIC-NEXT: .Ltmp17: 1532; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp17-.L17$pb), %eax 1533; LINUX-32-PIC-NEXT: movl xsrc@GOT(%eax), %ecx 1534; LINUX-32-PIC-NEXT: movl 64(%ecx), %ecx 1535; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax 1536; LINUX-32-PIC-NEXT: movl (%eax), %eax 1537; LINUX-32-PIC-NEXT: movl %ecx, 64(%eax) 1538; LINUX-32-PIC-NEXT: retl 1539; 1540; LINUX-64-PIC-LABEL: qxx02: 1541; LINUX-64-PIC: # %bb.0: # %entry 1542; LINUX-64-PIC-NEXT: movq xsrc@GOTPCREL(%rip), %rax 1543; LINUX-64-PIC-NEXT: movl 64(%rax), %eax 1544; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx 1545; LINUX-64-PIC-NEXT: movq (%rcx), %rcx 1546; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx) 1547; LINUX-64-PIC-NEXT: retq 1548; 1549; DARWIN-32-STATIC-LABEL: qxx02: 1550; DARWIN-32-STATIC: ## %bb.0: ## %entry 1551; DARWIN-32-STATIC-NEXT: movl _xsrc+64, %eax 1552; DARWIN-32-STATIC-NEXT: movl _ptr, %ecx 1553; DARWIN-32-STATIC-NEXT: movl %eax, 64(%ecx) 1554; DARWIN-32-STATIC-NEXT: retl 1555; 1556; DARWIN-32-DYNAMIC-LABEL: qxx02: 1557; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 1558; DARWIN-32-DYNAMIC-NEXT: movl L_xsrc$non_lazy_ptr, %eax 1559; DARWIN-32-DYNAMIC-NEXT: movl 64(%eax), %eax 1560; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx 1561; DARWIN-32-DYNAMIC-NEXT: movl (%ecx), %ecx 1562; DARWIN-32-DYNAMIC-NEXT: movl %eax, 64(%ecx) 1563; DARWIN-32-DYNAMIC-NEXT: retl 1564; 1565; DARWIN-32-PIC-LABEL: qxx02: 1566; DARWIN-32-PIC: ## %bb.0: ## %entry 1567; DARWIN-32-PIC-NEXT: calll L17$pb 1568; DARWIN-32-PIC-NEXT: L17$pb: 1569; DARWIN-32-PIC-NEXT: popl %eax 1570; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-L17$pb(%eax), %ecx 1571; DARWIN-32-PIC-NEXT: movl 64(%ecx), %ecx 1572; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L17$pb(%eax), %eax 1573; DARWIN-32-PIC-NEXT: movl (%eax), %eax 1574; DARWIN-32-PIC-NEXT: movl %ecx, 64(%eax) 1575; DARWIN-32-PIC-NEXT: retl 1576; 1577; DARWIN-64-STATIC-LABEL: qxx02: 1578; DARWIN-64-STATIC: ## %bb.0: ## %entry 1579; DARWIN-64-STATIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 1580; DARWIN-64-STATIC-NEXT: movl 64(%rax), %eax 1581; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 1582; DARWIN-64-STATIC-NEXT: movq (%rcx), %rcx 1583; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx) 1584; DARWIN-64-STATIC-NEXT: retq 1585; 1586; DARWIN-64-DYNAMIC-LABEL: qxx02: 1587; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 1588; DARWIN-64-DYNAMIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 1589; DARWIN-64-DYNAMIC-NEXT: movl 64(%rax), %eax 1590; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 1591; DARWIN-64-DYNAMIC-NEXT: movq (%rcx), %rcx 1592; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx) 1593; DARWIN-64-DYNAMIC-NEXT: retq 1594; 1595; DARWIN-64-PIC-LABEL: qxx02: 1596; DARWIN-64-PIC: ## %bb.0: ## %entry 1597; DARWIN-64-PIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 1598; DARWIN-64-PIC-NEXT: movl 64(%rax), %eax 1599; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 1600; DARWIN-64-PIC-NEXT: movq (%rcx), %rcx 1601; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx) 1602; DARWIN-64-PIC-NEXT: retq 1603 1604entry: 1605 %0 = load i32*, i32** @ptr, align 8 1606 %1 = load i32, i32* getelementptr ([32 x i32], [32 x i32]* @xsrc, i32 0, i64 16), align 4 1607 %2 = getelementptr i32, i32* %0, i64 16 1608 store i32 %1, i32* %2, align 4 1609 ret void 1610} 1611 1612define dso_local void @qux03() nounwind { 1613; LINUX-64-STATIC-LABEL: qux03: 1614; LINUX-64-STATIC: # %bb.0: # %entry 1615; LINUX-64-STATIC-NEXT: movl dsrc+64(%rip), %eax 1616; LINUX-64-STATIC-NEXT: movl %eax, ddst+64(%rip) 1617; LINUX-64-STATIC-NEXT: retq 1618; 1619; LINUX-32-STATIC-LABEL: qux03: 1620; LINUX-32-STATIC: # %bb.0: # %entry 1621; LINUX-32-STATIC-NEXT: movl dsrc+64, %eax 1622; LINUX-32-STATIC-NEXT: movl %eax, ddst+64 1623; LINUX-32-STATIC-NEXT: retl 1624; 1625; LINUX-32-PIC-LABEL: qux03: 1626; LINUX-32-PIC: # %bb.0: # %entry 1627; LINUX-32-PIC-NEXT: calll .L18$pb 1628; LINUX-32-PIC-NEXT: .L18$pb: 1629; LINUX-32-PIC-NEXT: popl %eax 1630; LINUX-32-PIC-NEXT: .Ltmp18: 1631; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp18-.L18$pb), %eax 1632; LINUX-32-PIC-NEXT: movl .Ldsrc$local@GOTOFF+64(%eax), %ecx 1633; LINUX-32-PIC-NEXT: movl %ecx, .Lddst$local@GOTOFF+64(%eax) 1634; LINUX-32-PIC-NEXT: retl 1635; 1636; LINUX-64-PIC-LABEL: qux03: 1637; LINUX-64-PIC: # %bb.0: # %entry 1638; LINUX-64-PIC-NEXT: movl .Ldsrc$local+64(%rip), %eax 1639; LINUX-64-PIC-NEXT: movl %eax, .Lddst$local+64(%rip) 1640; LINUX-64-PIC-NEXT: retq 1641; 1642; DARWIN-32-STATIC-LABEL: qux03: 1643; DARWIN-32-STATIC: ## %bb.0: ## %entry 1644; DARWIN-32-STATIC-NEXT: movl _dsrc+64, %eax 1645; DARWIN-32-STATIC-NEXT: movl %eax, _ddst+64 1646; DARWIN-32-STATIC-NEXT: retl 1647; 1648; DARWIN-32-DYNAMIC-LABEL: qux03: 1649; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 1650; DARWIN-32-DYNAMIC-NEXT: movl _dsrc+64, %eax 1651; DARWIN-32-DYNAMIC-NEXT: movl %eax, _ddst+64 1652; DARWIN-32-DYNAMIC-NEXT: retl 1653; 1654; DARWIN-32-PIC-LABEL: qux03: 1655; DARWIN-32-PIC: ## %bb.0: ## %entry 1656; DARWIN-32-PIC-NEXT: calll L18$pb 1657; DARWIN-32-PIC-NEXT: L18$pb: 1658; DARWIN-32-PIC-NEXT: popl %eax 1659; DARWIN-32-PIC-NEXT: movl (_dsrc-L18$pb)+64(%eax), %ecx 1660; DARWIN-32-PIC-NEXT: movl %ecx, (_ddst-L18$pb)+64(%eax) 1661; DARWIN-32-PIC-NEXT: retl 1662; 1663; DARWIN-64-STATIC-LABEL: qux03: 1664; DARWIN-64-STATIC: ## %bb.0: ## %entry 1665; DARWIN-64-STATIC-NEXT: movl _dsrc+64(%rip), %eax 1666; DARWIN-64-STATIC-NEXT: movl %eax, _ddst+64(%rip) 1667; DARWIN-64-STATIC-NEXT: retq 1668; 1669; DARWIN-64-DYNAMIC-LABEL: qux03: 1670; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 1671; DARWIN-64-DYNAMIC-NEXT: movl _dsrc+64(%rip), %eax 1672; DARWIN-64-DYNAMIC-NEXT: movl %eax, _ddst+64(%rip) 1673; DARWIN-64-DYNAMIC-NEXT: retq 1674; 1675; DARWIN-64-PIC-LABEL: qux03: 1676; DARWIN-64-PIC: ## %bb.0: ## %entry 1677; DARWIN-64-PIC-NEXT: movl _dsrc+64(%rip), %eax 1678; DARWIN-64-PIC-NEXT: movl %eax, _ddst+64(%rip) 1679; DARWIN-64-PIC-NEXT: retq 1680 1681entry: 1682 %0 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @dsrc, i32 0, i64 16), align 32 1683 store i32 %0, i32* getelementptr ([131072 x i32], [131072 x i32]* @ddst, i32 0, i64 16), align 32 1684 ret void 1685} 1686 1687define dso_local void @qux04() nounwind { 1688; LINUX-64-STATIC-LABEL: qux04: 1689; LINUX-64-STATIC: # %bb.0: # %entry 1690; LINUX-64-STATIC-NEXT: movq $ddst+64, dptr(%rip) 1691; LINUX-64-STATIC-NEXT: retq 1692; 1693; LINUX-32-STATIC-LABEL: qux04: 1694; LINUX-32-STATIC: # %bb.0: # %entry 1695; LINUX-32-STATIC-NEXT: movl $ddst+64, dptr 1696; LINUX-32-STATIC-NEXT: retl 1697; 1698; LINUX-32-PIC-LABEL: qux04: 1699; LINUX-32-PIC: # %bb.0: # %entry 1700; LINUX-32-PIC-NEXT: calll .L19$pb 1701; LINUX-32-PIC-NEXT: .L19$pb: 1702; LINUX-32-PIC-NEXT: popl %eax 1703; LINUX-32-PIC-NEXT: .Ltmp19: 1704; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp19-.L19$pb), %eax 1705; LINUX-32-PIC-NEXT: leal .Lddst$local@GOTOFF+64(%eax), %ecx 1706; LINUX-32-PIC-NEXT: movl %ecx, .Ldptr$local@GOTOFF(%eax) 1707; LINUX-32-PIC-NEXT: retl 1708; 1709; LINUX-64-PIC-LABEL: qux04: 1710; LINUX-64-PIC: # %bb.0: # %entry 1711; LINUX-64-PIC-NEXT: leaq .Lddst$local+64(%rip), %rax 1712; LINUX-64-PIC-NEXT: movq %rax, .Ldptr$local(%rip) 1713; LINUX-64-PIC-NEXT: retq 1714; 1715; DARWIN-32-STATIC-LABEL: qux04: 1716; DARWIN-32-STATIC: ## %bb.0: ## %entry 1717; DARWIN-32-STATIC-NEXT: movl $_ddst+64, _dptr 1718; DARWIN-32-STATIC-NEXT: retl 1719; 1720; DARWIN-32-DYNAMIC-LABEL: qux04: 1721; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 1722; DARWIN-32-DYNAMIC-NEXT: movl $_ddst+64, _dptr 1723; DARWIN-32-DYNAMIC-NEXT: retl 1724; 1725; DARWIN-32-PIC-LABEL: qux04: 1726; DARWIN-32-PIC: ## %bb.0: ## %entry 1727; DARWIN-32-PIC-NEXT: calll L19$pb 1728; DARWIN-32-PIC-NEXT: L19$pb: 1729; DARWIN-32-PIC-NEXT: popl %eax 1730; DARWIN-32-PIC-NEXT: leal (_ddst-L19$pb)+64(%eax), %ecx 1731; DARWIN-32-PIC-NEXT: movl %ecx, _dptr-L19$pb(%eax) 1732; DARWIN-32-PIC-NEXT: retl 1733; 1734; DARWIN-64-STATIC-LABEL: qux04: 1735; DARWIN-64-STATIC: ## %bb.0: ## %entry 1736; DARWIN-64-STATIC-NEXT: leaq _ddst+64(%rip), %rax 1737; DARWIN-64-STATIC-NEXT: movq %rax, _dptr(%rip) 1738; DARWIN-64-STATIC-NEXT: retq 1739; 1740; DARWIN-64-DYNAMIC-LABEL: qux04: 1741; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 1742; DARWIN-64-DYNAMIC-NEXT: leaq _ddst+64(%rip), %rax 1743; DARWIN-64-DYNAMIC-NEXT: movq %rax, _dptr(%rip) 1744; DARWIN-64-DYNAMIC-NEXT: retq 1745; 1746; DARWIN-64-PIC-LABEL: qux04: 1747; DARWIN-64-PIC: ## %bb.0: ## %entry 1748; DARWIN-64-PIC-NEXT: leaq _ddst+64(%rip), %rax 1749; DARWIN-64-PIC-NEXT: movq %rax, _dptr(%rip) 1750; DARWIN-64-PIC-NEXT: retq 1751 1752entry: 1753 store i32* getelementptr ([131072 x i32], [131072 x i32]* @ddst, i32 0, i64 16), i32** @dptr, align 8 1754 ret void 1755} 1756 1757define dso_local void @qux05() nounwind { 1758; LINUX-64-STATIC-LABEL: qux05: 1759; LINUX-64-STATIC: # %bb.0: # %entry 1760; LINUX-64-STATIC-NEXT: movl dsrc+64(%rip), %eax 1761; LINUX-64-STATIC-NEXT: movq dptr(%rip), %rcx 1762; LINUX-64-STATIC-NEXT: movl %eax, 64(%rcx) 1763; LINUX-64-STATIC-NEXT: retq 1764; 1765; LINUX-32-STATIC-LABEL: qux05: 1766; LINUX-32-STATIC: # %bb.0: # %entry 1767; LINUX-32-STATIC-NEXT: movl dsrc+64, %eax 1768; LINUX-32-STATIC-NEXT: movl dptr, %ecx 1769; LINUX-32-STATIC-NEXT: movl %eax, 64(%ecx) 1770; LINUX-32-STATIC-NEXT: retl 1771; 1772; LINUX-32-PIC-LABEL: qux05: 1773; LINUX-32-PIC: # %bb.0: # %entry 1774; LINUX-32-PIC-NEXT: calll .L20$pb 1775; LINUX-32-PIC-NEXT: .L20$pb: 1776; LINUX-32-PIC-NEXT: popl %eax 1777; LINUX-32-PIC-NEXT: .Ltmp20: 1778; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp20-.L20$pb), %eax 1779; LINUX-32-PIC-NEXT: movl .Ldsrc$local@GOTOFF+64(%eax), %ecx 1780; LINUX-32-PIC-NEXT: movl .Ldptr$local@GOTOFF(%eax), %eax 1781; LINUX-32-PIC-NEXT: movl %ecx, 64(%eax) 1782; LINUX-32-PIC-NEXT: retl 1783; 1784; LINUX-64-PIC-LABEL: qux05: 1785; LINUX-64-PIC: # %bb.0: # %entry 1786; LINUX-64-PIC-NEXT: movl .Ldsrc$local+64(%rip), %eax 1787; LINUX-64-PIC-NEXT: movq .Ldptr$local(%rip), %rcx 1788; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx) 1789; LINUX-64-PIC-NEXT: retq 1790; 1791; DARWIN-32-STATIC-LABEL: qux05: 1792; DARWIN-32-STATIC: ## %bb.0: ## %entry 1793; DARWIN-32-STATIC-NEXT: movl _dsrc+64, %eax 1794; DARWIN-32-STATIC-NEXT: movl _dptr, %ecx 1795; DARWIN-32-STATIC-NEXT: movl %eax, 64(%ecx) 1796; DARWIN-32-STATIC-NEXT: retl 1797; 1798; DARWIN-32-DYNAMIC-LABEL: qux05: 1799; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 1800; DARWIN-32-DYNAMIC-NEXT: movl _dsrc+64, %eax 1801; DARWIN-32-DYNAMIC-NEXT: movl _dptr, %ecx 1802; DARWIN-32-DYNAMIC-NEXT: movl %eax, 64(%ecx) 1803; DARWIN-32-DYNAMIC-NEXT: retl 1804; 1805; DARWIN-32-PIC-LABEL: qux05: 1806; DARWIN-32-PIC: ## %bb.0: ## %entry 1807; DARWIN-32-PIC-NEXT: calll L20$pb 1808; DARWIN-32-PIC-NEXT: L20$pb: 1809; DARWIN-32-PIC-NEXT: popl %eax 1810; DARWIN-32-PIC-NEXT: movl (_dsrc-L20$pb)+64(%eax), %ecx 1811; DARWIN-32-PIC-NEXT: movl _dptr-L20$pb(%eax), %eax 1812; DARWIN-32-PIC-NEXT: movl %ecx, 64(%eax) 1813; DARWIN-32-PIC-NEXT: retl 1814; 1815; DARWIN-64-STATIC-LABEL: qux05: 1816; DARWIN-64-STATIC: ## %bb.0: ## %entry 1817; DARWIN-64-STATIC-NEXT: movl _dsrc+64(%rip), %eax 1818; DARWIN-64-STATIC-NEXT: movq _dptr(%rip), %rcx 1819; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx) 1820; DARWIN-64-STATIC-NEXT: retq 1821; 1822; DARWIN-64-DYNAMIC-LABEL: qux05: 1823; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 1824; DARWIN-64-DYNAMIC-NEXT: movl _dsrc+64(%rip), %eax 1825; DARWIN-64-DYNAMIC-NEXT: movq _dptr(%rip), %rcx 1826; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx) 1827; DARWIN-64-DYNAMIC-NEXT: retq 1828; 1829; DARWIN-64-PIC-LABEL: qux05: 1830; DARWIN-64-PIC: ## %bb.0: ## %entry 1831; DARWIN-64-PIC-NEXT: movl _dsrc+64(%rip), %eax 1832; DARWIN-64-PIC-NEXT: movq _dptr(%rip), %rcx 1833; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx) 1834; DARWIN-64-PIC-NEXT: retq 1835 1836entry: 1837 %0 = load i32*, i32** @dptr, align 8 1838 %1 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @dsrc, i32 0, i64 16), align 32 1839 %2 = getelementptr i32, i32* %0, i64 16 1840 store i32 %1, i32* %2, align 4 1841 ret void 1842} 1843 1844define dso_local void @qux06() nounwind { 1845; LINUX-64-STATIC-LABEL: qux06: 1846; LINUX-64-STATIC: # %bb.0: # %entry 1847; LINUX-64-STATIC-NEXT: movl lsrc+64(%rip), %eax 1848; LINUX-64-STATIC-NEXT: movl %eax, ldst+64(%rip) 1849; LINUX-64-STATIC-NEXT: retq 1850; 1851; LINUX-32-STATIC-LABEL: qux06: 1852; LINUX-32-STATIC: # %bb.0: # %entry 1853; LINUX-32-STATIC-NEXT: movl lsrc+64, %eax 1854; LINUX-32-STATIC-NEXT: movl %eax, ldst+64 1855; LINUX-32-STATIC-NEXT: retl 1856; 1857; LINUX-32-PIC-LABEL: qux06: 1858; LINUX-32-PIC: # %bb.0: # %entry 1859; LINUX-32-PIC-NEXT: calll .L21$pb 1860; LINUX-32-PIC-NEXT: .L21$pb: 1861; LINUX-32-PIC-NEXT: popl %eax 1862; LINUX-32-PIC-NEXT: .Ltmp21: 1863; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp21-.L21$pb), %eax 1864; LINUX-32-PIC-NEXT: movl lsrc@GOTOFF+64(%eax), %ecx 1865; LINUX-32-PIC-NEXT: movl %ecx, ldst@GOTOFF+64(%eax) 1866; LINUX-32-PIC-NEXT: retl 1867; 1868; LINUX-64-PIC-LABEL: qux06: 1869; LINUX-64-PIC: # %bb.0: # %entry 1870; LINUX-64-PIC-NEXT: movl lsrc+64(%rip), %eax 1871; LINUX-64-PIC-NEXT: movl %eax, ldst+64(%rip) 1872; LINUX-64-PIC-NEXT: retq 1873; 1874; DARWIN-32-STATIC-LABEL: qux06: 1875; DARWIN-32-STATIC: ## %bb.0: ## %entry 1876; DARWIN-32-STATIC-NEXT: movl _lsrc+64, %eax 1877; DARWIN-32-STATIC-NEXT: movl %eax, _ldst+64 1878; DARWIN-32-STATIC-NEXT: retl 1879; 1880; DARWIN-32-DYNAMIC-LABEL: qux06: 1881; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 1882; DARWIN-32-DYNAMIC-NEXT: movl _lsrc+64, %eax 1883; DARWIN-32-DYNAMIC-NEXT: movl %eax, _ldst+64 1884; DARWIN-32-DYNAMIC-NEXT: retl 1885; 1886; DARWIN-32-PIC-LABEL: qux06: 1887; DARWIN-32-PIC: ## %bb.0: ## %entry 1888; DARWIN-32-PIC-NEXT: calll L21$pb 1889; DARWIN-32-PIC-NEXT: L21$pb: 1890; DARWIN-32-PIC-NEXT: popl %eax 1891; DARWIN-32-PIC-NEXT: movl (_lsrc-L21$pb)+64(%eax), %ecx 1892; DARWIN-32-PIC-NEXT: movl %ecx, (_ldst-L21$pb)+64(%eax) 1893; DARWIN-32-PIC-NEXT: retl 1894; 1895; DARWIN-64-STATIC-LABEL: qux06: 1896; DARWIN-64-STATIC: ## %bb.0: ## %entry 1897; DARWIN-64-STATIC-NEXT: movl _lsrc+64(%rip), %eax 1898; DARWIN-64-STATIC-NEXT: movl %eax, _ldst+64(%rip) 1899; DARWIN-64-STATIC-NEXT: retq 1900; 1901; DARWIN-64-DYNAMIC-LABEL: qux06: 1902; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 1903; DARWIN-64-DYNAMIC-NEXT: movl _lsrc+64(%rip), %eax 1904; DARWIN-64-DYNAMIC-NEXT: movl %eax, _ldst+64(%rip) 1905; DARWIN-64-DYNAMIC-NEXT: retq 1906; 1907; DARWIN-64-PIC-LABEL: qux06: 1908; DARWIN-64-PIC: ## %bb.0: ## %entry 1909; DARWIN-64-PIC-NEXT: movl _lsrc+64(%rip), %eax 1910; DARWIN-64-PIC-NEXT: movl %eax, _ldst+64(%rip) 1911; DARWIN-64-PIC-NEXT: retq 1912 1913entry: 1914 %0 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @lsrc, i32 0, i64 16), align 4 1915 store i32 %0, i32* getelementptr ([131072 x i32], [131072 x i32]* @ldst, i32 0, i64 16), align 4 1916 ret void 1917} 1918 1919define dso_local void @qux07() nounwind { 1920; LINUX-64-STATIC-LABEL: qux07: 1921; LINUX-64-STATIC: # %bb.0: # %entry 1922; LINUX-64-STATIC-NEXT: movq $ldst+64, lptr(%rip) 1923; LINUX-64-STATIC-NEXT: retq 1924; 1925; LINUX-32-STATIC-LABEL: qux07: 1926; LINUX-32-STATIC: # %bb.0: # %entry 1927; LINUX-32-STATIC-NEXT: movl $ldst+64, lptr 1928; LINUX-32-STATIC-NEXT: retl 1929; 1930; LINUX-32-PIC-LABEL: qux07: 1931; LINUX-32-PIC: # %bb.0: # %entry 1932; LINUX-32-PIC-NEXT: calll .L22$pb 1933; LINUX-32-PIC-NEXT: .L22$pb: 1934; LINUX-32-PIC-NEXT: popl %eax 1935; LINUX-32-PIC-NEXT: .Ltmp22: 1936; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp22-.L22$pb), %eax 1937; LINUX-32-PIC-NEXT: leal ldst@GOTOFF+64(%eax), %ecx 1938; LINUX-32-PIC-NEXT: movl %ecx, lptr@GOTOFF(%eax) 1939; LINUX-32-PIC-NEXT: retl 1940; 1941; LINUX-64-PIC-LABEL: qux07: 1942; LINUX-64-PIC: # %bb.0: # %entry 1943; LINUX-64-PIC-NEXT: leaq ldst+64(%rip), %rax 1944; LINUX-64-PIC-NEXT: movq %rax, lptr(%rip) 1945; LINUX-64-PIC-NEXT: retq 1946; 1947; DARWIN-32-STATIC-LABEL: qux07: 1948; DARWIN-32-STATIC: ## %bb.0: ## %entry 1949; DARWIN-32-STATIC-NEXT: movl $_ldst+64, _lptr 1950; DARWIN-32-STATIC-NEXT: retl 1951; 1952; DARWIN-32-DYNAMIC-LABEL: qux07: 1953; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 1954; DARWIN-32-DYNAMIC-NEXT: movl $_ldst+64, _lptr 1955; DARWIN-32-DYNAMIC-NEXT: retl 1956; 1957; DARWIN-32-PIC-LABEL: qux07: 1958; DARWIN-32-PIC: ## %bb.0: ## %entry 1959; DARWIN-32-PIC-NEXT: calll L22$pb 1960; DARWIN-32-PIC-NEXT: L22$pb: 1961; DARWIN-32-PIC-NEXT: popl %eax 1962; DARWIN-32-PIC-NEXT: leal (_ldst-L22$pb)+64(%eax), %ecx 1963; DARWIN-32-PIC-NEXT: movl %ecx, _lptr-L22$pb(%eax) 1964; DARWIN-32-PIC-NEXT: retl 1965; 1966; DARWIN-64-STATIC-LABEL: qux07: 1967; DARWIN-64-STATIC: ## %bb.0: ## %entry 1968; DARWIN-64-STATIC-NEXT: leaq _ldst+64(%rip), %rax 1969; DARWIN-64-STATIC-NEXT: movq %rax, _lptr(%rip) 1970; DARWIN-64-STATIC-NEXT: retq 1971; 1972; DARWIN-64-DYNAMIC-LABEL: qux07: 1973; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 1974; DARWIN-64-DYNAMIC-NEXT: leaq _ldst+64(%rip), %rax 1975; DARWIN-64-DYNAMIC-NEXT: movq %rax, _lptr(%rip) 1976; DARWIN-64-DYNAMIC-NEXT: retq 1977; 1978; DARWIN-64-PIC-LABEL: qux07: 1979; DARWIN-64-PIC: ## %bb.0: ## %entry 1980; DARWIN-64-PIC-NEXT: leaq _ldst+64(%rip), %rax 1981; DARWIN-64-PIC-NEXT: movq %rax, _lptr(%rip) 1982; DARWIN-64-PIC-NEXT: retq 1983 1984entry: 1985 store i32* getelementptr ([131072 x i32], [131072 x i32]* @ldst, i32 0, i64 16), i32** @lptr, align 8 1986 ret void 1987} 1988 1989define dso_local void @qux08() nounwind { 1990; LINUX-64-STATIC-LABEL: qux08: 1991; LINUX-64-STATIC: # %bb.0: # %entry 1992; LINUX-64-STATIC-NEXT: movl lsrc+64(%rip), %eax 1993; LINUX-64-STATIC-NEXT: movq lptr(%rip), %rcx 1994; LINUX-64-STATIC-NEXT: movl %eax, 64(%rcx) 1995; LINUX-64-STATIC-NEXT: retq 1996; 1997; LINUX-32-STATIC-LABEL: qux08: 1998; LINUX-32-STATIC: # %bb.0: # %entry 1999; LINUX-32-STATIC-NEXT: movl lsrc+64, %eax 2000; LINUX-32-STATIC-NEXT: movl lptr, %ecx 2001; LINUX-32-STATIC-NEXT: movl %eax, 64(%ecx) 2002; LINUX-32-STATIC-NEXT: retl 2003; 2004; LINUX-32-PIC-LABEL: qux08: 2005; LINUX-32-PIC: # %bb.0: # %entry 2006; LINUX-32-PIC-NEXT: calll .L23$pb 2007; LINUX-32-PIC-NEXT: .L23$pb: 2008; LINUX-32-PIC-NEXT: popl %eax 2009; LINUX-32-PIC-NEXT: .Ltmp23: 2010; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp23-.L23$pb), %eax 2011; LINUX-32-PIC-NEXT: movl lsrc@GOTOFF+64(%eax), %ecx 2012; LINUX-32-PIC-NEXT: movl lptr@GOTOFF(%eax), %eax 2013; LINUX-32-PIC-NEXT: movl %ecx, 64(%eax) 2014; LINUX-32-PIC-NEXT: retl 2015; 2016; LINUX-64-PIC-LABEL: qux08: 2017; LINUX-64-PIC: # %bb.0: # %entry 2018; LINUX-64-PIC-NEXT: movl lsrc+64(%rip), %eax 2019; LINUX-64-PIC-NEXT: movq lptr(%rip), %rcx 2020; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx) 2021; LINUX-64-PIC-NEXT: retq 2022; 2023; DARWIN-32-STATIC-LABEL: qux08: 2024; DARWIN-32-STATIC: ## %bb.0: ## %entry 2025; DARWIN-32-STATIC-NEXT: movl _lsrc+64, %eax 2026; DARWIN-32-STATIC-NEXT: movl _lptr, %ecx 2027; DARWIN-32-STATIC-NEXT: movl %eax, 64(%ecx) 2028; DARWIN-32-STATIC-NEXT: retl 2029; 2030; DARWIN-32-DYNAMIC-LABEL: qux08: 2031; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 2032; DARWIN-32-DYNAMIC-NEXT: movl _lsrc+64, %eax 2033; DARWIN-32-DYNAMIC-NEXT: movl _lptr, %ecx 2034; DARWIN-32-DYNAMIC-NEXT: movl %eax, 64(%ecx) 2035; DARWIN-32-DYNAMIC-NEXT: retl 2036; 2037; DARWIN-32-PIC-LABEL: qux08: 2038; DARWIN-32-PIC: ## %bb.0: ## %entry 2039; DARWIN-32-PIC-NEXT: calll L23$pb 2040; DARWIN-32-PIC-NEXT: L23$pb: 2041; DARWIN-32-PIC-NEXT: popl %eax 2042; DARWIN-32-PIC-NEXT: movl (_lsrc-L23$pb)+64(%eax), %ecx 2043; DARWIN-32-PIC-NEXT: movl _lptr-L23$pb(%eax), %eax 2044; DARWIN-32-PIC-NEXT: movl %ecx, 64(%eax) 2045; DARWIN-32-PIC-NEXT: retl 2046; 2047; DARWIN-64-STATIC-LABEL: qux08: 2048; DARWIN-64-STATIC: ## %bb.0: ## %entry 2049; DARWIN-64-STATIC-NEXT: movl _lsrc+64(%rip), %eax 2050; DARWIN-64-STATIC-NEXT: movq _lptr(%rip), %rcx 2051; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx) 2052; DARWIN-64-STATIC-NEXT: retq 2053; 2054; DARWIN-64-DYNAMIC-LABEL: qux08: 2055; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 2056; DARWIN-64-DYNAMIC-NEXT: movl _lsrc+64(%rip), %eax 2057; DARWIN-64-DYNAMIC-NEXT: movq _lptr(%rip), %rcx 2058; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx) 2059; DARWIN-64-DYNAMIC-NEXT: retq 2060; 2061; DARWIN-64-PIC-LABEL: qux08: 2062; DARWIN-64-PIC: ## %bb.0: ## %entry 2063; DARWIN-64-PIC-NEXT: movl _lsrc+64(%rip), %eax 2064; DARWIN-64-PIC-NEXT: movq _lptr(%rip), %rcx 2065; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx) 2066; DARWIN-64-PIC-NEXT: retq 2067 2068entry: 2069 %0 = load i32*, i32** @lptr, align 8 2070 %1 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @lsrc, i32 0, i64 16), align 4 2071 %2 = getelementptr i32, i32* %0, i64 16 2072 store i32 %1, i32* %2, align 4 2073 ret void 2074} 2075 2076define dso_local void @ind00(i64 %i) nounwind { 2077; LINUX-64-STATIC-LABEL: ind00: 2078; LINUX-64-STATIC: # %bb.0: # %entry 2079; LINUX-64-STATIC-NEXT: movq src@GOTPCREL(%rip), %rax 2080; LINUX-64-STATIC-NEXT: movl (%rax,%rdi,4), %eax 2081; LINUX-64-STATIC-NEXT: movq dst@GOTPCREL(%rip), %rcx 2082; LINUX-64-STATIC-NEXT: movl %eax, (%rcx,%rdi,4) 2083; LINUX-64-STATIC-NEXT: retq 2084; 2085; LINUX-32-STATIC-LABEL: ind00: 2086; LINUX-32-STATIC: # %bb.0: # %entry 2087; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 2088; LINUX-32-STATIC-NEXT: movl src(,%eax,4), %ecx 2089; LINUX-32-STATIC-NEXT: movl %ecx, dst(,%eax,4) 2090; LINUX-32-STATIC-NEXT: retl 2091; 2092; LINUX-32-PIC-LABEL: ind00: 2093; LINUX-32-PIC: # %bb.0: # %entry 2094; LINUX-32-PIC-NEXT: calll .L24$pb 2095; LINUX-32-PIC-NEXT: .L24$pb: 2096; LINUX-32-PIC-NEXT: popl %eax 2097; LINUX-32-PIC-NEXT: .Ltmp24: 2098; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp24-.L24$pb), %eax 2099; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 2100; LINUX-32-PIC-NEXT: movl src@GOT(%eax), %edx 2101; LINUX-32-PIC-NEXT: movl (%edx,%ecx,4), %edx 2102; LINUX-32-PIC-NEXT: movl dst@GOT(%eax), %eax 2103; LINUX-32-PIC-NEXT: movl %edx, (%eax,%ecx,4) 2104; LINUX-32-PIC-NEXT: retl 2105; 2106; LINUX-64-PIC-LABEL: ind00: 2107; LINUX-64-PIC: # %bb.0: # %entry 2108; LINUX-64-PIC-NEXT: movq src@GOTPCREL(%rip), %rax 2109; LINUX-64-PIC-NEXT: movl (%rax,%rdi,4), %eax 2110; LINUX-64-PIC-NEXT: movq dst@GOTPCREL(%rip), %rcx 2111; LINUX-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4) 2112; LINUX-64-PIC-NEXT: retq 2113; 2114; DARWIN-32-STATIC-LABEL: ind00: 2115; DARWIN-32-STATIC: ## %bb.0: ## %entry 2116; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 2117; DARWIN-32-STATIC-NEXT: movl _src(,%eax,4), %ecx 2118; DARWIN-32-STATIC-NEXT: movl %ecx, _dst(,%eax,4) 2119; DARWIN-32-STATIC-NEXT: retl 2120; 2121; DARWIN-32-DYNAMIC-LABEL: ind00: 2122; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 2123; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 2124; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %ecx 2125; DARWIN-32-DYNAMIC-NEXT: movl (%ecx,%eax,4), %ecx 2126; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, %edx 2127; DARWIN-32-DYNAMIC-NEXT: movl %ecx, (%edx,%eax,4) 2128; DARWIN-32-DYNAMIC-NEXT: retl 2129; 2130; DARWIN-32-PIC-LABEL: ind00: 2131; DARWIN-32-PIC: ## %bb.0: ## %entry 2132; DARWIN-32-PIC-NEXT: calll L24$pb 2133; DARWIN-32-PIC-NEXT: L24$pb: 2134; DARWIN-32-PIC-NEXT: popl %eax 2135; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 2136; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L24$pb(%eax), %edx 2137; DARWIN-32-PIC-NEXT: movl (%edx,%ecx,4), %edx 2138; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L24$pb(%eax), %eax 2139; DARWIN-32-PIC-NEXT: movl %edx, (%eax,%ecx,4) 2140; DARWIN-32-PIC-NEXT: retl 2141; 2142; DARWIN-64-STATIC-LABEL: ind00: 2143; DARWIN-64-STATIC: ## %bb.0: ## %entry 2144; DARWIN-64-STATIC-NEXT: movq _src@GOTPCREL(%rip), %rax 2145; DARWIN-64-STATIC-NEXT: movl (%rax,%rdi,4), %eax 2146; DARWIN-64-STATIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx 2147; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx,%rdi,4) 2148; DARWIN-64-STATIC-NEXT: retq 2149; 2150; DARWIN-64-DYNAMIC-LABEL: ind00: 2151; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 2152; DARWIN-64-DYNAMIC-NEXT: movq _src@GOTPCREL(%rip), %rax 2153; DARWIN-64-DYNAMIC-NEXT: movl (%rax,%rdi,4), %eax 2154; DARWIN-64-DYNAMIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx 2155; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx,%rdi,4) 2156; DARWIN-64-DYNAMIC-NEXT: retq 2157; 2158; DARWIN-64-PIC-LABEL: ind00: 2159; DARWIN-64-PIC: ## %bb.0: ## %entry 2160; DARWIN-64-PIC-NEXT: movq _src@GOTPCREL(%rip), %rax 2161; DARWIN-64-PIC-NEXT: movl (%rax,%rdi,4), %eax 2162; DARWIN-64-PIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx 2163; DARWIN-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4) 2164; DARWIN-64-PIC-NEXT: retq 2165 2166entry: 2167 %0 = getelementptr [131072 x i32], [131072 x i32]* @src, i64 0, i64 %i 2168 %1 = load i32, i32* %0, align 4 2169 %2 = getelementptr [131072 x i32], [131072 x i32]* @dst, i64 0, i64 %i 2170 store i32 %1, i32* %2, align 4 2171 ret void 2172} 2173 2174define dso_local void @ixd00(i64 %i) nounwind { 2175; LINUX-64-STATIC-LABEL: ixd00: 2176; LINUX-64-STATIC: # %bb.0: # %entry 2177; LINUX-64-STATIC-NEXT: movq xsrc@GOTPCREL(%rip), %rax 2178; LINUX-64-STATIC-NEXT: movl (%rax,%rdi,4), %eax 2179; LINUX-64-STATIC-NEXT: movq xdst@GOTPCREL(%rip), %rcx 2180; LINUX-64-STATIC-NEXT: movl %eax, (%rcx,%rdi,4) 2181; LINUX-64-STATIC-NEXT: retq 2182; 2183; LINUX-32-STATIC-LABEL: ixd00: 2184; LINUX-32-STATIC: # %bb.0: # %entry 2185; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 2186; LINUX-32-STATIC-NEXT: movl xsrc(,%eax,4), %ecx 2187; LINUX-32-STATIC-NEXT: movl %ecx, xdst(,%eax,4) 2188; LINUX-32-STATIC-NEXT: retl 2189; 2190; LINUX-32-PIC-LABEL: ixd00: 2191; LINUX-32-PIC: # %bb.0: # %entry 2192; LINUX-32-PIC-NEXT: calll .L25$pb 2193; LINUX-32-PIC-NEXT: .L25$pb: 2194; LINUX-32-PIC-NEXT: popl %eax 2195; LINUX-32-PIC-NEXT: .Ltmp25: 2196; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp25-.L25$pb), %eax 2197; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 2198; LINUX-32-PIC-NEXT: movl xsrc@GOT(%eax), %edx 2199; LINUX-32-PIC-NEXT: movl (%edx,%ecx,4), %edx 2200; LINUX-32-PIC-NEXT: movl xdst@GOT(%eax), %eax 2201; LINUX-32-PIC-NEXT: movl %edx, (%eax,%ecx,4) 2202; LINUX-32-PIC-NEXT: retl 2203; 2204; LINUX-64-PIC-LABEL: ixd00: 2205; LINUX-64-PIC: # %bb.0: # %entry 2206; LINUX-64-PIC-NEXT: movq xsrc@GOTPCREL(%rip), %rax 2207; LINUX-64-PIC-NEXT: movl (%rax,%rdi,4), %eax 2208; LINUX-64-PIC-NEXT: movq xdst@GOTPCREL(%rip), %rcx 2209; LINUX-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4) 2210; LINUX-64-PIC-NEXT: retq 2211; 2212; DARWIN-32-STATIC-LABEL: ixd00: 2213; DARWIN-32-STATIC: ## %bb.0: ## %entry 2214; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 2215; DARWIN-32-STATIC-NEXT: movl _xsrc(,%eax,4), %ecx 2216; DARWIN-32-STATIC-NEXT: movl %ecx, _xdst(,%eax,4) 2217; DARWIN-32-STATIC-NEXT: retl 2218; 2219; DARWIN-32-DYNAMIC-LABEL: ixd00: 2220; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 2221; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 2222; DARWIN-32-DYNAMIC-NEXT: movl L_xsrc$non_lazy_ptr, %ecx 2223; DARWIN-32-DYNAMIC-NEXT: movl (%ecx,%eax,4), %ecx 2224; DARWIN-32-DYNAMIC-NEXT: movl L_xdst$non_lazy_ptr, %edx 2225; DARWIN-32-DYNAMIC-NEXT: movl %ecx, (%edx,%eax,4) 2226; DARWIN-32-DYNAMIC-NEXT: retl 2227; 2228; DARWIN-32-PIC-LABEL: ixd00: 2229; DARWIN-32-PIC: ## %bb.0: ## %entry 2230; DARWIN-32-PIC-NEXT: calll L25$pb 2231; DARWIN-32-PIC-NEXT: L25$pb: 2232; DARWIN-32-PIC-NEXT: popl %eax 2233; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 2234; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-L25$pb(%eax), %edx 2235; DARWIN-32-PIC-NEXT: movl (%edx,%ecx,4), %edx 2236; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-L25$pb(%eax), %eax 2237; DARWIN-32-PIC-NEXT: movl %edx, (%eax,%ecx,4) 2238; DARWIN-32-PIC-NEXT: retl 2239; 2240; DARWIN-64-STATIC-LABEL: ixd00: 2241; DARWIN-64-STATIC: ## %bb.0: ## %entry 2242; DARWIN-64-STATIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 2243; DARWIN-64-STATIC-NEXT: movl (%rax,%rdi,4), %eax 2244; DARWIN-64-STATIC-NEXT: movq _xdst@GOTPCREL(%rip), %rcx 2245; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx,%rdi,4) 2246; DARWIN-64-STATIC-NEXT: retq 2247; 2248; DARWIN-64-DYNAMIC-LABEL: ixd00: 2249; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 2250; DARWIN-64-DYNAMIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 2251; DARWIN-64-DYNAMIC-NEXT: movl (%rax,%rdi,4), %eax 2252; DARWIN-64-DYNAMIC-NEXT: movq _xdst@GOTPCREL(%rip), %rcx 2253; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx,%rdi,4) 2254; DARWIN-64-DYNAMIC-NEXT: retq 2255; 2256; DARWIN-64-PIC-LABEL: ixd00: 2257; DARWIN-64-PIC: ## %bb.0: ## %entry 2258; DARWIN-64-PIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 2259; DARWIN-64-PIC-NEXT: movl (%rax,%rdi,4), %eax 2260; DARWIN-64-PIC-NEXT: movq _xdst@GOTPCREL(%rip), %rcx 2261; DARWIN-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4) 2262; DARWIN-64-PIC-NEXT: retq 2263 2264entry: 2265 %0 = getelementptr [32 x i32], [32 x i32]* @xsrc, i64 0, i64 %i 2266 %1 = load i32, i32* %0, align 4 2267 %2 = getelementptr [32 x i32], [32 x i32]* @xdst, i64 0, i64 %i 2268 store i32 %1, i32* %2, align 4 2269 ret void 2270} 2271 2272define dso_local void @ind01(i64 %i) nounwind { 2273; LINUX-64-STATIC-LABEL: ind01: 2274; LINUX-64-STATIC: # %bb.0: # %entry 2275; LINUX-64-STATIC-NEXT: shlq $2, %rdi 2276; LINUX-64-STATIC-NEXT: addq dst@GOTPCREL(%rip), %rdi 2277; LINUX-64-STATIC-NEXT: movq ptr@GOTPCREL(%rip), %rax 2278; LINUX-64-STATIC-NEXT: movq %rdi, (%rax) 2279; LINUX-64-STATIC-NEXT: retq 2280; 2281; LINUX-32-STATIC-LABEL: ind01: 2282; LINUX-32-STATIC: # %bb.0: # %entry 2283; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 2284; LINUX-32-STATIC-NEXT: leal dst(,%eax,4), %eax 2285; LINUX-32-STATIC-NEXT: movl %eax, ptr 2286; LINUX-32-STATIC-NEXT: retl 2287; 2288; LINUX-32-PIC-LABEL: ind01: 2289; LINUX-32-PIC: # %bb.0: # %entry 2290; LINUX-32-PIC-NEXT: calll .L26$pb 2291; LINUX-32-PIC-NEXT: .L26$pb: 2292; LINUX-32-PIC-NEXT: popl %eax 2293; LINUX-32-PIC-NEXT: .Ltmp26: 2294; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp26-.L26$pb), %eax 2295; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 2296; LINUX-32-PIC-NEXT: shll $2, %ecx 2297; LINUX-32-PIC-NEXT: addl dst@GOT(%eax), %ecx 2298; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax 2299; LINUX-32-PIC-NEXT: movl %ecx, (%eax) 2300; LINUX-32-PIC-NEXT: retl 2301; 2302; LINUX-64-PIC-LABEL: ind01: 2303; LINUX-64-PIC: # %bb.0: # %entry 2304; LINUX-64-PIC-NEXT: shlq $2, %rdi 2305; LINUX-64-PIC-NEXT: addq dst@GOTPCREL(%rip), %rdi 2306; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rax 2307; LINUX-64-PIC-NEXT: movq %rdi, (%rax) 2308; LINUX-64-PIC-NEXT: retq 2309; 2310; DARWIN-32-STATIC-LABEL: ind01: 2311; DARWIN-32-STATIC: ## %bb.0: ## %entry 2312; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 2313; DARWIN-32-STATIC-NEXT: leal _dst(,%eax,4), %eax 2314; DARWIN-32-STATIC-NEXT: movl %eax, _ptr 2315; DARWIN-32-STATIC-NEXT: retl 2316; 2317; DARWIN-32-DYNAMIC-LABEL: ind01: 2318; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 2319; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 2320; DARWIN-32-DYNAMIC-NEXT: shll $2, %eax 2321; DARWIN-32-DYNAMIC-NEXT: addl L_dst$non_lazy_ptr, %eax 2322; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx 2323; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx) 2324; DARWIN-32-DYNAMIC-NEXT: retl 2325; 2326; DARWIN-32-PIC-LABEL: ind01: 2327; DARWIN-32-PIC: ## %bb.0: ## %entry 2328; DARWIN-32-PIC-NEXT: calll L26$pb 2329; DARWIN-32-PIC-NEXT: L26$pb: 2330; DARWIN-32-PIC-NEXT: popl %eax 2331; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 2332; DARWIN-32-PIC-NEXT: shll $2, %ecx 2333; DARWIN-32-PIC-NEXT: addl L_dst$non_lazy_ptr-L26$pb(%eax), %ecx 2334; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L26$pb(%eax), %eax 2335; DARWIN-32-PIC-NEXT: movl %ecx, (%eax) 2336; DARWIN-32-PIC-NEXT: retl 2337; 2338; DARWIN-64-STATIC-LABEL: ind01: 2339; DARWIN-64-STATIC: ## %bb.0: ## %entry 2340; DARWIN-64-STATIC-NEXT: shlq $2, %rdi 2341; DARWIN-64-STATIC-NEXT: addq _dst@GOTPCREL(%rip), %rdi 2342; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax 2343; DARWIN-64-STATIC-NEXT: movq %rdi, (%rax) 2344; DARWIN-64-STATIC-NEXT: retq 2345; 2346; DARWIN-64-DYNAMIC-LABEL: ind01: 2347; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 2348; DARWIN-64-DYNAMIC-NEXT: shlq $2, %rdi 2349; DARWIN-64-DYNAMIC-NEXT: addq _dst@GOTPCREL(%rip), %rdi 2350; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax 2351; DARWIN-64-DYNAMIC-NEXT: movq %rdi, (%rax) 2352; DARWIN-64-DYNAMIC-NEXT: retq 2353; 2354; DARWIN-64-PIC-LABEL: ind01: 2355; DARWIN-64-PIC: ## %bb.0: ## %entry 2356; DARWIN-64-PIC-NEXT: shlq $2, %rdi 2357; DARWIN-64-PIC-NEXT: addq _dst@GOTPCREL(%rip), %rdi 2358; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax 2359; DARWIN-64-PIC-NEXT: movq %rdi, (%rax) 2360; DARWIN-64-PIC-NEXT: retq 2361 2362entry: 2363 %0 = getelementptr [131072 x i32], [131072 x i32]* @dst, i64 0, i64 %i 2364 store i32* %0, i32** @ptr, align 8 2365 ret void 2366} 2367 2368define dso_local void @ixd01(i64 %i) nounwind { 2369; LINUX-64-STATIC-LABEL: ixd01: 2370; LINUX-64-STATIC: # %bb.0: # %entry 2371; LINUX-64-STATIC-NEXT: shlq $2, %rdi 2372; LINUX-64-STATIC-NEXT: addq xdst@GOTPCREL(%rip), %rdi 2373; LINUX-64-STATIC-NEXT: movq ptr@GOTPCREL(%rip), %rax 2374; LINUX-64-STATIC-NEXT: movq %rdi, (%rax) 2375; LINUX-64-STATIC-NEXT: retq 2376; 2377; LINUX-32-STATIC-LABEL: ixd01: 2378; LINUX-32-STATIC: # %bb.0: # %entry 2379; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 2380; LINUX-32-STATIC-NEXT: leal xdst(,%eax,4), %eax 2381; LINUX-32-STATIC-NEXT: movl %eax, ptr 2382; LINUX-32-STATIC-NEXT: retl 2383; 2384; LINUX-32-PIC-LABEL: ixd01: 2385; LINUX-32-PIC: # %bb.0: # %entry 2386; LINUX-32-PIC-NEXT: calll .L27$pb 2387; LINUX-32-PIC-NEXT: .L27$pb: 2388; LINUX-32-PIC-NEXT: popl %eax 2389; LINUX-32-PIC-NEXT: .Ltmp27: 2390; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp27-.L27$pb), %eax 2391; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 2392; LINUX-32-PIC-NEXT: shll $2, %ecx 2393; LINUX-32-PIC-NEXT: addl xdst@GOT(%eax), %ecx 2394; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax 2395; LINUX-32-PIC-NEXT: movl %ecx, (%eax) 2396; LINUX-32-PIC-NEXT: retl 2397; 2398; LINUX-64-PIC-LABEL: ixd01: 2399; LINUX-64-PIC: # %bb.0: # %entry 2400; LINUX-64-PIC-NEXT: shlq $2, %rdi 2401; LINUX-64-PIC-NEXT: addq xdst@GOTPCREL(%rip), %rdi 2402; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rax 2403; LINUX-64-PIC-NEXT: movq %rdi, (%rax) 2404; LINUX-64-PIC-NEXT: retq 2405; 2406; DARWIN-32-STATIC-LABEL: ixd01: 2407; DARWIN-32-STATIC: ## %bb.0: ## %entry 2408; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 2409; DARWIN-32-STATIC-NEXT: leal _xdst(,%eax,4), %eax 2410; DARWIN-32-STATIC-NEXT: movl %eax, _ptr 2411; DARWIN-32-STATIC-NEXT: retl 2412; 2413; DARWIN-32-DYNAMIC-LABEL: ixd01: 2414; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 2415; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 2416; DARWIN-32-DYNAMIC-NEXT: shll $2, %eax 2417; DARWIN-32-DYNAMIC-NEXT: addl L_xdst$non_lazy_ptr, %eax 2418; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx 2419; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx) 2420; DARWIN-32-DYNAMIC-NEXT: retl 2421; 2422; DARWIN-32-PIC-LABEL: ixd01: 2423; DARWIN-32-PIC: ## %bb.0: ## %entry 2424; DARWIN-32-PIC-NEXT: calll L27$pb 2425; DARWIN-32-PIC-NEXT: L27$pb: 2426; DARWIN-32-PIC-NEXT: popl %eax 2427; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 2428; DARWIN-32-PIC-NEXT: shll $2, %ecx 2429; DARWIN-32-PIC-NEXT: addl L_xdst$non_lazy_ptr-L27$pb(%eax), %ecx 2430; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L27$pb(%eax), %eax 2431; DARWIN-32-PIC-NEXT: movl %ecx, (%eax) 2432; DARWIN-32-PIC-NEXT: retl 2433; 2434; DARWIN-64-STATIC-LABEL: ixd01: 2435; DARWIN-64-STATIC: ## %bb.0: ## %entry 2436; DARWIN-64-STATIC-NEXT: shlq $2, %rdi 2437; DARWIN-64-STATIC-NEXT: addq _xdst@GOTPCREL(%rip), %rdi 2438; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax 2439; DARWIN-64-STATIC-NEXT: movq %rdi, (%rax) 2440; DARWIN-64-STATIC-NEXT: retq 2441; 2442; DARWIN-64-DYNAMIC-LABEL: ixd01: 2443; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 2444; DARWIN-64-DYNAMIC-NEXT: shlq $2, %rdi 2445; DARWIN-64-DYNAMIC-NEXT: addq _xdst@GOTPCREL(%rip), %rdi 2446; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax 2447; DARWIN-64-DYNAMIC-NEXT: movq %rdi, (%rax) 2448; DARWIN-64-DYNAMIC-NEXT: retq 2449; 2450; DARWIN-64-PIC-LABEL: ixd01: 2451; DARWIN-64-PIC: ## %bb.0: ## %entry 2452; DARWIN-64-PIC-NEXT: shlq $2, %rdi 2453; DARWIN-64-PIC-NEXT: addq _xdst@GOTPCREL(%rip), %rdi 2454; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax 2455; DARWIN-64-PIC-NEXT: movq %rdi, (%rax) 2456; DARWIN-64-PIC-NEXT: retq 2457 2458entry: 2459 %0 = getelementptr [32 x i32], [32 x i32]* @xdst, i64 0, i64 %i 2460 store i32* %0, i32** @ptr, align 8 2461 ret void 2462} 2463 2464define dso_local void @ind02(i64 %i) nounwind { 2465; LINUX-64-STATIC-LABEL: ind02: 2466; LINUX-64-STATIC: # %bb.0: # %entry 2467; LINUX-64-STATIC-NEXT: movq src@GOTPCREL(%rip), %rax 2468; LINUX-64-STATIC-NEXT: movl (%rax,%rdi,4), %eax 2469; LINUX-64-STATIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx 2470; LINUX-64-STATIC-NEXT: movq (%rcx), %rcx 2471; LINUX-64-STATIC-NEXT: movl %eax, (%rcx,%rdi,4) 2472; LINUX-64-STATIC-NEXT: retq 2473; 2474; LINUX-32-STATIC-LABEL: ind02: 2475; LINUX-32-STATIC: # %bb.0: # %entry 2476; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 2477; LINUX-32-STATIC-NEXT: movl src(,%eax,4), %ecx 2478; LINUX-32-STATIC-NEXT: movl ptr, %edx 2479; LINUX-32-STATIC-NEXT: movl %ecx, (%edx,%eax,4) 2480; LINUX-32-STATIC-NEXT: retl 2481; 2482; LINUX-32-PIC-LABEL: ind02: 2483; LINUX-32-PIC: # %bb.0: # %entry 2484; LINUX-32-PIC-NEXT: calll .L28$pb 2485; LINUX-32-PIC-NEXT: .L28$pb: 2486; LINUX-32-PIC-NEXT: popl %eax 2487; LINUX-32-PIC-NEXT: .Ltmp28: 2488; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp28-.L28$pb), %eax 2489; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 2490; LINUX-32-PIC-NEXT: movl src@GOT(%eax), %edx 2491; LINUX-32-PIC-NEXT: movl (%edx,%ecx,4), %edx 2492; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax 2493; LINUX-32-PIC-NEXT: movl (%eax), %eax 2494; LINUX-32-PIC-NEXT: movl %edx, (%eax,%ecx,4) 2495; LINUX-32-PIC-NEXT: retl 2496; 2497; LINUX-64-PIC-LABEL: ind02: 2498; LINUX-64-PIC: # %bb.0: # %entry 2499; LINUX-64-PIC-NEXT: movq src@GOTPCREL(%rip), %rax 2500; LINUX-64-PIC-NEXT: movl (%rax,%rdi,4), %eax 2501; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx 2502; LINUX-64-PIC-NEXT: movq (%rcx), %rcx 2503; LINUX-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4) 2504; LINUX-64-PIC-NEXT: retq 2505; 2506; DARWIN-32-STATIC-LABEL: ind02: 2507; DARWIN-32-STATIC: ## %bb.0: ## %entry 2508; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 2509; DARWIN-32-STATIC-NEXT: movl _src(,%eax,4), %ecx 2510; DARWIN-32-STATIC-NEXT: movl _ptr, %edx 2511; DARWIN-32-STATIC-NEXT: movl %ecx, (%edx,%eax,4) 2512; DARWIN-32-STATIC-NEXT: retl 2513; 2514; DARWIN-32-DYNAMIC-LABEL: ind02: 2515; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 2516; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 2517; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %ecx 2518; DARWIN-32-DYNAMIC-NEXT: movl (%ecx,%eax,4), %ecx 2519; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %edx 2520; DARWIN-32-DYNAMIC-NEXT: movl (%edx), %edx 2521; DARWIN-32-DYNAMIC-NEXT: movl %ecx, (%edx,%eax,4) 2522; DARWIN-32-DYNAMIC-NEXT: retl 2523; 2524; DARWIN-32-PIC-LABEL: ind02: 2525; DARWIN-32-PIC: ## %bb.0: ## %entry 2526; DARWIN-32-PIC-NEXT: calll L28$pb 2527; DARWIN-32-PIC-NEXT: L28$pb: 2528; DARWIN-32-PIC-NEXT: popl %eax 2529; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 2530; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L28$pb(%eax), %edx 2531; DARWIN-32-PIC-NEXT: movl (%edx,%ecx,4), %edx 2532; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L28$pb(%eax), %eax 2533; DARWIN-32-PIC-NEXT: movl (%eax), %eax 2534; DARWIN-32-PIC-NEXT: movl %edx, (%eax,%ecx,4) 2535; DARWIN-32-PIC-NEXT: retl 2536; 2537; DARWIN-64-STATIC-LABEL: ind02: 2538; DARWIN-64-STATIC: ## %bb.0: ## %entry 2539; DARWIN-64-STATIC-NEXT: movq _src@GOTPCREL(%rip), %rax 2540; DARWIN-64-STATIC-NEXT: movl (%rax,%rdi,4), %eax 2541; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 2542; DARWIN-64-STATIC-NEXT: movq (%rcx), %rcx 2543; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx,%rdi,4) 2544; DARWIN-64-STATIC-NEXT: retq 2545; 2546; DARWIN-64-DYNAMIC-LABEL: ind02: 2547; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 2548; DARWIN-64-DYNAMIC-NEXT: movq _src@GOTPCREL(%rip), %rax 2549; DARWIN-64-DYNAMIC-NEXT: movl (%rax,%rdi,4), %eax 2550; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 2551; DARWIN-64-DYNAMIC-NEXT: movq (%rcx), %rcx 2552; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx,%rdi,4) 2553; DARWIN-64-DYNAMIC-NEXT: retq 2554; 2555; DARWIN-64-PIC-LABEL: ind02: 2556; DARWIN-64-PIC: ## %bb.0: ## %entry 2557; DARWIN-64-PIC-NEXT: movq _src@GOTPCREL(%rip), %rax 2558; DARWIN-64-PIC-NEXT: movl (%rax,%rdi,4), %eax 2559; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 2560; DARWIN-64-PIC-NEXT: movq (%rcx), %rcx 2561; DARWIN-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4) 2562; DARWIN-64-PIC-NEXT: retq 2563 2564entry: 2565 %0 = load i32*, i32** @ptr, align 8 2566 %1 = getelementptr [131072 x i32], [131072 x i32]* @src, i64 0, i64 %i 2567 %2 = load i32, i32* %1, align 4 2568 %3 = getelementptr i32, i32* %0, i64 %i 2569 store i32 %2, i32* %3, align 4 2570 ret void 2571} 2572 2573define dso_local void @ixd02(i64 %i) nounwind { 2574; LINUX-64-STATIC-LABEL: ixd02: 2575; LINUX-64-STATIC: # %bb.0: # %entry 2576; LINUX-64-STATIC-NEXT: movq xsrc@GOTPCREL(%rip), %rax 2577; LINUX-64-STATIC-NEXT: movl (%rax,%rdi,4), %eax 2578; LINUX-64-STATIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx 2579; LINUX-64-STATIC-NEXT: movq (%rcx), %rcx 2580; LINUX-64-STATIC-NEXT: movl %eax, (%rcx,%rdi,4) 2581; LINUX-64-STATIC-NEXT: retq 2582; 2583; LINUX-32-STATIC-LABEL: ixd02: 2584; LINUX-32-STATIC: # %bb.0: # %entry 2585; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 2586; LINUX-32-STATIC-NEXT: movl xsrc(,%eax,4), %ecx 2587; LINUX-32-STATIC-NEXT: movl ptr, %edx 2588; LINUX-32-STATIC-NEXT: movl %ecx, (%edx,%eax,4) 2589; LINUX-32-STATIC-NEXT: retl 2590; 2591; LINUX-32-PIC-LABEL: ixd02: 2592; LINUX-32-PIC: # %bb.0: # %entry 2593; LINUX-32-PIC-NEXT: calll .L29$pb 2594; LINUX-32-PIC-NEXT: .L29$pb: 2595; LINUX-32-PIC-NEXT: popl %eax 2596; LINUX-32-PIC-NEXT: .Ltmp29: 2597; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp29-.L29$pb), %eax 2598; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 2599; LINUX-32-PIC-NEXT: movl xsrc@GOT(%eax), %edx 2600; LINUX-32-PIC-NEXT: movl (%edx,%ecx,4), %edx 2601; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax 2602; LINUX-32-PIC-NEXT: movl (%eax), %eax 2603; LINUX-32-PIC-NEXT: movl %edx, (%eax,%ecx,4) 2604; LINUX-32-PIC-NEXT: retl 2605; 2606; LINUX-64-PIC-LABEL: ixd02: 2607; LINUX-64-PIC: # %bb.0: # %entry 2608; LINUX-64-PIC-NEXT: movq xsrc@GOTPCREL(%rip), %rax 2609; LINUX-64-PIC-NEXT: movl (%rax,%rdi,4), %eax 2610; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx 2611; LINUX-64-PIC-NEXT: movq (%rcx), %rcx 2612; LINUX-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4) 2613; LINUX-64-PIC-NEXT: retq 2614; 2615; DARWIN-32-STATIC-LABEL: ixd02: 2616; DARWIN-32-STATIC: ## %bb.0: ## %entry 2617; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 2618; DARWIN-32-STATIC-NEXT: movl _xsrc(,%eax,4), %ecx 2619; DARWIN-32-STATIC-NEXT: movl _ptr, %edx 2620; DARWIN-32-STATIC-NEXT: movl %ecx, (%edx,%eax,4) 2621; DARWIN-32-STATIC-NEXT: retl 2622; 2623; DARWIN-32-DYNAMIC-LABEL: ixd02: 2624; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 2625; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 2626; DARWIN-32-DYNAMIC-NEXT: movl L_xsrc$non_lazy_ptr, %ecx 2627; DARWIN-32-DYNAMIC-NEXT: movl (%ecx,%eax,4), %ecx 2628; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %edx 2629; DARWIN-32-DYNAMIC-NEXT: movl (%edx), %edx 2630; DARWIN-32-DYNAMIC-NEXT: movl %ecx, (%edx,%eax,4) 2631; DARWIN-32-DYNAMIC-NEXT: retl 2632; 2633; DARWIN-32-PIC-LABEL: ixd02: 2634; DARWIN-32-PIC: ## %bb.0: ## %entry 2635; DARWIN-32-PIC-NEXT: calll L29$pb 2636; DARWIN-32-PIC-NEXT: L29$pb: 2637; DARWIN-32-PIC-NEXT: popl %eax 2638; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 2639; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-L29$pb(%eax), %edx 2640; DARWIN-32-PIC-NEXT: movl (%edx,%ecx,4), %edx 2641; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L29$pb(%eax), %eax 2642; DARWIN-32-PIC-NEXT: movl (%eax), %eax 2643; DARWIN-32-PIC-NEXT: movl %edx, (%eax,%ecx,4) 2644; DARWIN-32-PIC-NEXT: retl 2645; 2646; DARWIN-64-STATIC-LABEL: ixd02: 2647; DARWIN-64-STATIC: ## %bb.0: ## %entry 2648; DARWIN-64-STATIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 2649; DARWIN-64-STATIC-NEXT: movl (%rax,%rdi,4), %eax 2650; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 2651; DARWIN-64-STATIC-NEXT: movq (%rcx), %rcx 2652; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx,%rdi,4) 2653; DARWIN-64-STATIC-NEXT: retq 2654; 2655; DARWIN-64-DYNAMIC-LABEL: ixd02: 2656; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 2657; DARWIN-64-DYNAMIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 2658; DARWIN-64-DYNAMIC-NEXT: movl (%rax,%rdi,4), %eax 2659; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 2660; DARWIN-64-DYNAMIC-NEXT: movq (%rcx), %rcx 2661; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx,%rdi,4) 2662; DARWIN-64-DYNAMIC-NEXT: retq 2663; 2664; DARWIN-64-PIC-LABEL: ixd02: 2665; DARWIN-64-PIC: ## %bb.0: ## %entry 2666; DARWIN-64-PIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 2667; DARWIN-64-PIC-NEXT: movl (%rax,%rdi,4), %eax 2668; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 2669; DARWIN-64-PIC-NEXT: movq (%rcx), %rcx 2670; DARWIN-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4) 2671; DARWIN-64-PIC-NEXT: retq 2672 2673entry: 2674 %0 = load i32*, i32** @ptr, align 8 2675 %1 = getelementptr [32 x i32], [32 x i32]* @xsrc, i64 0, i64 %i 2676 %2 = load i32, i32* %1, align 4 2677 %3 = getelementptr i32, i32* %0, i64 %i 2678 store i32 %2, i32* %3, align 4 2679 ret void 2680} 2681 2682define dso_local void @ind03(i64 %i) nounwind { 2683; LINUX-64-STATIC-LABEL: ind03: 2684; LINUX-64-STATIC: # %bb.0: # %entry 2685; LINUX-64-STATIC-NEXT: movl dsrc(,%rdi,4), %eax 2686; LINUX-64-STATIC-NEXT: movl %eax, ddst(,%rdi,4) 2687; LINUX-64-STATIC-NEXT: retq 2688; 2689; LINUX-32-STATIC-LABEL: ind03: 2690; LINUX-32-STATIC: # %bb.0: # %entry 2691; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 2692; LINUX-32-STATIC-NEXT: movl dsrc(,%eax,4), %ecx 2693; LINUX-32-STATIC-NEXT: movl %ecx, ddst(,%eax,4) 2694; LINUX-32-STATIC-NEXT: retl 2695; 2696; LINUX-32-PIC-LABEL: ind03: 2697; LINUX-32-PIC: # %bb.0: # %entry 2698; LINUX-32-PIC-NEXT: calll .L30$pb 2699; LINUX-32-PIC-NEXT: .L30$pb: 2700; LINUX-32-PIC-NEXT: popl %eax 2701; LINUX-32-PIC-NEXT: .Ltmp30: 2702; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp30-.L30$pb), %eax 2703; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 2704; LINUX-32-PIC-NEXT: movl .Ldsrc$local@GOTOFF(%eax,%ecx,4), %edx 2705; LINUX-32-PIC-NEXT: movl %edx, .Lddst$local@GOTOFF(%eax,%ecx,4) 2706; LINUX-32-PIC-NEXT: retl 2707; 2708; LINUX-64-PIC-LABEL: ind03: 2709; LINUX-64-PIC: # %bb.0: # %entry 2710; LINUX-64-PIC-NEXT: leaq .Ldsrc$local(%rip), %rax 2711; LINUX-64-PIC-NEXT: movl (%rax,%rdi,4), %eax 2712; LINUX-64-PIC-NEXT: leaq .Lddst$local(%rip), %rcx 2713; LINUX-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4) 2714; LINUX-64-PIC-NEXT: retq 2715; 2716; DARWIN-32-STATIC-LABEL: ind03: 2717; DARWIN-32-STATIC: ## %bb.0: ## %entry 2718; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 2719; DARWIN-32-STATIC-NEXT: movl _dsrc(,%eax,4), %ecx 2720; DARWIN-32-STATIC-NEXT: movl %ecx, _ddst(,%eax,4) 2721; DARWIN-32-STATIC-NEXT: retl 2722; 2723; DARWIN-32-DYNAMIC-LABEL: ind03: 2724; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 2725; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 2726; DARWIN-32-DYNAMIC-NEXT: movl _dsrc(,%eax,4), %ecx 2727; DARWIN-32-DYNAMIC-NEXT: movl %ecx, _ddst(,%eax,4) 2728; DARWIN-32-DYNAMIC-NEXT: retl 2729; 2730; DARWIN-32-PIC-LABEL: ind03: 2731; DARWIN-32-PIC: ## %bb.0: ## %entry 2732; DARWIN-32-PIC-NEXT: calll L30$pb 2733; DARWIN-32-PIC-NEXT: L30$pb: 2734; DARWIN-32-PIC-NEXT: popl %eax 2735; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 2736; DARWIN-32-PIC-NEXT: movl _dsrc-L30$pb(%eax,%ecx,4), %edx 2737; DARWIN-32-PIC-NEXT: movl %edx, _ddst-L30$pb(%eax,%ecx,4) 2738; DARWIN-32-PIC-NEXT: retl 2739; 2740; DARWIN-64-STATIC-LABEL: ind03: 2741; DARWIN-64-STATIC: ## %bb.0: ## %entry 2742; DARWIN-64-STATIC-NEXT: leaq _dsrc(%rip), %rax 2743; DARWIN-64-STATIC-NEXT: movl (%rax,%rdi,4), %eax 2744; DARWIN-64-STATIC-NEXT: leaq _ddst(%rip), %rcx 2745; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx,%rdi,4) 2746; DARWIN-64-STATIC-NEXT: retq 2747; 2748; DARWIN-64-DYNAMIC-LABEL: ind03: 2749; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 2750; DARWIN-64-DYNAMIC-NEXT: leaq _dsrc(%rip), %rax 2751; DARWIN-64-DYNAMIC-NEXT: movl (%rax,%rdi,4), %eax 2752; DARWIN-64-DYNAMIC-NEXT: leaq _ddst(%rip), %rcx 2753; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx,%rdi,4) 2754; DARWIN-64-DYNAMIC-NEXT: retq 2755; 2756; DARWIN-64-PIC-LABEL: ind03: 2757; DARWIN-64-PIC: ## %bb.0: ## %entry 2758; DARWIN-64-PIC-NEXT: leaq _dsrc(%rip), %rax 2759; DARWIN-64-PIC-NEXT: movl (%rax,%rdi,4), %eax 2760; DARWIN-64-PIC-NEXT: leaq _ddst(%rip), %rcx 2761; DARWIN-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4) 2762; DARWIN-64-PIC-NEXT: retq 2763 2764entry: 2765 %0 = getelementptr [131072 x i32], [131072 x i32]* @dsrc, i64 0, i64 %i 2766 %1 = load i32, i32* %0, align 4 2767 %2 = getelementptr [131072 x i32], [131072 x i32]* @ddst, i64 0, i64 %i 2768 store i32 %1, i32* %2, align 4 2769 ret void 2770} 2771 2772define dso_local void @ind04(i64 %i) nounwind { 2773; LINUX-64-STATIC-LABEL: ind04: 2774; LINUX-64-STATIC: # %bb.0: # %entry 2775; LINUX-64-STATIC-NEXT: leaq ddst(,%rdi,4), %rax 2776; LINUX-64-STATIC-NEXT: movq %rax, dptr(%rip) 2777; LINUX-64-STATIC-NEXT: retq 2778; 2779; LINUX-32-STATIC-LABEL: ind04: 2780; LINUX-32-STATIC: # %bb.0: # %entry 2781; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 2782; LINUX-32-STATIC-NEXT: leal ddst(,%eax,4), %eax 2783; LINUX-32-STATIC-NEXT: movl %eax, dptr 2784; LINUX-32-STATIC-NEXT: retl 2785; 2786; LINUX-32-PIC-LABEL: ind04: 2787; LINUX-32-PIC: # %bb.0: # %entry 2788; LINUX-32-PIC-NEXT: calll .L31$pb 2789; LINUX-32-PIC-NEXT: .L31$pb: 2790; LINUX-32-PIC-NEXT: popl %eax 2791; LINUX-32-PIC-NEXT: .Ltmp31: 2792; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp31-.L31$pb), %eax 2793; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 2794; LINUX-32-PIC-NEXT: leal .Lddst$local@GOTOFF(%eax,%ecx,4), %ecx 2795; LINUX-32-PIC-NEXT: movl %ecx, .Ldptr$local@GOTOFF(%eax) 2796; LINUX-32-PIC-NEXT: retl 2797; 2798; LINUX-64-PIC-LABEL: ind04: 2799; LINUX-64-PIC: # %bb.0: # %entry 2800; LINUX-64-PIC-NEXT: leaq .Lddst$local(%rip), %rax 2801; LINUX-64-PIC-NEXT: leaq (%rax,%rdi,4), %rax 2802; LINUX-64-PIC-NEXT: movq %rax, .Ldptr$local(%rip) 2803; LINUX-64-PIC-NEXT: retq 2804; 2805; DARWIN-32-STATIC-LABEL: ind04: 2806; DARWIN-32-STATIC: ## %bb.0: ## %entry 2807; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 2808; DARWIN-32-STATIC-NEXT: leal _ddst(,%eax,4), %eax 2809; DARWIN-32-STATIC-NEXT: movl %eax, _dptr 2810; DARWIN-32-STATIC-NEXT: retl 2811; 2812; DARWIN-32-DYNAMIC-LABEL: ind04: 2813; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 2814; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 2815; DARWIN-32-DYNAMIC-NEXT: leal _ddst(,%eax,4), %eax 2816; DARWIN-32-DYNAMIC-NEXT: movl %eax, _dptr 2817; DARWIN-32-DYNAMIC-NEXT: retl 2818; 2819; DARWIN-32-PIC-LABEL: ind04: 2820; DARWIN-32-PIC: ## %bb.0: ## %entry 2821; DARWIN-32-PIC-NEXT: calll L31$pb 2822; DARWIN-32-PIC-NEXT: L31$pb: 2823; DARWIN-32-PIC-NEXT: popl %eax 2824; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 2825; DARWIN-32-PIC-NEXT: leal _ddst-L31$pb(%eax,%ecx,4), %ecx 2826; DARWIN-32-PIC-NEXT: movl %ecx, _dptr-L31$pb(%eax) 2827; DARWIN-32-PIC-NEXT: retl 2828; 2829; DARWIN-64-STATIC-LABEL: ind04: 2830; DARWIN-64-STATIC: ## %bb.0: ## %entry 2831; DARWIN-64-STATIC-NEXT: leaq _ddst(%rip), %rax 2832; DARWIN-64-STATIC-NEXT: leaq (%rax,%rdi,4), %rax 2833; DARWIN-64-STATIC-NEXT: movq %rax, _dptr(%rip) 2834; DARWIN-64-STATIC-NEXT: retq 2835; 2836; DARWIN-64-DYNAMIC-LABEL: ind04: 2837; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 2838; DARWIN-64-DYNAMIC-NEXT: leaq _ddst(%rip), %rax 2839; DARWIN-64-DYNAMIC-NEXT: leaq (%rax,%rdi,4), %rax 2840; DARWIN-64-DYNAMIC-NEXT: movq %rax, _dptr(%rip) 2841; DARWIN-64-DYNAMIC-NEXT: retq 2842; 2843; DARWIN-64-PIC-LABEL: ind04: 2844; DARWIN-64-PIC: ## %bb.0: ## %entry 2845; DARWIN-64-PIC-NEXT: leaq _ddst(%rip), %rax 2846; DARWIN-64-PIC-NEXT: leaq (%rax,%rdi,4), %rax 2847; DARWIN-64-PIC-NEXT: movq %rax, _dptr(%rip) 2848; DARWIN-64-PIC-NEXT: retq 2849 2850entry: 2851 %0 = getelementptr [131072 x i32], [131072 x i32]* @ddst, i64 0, i64 %i 2852 store i32* %0, i32** @dptr, align 8 2853 ret void 2854} 2855 2856define dso_local void @ind05(i64 %i) nounwind { 2857; LINUX-64-STATIC-LABEL: ind05: 2858; LINUX-64-STATIC: # %bb.0: # %entry 2859; LINUX-64-STATIC-NEXT: movl dsrc(,%rdi,4), %eax 2860; LINUX-64-STATIC-NEXT: movq dptr(%rip), %rcx 2861; LINUX-64-STATIC-NEXT: movl %eax, (%rcx,%rdi,4) 2862; LINUX-64-STATIC-NEXT: retq 2863; 2864; LINUX-32-STATIC-LABEL: ind05: 2865; LINUX-32-STATIC: # %bb.0: # %entry 2866; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 2867; LINUX-32-STATIC-NEXT: movl dsrc(,%eax,4), %ecx 2868; LINUX-32-STATIC-NEXT: movl dptr, %edx 2869; LINUX-32-STATIC-NEXT: movl %ecx, (%edx,%eax,4) 2870; LINUX-32-STATIC-NEXT: retl 2871; 2872; LINUX-32-PIC-LABEL: ind05: 2873; LINUX-32-PIC: # %bb.0: # %entry 2874; LINUX-32-PIC-NEXT: calll .L32$pb 2875; LINUX-32-PIC-NEXT: .L32$pb: 2876; LINUX-32-PIC-NEXT: popl %eax 2877; LINUX-32-PIC-NEXT: .Ltmp32: 2878; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp32-.L32$pb), %eax 2879; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 2880; LINUX-32-PIC-NEXT: movl .Ldsrc$local@GOTOFF(%eax,%ecx,4), %edx 2881; LINUX-32-PIC-NEXT: movl .Ldptr$local@GOTOFF(%eax), %eax 2882; LINUX-32-PIC-NEXT: movl %edx, (%eax,%ecx,4) 2883; LINUX-32-PIC-NEXT: retl 2884; 2885; LINUX-64-PIC-LABEL: ind05: 2886; LINUX-64-PIC: # %bb.0: # %entry 2887; LINUX-64-PIC-NEXT: leaq .Ldsrc$local(%rip), %rax 2888; LINUX-64-PIC-NEXT: movl (%rax,%rdi,4), %eax 2889; LINUX-64-PIC-NEXT: movq .Ldptr$local(%rip), %rcx 2890; LINUX-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4) 2891; LINUX-64-PIC-NEXT: retq 2892; 2893; DARWIN-32-STATIC-LABEL: ind05: 2894; DARWIN-32-STATIC: ## %bb.0: ## %entry 2895; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 2896; DARWIN-32-STATIC-NEXT: movl _dsrc(,%eax,4), %ecx 2897; DARWIN-32-STATIC-NEXT: movl _dptr, %edx 2898; DARWIN-32-STATIC-NEXT: movl %ecx, (%edx,%eax,4) 2899; DARWIN-32-STATIC-NEXT: retl 2900; 2901; DARWIN-32-DYNAMIC-LABEL: ind05: 2902; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 2903; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 2904; DARWIN-32-DYNAMIC-NEXT: movl _dsrc(,%eax,4), %ecx 2905; DARWIN-32-DYNAMIC-NEXT: movl _dptr, %edx 2906; DARWIN-32-DYNAMIC-NEXT: movl %ecx, (%edx,%eax,4) 2907; DARWIN-32-DYNAMIC-NEXT: retl 2908; 2909; DARWIN-32-PIC-LABEL: ind05: 2910; DARWIN-32-PIC: ## %bb.0: ## %entry 2911; DARWIN-32-PIC-NEXT: calll L32$pb 2912; DARWIN-32-PIC-NEXT: L32$pb: 2913; DARWIN-32-PIC-NEXT: popl %eax 2914; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 2915; DARWIN-32-PIC-NEXT: movl _dsrc-L32$pb(%eax,%ecx,4), %edx 2916; DARWIN-32-PIC-NEXT: movl _dptr-L32$pb(%eax), %eax 2917; DARWIN-32-PIC-NEXT: movl %edx, (%eax,%ecx,4) 2918; DARWIN-32-PIC-NEXT: retl 2919; 2920; DARWIN-64-STATIC-LABEL: ind05: 2921; DARWIN-64-STATIC: ## %bb.0: ## %entry 2922; DARWIN-64-STATIC-NEXT: leaq _dsrc(%rip), %rax 2923; DARWIN-64-STATIC-NEXT: movl (%rax,%rdi,4), %eax 2924; DARWIN-64-STATIC-NEXT: movq _dptr(%rip), %rcx 2925; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx,%rdi,4) 2926; DARWIN-64-STATIC-NEXT: retq 2927; 2928; DARWIN-64-DYNAMIC-LABEL: ind05: 2929; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 2930; DARWIN-64-DYNAMIC-NEXT: leaq _dsrc(%rip), %rax 2931; DARWIN-64-DYNAMIC-NEXT: movl (%rax,%rdi,4), %eax 2932; DARWIN-64-DYNAMIC-NEXT: movq _dptr(%rip), %rcx 2933; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx,%rdi,4) 2934; DARWIN-64-DYNAMIC-NEXT: retq 2935; 2936; DARWIN-64-PIC-LABEL: ind05: 2937; DARWIN-64-PIC: ## %bb.0: ## %entry 2938; DARWIN-64-PIC-NEXT: leaq _dsrc(%rip), %rax 2939; DARWIN-64-PIC-NEXT: movl (%rax,%rdi,4), %eax 2940; DARWIN-64-PIC-NEXT: movq _dptr(%rip), %rcx 2941; DARWIN-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4) 2942; DARWIN-64-PIC-NEXT: retq 2943 2944entry: 2945 %0 = load i32*, i32** @dptr, align 8 2946 %1 = getelementptr [131072 x i32], [131072 x i32]* @dsrc, i64 0, i64 %i 2947 %2 = load i32, i32* %1, align 4 2948 %3 = getelementptr i32, i32* %0, i64 %i 2949 store i32 %2, i32* %3, align 4 2950 ret void 2951} 2952 2953define dso_local void @ind06(i64 %i) nounwind { 2954; LINUX-64-STATIC-LABEL: ind06: 2955; LINUX-64-STATIC: # %bb.0: # %entry 2956; LINUX-64-STATIC-NEXT: movl lsrc(,%rdi,4), %eax 2957; LINUX-64-STATIC-NEXT: movl %eax, ldst(,%rdi,4) 2958; LINUX-64-STATIC-NEXT: retq 2959; 2960; LINUX-32-STATIC-LABEL: ind06: 2961; LINUX-32-STATIC: # %bb.0: # %entry 2962; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 2963; LINUX-32-STATIC-NEXT: movl lsrc(,%eax,4), %ecx 2964; LINUX-32-STATIC-NEXT: movl %ecx, ldst(,%eax,4) 2965; LINUX-32-STATIC-NEXT: retl 2966; 2967; LINUX-32-PIC-LABEL: ind06: 2968; LINUX-32-PIC: # %bb.0: # %entry 2969; LINUX-32-PIC-NEXT: calll .L33$pb 2970; LINUX-32-PIC-NEXT: .L33$pb: 2971; LINUX-32-PIC-NEXT: popl %eax 2972; LINUX-32-PIC-NEXT: .Ltmp33: 2973; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp33-.L33$pb), %eax 2974; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 2975; LINUX-32-PIC-NEXT: movl lsrc@GOTOFF(%eax,%ecx,4), %edx 2976; LINUX-32-PIC-NEXT: movl %edx, ldst@GOTOFF(%eax,%ecx,4) 2977; LINUX-32-PIC-NEXT: retl 2978; 2979; LINUX-64-PIC-LABEL: ind06: 2980; LINUX-64-PIC: # %bb.0: # %entry 2981; LINUX-64-PIC-NEXT: leaq lsrc(%rip), %rax 2982; LINUX-64-PIC-NEXT: movl (%rax,%rdi,4), %eax 2983; LINUX-64-PIC-NEXT: leaq ldst(%rip), %rcx 2984; LINUX-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4) 2985; LINUX-64-PIC-NEXT: retq 2986; 2987; DARWIN-32-STATIC-LABEL: ind06: 2988; DARWIN-32-STATIC: ## %bb.0: ## %entry 2989; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 2990; DARWIN-32-STATIC-NEXT: movl _lsrc(,%eax,4), %ecx 2991; DARWIN-32-STATIC-NEXT: movl %ecx, _ldst(,%eax,4) 2992; DARWIN-32-STATIC-NEXT: retl 2993; 2994; DARWIN-32-DYNAMIC-LABEL: ind06: 2995; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 2996; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 2997; DARWIN-32-DYNAMIC-NEXT: movl _lsrc(,%eax,4), %ecx 2998; DARWIN-32-DYNAMIC-NEXT: movl %ecx, _ldst(,%eax,4) 2999; DARWIN-32-DYNAMIC-NEXT: retl 3000; 3001; DARWIN-32-PIC-LABEL: ind06: 3002; DARWIN-32-PIC: ## %bb.0: ## %entry 3003; DARWIN-32-PIC-NEXT: calll L33$pb 3004; DARWIN-32-PIC-NEXT: L33$pb: 3005; DARWIN-32-PIC-NEXT: popl %eax 3006; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 3007; DARWIN-32-PIC-NEXT: movl _lsrc-L33$pb(%eax,%ecx,4), %edx 3008; DARWIN-32-PIC-NEXT: movl %edx, _ldst-L33$pb(%eax,%ecx,4) 3009; DARWIN-32-PIC-NEXT: retl 3010; 3011; DARWIN-64-STATIC-LABEL: ind06: 3012; DARWIN-64-STATIC: ## %bb.0: ## %entry 3013; DARWIN-64-STATIC-NEXT: leaq _lsrc(%rip), %rax 3014; DARWIN-64-STATIC-NEXT: movl (%rax,%rdi,4), %eax 3015; DARWIN-64-STATIC-NEXT: leaq _ldst(%rip), %rcx 3016; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx,%rdi,4) 3017; DARWIN-64-STATIC-NEXT: retq 3018; 3019; DARWIN-64-DYNAMIC-LABEL: ind06: 3020; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 3021; DARWIN-64-DYNAMIC-NEXT: leaq _lsrc(%rip), %rax 3022; DARWIN-64-DYNAMIC-NEXT: movl (%rax,%rdi,4), %eax 3023; DARWIN-64-DYNAMIC-NEXT: leaq _ldst(%rip), %rcx 3024; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx,%rdi,4) 3025; DARWIN-64-DYNAMIC-NEXT: retq 3026; 3027; DARWIN-64-PIC-LABEL: ind06: 3028; DARWIN-64-PIC: ## %bb.0: ## %entry 3029; DARWIN-64-PIC-NEXT: leaq _lsrc(%rip), %rax 3030; DARWIN-64-PIC-NEXT: movl (%rax,%rdi,4), %eax 3031; DARWIN-64-PIC-NEXT: leaq _ldst(%rip), %rcx 3032; DARWIN-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4) 3033; DARWIN-64-PIC-NEXT: retq 3034 3035entry: 3036 %0 = getelementptr [131072 x i32], [131072 x i32]* @lsrc, i64 0, i64 %i 3037 %1 = load i32, i32* %0, align 4 3038 %2 = getelementptr [131072 x i32], [131072 x i32]* @ldst, i64 0, i64 %i 3039 store i32 %1, i32* %2, align 4 3040 ret void 3041} 3042 3043define dso_local void @ind07(i64 %i) nounwind { 3044; LINUX-64-STATIC-LABEL: ind07: 3045; LINUX-64-STATIC: # %bb.0: # %entry 3046; LINUX-64-STATIC-NEXT: leaq ldst(,%rdi,4), %rax 3047; LINUX-64-STATIC-NEXT: movq %rax, lptr(%rip) 3048; LINUX-64-STATIC-NEXT: retq 3049; 3050; LINUX-32-STATIC-LABEL: ind07: 3051; LINUX-32-STATIC: # %bb.0: # %entry 3052; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 3053; LINUX-32-STATIC-NEXT: leal ldst(,%eax,4), %eax 3054; LINUX-32-STATIC-NEXT: movl %eax, lptr 3055; LINUX-32-STATIC-NEXT: retl 3056; 3057; LINUX-32-PIC-LABEL: ind07: 3058; LINUX-32-PIC: # %bb.0: # %entry 3059; LINUX-32-PIC-NEXT: calll .L34$pb 3060; LINUX-32-PIC-NEXT: .L34$pb: 3061; LINUX-32-PIC-NEXT: popl %eax 3062; LINUX-32-PIC-NEXT: .Ltmp34: 3063; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp34-.L34$pb), %eax 3064; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 3065; LINUX-32-PIC-NEXT: leal ldst@GOTOFF(%eax,%ecx,4), %ecx 3066; LINUX-32-PIC-NEXT: movl %ecx, lptr@GOTOFF(%eax) 3067; LINUX-32-PIC-NEXT: retl 3068; 3069; LINUX-64-PIC-LABEL: ind07: 3070; LINUX-64-PIC: # %bb.0: # %entry 3071; LINUX-64-PIC-NEXT: leaq ldst(%rip), %rax 3072; LINUX-64-PIC-NEXT: leaq (%rax,%rdi,4), %rax 3073; LINUX-64-PIC-NEXT: movq %rax, lptr(%rip) 3074; LINUX-64-PIC-NEXT: retq 3075; 3076; DARWIN-32-STATIC-LABEL: ind07: 3077; DARWIN-32-STATIC: ## %bb.0: ## %entry 3078; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 3079; DARWIN-32-STATIC-NEXT: leal _ldst(,%eax,4), %eax 3080; DARWIN-32-STATIC-NEXT: movl %eax, _lptr 3081; DARWIN-32-STATIC-NEXT: retl 3082; 3083; DARWIN-32-DYNAMIC-LABEL: ind07: 3084; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 3085; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 3086; DARWIN-32-DYNAMIC-NEXT: leal _ldst(,%eax,4), %eax 3087; DARWIN-32-DYNAMIC-NEXT: movl %eax, _lptr 3088; DARWIN-32-DYNAMIC-NEXT: retl 3089; 3090; DARWIN-32-PIC-LABEL: ind07: 3091; DARWIN-32-PIC: ## %bb.0: ## %entry 3092; DARWIN-32-PIC-NEXT: calll L34$pb 3093; DARWIN-32-PIC-NEXT: L34$pb: 3094; DARWIN-32-PIC-NEXT: popl %eax 3095; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 3096; DARWIN-32-PIC-NEXT: leal _ldst-L34$pb(%eax,%ecx,4), %ecx 3097; DARWIN-32-PIC-NEXT: movl %ecx, _lptr-L34$pb(%eax) 3098; DARWIN-32-PIC-NEXT: retl 3099; 3100; DARWIN-64-STATIC-LABEL: ind07: 3101; DARWIN-64-STATIC: ## %bb.0: ## %entry 3102; DARWIN-64-STATIC-NEXT: leaq _ldst(%rip), %rax 3103; DARWIN-64-STATIC-NEXT: leaq (%rax,%rdi,4), %rax 3104; DARWIN-64-STATIC-NEXT: movq %rax, _lptr(%rip) 3105; DARWIN-64-STATIC-NEXT: retq 3106; 3107; DARWIN-64-DYNAMIC-LABEL: ind07: 3108; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 3109; DARWIN-64-DYNAMIC-NEXT: leaq _ldst(%rip), %rax 3110; DARWIN-64-DYNAMIC-NEXT: leaq (%rax,%rdi,4), %rax 3111; DARWIN-64-DYNAMIC-NEXT: movq %rax, _lptr(%rip) 3112; DARWIN-64-DYNAMIC-NEXT: retq 3113; 3114; DARWIN-64-PIC-LABEL: ind07: 3115; DARWIN-64-PIC: ## %bb.0: ## %entry 3116; DARWIN-64-PIC-NEXT: leaq _ldst(%rip), %rax 3117; DARWIN-64-PIC-NEXT: leaq (%rax,%rdi,4), %rax 3118; DARWIN-64-PIC-NEXT: movq %rax, _lptr(%rip) 3119; DARWIN-64-PIC-NEXT: retq 3120 3121entry: 3122 %0 = getelementptr [131072 x i32], [131072 x i32]* @ldst, i64 0, i64 %i 3123 store i32* %0, i32** @lptr, align 8 3124 ret void 3125} 3126 3127define dso_local void @ind08(i64 %i) nounwind { 3128; LINUX-64-STATIC-LABEL: ind08: 3129; LINUX-64-STATIC: # %bb.0: # %entry 3130; LINUX-64-STATIC-NEXT: movl lsrc(,%rdi,4), %eax 3131; LINUX-64-STATIC-NEXT: movq lptr(%rip), %rcx 3132; LINUX-64-STATIC-NEXT: movl %eax, (%rcx,%rdi,4) 3133; LINUX-64-STATIC-NEXT: retq 3134; 3135; LINUX-32-STATIC-LABEL: ind08: 3136; LINUX-32-STATIC: # %bb.0: # %entry 3137; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 3138; LINUX-32-STATIC-NEXT: movl lsrc(,%eax,4), %ecx 3139; LINUX-32-STATIC-NEXT: movl lptr, %edx 3140; LINUX-32-STATIC-NEXT: movl %ecx, (%edx,%eax,4) 3141; LINUX-32-STATIC-NEXT: retl 3142; 3143; LINUX-32-PIC-LABEL: ind08: 3144; LINUX-32-PIC: # %bb.0: # %entry 3145; LINUX-32-PIC-NEXT: calll .L35$pb 3146; LINUX-32-PIC-NEXT: .L35$pb: 3147; LINUX-32-PIC-NEXT: popl %eax 3148; LINUX-32-PIC-NEXT: .Ltmp35: 3149; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp35-.L35$pb), %eax 3150; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 3151; LINUX-32-PIC-NEXT: movl lsrc@GOTOFF(%eax,%ecx,4), %edx 3152; LINUX-32-PIC-NEXT: movl lptr@GOTOFF(%eax), %eax 3153; LINUX-32-PIC-NEXT: movl %edx, (%eax,%ecx,4) 3154; LINUX-32-PIC-NEXT: retl 3155; 3156; LINUX-64-PIC-LABEL: ind08: 3157; LINUX-64-PIC: # %bb.0: # %entry 3158; LINUX-64-PIC-NEXT: leaq lsrc(%rip), %rax 3159; LINUX-64-PIC-NEXT: movl (%rax,%rdi,4), %eax 3160; LINUX-64-PIC-NEXT: movq lptr(%rip), %rcx 3161; LINUX-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4) 3162; LINUX-64-PIC-NEXT: retq 3163; 3164; DARWIN-32-STATIC-LABEL: ind08: 3165; DARWIN-32-STATIC: ## %bb.0: ## %entry 3166; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 3167; DARWIN-32-STATIC-NEXT: movl _lsrc(,%eax,4), %ecx 3168; DARWIN-32-STATIC-NEXT: movl _lptr, %edx 3169; DARWIN-32-STATIC-NEXT: movl %ecx, (%edx,%eax,4) 3170; DARWIN-32-STATIC-NEXT: retl 3171; 3172; DARWIN-32-DYNAMIC-LABEL: ind08: 3173; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 3174; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 3175; DARWIN-32-DYNAMIC-NEXT: movl _lsrc(,%eax,4), %ecx 3176; DARWIN-32-DYNAMIC-NEXT: movl _lptr, %edx 3177; DARWIN-32-DYNAMIC-NEXT: movl %ecx, (%edx,%eax,4) 3178; DARWIN-32-DYNAMIC-NEXT: retl 3179; 3180; DARWIN-32-PIC-LABEL: ind08: 3181; DARWIN-32-PIC: ## %bb.0: ## %entry 3182; DARWIN-32-PIC-NEXT: calll L35$pb 3183; DARWIN-32-PIC-NEXT: L35$pb: 3184; DARWIN-32-PIC-NEXT: popl %eax 3185; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 3186; DARWIN-32-PIC-NEXT: movl _lsrc-L35$pb(%eax,%ecx,4), %edx 3187; DARWIN-32-PIC-NEXT: movl _lptr-L35$pb(%eax), %eax 3188; DARWIN-32-PIC-NEXT: movl %edx, (%eax,%ecx,4) 3189; DARWIN-32-PIC-NEXT: retl 3190; 3191; DARWIN-64-STATIC-LABEL: ind08: 3192; DARWIN-64-STATIC: ## %bb.0: ## %entry 3193; DARWIN-64-STATIC-NEXT: leaq _lsrc(%rip), %rax 3194; DARWIN-64-STATIC-NEXT: movl (%rax,%rdi,4), %eax 3195; DARWIN-64-STATIC-NEXT: movq _lptr(%rip), %rcx 3196; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx,%rdi,4) 3197; DARWIN-64-STATIC-NEXT: retq 3198; 3199; DARWIN-64-DYNAMIC-LABEL: ind08: 3200; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 3201; DARWIN-64-DYNAMIC-NEXT: leaq _lsrc(%rip), %rax 3202; DARWIN-64-DYNAMIC-NEXT: movl (%rax,%rdi,4), %eax 3203; DARWIN-64-DYNAMIC-NEXT: movq _lptr(%rip), %rcx 3204; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx,%rdi,4) 3205; DARWIN-64-DYNAMIC-NEXT: retq 3206; 3207; DARWIN-64-PIC-LABEL: ind08: 3208; DARWIN-64-PIC: ## %bb.0: ## %entry 3209; DARWIN-64-PIC-NEXT: leaq _lsrc(%rip), %rax 3210; DARWIN-64-PIC-NEXT: movl (%rax,%rdi,4), %eax 3211; DARWIN-64-PIC-NEXT: movq _lptr(%rip), %rcx 3212; DARWIN-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4) 3213; DARWIN-64-PIC-NEXT: retq 3214 3215entry: 3216 %0 = load i32*, i32** @lptr, align 8 3217 %1 = getelementptr [131072 x i32], [131072 x i32]* @lsrc, i64 0, i64 %i 3218 %2 = load i32, i32* %1, align 4 3219 %3 = getelementptr i32, i32* %0, i64 %i 3220 store i32 %2, i32* %3, align 4 3221 ret void 3222} 3223 3224define dso_local void @off00(i64 %i) nounwind { 3225; LINUX-64-STATIC-LABEL: off00: 3226; LINUX-64-STATIC: # %bb.0: # %entry 3227; LINUX-64-STATIC-NEXT: movq src@GOTPCREL(%rip), %rax 3228; LINUX-64-STATIC-NEXT: movl 64(%rax,%rdi,4), %eax 3229; LINUX-64-STATIC-NEXT: movq dst@GOTPCREL(%rip), %rcx 3230; LINUX-64-STATIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 3231; LINUX-64-STATIC-NEXT: retq 3232; 3233; LINUX-32-STATIC-LABEL: off00: 3234; LINUX-32-STATIC: # %bb.0: # %entry 3235; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 3236; LINUX-32-STATIC-NEXT: movl src+64(,%eax,4), %ecx 3237; LINUX-32-STATIC-NEXT: movl %ecx, dst+64(,%eax,4) 3238; LINUX-32-STATIC-NEXT: retl 3239; 3240; LINUX-32-PIC-LABEL: off00: 3241; LINUX-32-PIC: # %bb.0: # %entry 3242; LINUX-32-PIC-NEXT: calll .L36$pb 3243; LINUX-32-PIC-NEXT: .L36$pb: 3244; LINUX-32-PIC-NEXT: popl %eax 3245; LINUX-32-PIC-NEXT: .Ltmp36: 3246; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp36-.L36$pb), %eax 3247; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 3248; LINUX-32-PIC-NEXT: movl src@GOT(%eax), %edx 3249; LINUX-32-PIC-NEXT: movl 64(%edx,%ecx,4), %edx 3250; LINUX-32-PIC-NEXT: movl dst@GOT(%eax), %eax 3251; LINUX-32-PIC-NEXT: movl %edx, 64(%eax,%ecx,4) 3252; LINUX-32-PIC-NEXT: retl 3253; 3254; LINUX-64-PIC-LABEL: off00: 3255; LINUX-64-PIC: # %bb.0: # %entry 3256; LINUX-64-PIC-NEXT: movq src@GOTPCREL(%rip), %rax 3257; LINUX-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax 3258; LINUX-64-PIC-NEXT: movq dst@GOTPCREL(%rip), %rcx 3259; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 3260; LINUX-64-PIC-NEXT: retq 3261; 3262; DARWIN-32-STATIC-LABEL: off00: 3263; DARWIN-32-STATIC: ## %bb.0: ## %entry 3264; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 3265; DARWIN-32-STATIC-NEXT: movl _src+64(,%eax,4), %ecx 3266; DARWIN-32-STATIC-NEXT: movl %ecx, _dst+64(,%eax,4) 3267; DARWIN-32-STATIC-NEXT: retl 3268; 3269; DARWIN-32-DYNAMIC-LABEL: off00: 3270; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 3271; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 3272; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %ecx 3273; DARWIN-32-DYNAMIC-NEXT: movl 64(%ecx,%eax,4), %ecx 3274; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, %edx 3275; DARWIN-32-DYNAMIC-NEXT: movl %ecx, 64(%edx,%eax,4) 3276; DARWIN-32-DYNAMIC-NEXT: retl 3277; 3278; DARWIN-32-PIC-LABEL: off00: 3279; DARWIN-32-PIC: ## %bb.0: ## %entry 3280; DARWIN-32-PIC-NEXT: calll L36$pb 3281; DARWIN-32-PIC-NEXT: L36$pb: 3282; DARWIN-32-PIC-NEXT: popl %eax 3283; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 3284; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L36$pb(%eax), %edx 3285; DARWIN-32-PIC-NEXT: movl 64(%edx,%ecx,4), %edx 3286; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L36$pb(%eax), %eax 3287; DARWIN-32-PIC-NEXT: movl %edx, 64(%eax,%ecx,4) 3288; DARWIN-32-PIC-NEXT: retl 3289; 3290; DARWIN-64-STATIC-LABEL: off00: 3291; DARWIN-64-STATIC: ## %bb.0: ## %entry 3292; DARWIN-64-STATIC-NEXT: movq _src@GOTPCREL(%rip), %rax 3293; DARWIN-64-STATIC-NEXT: movl 64(%rax,%rdi,4), %eax 3294; DARWIN-64-STATIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx 3295; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 3296; DARWIN-64-STATIC-NEXT: retq 3297; 3298; DARWIN-64-DYNAMIC-LABEL: off00: 3299; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 3300; DARWIN-64-DYNAMIC-NEXT: movq _src@GOTPCREL(%rip), %rax 3301; DARWIN-64-DYNAMIC-NEXT: movl 64(%rax,%rdi,4), %eax 3302; DARWIN-64-DYNAMIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx 3303; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 3304; DARWIN-64-DYNAMIC-NEXT: retq 3305; 3306; DARWIN-64-PIC-LABEL: off00: 3307; DARWIN-64-PIC: ## %bb.0: ## %entry 3308; DARWIN-64-PIC-NEXT: movq _src@GOTPCREL(%rip), %rax 3309; DARWIN-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax 3310; DARWIN-64-PIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx 3311; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 3312; DARWIN-64-PIC-NEXT: retq 3313 3314entry: 3315 %0 = add i64 %i, 16 3316 %1 = getelementptr [131072 x i32], [131072 x i32]* @src, i64 0, i64 %0 3317 %2 = load i32, i32* %1, align 4 3318 %3 = getelementptr [131072 x i32], [131072 x i32]* @dst, i64 0, i64 %0 3319 store i32 %2, i32* %3, align 4 3320 ret void 3321} 3322 3323define dso_local void @oxf00(i64 %i) nounwind { 3324; LINUX-64-STATIC-LABEL: oxf00: 3325; LINUX-64-STATIC: # %bb.0: # %entry 3326; LINUX-64-STATIC-NEXT: movq xsrc@GOTPCREL(%rip), %rax 3327; LINUX-64-STATIC-NEXT: movl 64(%rax,%rdi,4), %eax 3328; LINUX-64-STATIC-NEXT: movq xdst@GOTPCREL(%rip), %rcx 3329; LINUX-64-STATIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 3330; LINUX-64-STATIC-NEXT: retq 3331; 3332; LINUX-32-STATIC-LABEL: oxf00: 3333; LINUX-32-STATIC: # %bb.0: # %entry 3334; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 3335; LINUX-32-STATIC-NEXT: movl xsrc+64(,%eax,4), %ecx 3336; LINUX-32-STATIC-NEXT: movl %ecx, xdst+64(,%eax,4) 3337; LINUX-32-STATIC-NEXT: retl 3338; 3339; LINUX-32-PIC-LABEL: oxf00: 3340; LINUX-32-PIC: # %bb.0: # %entry 3341; LINUX-32-PIC-NEXT: calll .L37$pb 3342; LINUX-32-PIC-NEXT: .L37$pb: 3343; LINUX-32-PIC-NEXT: popl %eax 3344; LINUX-32-PIC-NEXT: .Ltmp37: 3345; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp37-.L37$pb), %eax 3346; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 3347; LINUX-32-PIC-NEXT: movl xsrc@GOT(%eax), %edx 3348; LINUX-32-PIC-NEXT: movl 64(%edx,%ecx,4), %edx 3349; LINUX-32-PIC-NEXT: movl xdst@GOT(%eax), %eax 3350; LINUX-32-PIC-NEXT: movl %edx, 64(%eax,%ecx,4) 3351; LINUX-32-PIC-NEXT: retl 3352; 3353; LINUX-64-PIC-LABEL: oxf00: 3354; LINUX-64-PIC: # %bb.0: # %entry 3355; LINUX-64-PIC-NEXT: movq xsrc@GOTPCREL(%rip), %rax 3356; LINUX-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax 3357; LINUX-64-PIC-NEXT: movq xdst@GOTPCREL(%rip), %rcx 3358; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 3359; LINUX-64-PIC-NEXT: retq 3360; 3361; DARWIN-32-STATIC-LABEL: oxf00: 3362; DARWIN-32-STATIC: ## %bb.0: ## %entry 3363; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 3364; DARWIN-32-STATIC-NEXT: movl _xsrc+64(,%eax,4), %ecx 3365; DARWIN-32-STATIC-NEXT: movl %ecx, _xdst+64(,%eax,4) 3366; DARWIN-32-STATIC-NEXT: retl 3367; 3368; DARWIN-32-DYNAMIC-LABEL: oxf00: 3369; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 3370; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 3371; DARWIN-32-DYNAMIC-NEXT: movl L_xsrc$non_lazy_ptr, %ecx 3372; DARWIN-32-DYNAMIC-NEXT: movl 64(%ecx,%eax,4), %ecx 3373; DARWIN-32-DYNAMIC-NEXT: movl L_xdst$non_lazy_ptr, %edx 3374; DARWIN-32-DYNAMIC-NEXT: movl %ecx, 64(%edx,%eax,4) 3375; DARWIN-32-DYNAMIC-NEXT: retl 3376; 3377; DARWIN-32-PIC-LABEL: oxf00: 3378; DARWIN-32-PIC: ## %bb.0: ## %entry 3379; DARWIN-32-PIC-NEXT: calll L37$pb 3380; DARWIN-32-PIC-NEXT: L37$pb: 3381; DARWIN-32-PIC-NEXT: popl %eax 3382; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 3383; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-L37$pb(%eax), %edx 3384; DARWIN-32-PIC-NEXT: movl 64(%edx,%ecx,4), %edx 3385; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-L37$pb(%eax), %eax 3386; DARWIN-32-PIC-NEXT: movl %edx, 64(%eax,%ecx,4) 3387; DARWIN-32-PIC-NEXT: retl 3388; 3389; DARWIN-64-STATIC-LABEL: oxf00: 3390; DARWIN-64-STATIC: ## %bb.0: ## %entry 3391; DARWIN-64-STATIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 3392; DARWIN-64-STATIC-NEXT: movl 64(%rax,%rdi,4), %eax 3393; DARWIN-64-STATIC-NEXT: movq _xdst@GOTPCREL(%rip), %rcx 3394; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 3395; DARWIN-64-STATIC-NEXT: retq 3396; 3397; DARWIN-64-DYNAMIC-LABEL: oxf00: 3398; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 3399; DARWIN-64-DYNAMIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 3400; DARWIN-64-DYNAMIC-NEXT: movl 64(%rax,%rdi,4), %eax 3401; DARWIN-64-DYNAMIC-NEXT: movq _xdst@GOTPCREL(%rip), %rcx 3402; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 3403; DARWIN-64-DYNAMIC-NEXT: retq 3404; 3405; DARWIN-64-PIC-LABEL: oxf00: 3406; DARWIN-64-PIC: ## %bb.0: ## %entry 3407; DARWIN-64-PIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 3408; DARWIN-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax 3409; DARWIN-64-PIC-NEXT: movq _xdst@GOTPCREL(%rip), %rcx 3410; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 3411; DARWIN-64-PIC-NEXT: retq 3412 3413entry: 3414 %0 = add i64 %i, 16 3415 %1 = getelementptr [32 x i32], [32 x i32]* @xsrc, i64 0, i64 %0 3416 %2 = load i32, i32* %1, align 4 3417 %3 = getelementptr [32 x i32], [32 x i32]* @xdst, i64 0, i64 %0 3418 store i32 %2, i32* %3, align 4 3419 ret void 3420} 3421 3422define dso_local void @off01(i64 %i) nounwind { 3423; LINUX-64-STATIC-LABEL: off01: 3424; LINUX-64-STATIC: # %bb.0: # %entry 3425; LINUX-64-STATIC-NEXT: movq dst@GOTPCREL(%rip), %rax 3426; LINUX-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax 3427; LINUX-64-STATIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx 3428; LINUX-64-STATIC-NEXT: movq %rax, (%rcx) 3429; LINUX-64-STATIC-NEXT: retq 3430; 3431; LINUX-32-STATIC-LABEL: off01: 3432; LINUX-32-STATIC: # %bb.0: # %entry 3433; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 3434; LINUX-32-STATIC-NEXT: leal dst+64(,%eax,4), %eax 3435; LINUX-32-STATIC-NEXT: movl %eax, ptr 3436; LINUX-32-STATIC-NEXT: retl 3437; 3438; LINUX-32-PIC-LABEL: off01: 3439; LINUX-32-PIC: # %bb.0: # %entry 3440; LINUX-32-PIC-NEXT: calll .L38$pb 3441; LINUX-32-PIC-NEXT: .L38$pb: 3442; LINUX-32-PIC-NEXT: popl %eax 3443; LINUX-32-PIC-NEXT: .Ltmp38: 3444; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp38-.L38$pb), %eax 3445; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 3446; LINUX-32-PIC-NEXT: movl dst@GOT(%eax), %edx 3447; LINUX-32-PIC-NEXT: leal 64(%edx,%ecx,4), %ecx 3448; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax 3449; LINUX-32-PIC-NEXT: movl %ecx, (%eax) 3450; LINUX-32-PIC-NEXT: retl 3451; 3452; LINUX-64-PIC-LABEL: off01: 3453; LINUX-64-PIC: # %bb.0: # %entry 3454; LINUX-64-PIC-NEXT: movq dst@GOTPCREL(%rip), %rax 3455; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax 3456; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx 3457; LINUX-64-PIC-NEXT: movq %rax, (%rcx) 3458; LINUX-64-PIC-NEXT: retq 3459; 3460; DARWIN-32-STATIC-LABEL: off01: 3461; DARWIN-32-STATIC: ## %bb.0: ## %entry 3462; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 3463; DARWIN-32-STATIC-NEXT: leal _dst+64(,%eax,4), %eax 3464; DARWIN-32-STATIC-NEXT: movl %eax, _ptr 3465; DARWIN-32-STATIC-NEXT: retl 3466; 3467; DARWIN-32-DYNAMIC-LABEL: off01: 3468; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 3469; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 3470; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, %ecx 3471; DARWIN-32-DYNAMIC-NEXT: leal 64(%ecx,%eax,4), %eax 3472; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx 3473; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx) 3474; DARWIN-32-DYNAMIC-NEXT: retl 3475; 3476; DARWIN-32-PIC-LABEL: off01: 3477; DARWIN-32-PIC: ## %bb.0: ## %entry 3478; DARWIN-32-PIC-NEXT: calll L38$pb 3479; DARWIN-32-PIC-NEXT: L38$pb: 3480; DARWIN-32-PIC-NEXT: popl %eax 3481; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 3482; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L38$pb(%eax), %edx 3483; DARWIN-32-PIC-NEXT: leal 64(%edx,%ecx,4), %ecx 3484; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L38$pb(%eax), %eax 3485; DARWIN-32-PIC-NEXT: movl %ecx, (%eax) 3486; DARWIN-32-PIC-NEXT: retl 3487; 3488; DARWIN-64-STATIC-LABEL: off01: 3489; DARWIN-64-STATIC: ## %bb.0: ## %entry 3490; DARWIN-64-STATIC-NEXT: movq _dst@GOTPCREL(%rip), %rax 3491; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax 3492; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 3493; DARWIN-64-STATIC-NEXT: movq %rax, (%rcx) 3494; DARWIN-64-STATIC-NEXT: retq 3495; 3496; DARWIN-64-DYNAMIC-LABEL: off01: 3497; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 3498; DARWIN-64-DYNAMIC-NEXT: movq _dst@GOTPCREL(%rip), %rax 3499; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax 3500; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 3501; DARWIN-64-DYNAMIC-NEXT: movq %rax, (%rcx) 3502; DARWIN-64-DYNAMIC-NEXT: retq 3503; 3504; DARWIN-64-PIC-LABEL: off01: 3505; DARWIN-64-PIC: ## %bb.0: ## %entry 3506; DARWIN-64-PIC-NEXT: movq _dst@GOTPCREL(%rip), %rax 3507; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax 3508; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 3509; DARWIN-64-PIC-NEXT: movq %rax, (%rcx) 3510; DARWIN-64-PIC-NEXT: retq 3511 3512entry: 3513 %.sum = add i64 %i, 16 3514 %0 = getelementptr [131072 x i32], [131072 x i32]* @dst, i64 0, i64 %.sum 3515 store i32* %0, i32** @ptr, align 8 3516 ret void 3517} 3518 3519define dso_local void @oxf01(i64 %i) nounwind { 3520; LINUX-64-STATIC-LABEL: oxf01: 3521; LINUX-64-STATIC: # %bb.0: # %entry 3522; LINUX-64-STATIC-NEXT: movq xdst@GOTPCREL(%rip), %rax 3523; LINUX-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax 3524; LINUX-64-STATIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx 3525; LINUX-64-STATIC-NEXT: movq %rax, (%rcx) 3526; LINUX-64-STATIC-NEXT: retq 3527; 3528; LINUX-32-STATIC-LABEL: oxf01: 3529; LINUX-32-STATIC: # %bb.0: # %entry 3530; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 3531; LINUX-32-STATIC-NEXT: leal xdst+64(,%eax,4), %eax 3532; LINUX-32-STATIC-NEXT: movl %eax, ptr 3533; LINUX-32-STATIC-NEXT: retl 3534; 3535; LINUX-32-PIC-LABEL: oxf01: 3536; LINUX-32-PIC: # %bb.0: # %entry 3537; LINUX-32-PIC-NEXT: calll .L39$pb 3538; LINUX-32-PIC-NEXT: .L39$pb: 3539; LINUX-32-PIC-NEXT: popl %eax 3540; LINUX-32-PIC-NEXT: .Ltmp39: 3541; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp39-.L39$pb), %eax 3542; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 3543; LINUX-32-PIC-NEXT: movl xdst@GOT(%eax), %edx 3544; LINUX-32-PIC-NEXT: leal 64(%edx,%ecx,4), %ecx 3545; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax 3546; LINUX-32-PIC-NEXT: movl %ecx, (%eax) 3547; LINUX-32-PIC-NEXT: retl 3548; 3549; LINUX-64-PIC-LABEL: oxf01: 3550; LINUX-64-PIC: # %bb.0: # %entry 3551; LINUX-64-PIC-NEXT: movq xdst@GOTPCREL(%rip), %rax 3552; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax 3553; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx 3554; LINUX-64-PIC-NEXT: movq %rax, (%rcx) 3555; LINUX-64-PIC-NEXT: retq 3556; 3557; DARWIN-32-STATIC-LABEL: oxf01: 3558; DARWIN-32-STATIC: ## %bb.0: ## %entry 3559; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 3560; DARWIN-32-STATIC-NEXT: leal _xdst+64(,%eax,4), %eax 3561; DARWIN-32-STATIC-NEXT: movl %eax, _ptr 3562; DARWIN-32-STATIC-NEXT: retl 3563; 3564; DARWIN-32-DYNAMIC-LABEL: oxf01: 3565; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 3566; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 3567; DARWIN-32-DYNAMIC-NEXT: movl L_xdst$non_lazy_ptr, %ecx 3568; DARWIN-32-DYNAMIC-NEXT: leal 64(%ecx,%eax,4), %eax 3569; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx 3570; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx) 3571; DARWIN-32-DYNAMIC-NEXT: retl 3572; 3573; DARWIN-32-PIC-LABEL: oxf01: 3574; DARWIN-32-PIC: ## %bb.0: ## %entry 3575; DARWIN-32-PIC-NEXT: calll L39$pb 3576; DARWIN-32-PIC-NEXT: L39$pb: 3577; DARWIN-32-PIC-NEXT: popl %eax 3578; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 3579; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-L39$pb(%eax), %edx 3580; DARWIN-32-PIC-NEXT: leal 64(%edx,%ecx,4), %ecx 3581; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L39$pb(%eax), %eax 3582; DARWIN-32-PIC-NEXT: movl %ecx, (%eax) 3583; DARWIN-32-PIC-NEXT: retl 3584; 3585; DARWIN-64-STATIC-LABEL: oxf01: 3586; DARWIN-64-STATIC: ## %bb.0: ## %entry 3587; DARWIN-64-STATIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax 3588; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax 3589; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 3590; DARWIN-64-STATIC-NEXT: movq %rax, (%rcx) 3591; DARWIN-64-STATIC-NEXT: retq 3592; 3593; DARWIN-64-DYNAMIC-LABEL: oxf01: 3594; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 3595; DARWIN-64-DYNAMIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax 3596; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax 3597; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 3598; DARWIN-64-DYNAMIC-NEXT: movq %rax, (%rcx) 3599; DARWIN-64-DYNAMIC-NEXT: retq 3600; 3601; DARWIN-64-PIC-LABEL: oxf01: 3602; DARWIN-64-PIC: ## %bb.0: ## %entry 3603; DARWIN-64-PIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax 3604; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax 3605; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 3606; DARWIN-64-PIC-NEXT: movq %rax, (%rcx) 3607; DARWIN-64-PIC-NEXT: retq 3608 3609entry: 3610 %.sum = add i64 %i, 16 3611 %0 = getelementptr [32 x i32], [32 x i32]* @xdst, i64 0, i64 %.sum 3612 store i32* %0, i32** @ptr, align 8 3613 ret void 3614} 3615 3616define dso_local void @off02(i64 %i) nounwind { 3617; LINUX-64-STATIC-LABEL: off02: 3618; LINUX-64-STATIC: # %bb.0: # %entry 3619; LINUX-64-STATIC-NEXT: movq src@GOTPCREL(%rip), %rax 3620; LINUX-64-STATIC-NEXT: movl 64(%rax,%rdi,4), %eax 3621; LINUX-64-STATIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx 3622; LINUX-64-STATIC-NEXT: movq (%rcx), %rcx 3623; LINUX-64-STATIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 3624; LINUX-64-STATIC-NEXT: retq 3625; 3626; LINUX-32-STATIC-LABEL: off02: 3627; LINUX-32-STATIC: # %bb.0: # %entry 3628; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 3629; LINUX-32-STATIC-NEXT: movl src+64(,%eax,4), %ecx 3630; LINUX-32-STATIC-NEXT: movl ptr, %edx 3631; LINUX-32-STATIC-NEXT: movl %ecx, 64(%edx,%eax,4) 3632; LINUX-32-STATIC-NEXT: retl 3633; 3634; LINUX-32-PIC-LABEL: off02: 3635; LINUX-32-PIC: # %bb.0: # %entry 3636; LINUX-32-PIC-NEXT: calll .L40$pb 3637; LINUX-32-PIC-NEXT: .L40$pb: 3638; LINUX-32-PIC-NEXT: popl %eax 3639; LINUX-32-PIC-NEXT: .Ltmp40: 3640; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp40-.L40$pb), %eax 3641; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 3642; LINUX-32-PIC-NEXT: movl src@GOT(%eax), %edx 3643; LINUX-32-PIC-NEXT: movl 64(%edx,%ecx,4), %edx 3644; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax 3645; LINUX-32-PIC-NEXT: movl (%eax), %eax 3646; LINUX-32-PIC-NEXT: movl %edx, 64(%eax,%ecx,4) 3647; LINUX-32-PIC-NEXT: retl 3648; 3649; LINUX-64-PIC-LABEL: off02: 3650; LINUX-64-PIC: # %bb.0: # %entry 3651; LINUX-64-PIC-NEXT: movq src@GOTPCREL(%rip), %rax 3652; LINUX-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax 3653; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx 3654; LINUX-64-PIC-NEXT: movq (%rcx), %rcx 3655; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 3656; LINUX-64-PIC-NEXT: retq 3657; 3658; DARWIN-32-STATIC-LABEL: off02: 3659; DARWIN-32-STATIC: ## %bb.0: ## %entry 3660; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 3661; DARWIN-32-STATIC-NEXT: movl _src+64(,%eax,4), %ecx 3662; DARWIN-32-STATIC-NEXT: movl _ptr, %edx 3663; DARWIN-32-STATIC-NEXT: movl %ecx, 64(%edx,%eax,4) 3664; DARWIN-32-STATIC-NEXT: retl 3665; 3666; DARWIN-32-DYNAMIC-LABEL: off02: 3667; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 3668; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 3669; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %ecx 3670; DARWIN-32-DYNAMIC-NEXT: movl 64(%ecx,%eax,4), %ecx 3671; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %edx 3672; DARWIN-32-DYNAMIC-NEXT: movl (%edx), %edx 3673; DARWIN-32-DYNAMIC-NEXT: movl %ecx, 64(%edx,%eax,4) 3674; DARWIN-32-DYNAMIC-NEXT: retl 3675; 3676; DARWIN-32-PIC-LABEL: off02: 3677; DARWIN-32-PIC: ## %bb.0: ## %entry 3678; DARWIN-32-PIC-NEXT: calll L40$pb 3679; DARWIN-32-PIC-NEXT: L40$pb: 3680; DARWIN-32-PIC-NEXT: popl %eax 3681; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 3682; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L40$pb(%eax), %edx 3683; DARWIN-32-PIC-NEXT: movl 64(%edx,%ecx,4), %edx 3684; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L40$pb(%eax), %eax 3685; DARWIN-32-PIC-NEXT: movl (%eax), %eax 3686; DARWIN-32-PIC-NEXT: movl %edx, 64(%eax,%ecx,4) 3687; DARWIN-32-PIC-NEXT: retl 3688; 3689; DARWIN-64-STATIC-LABEL: off02: 3690; DARWIN-64-STATIC: ## %bb.0: ## %entry 3691; DARWIN-64-STATIC-NEXT: movq _src@GOTPCREL(%rip), %rax 3692; DARWIN-64-STATIC-NEXT: movl 64(%rax,%rdi,4), %eax 3693; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 3694; DARWIN-64-STATIC-NEXT: movq (%rcx), %rcx 3695; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 3696; DARWIN-64-STATIC-NEXT: retq 3697; 3698; DARWIN-64-DYNAMIC-LABEL: off02: 3699; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 3700; DARWIN-64-DYNAMIC-NEXT: movq _src@GOTPCREL(%rip), %rax 3701; DARWIN-64-DYNAMIC-NEXT: movl 64(%rax,%rdi,4), %eax 3702; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 3703; DARWIN-64-DYNAMIC-NEXT: movq (%rcx), %rcx 3704; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 3705; DARWIN-64-DYNAMIC-NEXT: retq 3706; 3707; DARWIN-64-PIC-LABEL: off02: 3708; DARWIN-64-PIC: ## %bb.0: ## %entry 3709; DARWIN-64-PIC-NEXT: movq _src@GOTPCREL(%rip), %rax 3710; DARWIN-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax 3711; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 3712; DARWIN-64-PIC-NEXT: movq (%rcx), %rcx 3713; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 3714; DARWIN-64-PIC-NEXT: retq 3715 3716entry: 3717 %0 = load i32*, i32** @ptr, align 8 3718 %1 = add i64 %i, 16 3719 %2 = getelementptr [131072 x i32], [131072 x i32]* @src, i64 0, i64 %1 3720 %3 = load i32, i32* %2, align 4 3721 %4 = getelementptr i32, i32* %0, i64 %1 3722 store i32 %3, i32* %4, align 4 3723 ret void 3724} 3725 3726define dso_local void @oxf02(i64 %i) nounwind { 3727; LINUX-64-STATIC-LABEL: oxf02: 3728; LINUX-64-STATIC: # %bb.0: # %entry 3729; LINUX-64-STATIC-NEXT: movq xsrc@GOTPCREL(%rip), %rax 3730; LINUX-64-STATIC-NEXT: movl 64(%rax,%rdi,4), %eax 3731; LINUX-64-STATIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx 3732; LINUX-64-STATIC-NEXT: movq (%rcx), %rcx 3733; LINUX-64-STATIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 3734; LINUX-64-STATIC-NEXT: retq 3735; 3736; LINUX-32-STATIC-LABEL: oxf02: 3737; LINUX-32-STATIC: # %bb.0: # %entry 3738; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 3739; LINUX-32-STATIC-NEXT: movl xsrc+64(,%eax,4), %ecx 3740; LINUX-32-STATIC-NEXT: movl ptr, %edx 3741; LINUX-32-STATIC-NEXT: movl %ecx, 64(%edx,%eax,4) 3742; LINUX-32-STATIC-NEXT: retl 3743; 3744; LINUX-32-PIC-LABEL: oxf02: 3745; LINUX-32-PIC: # %bb.0: # %entry 3746; LINUX-32-PIC-NEXT: calll .L41$pb 3747; LINUX-32-PIC-NEXT: .L41$pb: 3748; LINUX-32-PIC-NEXT: popl %eax 3749; LINUX-32-PIC-NEXT: .Ltmp41: 3750; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp41-.L41$pb), %eax 3751; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 3752; LINUX-32-PIC-NEXT: movl xsrc@GOT(%eax), %edx 3753; LINUX-32-PIC-NEXT: movl 64(%edx,%ecx,4), %edx 3754; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax 3755; LINUX-32-PIC-NEXT: movl (%eax), %eax 3756; LINUX-32-PIC-NEXT: movl %edx, 64(%eax,%ecx,4) 3757; LINUX-32-PIC-NEXT: retl 3758; 3759; LINUX-64-PIC-LABEL: oxf02: 3760; LINUX-64-PIC: # %bb.0: # %entry 3761; LINUX-64-PIC-NEXT: movq xsrc@GOTPCREL(%rip), %rax 3762; LINUX-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax 3763; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx 3764; LINUX-64-PIC-NEXT: movq (%rcx), %rcx 3765; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 3766; LINUX-64-PIC-NEXT: retq 3767; 3768; DARWIN-32-STATIC-LABEL: oxf02: 3769; DARWIN-32-STATIC: ## %bb.0: ## %entry 3770; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 3771; DARWIN-32-STATIC-NEXT: movl _xsrc+64(,%eax,4), %ecx 3772; DARWIN-32-STATIC-NEXT: movl _ptr, %edx 3773; DARWIN-32-STATIC-NEXT: movl %ecx, 64(%edx,%eax,4) 3774; DARWIN-32-STATIC-NEXT: retl 3775; 3776; DARWIN-32-DYNAMIC-LABEL: oxf02: 3777; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 3778; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 3779; DARWIN-32-DYNAMIC-NEXT: movl L_xsrc$non_lazy_ptr, %ecx 3780; DARWIN-32-DYNAMIC-NEXT: movl 64(%ecx,%eax,4), %ecx 3781; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %edx 3782; DARWIN-32-DYNAMIC-NEXT: movl (%edx), %edx 3783; DARWIN-32-DYNAMIC-NEXT: movl %ecx, 64(%edx,%eax,4) 3784; DARWIN-32-DYNAMIC-NEXT: retl 3785; 3786; DARWIN-32-PIC-LABEL: oxf02: 3787; DARWIN-32-PIC: ## %bb.0: ## %entry 3788; DARWIN-32-PIC-NEXT: calll L41$pb 3789; DARWIN-32-PIC-NEXT: L41$pb: 3790; DARWIN-32-PIC-NEXT: popl %eax 3791; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 3792; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-L41$pb(%eax), %edx 3793; DARWIN-32-PIC-NEXT: movl 64(%edx,%ecx,4), %edx 3794; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L41$pb(%eax), %eax 3795; DARWIN-32-PIC-NEXT: movl (%eax), %eax 3796; DARWIN-32-PIC-NEXT: movl %edx, 64(%eax,%ecx,4) 3797; DARWIN-32-PIC-NEXT: retl 3798; 3799; DARWIN-64-STATIC-LABEL: oxf02: 3800; DARWIN-64-STATIC: ## %bb.0: ## %entry 3801; DARWIN-64-STATIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 3802; DARWIN-64-STATIC-NEXT: movl 64(%rax,%rdi,4), %eax 3803; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 3804; DARWIN-64-STATIC-NEXT: movq (%rcx), %rcx 3805; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 3806; DARWIN-64-STATIC-NEXT: retq 3807; 3808; DARWIN-64-DYNAMIC-LABEL: oxf02: 3809; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 3810; DARWIN-64-DYNAMIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 3811; DARWIN-64-DYNAMIC-NEXT: movl 64(%rax,%rdi,4), %eax 3812; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 3813; DARWIN-64-DYNAMIC-NEXT: movq (%rcx), %rcx 3814; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 3815; DARWIN-64-DYNAMIC-NEXT: retq 3816; 3817; DARWIN-64-PIC-LABEL: oxf02: 3818; DARWIN-64-PIC: ## %bb.0: ## %entry 3819; DARWIN-64-PIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 3820; DARWIN-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax 3821; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 3822; DARWIN-64-PIC-NEXT: movq (%rcx), %rcx 3823; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 3824; DARWIN-64-PIC-NEXT: retq 3825 3826entry: 3827 %0 = load i32*, i32** @ptr, align 8 3828 %1 = add i64 %i, 16 3829 %2 = getelementptr [32 x i32], [32 x i32]* @xsrc, i64 0, i64 %1 3830 %3 = load i32, i32* %2, align 4 3831 %4 = getelementptr i32, i32* %0, i64 %1 3832 store i32 %3, i32* %4, align 4 3833 ret void 3834} 3835 3836define dso_local void @off03(i64 %i) nounwind { 3837; LINUX-64-STATIC-LABEL: off03: 3838; LINUX-64-STATIC: # %bb.0: # %entry 3839; LINUX-64-STATIC-NEXT: movl dsrc+64(,%rdi,4), %eax 3840; LINUX-64-STATIC-NEXT: movl %eax, ddst+64(,%rdi,4) 3841; LINUX-64-STATIC-NEXT: retq 3842; 3843; LINUX-32-STATIC-LABEL: off03: 3844; LINUX-32-STATIC: # %bb.0: # %entry 3845; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 3846; LINUX-32-STATIC-NEXT: movl dsrc+64(,%eax,4), %ecx 3847; LINUX-32-STATIC-NEXT: movl %ecx, ddst+64(,%eax,4) 3848; LINUX-32-STATIC-NEXT: retl 3849; 3850; LINUX-32-PIC-LABEL: off03: 3851; LINUX-32-PIC: # %bb.0: # %entry 3852; LINUX-32-PIC-NEXT: calll .L42$pb 3853; LINUX-32-PIC-NEXT: .L42$pb: 3854; LINUX-32-PIC-NEXT: popl %eax 3855; LINUX-32-PIC-NEXT: .Ltmp42: 3856; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp42-.L42$pb), %eax 3857; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 3858; LINUX-32-PIC-NEXT: movl .Ldsrc$local@GOTOFF+64(%eax,%ecx,4), %edx 3859; LINUX-32-PIC-NEXT: movl %edx, .Lddst$local@GOTOFF+64(%eax,%ecx,4) 3860; LINUX-32-PIC-NEXT: retl 3861; 3862; LINUX-64-PIC-LABEL: off03: 3863; LINUX-64-PIC: # %bb.0: # %entry 3864; LINUX-64-PIC-NEXT: leaq .Ldsrc$local(%rip), %rax 3865; LINUX-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax 3866; LINUX-64-PIC-NEXT: leaq .Lddst$local(%rip), %rcx 3867; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 3868; LINUX-64-PIC-NEXT: retq 3869; 3870; DARWIN-32-STATIC-LABEL: off03: 3871; DARWIN-32-STATIC: ## %bb.0: ## %entry 3872; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 3873; DARWIN-32-STATIC-NEXT: movl _dsrc+64(,%eax,4), %ecx 3874; DARWIN-32-STATIC-NEXT: movl %ecx, _ddst+64(,%eax,4) 3875; DARWIN-32-STATIC-NEXT: retl 3876; 3877; DARWIN-32-DYNAMIC-LABEL: off03: 3878; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 3879; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 3880; DARWIN-32-DYNAMIC-NEXT: movl _dsrc+64(,%eax,4), %ecx 3881; DARWIN-32-DYNAMIC-NEXT: movl %ecx, _ddst+64(,%eax,4) 3882; DARWIN-32-DYNAMIC-NEXT: retl 3883; 3884; DARWIN-32-PIC-LABEL: off03: 3885; DARWIN-32-PIC: ## %bb.0: ## %entry 3886; DARWIN-32-PIC-NEXT: calll L42$pb 3887; DARWIN-32-PIC-NEXT: L42$pb: 3888; DARWIN-32-PIC-NEXT: popl %eax 3889; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 3890; DARWIN-32-PIC-NEXT: movl (_dsrc-L42$pb)+64(%eax,%ecx,4), %edx 3891; DARWIN-32-PIC-NEXT: movl %edx, (_ddst-L42$pb)+64(%eax,%ecx,4) 3892; DARWIN-32-PIC-NEXT: retl 3893; 3894; DARWIN-64-STATIC-LABEL: off03: 3895; DARWIN-64-STATIC: ## %bb.0: ## %entry 3896; DARWIN-64-STATIC-NEXT: leaq _dsrc(%rip), %rax 3897; DARWIN-64-STATIC-NEXT: movl 64(%rax,%rdi,4), %eax 3898; DARWIN-64-STATIC-NEXT: leaq _ddst(%rip), %rcx 3899; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 3900; DARWIN-64-STATIC-NEXT: retq 3901; 3902; DARWIN-64-DYNAMIC-LABEL: off03: 3903; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 3904; DARWIN-64-DYNAMIC-NEXT: leaq _dsrc(%rip), %rax 3905; DARWIN-64-DYNAMIC-NEXT: movl 64(%rax,%rdi,4), %eax 3906; DARWIN-64-DYNAMIC-NEXT: leaq _ddst(%rip), %rcx 3907; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 3908; DARWIN-64-DYNAMIC-NEXT: retq 3909; 3910; DARWIN-64-PIC-LABEL: off03: 3911; DARWIN-64-PIC: ## %bb.0: ## %entry 3912; DARWIN-64-PIC-NEXT: leaq _dsrc(%rip), %rax 3913; DARWIN-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax 3914; DARWIN-64-PIC-NEXT: leaq _ddst(%rip), %rcx 3915; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 3916; DARWIN-64-PIC-NEXT: retq 3917 3918entry: 3919 %0 = add i64 %i, 16 3920 %1 = getelementptr [131072 x i32], [131072 x i32]* @dsrc, i64 0, i64 %0 3921 %2 = load i32, i32* %1, align 4 3922 %3 = getelementptr [131072 x i32], [131072 x i32]* @ddst, i64 0, i64 %0 3923 store i32 %2, i32* %3, align 4 3924 ret void 3925} 3926 3927define dso_local void @off04(i64 %i) nounwind { 3928; LINUX-64-STATIC-LABEL: off04: 3929; LINUX-64-STATIC: # %bb.0: # %entry 3930; LINUX-64-STATIC-NEXT: leaq ddst+64(,%rdi,4), %rax 3931; LINUX-64-STATIC-NEXT: movq %rax, dptr(%rip) 3932; LINUX-64-STATIC-NEXT: retq 3933; 3934; LINUX-32-STATIC-LABEL: off04: 3935; LINUX-32-STATIC: # %bb.0: # %entry 3936; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 3937; LINUX-32-STATIC-NEXT: leal ddst+64(,%eax,4), %eax 3938; LINUX-32-STATIC-NEXT: movl %eax, dptr 3939; LINUX-32-STATIC-NEXT: retl 3940; 3941; LINUX-32-PIC-LABEL: off04: 3942; LINUX-32-PIC: # %bb.0: # %entry 3943; LINUX-32-PIC-NEXT: calll .L43$pb 3944; LINUX-32-PIC-NEXT: .L43$pb: 3945; LINUX-32-PIC-NEXT: popl %eax 3946; LINUX-32-PIC-NEXT: .Ltmp43: 3947; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp43-.L43$pb), %eax 3948; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 3949; LINUX-32-PIC-NEXT: leal .Lddst$local@GOTOFF+64(%eax,%ecx,4), %ecx 3950; LINUX-32-PIC-NEXT: movl %ecx, .Ldptr$local@GOTOFF(%eax) 3951; LINUX-32-PIC-NEXT: retl 3952; 3953; LINUX-64-PIC-LABEL: off04: 3954; LINUX-64-PIC: # %bb.0: # %entry 3955; LINUX-64-PIC-NEXT: leaq .Lddst$local(%rip), %rax 3956; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax 3957; LINUX-64-PIC-NEXT: movq %rax, .Ldptr$local(%rip) 3958; LINUX-64-PIC-NEXT: retq 3959; 3960; DARWIN-32-STATIC-LABEL: off04: 3961; DARWIN-32-STATIC: ## %bb.0: ## %entry 3962; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 3963; DARWIN-32-STATIC-NEXT: leal _ddst+64(,%eax,4), %eax 3964; DARWIN-32-STATIC-NEXT: movl %eax, _dptr 3965; DARWIN-32-STATIC-NEXT: retl 3966; 3967; DARWIN-32-DYNAMIC-LABEL: off04: 3968; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 3969; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 3970; DARWIN-32-DYNAMIC-NEXT: leal _ddst+64(,%eax,4), %eax 3971; DARWIN-32-DYNAMIC-NEXT: movl %eax, _dptr 3972; DARWIN-32-DYNAMIC-NEXT: retl 3973; 3974; DARWIN-32-PIC-LABEL: off04: 3975; DARWIN-32-PIC: ## %bb.0: ## %entry 3976; DARWIN-32-PIC-NEXT: calll L43$pb 3977; DARWIN-32-PIC-NEXT: L43$pb: 3978; DARWIN-32-PIC-NEXT: popl %eax 3979; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 3980; DARWIN-32-PIC-NEXT: leal (_ddst-L43$pb)+64(%eax,%ecx,4), %ecx 3981; DARWIN-32-PIC-NEXT: movl %ecx, _dptr-L43$pb(%eax) 3982; DARWIN-32-PIC-NEXT: retl 3983; 3984; DARWIN-64-STATIC-LABEL: off04: 3985; DARWIN-64-STATIC: ## %bb.0: ## %entry 3986; DARWIN-64-STATIC-NEXT: leaq _ddst(%rip), %rax 3987; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax 3988; DARWIN-64-STATIC-NEXT: movq %rax, _dptr(%rip) 3989; DARWIN-64-STATIC-NEXT: retq 3990; 3991; DARWIN-64-DYNAMIC-LABEL: off04: 3992; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 3993; DARWIN-64-DYNAMIC-NEXT: leaq _ddst(%rip), %rax 3994; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax 3995; DARWIN-64-DYNAMIC-NEXT: movq %rax, _dptr(%rip) 3996; DARWIN-64-DYNAMIC-NEXT: retq 3997; 3998; DARWIN-64-PIC-LABEL: off04: 3999; DARWIN-64-PIC: ## %bb.0: ## %entry 4000; DARWIN-64-PIC-NEXT: leaq _ddst(%rip), %rax 4001; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax 4002; DARWIN-64-PIC-NEXT: movq %rax, _dptr(%rip) 4003; DARWIN-64-PIC-NEXT: retq 4004 4005entry: 4006 %.sum = add i64 %i, 16 4007 %0 = getelementptr [131072 x i32], [131072 x i32]* @ddst, i64 0, i64 %.sum 4008 store i32* %0, i32** @dptr, align 8 4009 ret void 4010} 4011 4012define dso_local void @off05(i64 %i) nounwind { 4013; LINUX-64-STATIC-LABEL: off05: 4014; LINUX-64-STATIC: # %bb.0: # %entry 4015; LINUX-64-STATIC-NEXT: movl dsrc+64(,%rdi,4), %eax 4016; LINUX-64-STATIC-NEXT: movq dptr(%rip), %rcx 4017; LINUX-64-STATIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 4018; LINUX-64-STATIC-NEXT: retq 4019; 4020; LINUX-32-STATIC-LABEL: off05: 4021; LINUX-32-STATIC: # %bb.0: # %entry 4022; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 4023; LINUX-32-STATIC-NEXT: movl dsrc+64(,%eax,4), %ecx 4024; LINUX-32-STATIC-NEXT: movl dptr, %edx 4025; LINUX-32-STATIC-NEXT: movl %ecx, 64(%edx,%eax,4) 4026; LINUX-32-STATIC-NEXT: retl 4027; 4028; LINUX-32-PIC-LABEL: off05: 4029; LINUX-32-PIC: # %bb.0: # %entry 4030; LINUX-32-PIC-NEXT: calll .L44$pb 4031; LINUX-32-PIC-NEXT: .L44$pb: 4032; LINUX-32-PIC-NEXT: popl %eax 4033; LINUX-32-PIC-NEXT: .Ltmp44: 4034; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp44-.L44$pb), %eax 4035; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 4036; LINUX-32-PIC-NEXT: movl .Ldsrc$local@GOTOFF+64(%eax,%ecx,4), %edx 4037; LINUX-32-PIC-NEXT: movl .Ldptr$local@GOTOFF(%eax), %eax 4038; LINUX-32-PIC-NEXT: movl %edx, 64(%eax,%ecx,4) 4039; LINUX-32-PIC-NEXT: retl 4040; 4041; LINUX-64-PIC-LABEL: off05: 4042; LINUX-64-PIC: # %bb.0: # %entry 4043; LINUX-64-PIC-NEXT: leaq .Ldsrc$local(%rip), %rax 4044; LINUX-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax 4045; LINUX-64-PIC-NEXT: movq .Ldptr$local(%rip), %rcx 4046; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 4047; LINUX-64-PIC-NEXT: retq 4048; 4049; DARWIN-32-STATIC-LABEL: off05: 4050; DARWIN-32-STATIC: ## %bb.0: ## %entry 4051; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 4052; DARWIN-32-STATIC-NEXT: movl _dsrc+64(,%eax,4), %ecx 4053; DARWIN-32-STATIC-NEXT: movl _dptr, %edx 4054; DARWIN-32-STATIC-NEXT: movl %ecx, 64(%edx,%eax,4) 4055; DARWIN-32-STATIC-NEXT: retl 4056; 4057; DARWIN-32-DYNAMIC-LABEL: off05: 4058; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 4059; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 4060; DARWIN-32-DYNAMIC-NEXT: movl _dsrc+64(,%eax,4), %ecx 4061; DARWIN-32-DYNAMIC-NEXT: movl _dptr, %edx 4062; DARWIN-32-DYNAMIC-NEXT: movl %ecx, 64(%edx,%eax,4) 4063; DARWIN-32-DYNAMIC-NEXT: retl 4064; 4065; DARWIN-32-PIC-LABEL: off05: 4066; DARWIN-32-PIC: ## %bb.0: ## %entry 4067; DARWIN-32-PIC-NEXT: calll L44$pb 4068; DARWIN-32-PIC-NEXT: L44$pb: 4069; DARWIN-32-PIC-NEXT: popl %eax 4070; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 4071; DARWIN-32-PIC-NEXT: movl (_dsrc-L44$pb)+64(%eax,%ecx,4), %edx 4072; DARWIN-32-PIC-NEXT: movl _dptr-L44$pb(%eax), %eax 4073; DARWIN-32-PIC-NEXT: movl %edx, 64(%eax,%ecx,4) 4074; DARWIN-32-PIC-NEXT: retl 4075; 4076; DARWIN-64-STATIC-LABEL: off05: 4077; DARWIN-64-STATIC: ## %bb.0: ## %entry 4078; DARWIN-64-STATIC-NEXT: leaq _dsrc(%rip), %rax 4079; DARWIN-64-STATIC-NEXT: movl 64(%rax,%rdi,4), %eax 4080; DARWIN-64-STATIC-NEXT: movq _dptr(%rip), %rcx 4081; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 4082; DARWIN-64-STATIC-NEXT: retq 4083; 4084; DARWIN-64-DYNAMIC-LABEL: off05: 4085; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 4086; DARWIN-64-DYNAMIC-NEXT: leaq _dsrc(%rip), %rax 4087; DARWIN-64-DYNAMIC-NEXT: movl 64(%rax,%rdi,4), %eax 4088; DARWIN-64-DYNAMIC-NEXT: movq _dptr(%rip), %rcx 4089; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 4090; DARWIN-64-DYNAMIC-NEXT: retq 4091; 4092; DARWIN-64-PIC-LABEL: off05: 4093; DARWIN-64-PIC: ## %bb.0: ## %entry 4094; DARWIN-64-PIC-NEXT: leaq _dsrc(%rip), %rax 4095; DARWIN-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax 4096; DARWIN-64-PIC-NEXT: movq _dptr(%rip), %rcx 4097; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 4098; DARWIN-64-PIC-NEXT: retq 4099 4100entry: 4101 %0 = load i32*, i32** @dptr, align 8 4102 %1 = add i64 %i, 16 4103 %2 = getelementptr [131072 x i32], [131072 x i32]* @dsrc, i64 0, i64 %1 4104 %3 = load i32, i32* %2, align 4 4105 %4 = getelementptr i32, i32* %0, i64 %1 4106 store i32 %3, i32* %4, align 4 4107 ret void 4108} 4109 4110define dso_local void @off06(i64 %i) nounwind { 4111; LINUX-64-STATIC-LABEL: off06: 4112; LINUX-64-STATIC: # %bb.0: # %entry 4113; LINUX-64-STATIC-NEXT: movl lsrc+64(,%rdi,4), %eax 4114; LINUX-64-STATIC-NEXT: movl %eax, ldst+64(,%rdi,4) 4115; LINUX-64-STATIC-NEXT: retq 4116; 4117; LINUX-32-STATIC-LABEL: off06: 4118; LINUX-32-STATIC: # %bb.0: # %entry 4119; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 4120; LINUX-32-STATIC-NEXT: movl lsrc+64(,%eax,4), %ecx 4121; LINUX-32-STATIC-NEXT: movl %ecx, ldst+64(,%eax,4) 4122; LINUX-32-STATIC-NEXT: retl 4123; 4124; LINUX-32-PIC-LABEL: off06: 4125; LINUX-32-PIC: # %bb.0: # %entry 4126; LINUX-32-PIC-NEXT: calll .L45$pb 4127; LINUX-32-PIC-NEXT: .L45$pb: 4128; LINUX-32-PIC-NEXT: popl %eax 4129; LINUX-32-PIC-NEXT: .Ltmp45: 4130; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp45-.L45$pb), %eax 4131; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 4132; LINUX-32-PIC-NEXT: movl lsrc@GOTOFF+64(%eax,%ecx,4), %edx 4133; LINUX-32-PIC-NEXT: movl %edx, ldst@GOTOFF+64(%eax,%ecx,4) 4134; LINUX-32-PIC-NEXT: retl 4135; 4136; LINUX-64-PIC-LABEL: off06: 4137; LINUX-64-PIC: # %bb.0: # %entry 4138; LINUX-64-PIC-NEXT: leaq lsrc(%rip), %rax 4139; LINUX-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax 4140; LINUX-64-PIC-NEXT: leaq ldst(%rip), %rcx 4141; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 4142; LINUX-64-PIC-NEXT: retq 4143; 4144; DARWIN-32-STATIC-LABEL: off06: 4145; DARWIN-32-STATIC: ## %bb.0: ## %entry 4146; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 4147; DARWIN-32-STATIC-NEXT: movl _lsrc+64(,%eax,4), %ecx 4148; DARWIN-32-STATIC-NEXT: movl %ecx, _ldst+64(,%eax,4) 4149; DARWIN-32-STATIC-NEXT: retl 4150; 4151; DARWIN-32-DYNAMIC-LABEL: off06: 4152; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 4153; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 4154; DARWIN-32-DYNAMIC-NEXT: movl _lsrc+64(,%eax,4), %ecx 4155; DARWIN-32-DYNAMIC-NEXT: movl %ecx, _ldst+64(,%eax,4) 4156; DARWIN-32-DYNAMIC-NEXT: retl 4157; 4158; DARWIN-32-PIC-LABEL: off06: 4159; DARWIN-32-PIC: ## %bb.0: ## %entry 4160; DARWIN-32-PIC-NEXT: calll L45$pb 4161; DARWIN-32-PIC-NEXT: L45$pb: 4162; DARWIN-32-PIC-NEXT: popl %eax 4163; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 4164; DARWIN-32-PIC-NEXT: movl (_lsrc-L45$pb)+64(%eax,%ecx,4), %edx 4165; DARWIN-32-PIC-NEXT: movl %edx, (_ldst-L45$pb)+64(%eax,%ecx,4) 4166; DARWIN-32-PIC-NEXT: retl 4167; 4168; DARWIN-64-STATIC-LABEL: off06: 4169; DARWIN-64-STATIC: ## %bb.0: ## %entry 4170; DARWIN-64-STATIC-NEXT: leaq _lsrc(%rip), %rax 4171; DARWIN-64-STATIC-NEXT: movl 64(%rax,%rdi,4), %eax 4172; DARWIN-64-STATIC-NEXT: leaq _ldst(%rip), %rcx 4173; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 4174; DARWIN-64-STATIC-NEXT: retq 4175; 4176; DARWIN-64-DYNAMIC-LABEL: off06: 4177; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 4178; DARWIN-64-DYNAMIC-NEXT: leaq _lsrc(%rip), %rax 4179; DARWIN-64-DYNAMIC-NEXT: movl 64(%rax,%rdi,4), %eax 4180; DARWIN-64-DYNAMIC-NEXT: leaq _ldst(%rip), %rcx 4181; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 4182; DARWIN-64-DYNAMIC-NEXT: retq 4183; 4184; DARWIN-64-PIC-LABEL: off06: 4185; DARWIN-64-PIC: ## %bb.0: ## %entry 4186; DARWIN-64-PIC-NEXT: leaq _lsrc(%rip), %rax 4187; DARWIN-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax 4188; DARWIN-64-PIC-NEXT: leaq _ldst(%rip), %rcx 4189; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 4190; DARWIN-64-PIC-NEXT: retq 4191 4192entry: 4193 %0 = add i64 %i, 16 4194 %1 = getelementptr [131072 x i32], [131072 x i32]* @lsrc, i64 0, i64 %0 4195 %2 = load i32, i32* %1, align 4 4196 %3 = getelementptr [131072 x i32], [131072 x i32]* @ldst, i64 0, i64 %0 4197 store i32 %2, i32* %3, align 4 4198 ret void 4199} 4200 4201define dso_local void @off07(i64 %i) nounwind { 4202; LINUX-64-STATIC-LABEL: off07: 4203; LINUX-64-STATIC: # %bb.0: # %entry 4204; LINUX-64-STATIC-NEXT: leaq ldst+64(,%rdi,4), %rax 4205; LINUX-64-STATIC-NEXT: movq %rax, lptr(%rip) 4206; LINUX-64-STATIC-NEXT: retq 4207; 4208; LINUX-32-STATIC-LABEL: off07: 4209; LINUX-32-STATIC: # %bb.0: # %entry 4210; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 4211; LINUX-32-STATIC-NEXT: leal ldst+64(,%eax,4), %eax 4212; LINUX-32-STATIC-NEXT: movl %eax, lptr 4213; LINUX-32-STATIC-NEXT: retl 4214; 4215; LINUX-32-PIC-LABEL: off07: 4216; LINUX-32-PIC: # %bb.0: # %entry 4217; LINUX-32-PIC-NEXT: calll .L46$pb 4218; LINUX-32-PIC-NEXT: .L46$pb: 4219; LINUX-32-PIC-NEXT: popl %eax 4220; LINUX-32-PIC-NEXT: .Ltmp46: 4221; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp46-.L46$pb), %eax 4222; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 4223; LINUX-32-PIC-NEXT: leal ldst@GOTOFF+64(%eax,%ecx,4), %ecx 4224; LINUX-32-PIC-NEXT: movl %ecx, lptr@GOTOFF(%eax) 4225; LINUX-32-PIC-NEXT: retl 4226; 4227; LINUX-64-PIC-LABEL: off07: 4228; LINUX-64-PIC: # %bb.0: # %entry 4229; LINUX-64-PIC-NEXT: leaq ldst(%rip), %rax 4230; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax 4231; LINUX-64-PIC-NEXT: movq %rax, lptr(%rip) 4232; LINUX-64-PIC-NEXT: retq 4233; 4234; DARWIN-32-STATIC-LABEL: off07: 4235; DARWIN-32-STATIC: ## %bb.0: ## %entry 4236; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 4237; DARWIN-32-STATIC-NEXT: leal _ldst+64(,%eax,4), %eax 4238; DARWIN-32-STATIC-NEXT: movl %eax, _lptr 4239; DARWIN-32-STATIC-NEXT: retl 4240; 4241; DARWIN-32-DYNAMIC-LABEL: off07: 4242; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 4243; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 4244; DARWIN-32-DYNAMIC-NEXT: leal _ldst+64(,%eax,4), %eax 4245; DARWIN-32-DYNAMIC-NEXT: movl %eax, _lptr 4246; DARWIN-32-DYNAMIC-NEXT: retl 4247; 4248; DARWIN-32-PIC-LABEL: off07: 4249; DARWIN-32-PIC: ## %bb.0: ## %entry 4250; DARWIN-32-PIC-NEXT: calll L46$pb 4251; DARWIN-32-PIC-NEXT: L46$pb: 4252; DARWIN-32-PIC-NEXT: popl %eax 4253; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 4254; DARWIN-32-PIC-NEXT: leal (_ldst-L46$pb)+64(%eax,%ecx,4), %ecx 4255; DARWIN-32-PIC-NEXT: movl %ecx, _lptr-L46$pb(%eax) 4256; DARWIN-32-PIC-NEXT: retl 4257; 4258; DARWIN-64-STATIC-LABEL: off07: 4259; DARWIN-64-STATIC: ## %bb.0: ## %entry 4260; DARWIN-64-STATIC-NEXT: leaq _ldst(%rip), %rax 4261; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax 4262; DARWIN-64-STATIC-NEXT: movq %rax, _lptr(%rip) 4263; DARWIN-64-STATIC-NEXT: retq 4264; 4265; DARWIN-64-DYNAMIC-LABEL: off07: 4266; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 4267; DARWIN-64-DYNAMIC-NEXT: leaq _ldst(%rip), %rax 4268; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax 4269; DARWIN-64-DYNAMIC-NEXT: movq %rax, _lptr(%rip) 4270; DARWIN-64-DYNAMIC-NEXT: retq 4271; 4272; DARWIN-64-PIC-LABEL: off07: 4273; DARWIN-64-PIC: ## %bb.0: ## %entry 4274; DARWIN-64-PIC-NEXT: leaq _ldst(%rip), %rax 4275; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax 4276; DARWIN-64-PIC-NEXT: movq %rax, _lptr(%rip) 4277; DARWIN-64-PIC-NEXT: retq 4278 4279entry: 4280 %.sum = add i64 %i, 16 4281 %0 = getelementptr [131072 x i32], [131072 x i32]* @ldst, i64 0, i64 %.sum 4282 store i32* %0, i32** @lptr, align 8 4283 ret void 4284} 4285 4286define dso_local void @off08(i64 %i) nounwind { 4287; LINUX-64-STATIC-LABEL: off08: 4288; LINUX-64-STATIC: # %bb.0: # %entry 4289; LINUX-64-STATIC-NEXT: movl lsrc+64(,%rdi,4), %eax 4290; LINUX-64-STATIC-NEXT: movq lptr(%rip), %rcx 4291; LINUX-64-STATIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 4292; LINUX-64-STATIC-NEXT: retq 4293; 4294; LINUX-32-STATIC-LABEL: off08: 4295; LINUX-32-STATIC: # %bb.0: # %entry 4296; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 4297; LINUX-32-STATIC-NEXT: movl lsrc+64(,%eax,4), %ecx 4298; LINUX-32-STATIC-NEXT: movl lptr, %edx 4299; LINUX-32-STATIC-NEXT: movl %ecx, 64(%edx,%eax,4) 4300; LINUX-32-STATIC-NEXT: retl 4301; 4302; LINUX-32-PIC-LABEL: off08: 4303; LINUX-32-PIC: # %bb.0: # %entry 4304; LINUX-32-PIC-NEXT: calll .L47$pb 4305; LINUX-32-PIC-NEXT: .L47$pb: 4306; LINUX-32-PIC-NEXT: popl %eax 4307; LINUX-32-PIC-NEXT: .Ltmp47: 4308; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp47-.L47$pb), %eax 4309; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 4310; LINUX-32-PIC-NEXT: movl lsrc@GOTOFF+64(%eax,%ecx,4), %edx 4311; LINUX-32-PIC-NEXT: movl lptr@GOTOFF(%eax), %eax 4312; LINUX-32-PIC-NEXT: movl %edx, 64(%eax,%ecx,4) 4313; LINUX-32-PIC-NEXT: retl 4314; 4315; LINUX-64-PIC-LABEL: off08: 4316; LINUX-64-PIC: # %bb.0: # %entry 4317; LINUX-64-PIC-NEXT: leaq lsrc(%rip), %rax 4318; LINUX-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax 4319; LINUX-64-PIC-NEXT: movq lptr(%rip), %rcx 4320; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 4321; LINUX-64-PIC-NEXT: retq 4322; 4323; DARWIN-32-STATIC-LABEL: off08: 4324; DARWIN-32-STATIC: ## %bb.0: ## %entry 4325; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 4326; DARWIN-32-STATIC-NEXT: movl _lsrc+64(,%eax,4), %ecx 4327; DARWIN-32-STATIC-NEXT: movl _lptr, %edx 4328; DARWIN-32-STATIC-NEXT: movl %ecx, 64(%edx,%eax,4) 4329; DARWIN-32-STATIC-NEXT: retl 4330; 4331; DARWIN-32-DYNAMIC-LABEL: off08: 4332; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 4333; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 4334; DARWIN-32-DYNAMIC-NEXT: movl _lsrc+64(,%eax,4), %ecx 4335; DARWIN-32-DYNAMIC-NEXT: movl _lptr, %edx 4336; DARWIN-32-DYNAMIC-NEXT: movl %ecx, 64(%edx,%eax,4) 4337; DARWIN-32-DYNAMIC-NEXT: retl 4338; 4339; DARWIN-32-PIC-LABEL: off08: 4340; DARWIN-32-PIC: ## %bb.0: ## %entry 4341; DARWIN-32-PIC-NEXT: calll L47$pb 4342; DARWIN-32-PIC-NEXT: L47$pb: 4343; DARWIN-32-PIC-NEXT: popl %eax 4344; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 4345; DARWIN-32-PIC-NEXT: movl (_lsrc-L47$pb)+64(%eax,%ecx,4), %edx 4346; DARWIN-32-PIC-NEXT: movl _lptr-L47$pb(%eax), %eax 4347; DARWIN-32-PIC-NEXT: movl %edx, 64(%eax,%ecx,4) 4348; DARWIN-32-PIC-NEXT: retl 4349; 4350; DARWIN-64-STATIC-LABEL: off08: 4351; DARWIN-64-STATIC: ## %bb.0: ## %entry 4352; DARWIN-64-STATIC-NEXT: leaq _lsrc(%rip), %rax 4353; DARWIN-64-STATIC-NEXT: movl 64(%rax,%rdi,4), %eax 4354; DARWIN-64-STATIC-NEXT: movq _lptr(%rip), %rcx 4355; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 4356; DARWIN-64-STATIC-NEXT: retq 4357; 4358; DARWIN-64-DYNAMIC-LABEL: off08: 4359; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 4360; DARWIN-64-DYNAMIC-NEXT: leaq _lsrc(%rip), %rax 4361; DARWIN-64-DYNAMIC-NEXT: movl 64(%rax,%rdi,4), %eax 4362; DARWIN-64-DYNAMIC-NEXT: movq _lptr(%rip), %rcx 4363; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 4364; DARWIN-64-DYNAMIC-NEXT: retq 4365; 4366; DARWIN-64-PIC-LABEL: off08: 4367; DARWIN-64-PIC: ## %bb.0: ## %entry 4368; DARWIN-64-PIC-NEXT: leaq _lsrc(%rip), %rax 4369; DARWIN-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax 4370; DARWIN-64-PIC-NEXT: movq _lptr(%rip), %rcx 4371; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 4372; DARWIN-64-PIC-NEXT: retq 4373 4374entry: 4375 %0 = load i32*, i32** @lptr, align 8 4376 %1 = add i64 %i, 16 4377 %2 = getelementptr [131072 x i32], [131072 x i32]* @lsrc, i64 0, i64 %1 4378 %3 = load i32, i32* %2, align 4 4379 %4 = getelementptr i32, i32* %0, i64 %1 4380 store i32 %3, i32* %4, align 4 4381 ret void 4382} 4383 4384define dso_local void @moo00(i64 %i) nounwind { 4385; LINUX-64-STATIC-LABEL: moo00: 4386; LINUX-64-STATIC: # %bb.0: # %entry 4387; LINUX-64-STATIC-NEXT: movq src@GOTPCREL(%rip), %rax 4388; LINUX-64-STATIC-NEXT: movl 262144(%rax), %eax 4389; LINUX-64-STATIC-NEXT: movq dst@GOTPCREL(%rip), %rcx 4390; LINUX-64-STATIC-NEXT: movl %eax, 262144(%rcx) 4391; LINUX-64-STATIC-NEXT: retq 4392; 4393; LINUX-32-STATIC-LABEL: moo00: 4394; LINUX-32-STATIC: # %bb.0: # %entry 4395; LINUX-32-STATIC-NEXT: movl src+262144, %eax 4396; LINUX-32-STATIC-NEXT: movl %eax, dst+262144 4397; LINUX-32-STATIC-NEXT: retl 4398; 4399; LINUX-32-PIC-LABEL: moo00: 4400; LINUX-32-PIC: # %bb.0: # %entry 4401; LINUX-32-PIC-NEXT: calll .L48$pb 4402; LINUX-32-PIC-NEXT: .L48$pb: 4403; LINUX-32-PIC-NEXT: popl %eax 4404; LINUX-32-PIC-NEXT: .Ltmp48: 4405; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp48-.L48$pb), %eax 4406; LINUX-32-PIC-NEXT: movl src@GOT(%eax), %ecx 4407; LINUX-32-PIC-NEXT: movl 262144(%ecx), %ecx 4408; LINUX-32-PIC-NEXT: movl dst@GOT(%eax), %eax 4409; LINUX-32-PIC-NEXT: movl %ecx, 262144(%eax) 4410; LINUX-32-PIC-NEXT: retl 4411; 4412; LINUX-64-PIC-LABEL: moo00: 4413; LINUX-64-PIC: # %bb.0: # %entry 4414; LINUX-64-PIC-NEXT: movq src@GOTPCREL(%rip), %rax 4415; LINUX-64-PIC-NEXT: movl 262144(%rax), %eax 4416; LINUX-64-PIC-NEXT: movq dst@GOTPCREL(%rip), %rcx 4417; LINUX-64-PIC-NEXT: movl %eax, 262144(%rcx) 4418; LINUX-64-PIC-NEXT: retq 4419; 4420; DARWIN-32-STATIC-LABEL: moo00: 4421; DARWIN-32-STATIC: ## %bb.0: ## %entry 4422; DARWIN-32-STATIC-NEXT: movl _src+262144, %eax 4423; DARWIN-32-STATIC-NEXT: movl %eax, _dst+262144 4424; DARWIN-32-STATIC-NEXT: retl 4425; 4426; DARWIN-32-DYNAMIC-LABEL: moo00: 4427; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 4428; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %eax 4429; DARWIN-32-DYNAMIC-NEXT: movl 262144(%eax), %eax 4430; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, %ecx 4431; DARWIN-32-DYNAMIC-NEXT: movl %eax, 262144(%ecx) 4432; DARWIN-32-DYNAMIC-NEXT: retl 4433; 4434; DARWIN-32-PIC-LABEL: moo00: 4435; DARWIN-32-PIC: ## %bb.0: ## %entry 4436; DARWIN-32-PIC-NEXT: calll L48$pb 4437; DARWIN-32-PIC-NEXT: L48$pb: 4438; DARWIN-32-PIC-NEXT: popl %eax 4439; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L48$pb(%eax), %ecx 4440; DARWIN-32-PIC-NEXT: movl 262144(%ecx), %ecx 4441; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L48$pb(%eax), %eax 4442; DARWIN-32-PIC-NEXT: movl %ecx, 262144(%eax) 4443; DARWIN-32-PIC-NEXT: retl 4444; 4445; DARWIN-64-STATIC-LABEL: moo00: 4446; DARWIN-64-STATIC: ## %bb.0: ## %entry 4447; DARWIN-64-STATIC-NEXT: movq _src@GOTPCREL(%rip), %rax 4448; DARWIN-64-STATIC-NEXT: movl 262144(%rax), %eax 4449; DARWIN-64-STATIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx 4450; DARWIN-64-STATIC-NEXT: movl %eax, 262144(%rcx) 4451; DARWIN-64-STATIC-NEXT: retq 4452; 4453; DARWIN-64-DYNAMIC-LABEL: moo00: 4454; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 4455; DARWIN-64-DYNAMIC-NEXT: movq _src@GOTPCREL(%rip), %rax 4456; DARWIN-64-DYNAMIC-NEXT: movl 262144(%rax), %eax 4457; DARWIN-64-DYNAMIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx 4458; DARWIN-64-DYNAMIC-NEXT: movl %eax, 262144(%rcx) 4459; DARWIN-64-DYNAMIC-NEXT: retq 4460; 4461; DARWIN-64-PIC-LABEL: moo00: 4462; DARWIN-64-PIC: ## %bb.0: ## %entry 4463; DARWIN-64-PIC-NEXT: movq _src@GOTPCREL(%rip), %rax 4464; DARWIN-64-PIC-NEXT: movl 262144(%rax), %eax 4465; DARWIN-64-PIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx 4466; DARWIN-64-PIC-NEXT: movl %eax, 262144(%rcx) 4467; DARWIN-64-PIC-NEXT: retq 4468 4469entry: 4470 %0 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @src, i32 0, i64 65536), align 4 4471 store i32 %0, i32* getelementptr ([131072 x i32], [131072 x i32]* @dst, i32 0, i64 65536), align 4 4472 ret void 4473} 4474 4475define dso_local void @moo01(i64 %i) nounwind { 4476; LINUX-64-STATIC-LABEL: moo01: 4477; LINUX-64-STATIC: # %bb.0: # %entry 4478; LINUX-64-STATIC-NEXT: movl $262144, %eax # imm = 0x40000 4479; LINUX-64-STATIC-NEXT: addq dst@GOTPCREL(%rip), %rax 4480; LINUX-64-STATIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx 4481; LINUX-64-STATIC-NEXT: movq %rax, (%rcx) 4482; LINUX-64-STATIC-NEXT: retq 4483; 4484; LINUX-32-STATIC-LABEL: moo01: 4485; LINUX-32-STATIC: # %bb.0: # %entry 4486; LINUX-32-STATIC-NEXT: leal dst+262144, %eax 4487; LINUX-32-STATIC-NEXT: movl %eax, ptr 4488; LINUX-32-STATIC-NEXT: retl 4489; 4490; LINUX-32-PIC-LABEL: moo01: 4491; LINUX-32-PIC: # %bb.0: # %entry 4492; LINUX-32-PIC-NEXT: calll .L49$pb 4493; LINUX-32-PIC-NEXT: .L49$pb: 4494; LINUX-32-PIC-NEXT: popl %eax 4495; LINUX-32-PIC-NEXT: .Ltmp49: 4496; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp49-.L49$pb), %eax 4497; LINUX-32-PIC-NEXT: movl $262144, %ecx # imm = 0x40000 4498; LINUX-32-PIC-NEXT: addl dst@GOT(%eax), %ecx 4499; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax 4500; LINUX-32-PIC-NEXT: movl %ecx, (%eax) 4501; LINUX-32-PIC-NEXT: retl 4502; 4503; LINUX-64-PIC-LABEL: moo01: 4504; LINUX-64-PIC: # %bb.0: # %entry 4505; LINUX-64-PIC-NEXT: movl $262144, %eax # imm = 0x40000 4506; LINUX-64-PIC-NEXT: addq dst@GOTPCREL(%rip), %rax 4507; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx 4508; LINUX-64-PIC-NEXT: movq %rax, (%rcx) 4509; LINUX-64-PIC-NEXT: retq 4510; 4511; DARWIN-32-STATIC-LABEL: moo01: 4512; DARWIN-32-STATIC: ## %bb.0: ## %entry 4513; DARWIN-32-STATIC-NEXT: movl $_dst+262144, _ptr 4514; DARWIN-32-STATIC-NEXT: retl 4515; 4516; DARWIN-32-DYNAMIC-LABEL: moo01: 4517; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 4518; DARWIN-32-DYNAMIC-NEXT: movl $262144, %eax ## imm = 0x40000 4519; DARWIN-32-DYNAMIC-NEXT: addl L_dst$non_lazy_ptr, %eax 4520; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx 4521; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx) 4522; DARWIN-32-DYNAMIC-NEXT: retl 4523; 4524; DARWIN-32-PIC-LABEL: moo01: 4525; DARWIN-32-PIC: ## %bb.0: ## %entry 4526; DARWIN-32-PIC-NEXT: calll L49$pb 4527; DARWIN-32-PIC-NEXT: L49$pb: 4528; DARWIN-32-PIC-NEXT: popl %eax 4529; DARWIN-32-PIC-NEXT: movl $262144, %ecx ## imm = 0x40000 4530; DARWIN-32-PIC-NEXT: addl L_dst$non_lazy_ptr-L49$pb(%eax), %ecx 4531; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L49$pb(%eax), %eax 4532; DARWIN-32-PIC-NEXT: movl %ecx, (%eax) 4533; DARWIN-32-PIC-NEXT: retl 4534; 4535; DARWIN-64-STATIC-LABEL: moo01: 4536; DARWIN-64-STATIC: ## %bb.0: ## %entry 4537; DARWIN-64-STATIC-NEXT: movl $262144, %eax ## imm = 0x40000 4538; DARWIN-64-STATIC-NEXT: addq _dst@GOTPCREL(%rip), %rax 4539; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 4540; DARWIN-64-STATIC-NEXT: movq %rax, (%rcx) 4541; DARWIN-64-STATIC-NEXT: retq 4542; 4543; DARWIN-64-DYNAMIC-LABEL: moo01: 4544; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 4545; DARWIN-64-DYNAMIC-NEXT: movl $262144, %eax ## imm = 0x40000 4546; DARWIN-64-DYNAMIC-NEXT: addq _dst@GOTPCREL(%rip), %rax 4547; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 4548; DARWIN-64-DYNAMIC-NEXT: movq %rax, (%rcx) 4549; DARWIN-64-DYNAMIC-NEXT: retq 4550; 4551; DARWIN-64-PIC-LABEL: moo01: 4552; DARWIN-64-PIC: ## %bb.0: ## %entry 4553; DARWIN-64-PIC-NEXT: movl $262144, %eax ## imm = 0x40000 4554; DARWIN-64-PIC-NEXT: addq _dst@GOTPCREL(%rip), %rax 4555; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 4556; DARWIN-64-PIC-NEXT: movq %rax, (%rcx) 4557; DARWIN-64-PIC-NEXT: retq 4558 4559entry: 4560 store i32* getelementptr ([131072 x i32], [131072 x i32]* @dst, i32 0, i64 65536), i32** @ptr, align 8 4561 ret void 4562} 4563 4564define dso_local void @moo02(i64 %i) nounwind { 4565; LINUX-64-STATIC-LABEL: moo02: 4566; LINUX-64-STATIC: # %bb.0: # %entry 4567; LINUX-64-STATIC-NEXT: movq src@GOTPCREL(%rip), %rax 4568; LINUX-64-STATIC-NEXT: movl 262144(%rax), %eax 4569; LINUX-64-STATIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx 4570; LINUX-64-STATIC-NEXT: movq (%rcx), %rcx 4571; LINUX-64-STATIC-NEXT: movl %eax, 262144(%rcx) 4572; LINUX-64-STATIC-NEXT: retq 4573; 4574; LINUX-32-STATIC-LABEL: moo02: 4575; LINUX-32-STATIC: # %bb.0: # %entry 4576; LINUX-32-STATIC-NEXT: movl src+262144, %eax 4577; LINUX-32-STATIC-NEXT: movl ptr, %ecx 4578; LINUX-32-STATIC-NEXT: movl %eax, 262144(%ecx) 4579; LINUX-32-STATIC-NEXT: retl 4580; 4581; LINUX-32-PIC-LABEL: moo02: 4582; LINUX-32-PIC: # %bb.0: # %entry 4583; LINUX-32-PIC-NEXT: calll .L50$pb 4584; LINUX-32-PIC-NEXT: .L50$pb: 4585; LINUX-32-PIC-NEXT: popl %eax 4586; LINUX-32-PIC-NEXT: .Ltmp50: 4587; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp50-.L50$pb), %eax 4588; LINUX-32-PIC-NEXT: movl src@GOT(%eax), %ecx 4589; LINUX-32-PIC-NEXT: movl 262144(%ecx), %ecx 4590; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax 4591; LINUX-32-PIC-NEXT: movl (%eax), %eax 4592; LINUX-32-PIC-NEXT: movl %ecx, 262144(%eax) 4593; LINUX-32-PIC-NEXT: retl 4594; 4595; LINUX-64-PIC-LABEL: moo02: 4596; LINUX-64-PIC: # %bb.0: # %entry 4597; LINUX-64-PIC-NEXT: movq src@GOTPCREL(%rip), %rax 4598; LINUX-64-PIC-NEXT: movl 262144(%rax), %eax 4599; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx 4600; LINUX-64-PIC-NEXT: movq (%rcx), %rcx 4601; LINUX-64-PIC-NEXT: movl %eax, 262144(%rcx) 4602; LINUX-64-PIC-NEXT: retq 4603; 4604; DARWIN-32-STATIC-LABEL: moo02: 4605; DARWIN-32-STATIC: ## %bb.0: ## %entry 4606; DARWIN-32-STATIC-NEXT: movl _src+262144, %eax 4607; DARWIN-32-STATIC-NEXT: movl _ptr, %ecx 4608; DARWIN-32-STATIC-NEXT: movl %eax, 262144(%ecx) 4609; DARWIN-32-STATIC-NEXT: retl 4610; 4611; DARWIN-32-DYNAMIC-LABEL: moo02: 4612; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 4613; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %eax 4614; DARWIN-32-DYNAMIC-NEXT: movl 262144(%eax), %eax 4615; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx 4616; DARWIN-32-DYNAMIC-NEXT: movl (%ecx), %ecx 4617; DARWIN-32-DYNAMIC-NEXT: movl %eax, 262144(%ecx) 4618; DARWIN-32-DYNAMIC-NEXT: retl 4619; 4620; DARWIN-32-PIC-LABEL: moo02: 4621; DARWIN-32-PIC: ## %bb.0: ## %entry 4622; DARWIN-32-PIC-NEXT: calll L50$pb 4623; DARWIN-32-PIC-NEXT: L50$pb: 4624; DARWIN-32-PIC-NEXT: popl %eax 4625; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L50$pb(%eax), %ecx 4626; DARWIN-32-PIC-NEXT: movl 262144(%ecx), %ecx 4627; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L50$pb(%eax), %eax 4628; DARWIN-32-PIC-NEXT: movl (%eax), %eax 4629; DARWIN-32-PIC-NEXT: movl %ecx, 262144(%eax) 4630; DARWIN-32-PIC-NEXT: retl 4631; 4632; DARWIN-64-STATIC-LABEL: moo02: 4633; DARWIN-64-STATIC: ## %bb.0: ## %entry 4634; DARWIN-64-STATIC-NEXT: movq _src@GOTPCREL(%rip), %rax 4635; DARWIN-64-STATIC-NEXT: movl 262144(%rax), %eax 4636; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 4637; DARWIN-64-STATIC-NEXT: movq (%rcx), %rcx 4638; DARWIN-64-STATIC-NEXT: movl %eax, 262144(%rcx) 4639; DARWIN-64-STATIC-NEXT: retq 4640; 4641; DARWIN-64-DYNAMIC-LABEL: moo02: 4642; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 4643; DARWIN-64-DYNAMIC-NEXT: movq _src@GOTPCREL(%rip), %rax 4644; DARWIN-64-DYNAMIC-NEXT: movl 262144(%rax), %eax 4645; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 4646; DARWIN-64-DYNAMIC-NEXT: movq (%rcx), %rcx 4647; DARWIN-64-DYNAMIC-NEXT: movl %eax, 262144(%rcx) 4648; DARWIN-64-DYNAMIC-NEXT: retq 4649; 4650; DARWIN-64-PIC-LABEL: moo02: 4651; DARWIN-64-PIC: ## %bb.0: ## %entry 4652; DARWIN-64-PIC-NEXT: movq _src@GOTPCREL(%rip), %rax 4653; DARWIN-64-PIC-NEXT: movl 262144(%rax), %eax 4654; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 4655; DARWIN-64-PIC-NEXT: movq (%rcx), %rcx 4656; DARWIN-64-PIC-NEXT: movl %eax, 262144(%rcx) 4657; DARWIN-64-PIC-NEXT: retq 4658 4659entry: 4660 %0 = load i32*, i32** @ptr, align 8 4661 %1 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @src, i32 0, i64 65536), align 4 4662 %2 = getelementptr i32, i32* %0, i64 65536 4663 store i32 %1, i32* %2, align 4 4664 ret void 4665} 4666 4667define dso_local void @moo03(i64 %i) nounwind { 4668; LINUX-64-STATIC-LABEL: moo03: 4669; LINUX-64-STATIC: # %bb.0: # %entry 4670; LINUX-64-STATIC-NEXT: movl dsrc+262144(%rip), %eax 4671; LINUX-64-STATIC-NEXT: movl %eax, ddst+262144(%rip) 4672; LINUX-64-STATIC-NEXT: retq 4673; 4674; LINUX-32-STATIC-LABEL: moo03: 4675; LINUX-32-STATIC: # %bb.0: # %entry 4676; LINUX-32-STATIC-NEXT: movl dsrc+262144, %eax 4677; LINUX-32-STATIC-NEXT: movl %eax, ddst+262144 4678; LINUX-32-STATIC-NEXT: retl 4679; 4680; LINUX-32-PIC-LABEL: moo03: 4681; LINUX-32-PIC: # %bb.0: # %entry 4682; LINUX-32-PIC-NEXT: calll .L51$pb 4683; LINUX-32-PIC-NEXT: .L51$pb: 4684; LINUX-32-PIC-NEXT: popl %eax 4685; LINUX-32-PIC-NEXT: .Ltmp51: 4686; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp51-.L51$pb), %eax 4687; LINUX-32-PIC-NEXT: movl .Ldsrc$local@GOTOFF+262144(%eax), %ecx 4688; LINUX-32-PIC-NEXT: movl %ecx, .Lddst$local@GOTOFF+262144(%eax) 4689; LINUX-32-PIC-NEXT: retl 4690; 4691; LINUX-64-PIC-LABEL: moo03: 4692; LINUX-64-PIC: # %bb.0: # %entry 4693; LINUX-64-PIC-NEXT: movl .Ldsrc$local+262144(%rip), %eax 4694; LINUX-64-PIC-NEXT: movl %eax, .Lddst$local+262144(%rip) 4695; LINUX-64-PIC-NEXT: retq 4696; 4697; DARWIN-32-STATIC-LABEL: moo03: 4698; DARWIN-32-STATIC: ## %bb.0: ## %entry 4699; DARWIN-32-STATIC-NEXT: movl _dsrc+262144, %eax 4700; DARWIN-32-STATIC-NEXT: movl %eax, _ddst+262144 4701; DARWIN-32-STATIC-NEXT: retl 4702; 4703; DARWIN-32-DYNAMIC-LABEL: moo03: 4704; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 4705; DARWIN-32-DYNAMIC-NEXT: movl _dsrc+262144, %eax 4706; DARWIN-32-DYNAMIC-NEXT: movl %eax, _ddst+262144 4707; DARWIN-32-DYNAMIC-NEXT: retl 4708; 4709; DARWIN-32-PIC-LABEL: moo03: 4710; DARWIN-32-PIC: ## %bb.0: ## %entry 4711; DARWIN-32-PIC-NEXT: calll L51$pb 4712; DARWIN-32-PIC-NEXT: L51$pb: 4713; DARWIN-32-PIC-NEXT: popl %eax 4714; DARWIN-32-PIC-NEXT: movl (_dsrc-L51$pb)+262144(%eax), %ecx 4715; DARWIN-32-PIC-NEXT: movl %ecx, (_ddst-L51$pb)+262144(%eax) 4716; DARWIN-32-PIC-NEXT: retl 4717; 4718; DARWIN-64-STATIC-LABEL: moo03: 4719; DARWIN-64-STATIC: ## %bb.0: ## %entry 4720; DARWIN-64-STATIC-NEXT: movl _dsrc+262144(%rip), %eax 4721; DARWIN-64-STATIC-NEXT: movl %eax, _ddst+262144(%rip) 4722; DARWIN-64-STATIC-NEXT: retq 4723; 4724; DARWIN-64-DYNAMIC-LABEL: moo03: 4725; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 4726; DARWIN-64-DYNAMIC-NEXT: movl _dsrc+262144(%rip), %eax 4727; DARWIN-64-DYNAMIC-NEXT: movl %eax, _ddst+262144(%rip) 4728; DARWIN-64-DYNAMIC-NEXT: retq 4729; 4730; DARWIN-64-PIC-LABEL: moo03: 4731; DARWIN-64-PIC: ## %bb.0: ## %entry 4732; DARWIN-64-PIC-NEXT: movl _dsrc+262144(%rip), %eax 4733; DARWIN-64-PIC-NEXT: movl %eax, _ddst+262144(%rip) 4734; DARWIN-64-PIC-NEXT: retq 4735 4736entry: 4737 %0 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @dsrc, i32 0, i64 65536), align 32 4738 store i32 %0, i32* getelementptr ([131072 x i32], [131072 x i32]* @ddst, i32 0, i64 65536), align 32 4739 ret void 4740} 4741 4742define dso_local void @moo04(i64 %i) nounwind { 4743; LINUX-64-STATIC-LABEL: moo04: 4744; LINUX-64-STATIC: # %bb.0: # %entry 4745; LINUX-64-STATIC-NEXT: movq $ddst+262144, dptr(%rip) 4746; LINUX-64-STATIC-NEXT: retq 4747; 4748; LINUX-32-STATIC-LABEL: moo04: 4749; LINUX-32-STATIC: # %bb.0: # %entry 4750; LINUX-32-STATIC-NEXT: movl $ddst+262144, dptr 4751; LINUX-32-STATIC-NEXT: retl 4752; 4753; LINUX-32-PIC-LABEL: moo04: 4754; LINUX-32-PIC: # %bb.0: # %entry 4755; LINUX-32-PIC-NEXT: calll .L52$pb 4756; LINUX-32-PIC-NEXT: .L52$pb: 4757; LINUX-32-PIC-NEXT: popl %eax 4758; LINUX-32-PIC-NEXT: .Ltmp52: 4759; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp52-.L52$pb), %eax 4760; LINUX-32-PIC-NEXT: leal .Lddst$local@GOTOFF+262144(%eax), %ecx 4761; LINUX-32-PIC-NEXT: movl %ecx, .Ldptr$local@GOTOFF(%eax) 4762; LINUX-32-PIC-NEXT: retl 4763; 4764; LINUX-64-PIC-LABEL: moo04: 4765; LINUX-64-PIC: # %bb.0: # %entry 4766; LINUX-64-PIC-NEXT: leaq .Lddst$local+262144(%rip), %rax 4767; LINUX-64-PIC-NEXT: movq %rax, .Ldptr$local(%rip) 4768; LINUX-64-PIC-NEXT: retq 4769; 4770; DARWIN-32-STATIC-LABEL: moo04: 4771; DARWIN-32-STATIC: ## %bb.0: ## %entry 4772; DARWIN-32-STATIC-NEXT: movl $_ddst+262144, _dptr 4773; DARWIN-32-STATIC-NEXT: retl 4774; 4775; DARWIN-32-DYNAMIC-LABEL: moo04: 4776; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 4777; DARWIN-32-DYNAMIC-NEXT: movl $_ddst+262144, _dptr 4778; DARWIN-32-DYNAMIC-NEXT: retl 4779; 4780; DARWIN-32-PIC-LABEL: moo04: 4781; DARWIN-32-PIC: ## %bb.0: ## %entry 4782; DARWIN-32-PIC-NEXT: calll L52$pb 4783; DARWIN-32-PIC-NEXT: L52$pb: 4784; DARWIN-32-PIC-NEXT: popl %eax 4785; DARWIN-32-PIC-NEXT: leal (_ddst-L52$pb)+262144(%eax), %ecx 4786; DARWIN-32-PIC-NEXT: movl %ecx, _dptr-L52$pb(%eax) 4787; DARWIN-32-PIC-NEXT: retl 4788; 4789; DARWIN-64-STATIC-LABEL: moo04: 4790; DARWIN-64-STATIC: ## %bb.0: ## %entry 4791; DARWIN-64-STATIC-NEXT: leaq _ddst+262144(%rip), %rax 4792; DARWIN-64-STATIC-NEXT: movq %rax, _dptr(%rip) 4793; DARWIN-64-STATIC-NEXT: retq 4794; 4795; DARWIN-64-DYNAMIC-LABEL: moo04: 4796; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 4797; DARWIN-64-DYNAMIC-NEXT: leaq _ddst+262144(%rip), %rax 4798; DARWIN-64-DYNAMIC-NEXT: movq %rax, _dptr(%rip) 4799; DARWIN-64-DYNAMIC-NEXT: retq 4800; 4801; DARWIN-64-PIC-LABEL: moo04: 4802; DARWIN-64-PIC: ## %bb.0: ## %entry 4803; DARWIN-64-PIC-NEXT: leaq _ddst+262144(%rip), %rax 4804; DARWIN-64-PIC-NEXT: movq %rax, _dptr(%rip) 4805; DARWIN-64-PIC-NEXT: retq 4806 4807entry: 4808 store i32* getelementptr ([131072 x i32], [131072 x i32]* @ddst, i32 0, i64 65536), i32** @dptr, align 8 4809 ret void 4810} 4811 4812define dso_local void @moo05(i64 %i) nounwind { 4813; LINUX-64-STATIC-LABEL: moo05: 4814; LINUX-64-STATIC: # %bb.0: # %entry 4815; LINUX-64-STATIC-NEXT: movl dsrc+262144(%rip), %eax 4816; LINUX-64-STATIC-NEXT: movq dptr(%rip), %rcx 4817; LINUX-64-STATIC-NEXT: movl %eax, 262144(%rcx) 4818; LINUX-64-STATIC-NEXT: retq 4819; 4820; LINUX-32-STATIC-LABEL: moo05: 4821; LINUX-32-STATIC: # %bb.0: # %entry 4822; LINUX-32-STATIC-NEXT: movl dsrc+262144, %eax 4823; LINUX-32-STATIC-NEXT: movl dptr, %ecx 4824; LINUX-32-STATIC-NEXT: movl %eax, 262144(%ecx) 4825; LINUX-32-STATIC-NEXT: retl 4826; 4827; LINUX-32-PIC-LABEL: moo05: 4828; LINUX-32-PIC: # %bb.0: # %entry 4829; LINUX-32-PIC-NEXT: calll .L53$pb 4830; LINUX-32-PIC-NEXT: .L53$pb: 4831; LINUX-32-PIC-NEXT: popl %eax 4832; LINUX-32-PIC-NEXT: .Ltmp53: 4833; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp53-.L53$pb), %eax 4834; LINUX-32-PIC-NEXT: movl .Ldsrc$local@GOTOFF+262144(%eax), %ecx 4835; LINUX-32-PIC-NEXT: movl .Ldptr$local@GOTOFF(%eax), %eax 4836; LINUX-32-PIC-NEXT: movl %ecx, 262144(%eax) 4837; LINUX-32-PIC-NEXT: retl 4838; 4839; LINUX-64-PIC-LABEL: moo05: 4840; LINUX-64-PIC: # %bb.0: # %entry 4841; LINUX-64-PIC-NEXT: movl .Ldsrc$local+262144(%rip), %eax 4842; LINUX-64-PIC-NEXT: movq .Ldptr$local(%rip), %rcx 4843; LINUX-64-PIC-NEXT: movl %eax, 262144(%rcx) 4844; LINUX-64-PIC-NEXT: retq 4845; 4846; DARWIN-32-STATIC-LABEL: moo05: 4847; DARWIN-32-STATIC: ## %bb.0: ## %entry 4848; DARWIN-32-STATIC-NEXT: movl _dsrc+262144, %eax 4849; DARWIN-32-STATIC-NEXT: movl _dptr, %ecx 4850; DARWIN-32-STATIC-NEXT: movl %eax, 262144(%ecx) 4851; DARWIN-32-STATIC-NEXT: retl 4852; 4853; DARWIN-32-DYNAMIC-LABEL: moo05: 4854; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 4855; DARWIN-32-DYNAMIC-NEXT: movl _dsrc+262144, %eax 4856; DARWIN-32-DYNAMIC-NEXT: movl _dptr, %ecx 4857; DARWIN-32-DYNAMIC-NEXT: movl %eax, 262144(%ecx) 4858; DARWIN-32-DYNAMIC-NEXT: retl 4859; 4860; DARWIN-32-PIC-LABEL: moo05: 4861; DARWIN-32-PIC: ## %bb.0: ## %entry 4862; DARWIN-32-PIC-NEXT: calll L53$pb 4863; DARWIN-32-PIC-NEXT: L53$pb: 4864; DARWIN-32-PIC-NEXT: popl %eax 4865; DARWIN-32-PIC-NEXT: movl (_dsrc-L53$pb)+262144(%eax), %ecx 4866; DARWIN-32-PIC-NEXT: movl _dptr-L53$pb(%eax), %eax 4867; DARWIN-32-PIC-NEXT: movl %ecx, 262144(%eax) 4868; DARWIN-32-PIC-NEXT: retl 4869; 4870; DARWIN-64-STATIC-LABEL: moo05: 4871; DARWIN-64-STATIC: ## %bb.0: ## %entry 4872; DARWIN-64-STATIC-NEXT: movl _dsrc+262144(%rip), %eax 4873; DARWIN-64-STATIC-NEXT: movq _dptr(%rip), %rcx 4874; DARWIN-64-STATIC-NEXT: movl %eax, 262144(%rcx) 4875; DARWIN-64-STATIC-NEXT: retq 4876; 4877; DARWIN-64-DYNAMIC-LABEL: moo05: 4878; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 4879; DARWIN-64-DYNAMIC-NEXT: movl _dsrc+262144(%rip), %eax 4880; DARWIN-64-DYNAMIC-NEXT: movq _dptr(%rip), %rcx 4881; DARWIN-64-DYNAMIC-NEXT: movl %eax, 262144(%rcx) 4882; DARWIN-64-DYNAMIC-NEXT: retq 4883; 4884; DARWIN-64-PIC-LABEL: moo05: 4885; DARWIN-64-PIC: ## %bb.0: ## %entry 4886; DARWIN-64-PIC-NEXT: movl _dsrc+262144(%rip), %eax 4887; DARWIN-64-PIC-NEXT: movq _dptr(%rip), %rcx 4888; DARWIN-64-PIC-NEXT: movl %eax, 262144(%rcx) 4889; DARWIN-64-PIC-NEXT: retq 4890 4891entry: 4892 %0 = load i32*, i32** @dptr, align 8 4893 %1 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @dsrc, i32 0, i64 65536), align 32 4894 %2 = getelementptr i32, i32* %0, i64 65536 4895 store i32 %1, i32* %2, align 4 4896 ret void 4897} 4898 4899define dso_local void @moo06(i64 %i) nounwind { 4900; LINUX-64-STATIC-LABEL: moo06: 4901; LINUX-64-STATIC: # %bb.0: # %entry 4902; LINUX-64-STATIC-NEXT: movl lsrc+262144(%rip), %eax 4903; LINUX-64-STATIC-NEXT: movl %eax, ldst+262144(%rip) 4904; LINUX-64-STATIC-NEXT: retq 4905; 4906; LINUX-32-STATIC-LABEL: moo06: 4907; LINUX-32-STATIC: # %bb.0: # %entry 4908; LINUX-32-STATIC-NEXT: movl lsrc+262144, %eax 4909; LINUX-32-STATIC-NEXT: movl %eax, ldst+262144 4910; LINUX-32-STATIC-NEXT: retl 4911; 4912; LINUX-32-PIC-LABEL: moo06: 4913; LINUX-32-PIC: # %bb.0: # %entry 4914; LINUX-32-PIC-NEXT: calll .L54$pb 4915; LINUX-32-PIC-NEXT: .L54$pb: 4916; LINUX-32-PIC-NEXT: popl %eax 4917; LINUX-32-PIC-NEXT: .Ltmp54: 4918; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp54-.L54$pb), %eax 4919; LINUX-32-PIC-NEXT: movl lsrc@GOTOFF+262144(%eax), %ecx 4920; LINUX-32-PIC-NEXT: movl %ecx, ldst@GOTOFF+262144(%eax) 4921; LINUX-32-PIC-NEXT: retl 4922; 4923; LINUX-64-PIC-LABEL: moo06: 4924; LINUX-64-PIC: # %bb.0: # %entry 4925; LINUX-64-PIC-NEXT: movl lsrc+262144(%rip), %eax 4926; LINUX-64-PIC-NEXT: movl %eax, ldst+262144(%rip) 4927; LINUX-64-PIC-NEXT: retq 4928; 4929; DARWIN-32-STATIC-LABEL: moo06: 4930; DARWIN-32-STATIC: ## %bb.0: ## %entry 4931; DARWIN-32-STATIC-NEXT: movl _lsrc+262144, %eax 4932; DARWIN-32-STATIC-NEXT: movl %eax, _ldst+262144 4933; DARWIN-32-STATIC-NEXT: retl 4934; 4935; DARWIN-32-DYNAMIC-LABEL: moo06: 4936; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 4937; DARWIN-32-DYNAMIC-NEXT: movl _lsrc+262144, %eax 4938; DARWIN-32-DYNAMIC-NEXT: movl %eax, _ldst+262144 4939; DARWIN-32-DYNAMIC-NEXT: retl 4940; 4941; DARWIN-32-PIC-LABEL: moo06: 4942; DARWIN-32-PIC: ## %bb.0: ## %entry 4943; DARWIN-32-PIC-NEXT: calll L54$pb 4944; DARWIN-32-PIC-NEXT: L54$pb: 4945; DARWIN-32-PIC-NEXT: popl %eax 4946; DARWIN-32-PIC-NEXT: movl (_lsrc-L54$pb)+262144(%eax), %ecx 4947; DARWIN-32-PIC-NEXT: movl %ecx, (_ldst-L54$pb)+262144(%eax) 4948; DARWIN-32-PIC-NEXT: retl 4949; 4950; DARWIN-64-STATIC-LABEL: moo06: 4951; DARWIN-64-STATIC: ## %bb.0: ## %entry 4952; DARWIN-64-STATIC-NEXT: movl _lsrc+262144(%rip), %eax 4953; DARWIN-64-STATIC-NEXT: movl %eax, _ldst+262144(%rip) 4954; DARWIN-64-STATIC-NEXT: retq 4955; 4956; DARWIN-64-DYNAMIC-LABEL: moo06: 4957; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 4958; DARWIN-64-DYNAMIC-NEXT: movl _lsrc+262144(%rip), %eax 4959; DARWIN-64-DYNAMIC-NEXT: movl %eax, _ldst+262144(%rip) 4960; DARWIN-64-DYNAMIC-NEXT: retq 4961; 4962; DARWIN-64-PIC-LABEL: moo06: 4963; DARWIN-64-PIC: ## %bb.0: ## %entry 4964; DARWIN-64-PIC-NEXT: movl _lsrc+262144(%rip), %eax 4965; DARWIN-64-PIC-NEXT: movl %eax, _ldst+262144(%rip) 4966; DARWIN-64-PIC-NEXT: retq 4967 4968entry: 4969 %0 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @lsrc, i32 0, i64 65536), align 4 4970 store i32 %0, i32* getelementptr ([131072 x i32], [131072 x i32]* @ldst, i32 0, i64 65536), align 4 4971 ret void 4972} 4973 4974define dso_local void @moo07(i64 %i) nounwind { 4975; LINUX-64-STATIC-LABEL: moo07: 4976; LINUX-64-STATIC: # %bb.0: # %entry 4977; LINUX-64-STATIC-NEXT: movq $ldst+262144, lptr(%rip) 4978; LINUX-64-STATIC-NEXT: retq 4979; 4980; LINUX-32-STATIC-LABEL: moo07: 4981; LINUX-32-STATIC: # %bb.0: # %entry 4982; LINUX-32-STATIC-NEXT: movl $ldst+262144, lptr 4983; LINUX-32-STATIC-NEXT: retl 4984; 4985; LINUX-32-PIC-LABEL: moo07: 4986; LINUX-32-PIC: # %bb.0: # %entry 4987; LINUX-32-PIC-NEXT: calll .L55$pb 4988; LINUX-32-PIC-NEXT: .L55$pb: 4989; LINUX-32-PIC-NEXT: popl %eax 4990; LINUX-32-PIC-NEXT: .Ltmp55: 4991; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp55-.L55$pb), %eax 4992; LINUX-32-PIC-NEXT: leal ldst@GOTOFF+262144(%eax), %ecx 4993; LINUX-32-PIC-NEXT: movl %ecx, lptr@GOTOFF(%eax) 4994; LINUX-32-PIC-NEXT: retl 4995; 4996; LINUX-64-PIC-LABEL: moo07: 4997; LINUX-64-PIC: # %bb.0: # %entry 4998; LINUX-64-PIC-NEXT: leaq ldst+262144(%rip), %rax 4999; LINUX-64-PIC-NEXT: movq %rax, lptr(%rip) 5000; LINUX-64-PIC-NEXT: retq 5001; 5002; DARWIN-32-STATIC-LABEL: moo07: 5003; DARWIN-32-STATIC: ## %bb.0: ## %entry 5004; DARWIN-32-STATIC-NEXT: movl $_ldst+262144, _lptr 5005; DARWIN-32-STATIC-NEXT: retl 5006; 5007; DARWIN-32-DYNAMIC-LABEL: moo07: 5008; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 5009; DARWIN-32-DYNAMIC-NEXT: movl $_ldst+262144, _lptr 5010; DARWIN-32-DYNAMIC-NEXT: retl 5011; 5012; DARWIN-32-PIC-LABEL: moo07: 5013; DARWIN-32-PIC: ## %bb.0: ## %entry 5014; DARWIN-32-PIC-NEXT: calll L55$pb 5015; DARWIN-32-PIC-NEXT: L55$pb: 5016; DARWIN-32-PIC-NEXT: popl %eax 5017; DARWIN-32-PIC-NEXT: leal (_ldst-L55$pb)+262144(%eax), %ecx 5018; DARWIN-32-PIC-NEXT: movl %ecx, _lptr-L55$pb(%eax) 5019; DARWIN-32-PIC-NEXT: retl 5020; 5021; DARWIN-64-STATIC-LABEL: moo07: 5022; DARWIN-64-STATIC: ## %bb.0: ## %entry 5023; DARWIN-64-STATIC-NEXT: leaq _ldst+262144(%rip), %rax 5024; DARWIN-64-STATIC-NEXT: movq %rax, _lptr(%rip) 5025; DARWIN-64-STATIC-NEXT: retq 5026; 5027; DARWIN-64-DYNAMIC-LABEL: moo07: 5028; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 5029; DARWIN-64-DYNAMIC-NEXT: leaq _ldst+262144(%rip), %rax 5030; DARWIN-64-DYNAMIC-NEXT: movq %rax, _lptr(%rip) 5031; DARWIN-64-DYNAMIC-NEXT: retq 5032; 5033; DARWIN-64-PIC-LABEL: moo07: 5034; DARWIN-64-PIC: ## %bb.0: ## %entry 5035; DARWIN-64-PIC-NEXT: leaq _ldst+262144(%rip), %rax 5036; DARWIN-64-PIC-NEXT: movq %rax, _lptr(%rip) 5037; DARWIN-64-PIC-NEXT: retq 5038 5039entry: 5040 store i32* getelementptr ([131072 x i32], [131072 x i32]* @ldst, i32 0, i64 65536), i32** @lptr, align 8 5041 ret void 5042} 5043 5044define dso_local void @moo08(i64 %i) nounwind { 5045; LINUX-64-STATIC-LABEL: moo08: 5046; LINUX-64-STATIC: # %bb.0: # %entry 5047; LINUX-64-STATIC-NEXT: movl lsrc+262144(%rip), %eax 5048; LINUX-64-STATIC-NEXT: movq lptr(%rip), %rcx 5049; LINUX-64-STATIC-NEXT: movl %eax, 262144(%rcx) 5050; LINUX-64-STATIC-NEXT: retq 5051; 5052; LINUX-32-STATIC-LABEL: moo08: 5053; LINUX-32-STATIC: # %bb.0: # %entry 5054; LINUX-32-STATIC-NEXT: movl lsrc+262144, %eax 5055; LINUX-32-STATIC-NEXT: movl lptr, %ecx 5056; LINUX-32-STATIC-NEXT: movl %eax, 262144(%ecx) 5057; LINUX-32-STATIC-NEXT: retl 5058; 5059; LINUX-32-PIC-LABEL: moo08: 5060; LINUX-32-PIC: # %bb.0: # %entry 5061; LINUX-32-PIC-NEXT: calll .L56$pb 5062; LINUX-32-PIC-NEXT: .L56$pb: 5063; LINUX-32-PIC-NEXT: popl %eax 5064; LINUX-32-PIC-NEXT: .Ltmp56: 5065; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp56-.L56$pb), %eax 5066; LINUX-32-PIC-NEXT: movl lsrc@GOTOFF+262144(%eax), %ecx 5067; LINUX-32-PIC-NEXT: movl lptr@GOTOFF(%eax), %eax 5068; LINUX-32-PIC-NEXT: movl %ecx, 262144(%eax) 5069; LINUX-32-PIC-NEXT: retl 5070; 5071; LINUX-64-PIC-LABEL: moo08: 5072; LINUX-64-PIC: # %bb.0: # %entry 5073; LINUX-64-PIC-NEXT: movl lsrc+262144(%rip), %eax 5074; LINUX-64-PIC-NEXT: movq lptr(%rip), %rcx 5075; LINUX-64-PIC-NEXT: movl %eax, 262144(%rcx) 5076; LINUX-64-PIC-NEXT: retq 5077; 5078; DARWIN-32-STATIC-LABEL: moo08: 5079; DARWIN-32-STATIC: ## %bb.0: ## %entry 5080; DARWIN-32-STATIC-NEXT: movl _lsrc+262144, %eax 5081; DARWIN-32-STATIC-NEXT: movl _lptr, %ecx 5082; DARWIN-32-STATIC-NEXT: movl %eax, 262144(%ecx) 5083; DARWIN-32-STATIC-NEXT: retl 5084; 5085; DARWIN-32-DYNAMIC-LABEL: moo08: 5086; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 5087; DARWIN-32-DYNAMIC-NEXT: movl _lsrc+262144, %eax 5088; DARWIN-32-DYNAMIC-NEXT: movl _lptr, %ecx 5089; DARWIN-32-DYNAMIC-NEXT: movl %eax, 262144(%ecx) 5090; DARWIN-32-DYNAMIC-NEXT: retl 5091; 5092; DARWIN-32-PIC-LABEL: moo08: 5093; DARWIN-32-PIC: ## %bb.0: ## %entry 5094; DARWIN-32-PIC-NEXT: calll L56$pb 5095; DARWIN-32-PIC-NEXT: L56$pb: 5096; DARWIN-32-PIC-NEXT: popl %eax 5097; DARWIN-32-PIC-NEXT: movl (_lsrc-L56$pb)+262144(%eax), %ecx 5098; DARWIN-32-PIC-NEXT: movl _lptr-L56$pb(%eax), %eax 5099; DARWIN-32-PIC-NEXT: movl %ecx, 262144(%eax) 5100; DARWIN-32-PIC-NEXT: retl 5101; 5102; DARWIN-64-STATIC-LABEL: moo08: 5103; DARWIN-64-STATIC: ## %bb.0: ## %entry 5104; DARWIN-64-STATIC-NEXT: movl _lsrc+262144(%rip), %eax 5105; DARWIN-64-STATIC-NEXT: movq _lptr(%rip), %rcx 5106; DARWIN-64-STATIC-NEXT: movl %eax, 262144(%rcx) 5107; DARWIN-64-STATIC-NEXT: retq 5108; 5109; DARWIN-64-DYNAMIC-LABEL: moo08: 5110; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 5111; DARWIN-64-DYNAMIC-NEXT: movl _lsrc+262144(%rip), %eax 5112; DARWIN-64-DYNAMIC-NEXT: movq _lptr(%rip), %rcx 5113; DARWIN-64-DYNAMIC-NEXT: movl %eax, 262144(%rcx) 5114; DARWIN-64-DYNAMIC-NEXT: retq 5115; 5116; DARWIN-64-PIC-LABEL: moo08: 5117; DARWIN-64-PIC: ## %bb.0: ## %entry 5118; DARWIN-64-PIC-NEXT: movl _lsrc+262144(%rip), %eax 5119; DARWIN-64-PIC-NEXT: movq _lptr(%rip), %rcx 5120; DARWIN-64-PIC-NEXT: movl %eax, 262144(%rcx) 5121; DARWIN-64-PIC-NEXT: retq 5122 5123entry: 5124 %0 = load i32*, i32** @lptr, align 8 5125 %1 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @lsrc, i32 0, i64 65536), align 4 5126 %2 = getelementptr i32, i32* %0, i64 65536 5127 store i32 %1, i32* %2, align 4 5128 ret void 5129} 5130 5131define dso_local void @big00(i64 %i) nounwind { 5132; LINUX-64-STATIC-LABEL: big00: 5133; LINUX-64-STATIC: # %bb.0: # %entry 5134; LINUX-64-STATIC-NEXT: movq src@GOTPCREL(%rip), %rax 5135; LINUX-64-STATIC-NEXT: movl 262144(%rax,%rdi,4), %eax 5136; LINUX-64-STATIC-NEXT: movq dst@GOTPCREL(%rip), %rcx 5137; LINUX-64-STATIC-NEXT: movl %eax, 262144(%rcx,%rdi,4) 5138; LINUX-64-STATIC-NEXT: retq 5139; 5140; LINUX-32-STATIC-LABEL: big00: 5141; LINUX-32-STATIC: # %bb.0: # %entry 5142; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 5143; LINUX-32-STATIC-NEXT: movl src+262144(,%eax,4), %ecx 5144; LINUX-32-STATIC-NEXT: movl %ecx, dst+262144(,%eax,4) 5145; LINUX-32-STATIC-NEXT: retl 5146; 5147; LINUX-32-PIC-LABEL: big00: 5148; LINUX-32-PIC: # %bb.0: # %entry 5149; LINUX-32-PIC-NEXT: calll .L57$pb 5150; LINUX-32-PIC-NEXT: .L57$pb: 5151; LINUX-32-PIC-NEXT: popl %eax 5152; LINUX-32-PIC-NEXT: .Ltmp57: 5153; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp57-.L57$pb), %eax 5154; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 5155; LINUX-32-PIC-NEXT: movl src@GOT(%eax), %edx 5156; LINUX-32-PIC-NEXT: movl 262144(%edx,%ecx,4), %edx 5157; LINUX-32-PIC-NEXT: movl dst@GOT(%eax), %eax 5158; LINUX-32-PIC-NEXT: movl %edx, 262144(%eax,%ecx,4) 5159; LINUX-32-PIC-NEXT: retl 5160; 5161; LINUX-64-PIC-LABEL: big00: 5162; LINUX-64-PIC: # %bb.0: # %entry 5163; LINUX-64-PIC-NEXT: movq src@GOTPCREL(%rip), %rax 5164; LINUX-64-PIC-NEXT: movl 262144(%rax,%rdi,4), %eax 5165; LINUX-64-PIC-NEXT: movq dst@GOTPCREL(%rip), %rcx 5166; LINUX-64-PIC-NEXT: movl %eax, 262144(%rcx,%rdi,4) 5167; LINUX-64-PIC-NEXT: retq 5168; 5169; DARWIN-32-STATIC-LABEL: big00: 5170; DARWIN-32-STATIC: ## %bb.0: ## %entry 5171; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 5172; DARWIN-32-STATIC-NEXT: movl _src+262144(,%eax,4), %ecx 5173; DARWIN-32-STATIC-NEXT: movl %ecx, _dst+262144(,%eax,4) 5174; DARWIN-32-STATIC-NEXT: retl 5175; 5176; DARWIN-32-DYNAMIC-LABEL: big00: 5177; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 5178; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 5179; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %ecx 5180; DARWIN-32-DYNAMIC-NEXT: movl 262144(%ecx,%eax,4), %ecx 5181; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, %edx 5182; DARWIN-32-DYNAMIC-NEXT: movl %ecx, 262144(%edx,%eax,4) 5183; DARWIN-32-DYNAMIC-NEXT: retl 5184; 5185; DARWIN-32-PIC-LABEL: big00: 5186; DARWIN-32-PIC: ## %bb.0: ## %entry 5187; DARWIN-32-PIC-NEXT: calll L57$pb 5188; DARWIN-32-PIC-NEXT: L57$pb: 5189; DARWIN-32-PIC-NEXT: popl %eax 5190; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 5191; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L57$pb(%eax), %edx 5192; DARWIN-32-PIC-NEXT: movl 262144(%edx,%ecx,4), %edx 5193; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L57$pb(%eax), %eax 5194; DARWIN-32-PIC-NEXT: movl %edx, 262144(%eax,%ecx,4) 5195; DARWIN-32-PIC-NEXT: retl 5196; 5197; DARWIN-64-STATIC-LABEL: big00: 5198; DARWIN-64-STATIC: ## %bb.0: ## %entry 5199; DARWIN-64-STATIC-NEXT: movq _src@GOTPCREL(%rip), %rax 5200; DARWIN-64-STATIC-NEXT: movl 262144(%rax,%rdi,4), %eax 5201; DARWIN-64-STATIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx 5202; DARWIN-64-STATIC-NEXT: movl %eax, 262144(%rcx,%rdi,4) 5203; DARWIN-64-STATIC-NEXT: retq 5204; 5205; DARWIN-64-DYNAMIC-LABEL: big00: 5206; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 5207; DARWIN-64-DYNAMIC-NEXT: movq _src@GOTPCREL(%rip), %rax 5208; DARWIN-64-DYNAMIC-NEXT: movl 262144(%rax,%rdi,4), %eax 5209; DARWIN-64-DYNAMIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx 5210; DARWIN-64-DYNAMIC-NEXT: movl %eax, 262144(%rcx,%rdi,4) 5211; DARWIN-64-DYNAMIC-NEXT: retq 5212; 5213; DARWIN-64-PIC-LABEL: big00: 5214; DARWIN-64-PIC: ## %bb.0: ## %entry 5215; DARWIN-64-PIC-NEXT: movq _src@GOTPCREL(%rip), %rax 5216; DARWIN-64-PIC-NEXT: movl 262144(%rax,%rdi,4), %eax 5217; DARWIN-64-PIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx 5218; DARWIN-64-PIC-NEXT: movl %eax, 262144(%rcx,%rdi,4) 5219; DARWIN-64-PIC-NEXT: retq 5220 5221entry: 5222 %0 = add i64 %i, 65536 5223 %1 = getelementptr [131072 x i32], [131072 x i32]* @src, i64 0, i64 %0 5224 %2 = load i32, i32* %1, align 4 5225 %3 = getelementptr [131072 x i32], [131072 x i32]* @dst, i64 0, i64 %0 5226 store i32 %2, i32* %3, align 4 5227 ret void 5228} 5229 5230define dso_local void @big01(i64 %i) nounwind { 5231; LINUX-64-STATIC-LABEL: big01: 5232; LINUX-64-STATIC: # %bb.0: # %entry 5233; LINUX-64-STATIC-NEXT: movq dst@GOTPCREL(%rip), %rax 5234; LINUX-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 5235; LINUX-64-STATIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx 5236; LINUX-64-STATIC-NEXT: movq %rax, (%rcx) 5237; LINUX-64-STATIC-NEXT: retq 5238; 5239; LINUX-32-STATIC-LABEL: big01: 5240; LINUX-32-STATIC: # %bb.0: # %entry 5241; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 5242; LINUX-32-STATIC-NEXT: leal dst+262144(,%eax,4), %eax 5243; LINUX-32-STATIC-NEXT: movl %eax, ptr 5244; LINUX-32-STATIC-NEXT: retl 5245; 5246; LINUX-32-PIC-LABEL: big01: 5247; LINUX-32-PIC: # %bb.0: # %entry 5248; LINUX-32-PIC-NEXT: calll .L58$pb 5249; LINUX-32-PIC-NEXT: .L58$pb: 5250; LINUX-32-PIC-NEXT: popl %eax 5251; LINUX-32-PIC-NEXT: .Ltmp58: 5252; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp58-.L58$pb), %eax 5253; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 5254; LINUX-32-PIC-NEXT: movl dst@GOT(%eax), %edx 5255; LINUX-32-PIC-NEXT: leal 262144(%edx,%ecx,4), %ecx 5256; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax 5257; LINUX-32-PIC-NEXT: movl %ecx, (%eax) 5258; LINUX-32-PIC-NEXT: retl 5259; 5260; LINUX-64-PIC-LABEL: big01: 5261; LINUX-64-PIC: # %bb.0: # %entry 5262; LINUX-64-PIC-NEXT: movq dst@GOTPCREL(%rip), %rax 5263; LINUX-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 5264; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx 5265; LINUX-64-PIC-NEXT: movq %rax, (%rcx) 5266; LINUX-64-PIC-NEXT: retq 5267; 5268; DARWIN-32-STATIC-LABEL: big01: 5269; DARWIN-32-STATIC: ## %bb.0: ## %entry 5270; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 5271; DARWIN-32-STATIC-NEXT: leal _dst+262144(,%eax,4), %eax 5272; DARWIN-32-STATIC-NEXT: movl %eax, _ptr 5273; DARWIN-32-STATIC-NEXT: retl 5274; 5275; DARWIN-32-DYNAMIC-LABEL: big01: 5276; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 5277; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 5278; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, %ecx 5279; DARWIN-32-DYNAMIC-NEXT: leal 262144(%ecx,%eax,4), %eax 5280; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx 5281; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx) 5282; DARWIN-32-DYNAMIC-NEXT: retl 5283; 5284; DARWIN-32-PIC-LABEL: big01: 5285; DARWIN-32-PIC: ## %bb.0: ## %entry 5286; DARWIN-32-PIC-NEXT: calll L58$pb 5287; DARWIN-32-PIC-NEXT: L58$pb: 5288; DARWIN-32-PIC-NEXT: popl %eax 5289; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 5290; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L58$pb(%eax), %edx 5291; DARWIN-32-PIC-NEXT: leal 262144(%edx,%ecx,4), %ecx 5292; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L58$pb(%eax), %eax 5293; DARWIN-32-PIC-NEXT: movl %ecx, (%eax) 5294; DARWIN-32-PIC-NEXT: retl 5295; 5296; DARWIN-64-STATIC-LABEL: big01: 5297; DARWIN-64-STATIC: ## %bb.0: ## %entry 5298; DARWIN-64-STATIC-NEXT: movq _dst@GOTPCREL(%rip), %rax 5299; DARWIN-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 5300; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 5301; DARWIN-64-STATIC-NEXT: movq %rax, (%rcx) 5302; DARWIN-64-STATIC-NEXT: retq 5303; 5304; DARWIN-64-DYNAMIC-LABEL: big01: 5305; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 5306; DARWIN-64-DYNAMIC-NEXT: movq _dst@GOTPCREL(%rip), %rax 5307; DARWIN-64-DYNAMIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 5308; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 5309; DARWIN-64-DYNAMIC-NEXT: movq %rax, (%rcx) 5310; DARWIN-64-DYNAMIC-NEXT: retq 5311; 5312; DARWIN-64-PIC-LABEL: big01: 5313; DARWIN-64-PIC: ## %bb.0: ## %entry 5314; DARWIN-64-PIC-NEXT: movq _dst@GOTPCREL(%rip), %rax 5315; DARWIN-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 5316; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 5317; DARWIN-64-PIC-NEXT: movq %rax, (%rcx) 5318; DARWIN-64-PIC-NEXT: retq 5319 5320entry: 5321 %.sum = add i64 %i, 65536 5322 %0 = getelementptr [131072 x i32], [131072 x i32]* @dst, i64 0, i64 %.sum 5323 store i32* %0, i32** @ptr, align 8 5324 ret void 5325} 5326 5327define dso_local void @big02(i64 %i) nounwind { 5328; LINUX-64-STATIC-LABEL: big02: 5329; LINUX-64-STATIC: # %bb.0: # %entry 5330; LINUX-64-STATIC-NEXT: movq src@GOTPCREL(%rip), %rax 5331; LINUX-64-STATIC-NEXT: movl 262144(%rax,%rdi,4), %eax 5332; LINUX-64-STATIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx 5333; LINUX-64-STATIC-NEXT: movq (%rcx), %rcx 5334; LINUX-64-STATIC-NEXT: movl %eax, 262144(%rcx,%rdi,4) 5335; LINUX-64-STATIC-NEXT: retq 5336; 5337; LINUX-32-STATIC-LABEL: big02: 5338; LINUX-32-STATIC: # %bb.0: # %entry 5339; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 5340; LINUX-32-STATIC-NEXT: movl src+262144(,%eax,4), %ecx 5341; LINUX-32-STATIC-NEXT: movl ptr, %edx 5342; LINUX-32-STATIC-NEXT: movl %ecx, 262144(%edx,%eax,4) 5343; LINUX-32-STATIC-NEXT: retl 5344; 5345; LINUX-32-PIC-LABEL: big02: 5346; LINUX-32-PIC: # %bb.0: # %entry 5347; LINUX-32-PIC-NEXT: calll .L59$pb 5348; LINUX-32-PIC-NEXT: .L59$pb: 5349; LINUX-32-PIC-NEXT: popl %eax 5350; LINUX-32-PIC-NEXT: .Ltmp59: 5351; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp59-.L59$pb), %eax 5352; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 5353; LINUX-32-PIC-NEXT: movl src@GOT(%eax), %edx 5354; LINUX-32-PIC-NEXT: movl 262144(%edx,%ecx,4), %edx 5355; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax 5356; LINUX-32-PIC-NEXT: movl (%eax), %eax 5357; LINUX-32-PIC-NEXT: movl %edx, 262144(%eax,%ecx,4) 5358; LINUX-32-PIC-NEXT: retl 5359; 5360; LINUX-64-PIC-LABEL: big02: 5361; LINUX-64-PIC: # %bb.0: # %entry 5362; LINUX-64-PIC-NEXT: movq src@GOTPCREL(%rip), %rax 5363; LINUX-64-PIC-NEXT: movl 262144(%rax,%rdi,4), %eax 5364; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx 5365; LINUX-64-PIC-NEXT: movq (%rcx), %rcx 5366; LINUX-64-PIC-NEXT: movl %eax, 262144(%rcx,%rdi,4) 5367; LINUX-64-PIC-NEXT: retq 5368; 5369; DARWIN-32-STATIC-LABEL: big02: 5370; DARWIN-32-STATIC: ## %bb.0: ## %entry 5371; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 5372; DARWIN-32-STATIC-NEXT: movl _src+262144(,%eax,4), %ecx 5373; DARWIN-32-STATIC-NEXT: movl _ptr, %edx 5374; DARWIN-32-STATIC-NEXT: movl %ecx, 262144(%edx,%eax,4) 5375; DARWIN-32-STATIC-NEXT: retl 5376; 5377; DARWIN-32-DYNAMIC-LABEL: big02: 5378; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 5379; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 5380; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %ecx 5381; DARWIN-32-DYNAMIC-NEXT: movl 262144(%ecx,%eax,4), %ecx 5382; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %edx 5383; DARWIN-32-DYNAMIC-NEXT: movl (%edx), %edx 5384; DARWIN-32-DYNAMIC-NEXT: movl %ecx, 262144(%edx,%eax,4) 5385; DARWIN-32-DYNAMIC-NEXT: retl 5386; 5387; DARWIN-32-PIC-LABEL: big02: 5388; DARWIN-32-PIC: ## %bb.0: ## %entry 5389; DARWIN-32-PIC-NEXT: calll L59$pb 5390; DARWIN-32-PIC-NEXT: L59$pb: 5391; DARWIN-32-PIC-NEXT: popl %eax 5392; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 5393; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L59$pb(%eax), %edx 5394; DARWIN-32-PIC-NEXT: movl 262144(%edx,%ecx,4), %edx 5395; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L59$pb(%eax), %eax 5396; DARWIN-32-PIC-NEXT: movl (%eax), %eax 5397; DARWIN-32-PIC-NEXT: movl %edx, 262144(%eax,%ecx,4) 5398; DARWIN-32-PIC-NEXT: retl 5399; 5400; DARWIN-64-STATIC-LABEL: big02: 5401; DARWIN-64-STATIC: ## %bb.0: ## %entry 5402; DARWIN-64-STATIC-NEXT: movq _src@GOTPCREL(%rip), %rax 5403; DARWIN-64-STATIC-NEXT: movl 262144(%rax,%rdi,4), %eax 5404; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 5405; DARWIN-64-STATIC-NEXT: movq (%rcx), %rcx 5406; DARWIN-64-STATIC-NEXT: movl %eax, 262144(%rcx,%rdi,4) 5407; DARWIN-64-STATIC-NEXT: retq 5408; 5409; DARWIN-64-DYNAMIC-LABEL: big02: 5410; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 5411; DARWIN-64-DYNAMIC-NEXT: movq _src@GOTPCREL(%rip), %rax 5412; DARWIN-64-DYNAMIC-NEXT: movl 262144(%rax,%rdi,4), %eax 5413; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 5414; DARWIN-64-DYNAMIC-NEXT: movq (%rcx), %rcx 5415; DARWIN-64-DYNAMIC-NEXT: movl %eax, 262144(%rcx,%rdi,4) 5416; DARWIN-64-DYNAMIC-NEXT: retq 5417; 5418; DARWIN-64-PIC-LABEL: big02: 5419; DARWIN-64-PIC: ## %bb.0: ## %entry 5420; DARWIN-64-PIC-NEXT: movq _src@GOTPCREL(%rip), %rax 5421; DARWIN-64-PIC-NEXT: movl 262144(%rax,%rdi,4), %eax 5422; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 5423; DARWIN-64-PIC-NEXT: movq (%rcx), %rcx 5424; DARWIN-64-PIC-NEXT: movl %eax, 262144(%rcx,%rdi,4) 5425; DARWIN-64-PIC-NEXT: retq 5426 5427entry: 5428 %0 = load i32*, i32** @ptr, align 8 5429 %1 = add i64 %i, 65536 5430 %2 = getelementptr [131072 x i32], [131072 x i32]* @src, i64 0, i64 %1 5431 %3 = load i32, i32* %2, align 4 5432 %4 = getelementptr i32, i32* %0, i64 %1 5433 store i32 %3, i32* %4, align 4 5434 ret void 5435} 5436 5437define dso_local void @big03(i64 %i) nounwind { 5438; LINUX-64-STATIC-LABEL: big03: 5439; LINUX-64-STATIC: # %bb.0: # %entry 5440; LINUX-64-STATIC-NEXT: movl dsrc+262144(,%rdi,4), %eax 5441; LINUX-64-STATIC-NEXT: movl %eax, ddst+262144(,%rdi,4) 5442; LINUX-64-STATIC-NEXT: retq 5443; 5444; LINUX-32-STATIC-LABEL: big03: 5445; LINUX-32-STATIC: # %bb.0: # %entry 5446; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 5447; LINUX-32-STATIC-NEXT: movl dsrc+262144(,%eax,4), %ecx 5448; LINUX-32-STATIC-NEXT: movl %ecx, ddst+262144(,%eax,4) 5449; LINUX-32-STATIC-NEXT: retl 5450; 5451; LINUX-32-PIC-LABEL: big03: 5452; LINUX-32-PIC: # %bb.0: # %entry 5453; LINUX-32-PIC-NEXT: calll .L60$pb 5454; LINUX-32-PIC-NEXT: .L60$pb: 5455; LINUX-32-PIC-NEXT: popl %eax 5456; LINUX-32-PIC-NEXT: .Ltmp60: 5457; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp60-.L60$pb), %eax 5458; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 5459; LINUX-32-PIC-NEXT: movl .Ldsrc$local@GOTOFF+262144(%eax,%ecx,4), %edx 5460; LINUX-32-PIC-NEXT: movl %edx, .Lddst$local@GOTOFF+262144(%eax,%ecx,4) 5461; LINUX-32-PIC-NEXT: retl 5462; 5463; LINUX-64-PIC-LABEL: big03: 5464; LINUX-64-PIC: # %bb.0: # %entry 5465; LINUX-64-PIC-NEXT: leaq .Ldsrc$local(%rip), %rax 5466; LINUX-64-PIC-NEXT: movl 262144(%rax,%rdi,4), %eax 5467; LINUX-64-PIC-NEXT: leaq .Lddst$local(%rip), %rcx 5468; LINUX-64-PIC-NEXT: movl %eax, 262144(%rcx,%rdi,4) 5469; LINUX-64-PIC-NEXT: retq 5470; 5471; DARWIN-32-STATIC-LABEL: big03: 5472; DARWIN-32-STATIC: ## %bb.0: ## %entry 5473; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 5474; DARWIN-32-STATIC-NEXT: movl _dsrc+262144(,%eax,4), %ecx 5475; DARWIN-32-STATIC-NEXT: movl %ecx, _ddst+262144(,%eax,4) 5476; DARWIN-32-STATIC-NEXT: retl 5477; 5478; DARWIN-32-DYNAMIC-LABEL: big03: 5479; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 5480; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 5481; DARWIN-32-DYNAMIC-NEXT: movl _dsrc+262144(,%eax,4), %ecx 5482; DARWIN-32-DYNAMIC-NEXT: movl %ecx, _ddst+262144(,%eax,4) 5483; DARWIN-32-DYNAMIC-NEXT: retl 5484; 5485; DARWIN-32-PIC-LABEL: big03: 5486; DARWIN-32-PIC: ## %bb.0: ## %entry 5487; DARWIN-32-PIC-NEXT: calll L60$pb 5488; DARWIN-32-PIC-NEXT: L60$pb: 5489; DARWIN-32-PIC-NEXT: popl %eax 5490; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 5491; DARWIN-32-PIC-NEXT: movl (_dsrc-L60$pb)+262144(%eax,%ecx,4), %edx 5492; DARWIN-32-PIC-NEXT: movl %edx, (_ddst-L60$pb)+262144(%eax,%ecx,4) 5493; DARWIN-32-PIC-NEXT: retl 5494; 5495; DARWIN-64-STATIC-LABEL: big03: 5496; DARWIN-64-STATIC: ## %bb.0: ## %entry 5497; DARWIN-64-STATIC-NEXT: leaq _dsrc(%rip), %rax 5498; DARWIN-64-STATIC-NEXT: movl 262144(%rax,%rdi,4), %eax 5499; DARWIN-64-STATIC-NEXT: leaq _ddst(%rip), %rcx 5500; DARWIN-64-STATIC-NEXT: movl %eax, 262144(%rcx,%rdi,4) 5501; DARWIN-64-STATIC-NEXT: retq 5502; 5503; DARWIN-64-DYNAMIC-LABEL: big03: 5504; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 5505; DARWIN-64-DYNAMIC-NEXT: leaq _dsrc(%rip), %rax 5506; DARWIN-64-DYNAMIC-NEXT: movl 262144(%rax,%rdi,4), %eax 5507; DARWIN-64-DYNAMIC-NEXT: leaq _ddst(%rip), %rcx 5508; DARWIN-64-DYNAMIC-NEXT: movl %eax, 262144(%rcx,%rdi,4) 5509; DARWIN-64-DYNAMIC-NEXT: retq 5510; 5511; DARWIN-64-PIC-LABEL: big03: 5512; DARWIN-64-PIC: ## %bb.0: ## %entry 5513; DARWIN-64-PIC-NEXT: leaq _dsrc(%rip), %rax 5514; DARWIN-64-PIC-NEXT: movl 262144(%rax,%rdi,4), %eax 5515; DARWIN-64-PIC-NEXT: leaq _ddst(%rip), %rcx 5516; DARWIN-64-PIC-NEXT: movl %eax, 262144(%rcx,%rdi,4) 5517; DARWIN-64-PIC-NEXT: retq 5518 5519entry: 5520 %0 = add i64 %i, 65536 5521 %1 = getelementptr [131072 x i32], [131072 x i32]* @dsrc, i64 0, i64 %0 5522 %2 = load i32, i32* %1, align 4 5523 %3 = getelementptr [131072 x i32], [131072 x i32]* @ddst, i64 0, i64 %0 5524 store i32 %2, i32* %3, align 4 5525 ret void 5526} 5527 5528define dso_local void @big04(i64 %i) nounwind { 5529; LINUX-64-STATIC-LABEL: big04: 5530; LINUX-64-STATIC: # %bb.0: # %entry 5531; LINUX-64-STATIC-NEXT: leaq ddst+262144(,%rdi,4), %rax 5532; LINUX-64-STATIC-NEXT: movq %rax, dptr(%rip) 5533; LINUX-64-STATIC-NEXT: retq 5534; 5535; LINUX-32-STATIC-LABEL: big04: 5536; LINUX-32-STATIC: # %bb.0: # %entry 5537; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 5538; LINUX-32-STATIC-NEXT: leal ddst+262144(,%eax,4), %eax 5539; LINUX-32-STATIC-NEXT: movl %eax, dptr 5540; LINUX-32-STATIC-NEXT: retl 5541; 5542; LINUX-32-PIC-LABEL: big04: 5543; LINUX-32-PIC: # %bb.0: # %entry 5544; LINUX-32-PIC-NEXT: calll .L61$pb 5545; LINUX-32-PIC-NEXT: .L61$pb: 5546; LINUX-32-PIC-NEXT: popl %eax 5547; LINUX-32-PIC-NEXT: .Ltmp61: 5548; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp61-.L61$pb), %eax 5549; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 5550; LINUX-32-PIC-NEXT: leal .Lddst$local@GOTOFF+262144(%eax,%ecx,4), %ecx 5551; LINUX-32-PIC-NEXT: movl %ecx, .Ldptr$local@GOTOFF(%eax) 5552; LINUX-32-PIC-NEXT: retl 5553; 5554; LINUX-64-PIC-LABEL: big04: 5555; LINUX-64-PIC: # %bb.0: # %entry 5556; LINUX-64-PIC-NEXT: leaq .Lddst$local(%rip), %rax 5557; LINUX-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 5558; LINUX-64-PIC-NEXT: movq %rax, .Ldptr$local(%rip) 5559; LINUX-64-PIC-NEXT: retq 5560; 5561; DARWIN-32-STATIC-LABEL: big04: 5562; DARWIN-32-STATIC: ## %bb.0: ## %entry 5563; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 5564; DARWIN-32-STATIC-NEXT: leal _ddst+262144(,%eax,4), %eax 5565; DARWIN-32-STATIC-NEXT: movl %eax, _dptr 5566; DARWIN-32-STATIC-NEXT: retl 5567; 5568; DARWIN-32-DYNAMIC-LABEL: big04: 5569; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 5570; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 5571; DARWIN-32-DYNAMIC-NEXT: leal _ddst+262144(,%eax,4), %eax 5572; DARWIN-32-DYNAMIC-NEXT: movl %eax, _dptr 5573; DARWIN-32-DYNAMIC-NEXT: retl 5574; 5575; DARWIN-32-PIC-LABEL: big04: 5576; DARWIN-32-PIC: ## %bb.0: ## %entry 5577; DARWIN-32-PIC-NEXT: calll L61$pb 5578; DARWIN-32-PIC-NEXT: L61$pb: 5579; DARWIN-32-PIC-NEXT: popl %eax 5580; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 5581; DARWIN-32-PIC-NEXT: leal (_ddst-L61$pb)+262144(%eax,%ecx,4), %ecx 5582; DARWIN-32-PIC-NEXT: movl %ecx, _dptr-L61$pb(%eax) 5583; DARWIN-32-PIC-NEXT: retl 5584; 5585; DARWIN-64-STATIC-LABEL: big04: 5586; DARWIN-64-STATIC: ## %bb.0: ## %entry 5587; DARWIN-64-STATIC-NEXT: leaq _ddst(%rip), %rax 5588; DARWIN-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 5589; DARWIN-64-STATIC-NEXT: movq %rax, _dptr(%rip) 5590; DARWIN-64-STATIC-NEXT: retq 5591; 5592; DARWIN-64-DYNAMIC-LABEL: big04: 5593; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 5594; DARWIN-64-DYNAMIC-NEXT: leaq _ddst(%rip), %rax 5595; DARWIN-64-DYNAMIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 5596; DARWIN-64-DYNAMIC-NEXT: movq %rax, _dptr(%rip) 5597; DARWIN-64-DYNAMIC-NEXT: retq 5598; 5599; DARWIN-64-PIC-LABEL: big04: 5600; DARWIN-64-PIC: ## %bb.0: ## %entry 5601; DARWIN-64-PIC-NEXT: leaq _ddst(%rip), %rax 5602; DARWIN-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 5603; DARWIN-64-PIC-NEXT: movq %rax, _dptr(%rip) 5604; DARWIN-64-PIC-NEXT: retq 5605 5606entry: 5607 %.sum = add i64 %i, 65536 5608 %0 = getelementptr [131072 x i32], [131072 x i32]* @ddst, i64 0, i64 %.sum 5609 store i32* %0, i32** @dptr, align 8 5610 ret void 5611} 5612 5613define dso_local void @big05(i64 %i) nounwind { 5614; LINUX-64-STATIC-LABEL: big05: 5615; LINUX-64-STATIC: # %bb.0: # %entry 5616; LINUX-64-STATIC-NEXT: movl dsrc+262144(,%rdi,4), %eax 5617; LINUX-64-STATIC-NEXT: movq dptr(%rip), %rcx 5618; LINUX-64-STATIC-NEXT: movl %eax, 262144(%rcx,%rdi,4) 5619; LINUX-64-STATIC-NEXT: retq 5620; 5621; LINUX-32-STATIC-LABEL: big05: 5622; LINUX-32-STATIC: # %bb.0: # %entry 5623; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 5624; LINUX-32-STATIC-NEXT: movl dsrc+262144(,%eax,4), %ecx 5625; LINUX-32-STATIC-NEXT: movl dptr, %edx 5626; LINUX-32-STATIC-NEXT: movl %ecx, 262144(%edx,%eax,4) 5627; LINUX-32-STATIC-NEXT: retl 5628; 5629; LINUX-32-PIC-LABEL: big05: 5630; LINUX-32-PIC: # %bb.0: # %entry 5631; LINUX-32-PIC-NEXT: calll .L62$pb 5632; LINUX-32-PIC-NEXT: .L62$pb: 5633; LINUX-32-PIC-NEXT: popl %eax 5634; LINUX-32-PIC-NEXT: .Ltmp62: 5635; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp62-.L62$pb), %eax 5636; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 5637; LINUX-32-PIC-NEXT: movl .Ldsrc$local@GOTOFF+262144(%eax,%ecx,4), %edx 5638; LINUX-32-PIC-NEXT: movl .Ldptr$local@GOTOFF(%eax), %eax 5639; LINUX-32-PIC-NEXT: movl %edx, 262144(%eax,%ecx,4) 5640; LINUX-32-PIC-NEXT: retl 5641; 5642; LINUX-64-PIC-LABEL: big05: 5643; LINUX-64-PIC: # %bb.0: # %entry 5644; LINUX-64-PIC-NEXT: leaq .Ldsrc$local(%rip), %rax 5645; LINUX-64-PIC-NEXT: movl 262144(%rax,%rdi,4), %eax 5646; LINUX-64-PIC-NEXT: movq .Ldptr$local(%rip), %rcx 5647; LINUX-64-PIC-NEXT: movl %eax, 262144(%rcx,%rdi,4) 5648; LINUX-64-PIC-NEXT: retq 5649; 5650; DARWIN-32-STATIC-LABEL: big05: 5651; DARWIN-32-STATIC: ## %bb.0: ## %entry 5652; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 5653; DARWIN-32-STATIC-NEXT: movl _dsrc+262144(,%eax,4), %ecx 5654; DARWIN-32-STATIC-NEXT: movl _dptr, %edx 5655; DARWIN-32-STATIC-NEXT: movl %ecx, 262144(%edx,%eax,4) 5656; DARWIN-32-STATIC-NEXT: retl 5657; 5658; DARWIN-32-DYNAMIC-LABEL: big05: 5659; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 5660; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 5661; DARWIN-32-DYNAMIC-NEXT: movl _dsrc+262144(,%eax,4), %ecx 5662; DARWIN-32-DYNAMIC-NEXT: movl _dptr, %edx 5663; DARWIN-32-DYNAMIC-NEXT: movl %ecx, 262144(%edx,%eax,4) 5664; DARWIN-32-DYNAMIC-NEXT: retl 5665; 5666; DARWIN-32-PIC-LABEL: big05: 5667; DARWIN-32-PIC: ## %bb.0: ## %entry 5668; DARWIN-32-PIC-NEXT: calll L62$pb 5669; DARWIN-32-PIC-NEXT: L62$pb: 5670; DARWIN-32-PIC-NEXT: popl %eax 5671; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 5672; DARWIN-32-PIC-NEXT: movl (_dsrc-L62$pb)+262144(%eax,%ecx,4), %edx 5673; DARWIN-32-PIC-NEXT: movl _dptr-L62$pb(%eax), %eax 5674; DARWIN-32-PIC-NEXT: movl %edx, 262144(%eax,%ecx,4) 5675; DARWIN-32-PIC-NEXT: retl 5676; 5677; DARWIN-64-STATIC-LABEL: big05: 5678; DARWIN-64-STATIC: ## %bb.0: ## %entry 5679; DARWIN-64-STATIC-NEXT: leaq _dsrc(%rip), %rax 5680; DARWIN-64-STATIC-NEXT: movl 262144(%rax,%rdi,4), %eax 5681; DARWIN-64-STATIC-NEXT: movq _dptr(%rip), %rcx 5682; DARWIN-64-STATIC-NEXT: movl %eax, 262144(%rcx,%rdi,4) 5683; DARWIN-64-STATIC-NEXT: retq 5684; 5685; DARWIN-64-DYNAMIC-LABEL: big05: 5686; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 5687; DARWIN-64-DYNAMIC-NEXT: leaq _dsrc(%rip), %rax 5688; DARWIN-64-DYNAMIC-NEXT: movl 262144(%rax,%rdi,4), %eax 5689; DARWIN-64-DYNAMIC-NEXT: movq _dptr(%rip), %rcx 5690; DARWIN-64-DYNAMIC-NEXT: movl %eax, 262144(%rcx,%rdi,4) 5691; DARWIN-64-DYNAMIC-NEXT: retq 5692; 5693; DARWIN-64-PIC-LABEL: big05: 5694; DARWIN-64-PIC: ## %bb.0: ## %entry 5695; DARWIN-64-PIC-NEXT: leaq _dsrc(%rip), %rax 5696; DARWIN-64-PIC-NEXT: movl 262144(%rax,%rdi,4), %eax 5697; DARWIN-64-PIC-NEXT: movq _dptr(%rip), %rcx 5698; DARWIN-64-PIC-NEXT: movl %eax, 262144(%rcx,%rdi,4) 5699; DARWIN-64-PIC-NEXT: retq 5700 5701entry: 5702 %0 = load i32*, i32** @dptr, align 8 5703 %1 = add i64 %i, 65536 5704 %2 = getelementptr [131072 x i32], [131072 x i32]* @dsrc, i64 0, i64 %1 5705 %3 = load i32, i32* %2, align 4 5706 %4 = getelementptr i32, i32* %0, i64 %1 5707 store i32 %3, i32* %4, align 4 5708 ret void 5709} 5710 5711define dso_local void @big06(i64 %i) nounwind { 5712; LINUX-64-STATIC-LABEL: big06: 5713; LINUX-64-STATIC: # %bb.0: # %entry 5714; LINUX-64-STATIC-NEXT: movl lsrc+262144(,%rdi,4), %eax 5715; LINUX-64-STATIC-NEXT: movl %eax, ldst+262144(,%rdi,4) 5716; LINUX-64-STATIC-NEXT: retq 5717; 5718; LINUX-32-STATIC-LABEL: big06: 5719; LINUX-32-STATIC: # %bb.0: # %entry 5720; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 5721; LINUX-32-STATIC-NEXT: movl lsrc+262144(,%eax,4), %ecx 5722; LINUX-32-STATIC-NEXT: movl %ecx, ldst+262144(,%eax,4) 5723; LINUX-32-STATIC-NEXT: retl 5724; 5725; LINUX-32-PIC-LABEL: big06: 5726; LINUX-32-PIC: # %bb.0: # %entry 5727; LINUX-32-PIC-NEXT: calll .L63$pb 5728; LINUX-32-PIC-NEXT: .L63$pb: 5729; LINUX-32-PIC-NEXT: popl %eax 5730; LINUX-32-PIC-NEXT: .Ltmp63: 5731; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp63-.L63$pb), %eax 5732; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 5733; LINUX-32-PIC-NEXT: movl lsrc@GOTOFF+262144(%eax,%ecx,4), %edx 5734; LINUX-32-PIC-NEXT: movl %edx, ldst@GOTOFF+262144(%eax,%ecx,4) 5735; LINUX-32-PIC-NEXT: retl 5736; 5737; LINUX-64-PIC-LABEL: big06: 5738; LINUX-64-PIC: # %bb.0: # %entry 5739; LINUX-64-PIC-NEXT: leaq lsrc(%rip), %rax 5740; LINUX-64-PIC-NEXT: movl 262144(%rax,%rdi,4), %eax 5741; LINUX-64-PIC-NEXT: leaq ldst(%rip), %rcx 5742; LINUX-64-PIC-NEXT: movl %eax, 262144(%rcx,%rdi,4) 5743; LINUX-64-PIC-NEXT: retq 5744; 5745; DARWIN-32-STATIC-LABEL: big06: 5746; DARWIN-32-STATIC: ## %bb.0: ## %entry 5747; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 5748; DARWIN-32-STATIC-NEXT: movl _lsrc+262144(,%eax,4), %ecx 5749; DARWIN-32-STATIC-NEXT: movl %ecx, _ldst+262144(,%eax,4) 5750; DARWIN-32-STATIC-NEXT: retl 5751; 5752; DARWIN-32-DYNAMIC-LABEL: big06: 5753; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 5754; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 5755; DARWIN-32-DYNAMIC-NEXT: movl _lsrc+262144(,%eax,4), %ecx 5756; DARWIN-32-DYNAMIC-NEXT: movl %ecx, _ldst+262144(,%eax,4) 5757; DARWIN-32-DYNAMIC-NEXT: retl 5758; 5759; DARWIN-32-PIC-LABEL: big06: 5760; DARWIN-32-PIC: ## %bb.0: ## %entry 5761; DARWIN-32-PIC-NEXT: calll L63$pb 5762; DARWIN-32-PIC-NEXT: L63$pb: 5763; DARWIN-32-PIC-NEXT: popl %eax 5764; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 5765; DARWIN-32-PIC-NEXT: movl (_lsrc-L63$pb)+262144(%eax,%ecx,4), %edx 5766; DARWIN-32-PIC-NEXT: movl %edx, (_ldst-L63$pb)+262144(%eax,%ecx,4) 5767; DARWIN-32-PIC-NEXT: retl 5768; 5769; DARWIN-64-STATIC-LABEL: big06: 5770; DARWIN-64-STATIC: ## %bb.0: ## %entry 5771; DARWIN-64-STATIC-NEXT: leaq _lsrc(%rip), %rax 5772; DARWIN-64-STATIC-NEXT: movl 262144(%rax,%rdi,4), %eax 5773; DARWIN-64-STATIC-NEXT: leaq _ldst(%rip), %rcx 5774; DARWIN-64-STATIC-NEXT: movl %eax, 262144(%rcx,%rdi,4) 5775; DARWIN-64-STATIC-NEXT: retq 5776; 5777; DARWIN-64-DYNAMIC-LABEL: big06: 5778; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 5779; DARWIN-64-DYNAMIC-NEXT: leaq _lsrc(%rip), %rax 5780; DARWIN-64-DYNAMIC-NEXT: movl 262144(%rax,%rdi,4), %eax 5781; DARWIN-64-DYNAMIC-NEXT: leaq _ldst(%rip), %rcx 5782; DARWIN-64-DYNAMIC-NEXT: movl %eax, 262144(%rcx,%rdi,4) 5783; DARWIN-64-DYNAMIC-NEXT: retq 5784; 5785; DARWIN-64-PIC-LABEL: big06: 5786; DARWIN-64-PIC: ## %bb.0: ## %entry 5787; DARWIN-64-PIC-NEXT: leaq _lsrc(%rip), %rax 5788; DARWIN-64-PIC-NEXT: movl 262144(%rax,%rdi,4), %eax 5789; DARWIN-64-PIC-NEXT: leaq _ldst(%rip), %rcx 5790; DARWIN-64-PIC-NEXT: movl %eax, 262144(%rcx,%rdi,4) 5791; DARWIN-64-PIC-NEXT: retq 5792 5793entry: 5794 %0 = add i64 %i, 65536 5795 %1 = getelementptr [131072 x i32], [131072 x i32]* @lsrc, i64 0, i64 %0 5796 %2 = load i32, i32* %1, align 4 5797 %3 = getelementptr [131072 x i32], [131072 x i32]* @ldst, i64 0, i64 %0 5798 store i32 %2, i32* %3, align 4 5799 ret void 5800} 5801 5802define dso_local void @big07(i64 %i) nounwind { 5803; LINUX-64-STATIC-LABEL: big07: 5804; LINUX-64-STATIC: # %bb.0: # %entry 5805; LINUX-64-STATIC-NEXT: leaq ldst+262144(,%rdi,4), %rax 5806; LINUX-64-STATIC-NEXT: movq %rax, lptr(%rip) 5807; LINUX-64-STATIC-NEXT: retq 5808; 5809; LINUX-32-STATIC-LABEL: big07: 5810; LINUX-32-STATIC: # %bb.0: # %entry 5811; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 5812; LINUX-32-STATIC-NEXT: leal ldst+262144(,%eax,4), %eax 5813; LINUX-32-STATIC-NEXT: movl %eax, lptr 5814; LINUX-32-STATIC-NEXT: retl 5815; 5816; LINUX-32-PIC-LABEL: big07: 5817; LINUX-32-PIC: # %bb.0: # %entry 5818; LINUX-32-PIC-NEXT: calll .L64$pb 5819; LINUX-32-PIC-NEXT: .L64$pb: 5820; LINUX-32-PIC-NEXT: popl %eax 5821; LINUX-32-PIC-NEXT: .Ltmp64: 5822; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp64-.L64$pb), %eax 5823; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 5824; LINUX-32-PIC-NEXT: leal ldst@GOTOFF+262144(%eax,%ecx,4), %ecx 5825; LINUX-32-PIC-NEXT: movl %ecx, lptr@GOTOFF(%eax) 5826; LINUX-32-PIC-NEXT: retl 5827; 5828; LINUX-64-PIC-LABEL: big07: 5829; LINUX-64-PIC: # %bb.0: # %entry 5830; LINUX-64-PIC-NEXT: leaq ldst(%rip), %rax 5831; LINUX-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 5832; LINUX-64-PIC-NEXT: movq %rax, lptr(%rip) 5833; LINUX-64-PIC-NEXT: retq 5834; 5835; DARWIN-32-STATIC-LABEL: big07: 5836; DARWIN-32-STATIC: ## %bb.0: ## %entry 5837; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 5838; DARWIN-32-STATIC-NEXT: leal _ldst+262144(,%eax,4), %eax 5839; DARWIN-32-STATIC-NEXT: movl %eax, _lptr 5840; DARWIN-32-STATIC-NEXT: retl 5841; 5842; DARWIN-32-DYNAMIC-LABEL: big07: 5843; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 5844; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 5845; DARWIN-32-DYNAMIC-NEXT: leal _ldst+262144(,%eax,4), %eax 5846; DARWIN-32-DYNAMIC-NEXT: movl %eax, _lptr 5847; DARWIN-32-DYNAMIC-NEXT: retl 5848; 5849; DARWIN-32-PIC-LABEL: big07: 5850; DARWIN-32-PIC: ## %bb.0: ## %entry 5851; DARWIN-32-PIC-NEXT: calll L64$pb 5852; DARWIN-32-PIC-NEXT: L64$pb: 5853; DARWIN-32-PIC-NEXT: popl %eax 5854; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 5855; DARWIN-32-PIC-NEXT: leal (_ldst-L64$pb)+262144(%eax,%ecx,4), %ecx 5856; DARWIN-32-PIC-NEXT: movl %ecx, _lptr-L64$pb(%eax) 5857; DARWIN-32-PIC-NEXT: retl 5858; 5859; DARWIN-64-STATIC-LABEL: big07: 5860; DARWIN-64-STATIC: ## %bb.0: ## %entry 5861; DARWIN-64-STATIC-NEXT: leaq _ldst(%rip), %rax 5862; DARWIN-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 5863; DARWIN-64-STATIC-NEXT: movq %rax, _lptr(%rip) 5864; DARWIN-64-STATIC-NEXT: retq 5865; 5866; DARWIN-64-DYNAMIC-LABEL: big07: 5867; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 5868; DARWIN-64-DYNAMIC-NEXT: leaq _ldst(%rip), %rax 5869; DARWIN-64-DYNAMIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 5870; DARWIN-64-DYNAMIC-NEXT: movq %rax, _lptr(%rip) 5871; DARWIN-64-DYNAMIC-NEXT: retq 5872; 5873; DARWIN-64-PIC-LABEL: big07: 5874; DARWIN-64-PIC: ## %bb.0: ## %entry 5875; DARWIN-64-PIC-NEXT: leaq _ldst(%rip), %rax 5876; DARWIN-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 5877; DARWIN-64-PIC-NEXT: movq %rax, _lptr(%rip) 5878; DARWIN-64-PIC-NEXT: retq 5879 5880entry: 5881 %.sum = add i64 %i, 65536 5882 %0 = getelementptr [131072 x i32], [131072 x i32]* @ldst, i64 0, i64 %.sum 5883 store i32* %0, i32** @lptr, align 8 5884 ret void 5885} 5886 5887define dso_local void @big08(i64 %i) nounwind { 5888; LINUX-64-STATIC-LABEL: big08: 5889; LINUX-64-STATIC: # %bb.0: # %entry 5890; LINUX-64-STATIC-NEXT: movl lsrc+262144(,%rdi,4), %eax 5891; LINUX-64-STATIC-NEXT: movq lptr(%rip), %rcx 5892; LINUX-64-STATIC-NEXT: movl %eax, 262144(%rcx,%rdi,4) 5893; LINUX-64-STATIC-NEXT: retq 5894; 5895; LINUX-32-STATIC-LABEL: big08: 5896; LINUX-32-STATIC: # %bb.0: # %entry 5897; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 5898; LINUX-32-STATIC-NEXT: movl lsrc+262144(,%eax,4), %ecx 5899; LINUX-32-STATIC-NEXT: movl lptr, %edx 5900; LINUX-32-STATIC-NEXT: movl %ecx, 262144(%edx,%eax,4) 5901; LINUX-32-STATIC-NEXT: retl 5902; 5903; LINUX-32-PIC-LABEL: big08: 5904; LINUX-32-PIC: # %bb.0: # %entry 5905; LINUX-32-PIC-NEXT: calll .L65$pb 5906; LINUX-32-PIC-NEXT: .L65$pb: 5907; LINUX-32-PIC-NEXT: popl %eax 5908; LINUX-32-PIC-NEXT: .Ltmp65: 5909; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp65-.L65$pb), %eax 5910; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 5911; LINUX-32-PIC-NEXT: movl lsrc@GOTOFF+262144(%eax,%ecx,4), %edx 5912; LINUX-32-PIC-NEXT: movl lptr@GOTOFF(%eax), %eax 5913; LINUX-32-PIC-NEXT: movl %edx, 262144(%eax,%ecx,4) 5914; LINUX-32-PIC-NEXT: retl 5915; 5916; LINUX-64-PIC-LABEL: big08: 5917; LINUX-64-PIC: # %bb.0: # %entry 5918; LINUX-64-PIC-NEXT: leaq lsrc(%rip), %rax 5919; LINUX-64-PIC-NEXT: movl 262144(%rax,%rdi,4), %eax 5920; LINUX-64-PIC-NEXT: movq lptr(%rip), %rcx 5921; LINUX-64-PIC-NEXT: movl %eax, 262144(%rcx,%rdi,4) 5922; LINUX-64-PIC-NEXT: retq 5923; 5924; DARWIN-32-STATIC-LABEL: big08: 5925; DARWIN-32-STATIC: ## %bb.0: ## %entry 5926; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 5927; DARWIN-32-STATIC-NEXT: movl _lsrc+262144(,%eax,4), %ecx 5928; DARWIN-32-STATIC-NEXT: movl _lptr, %edx 5929; DARWIN-32-STATIC-NEXT: movl %ecx, 262144(%edx,%eax,4) 5930; DARWIN-32-STATIC-NEXT: retl 5931; 5932; DARWIN-32-DYNAMIC-LABEL: big08: 5933; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 5934; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 5935; DARWIN-32-DYNAMIC-NEXT: movl _lsrc+262144(,%eax,4), %ecx 5936; DARWIN-32-DYNAMIC-NEXT: movl _lptr, %edx 5937; DARWIN-32-DYNAMIC-NEXT: movl %ecx, 262144(%edx,%eax,4) 5938; DARWIN-32-DYNAMIC-NEXT: retl 5939; 5940; DARWIN-32-PIC-LABEL: big08: 5941; DARWIN-32-PIC: ## %bb.0: ## %entry 5942; DARWIN-32-PIC-NEXT: calll L65$pb 5943; DARWIN-32-PIC-NEXT: L65$pb: 5944; DARWIN-32-PIC-NEXT: popl %eax 5945; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 5946; DARWIN-32-PIC-NEXT: movl (_lsrc-L65$pb)+262144(%eax,%ecx,4), %edx 5947; DARWIN-32-PIC-NEXT: movl _lptr-L65$pb(%eax), %eax 5948; DARWIN-32-PIC-NEXT: movl %edx, 262144(%eax,%ecx,4) 5949; DARWIN-32-PIC-NEXT: retl 5950; 5951; DARWIN-64-STATIC-LABEL: big08: 5952; DARWIN-64-STATIC: ## %bb.0: ## %entry 5953; DARWIN-64-STATIC-NEXT: leaq _lsrc(%rip), %rax 5954; DARWIN-64-STATIC-NEXT: movl 262144(%rax,%rdi,4), %eax 5955; DARWIN-64-STATIC-NEXT: movq _lptr(%rip), %rcx 5956; DARWIN-64-STATIC-NEXT: movl %eax, 262144(%rcx,%rdi,4) 5957; DARWIN-64-STATIC-NEXT: retq 5958; 5959; DARWIN-64-DYNAMIC-LABEL: big08: 5960; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 5961; DARWIN-64-DYNAMIC-NEXT: leaq _lsrc(%rip), %rax 5962; DARWIN-64-DYNAMIC-NEXT: movl 262144(%rax,%rdi,4), %eax 5963; DARWIN-64-DYNAMIC-NEXT: movq _lptr(%rip), %rcx 5964; DARWIN-64-DYNAMIC-NEXT: movl %eax, 262144(%rcx,%rdi,4) 5965; DARWIN-64-DYNAMIC-NEXT: retq 5966; 5967; DARWIN-64-PIC-LABEL: big08: 5968; DARWIN-64-PIC: ## %bb.0: ## %entry 5969; DARWIN-64-PIC-NEXT: leaq _lsrc(%rip), %rax 5970; DARWIN-64-PIC-NEXT: movl 262144(%rax,%rdi,4), %eax 5971; DARWIN-64-PIC-NEXT: movq _lptr(%rip), %rcx 5972; DARWIN-64-PIC-NEXT: movl %eax, 262144(%rcx,%rdi,4) 5973; DARWIN-64-PIC-NEXT: retq 5974 5975entry: 5976 %0 = load i32*, i32** @lptr, align 8 5977 %1 = add i64 %i, 65536 5978 %2 = getelementptr [131072 x i32], [131072 x i32]* @lsrc, i64 0, i64 %1 5979 %3 = load i32, i32* %2, align 4 5980 %4 = getelementptr i32, i32* %0, i64 %1 5981 store i32 %3, i32* %4, align 4 5982 ret void 5983} 5984 5985define dso_local i8* @bar00() nounwind { 5986; LINUX-64-STATIC-LABEL: bar00: 5987; LINUX-64-STATIC: # %bb.0: # %entry 5988; LINUX-64-STATIC-NEXT: movq src@GOTPCREL(%rip), %rax 5989; LINUX-64-STATIC-NEXT: retq 5990; 5991; LINUX-32-STATIC-LABEL: bar00: 5992; LINUX-32-STATIC: # %bb.0: # %entry 5993; LINUX-32-STATIC-NEXT: movl $src, %eax 5994; LINUX-32-STATIC-NEXT: retl 5995; 5996; LINUX-32-PIC-LABEL: bar00: 5997; LINUX-32-PIC: # %bb.0: # %entry 5998; LINUX-32-PIC-NEXT: calll .L66$pb 5999; LINUX-32-PIC-NEXT: .L66$pb: 6000; LINUX-32-PIC-NEXT: popl %eax 6001; LINUX-32-PIC-NEXT: .Ltmp66: 6002; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp66-.L66$pb), %eax 6003; LINUX-32-PIC-NEXT: movl src@GOT(%eax), %eax 6004; LINUX-32-PIC-NEXT: retl 6005; 6006; LINUX-64-PIC-LABEL: bar00: 6007; LINUX-64-PIC: # %bb.0: # %entry 6008; LINUX-64-PIC-NEXT: movq src@GOTPCREL(%rip), %rax 6009; LINUX-64-PIC-NEXT: retq 6010; 6011; DARWIN-32-STATIC-LABEL: bar00: 6012; DARWIN-32-STATIC: ## %bb.0: ## %entry 6013; DARWIN-32-STATIC-NEXT: movl $_src, %eax 6014; DARWIN-32-STATIC-NEXT: retl 6015; 6016; DARWIN-32-DYNAMIC-LABEL: bar00: 6017; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 6018; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %eax 6019; DARWIN-32-DYNAMIC-NEXT: retl 6020; 6021; DARWIN-32-PIC-LABEL: bar00: 6022; DARWIN-32-PIC: ## %bb.0: ## %entry 6023; DARWIN-32-PIC-NEXT: calll L66$pb 6024; DARWIN-32-PIC-NEXT: L66$pb: 6025; DARWIN-32-PIC-NEXT: popl %eax 6026; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L66$pb(%eax), %eax 6027; DARWIN-32-PIC-NEXT: retl 6028; 6029; DARWIN-64-STATIC-LABEL: bar00: 6030; DARWIN-64-STATIC: ## %bb.0: ## %entry 6031; DARWIN-64-STATIC-NEXT: movq _src@GOTPCREL(%rip), %rax 6032; DARWIN-64-STATIC-NEXT: retq 6033; 6034; DARWIN-64-DYNAMIC-LABEL: bar00: 6035; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 6036; DARWIN-64-DYNAMIC-NEXT: movq _src@GOTPCREL(%rip), %rax 6037; DARWIN-64-DYNAMIC-NEXT: retq 6038; 6039; DARWIN-64-PIC-LABEL: bar00: 6040; DARWIN-64-PIC: ## %bb.0: ## %entry 6041; DARWIN-64-PIC-NEXT: movq _src@GOTPCREL(%rip), %rax 6042; DARWIN-64-PIC-NEXT: retq 6043 6044entry: 6045 ret i8* bitcast ([131072 x i32]* @src to i8*) 6046} 6047 6048define dso_local i8* @bxr00() nounwind { 6049; LINUX-64-STATIC-LABEL: bxr00: 6050; LINUX-64-STATIC: # %bb.0: # %entry 6051; LINUX-64-STATIC-NEXT: movq xsrc@GOTPCREL(%rip), %rax 6052; LINUX-64-STATIC-NEXT: retq 6053; 6054; LINUX-32-STATIC-LABEL: bxr00: 6055; LINUX-32-STATIC: # %bb.0: # %entry 6056; LINUX-32-STATIC-NEXT: movl $xsrc, %eax 6057; LINUX-32-STATIC-NEXT: retl 6058; 6059; LINUX-32-PIC-LABEL: bxr00: 6060; LINUX-32-PIC: # %bb.0: # %entry 6061; LINUX-32-PIC-NEXT: calll .L67$pb 6062; LINUX-32-PIC-NEXT: .L67$pb: 6063; LINUX-32-PIC-NEXT: popl %eax 6064; LINUX-32-PIC-NEXT: .Ltmp67: 6065; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp67-.L67$pb), %eax 6066; LINUX-32-PIC-NEXT: movl xsrc@GOT(%eax), %eax 6067; LINUX-32-PIC-NEXT: retl 6068; 6069; LINUX-64-PIC-LABEL: bxr00: 6070; LINUX-64-PIC: # %bb.0: # %entry 6071; LINUX-64-PIC-NEXT: movq xsrc@GOTPCREL(%rip), %rax 6072; LINUX-64-PIC-NEXT: retq 6073; 6074; DARWIN-32-STATIC-LABEL: bxr00: 6075; DARWIN-32-STATIC: ## %bb.0: ## %entry 6076; DARWIN-32-STATIC-NEXT: movl $_xsrc, %eax 6077; DARWIN-32-STATIC-NEXT: retl 6078; 6079; DARWIN-32-DYNAMIC-LABEL: bxr00: 6080; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 6081; DARWIN-32-DYNAMIC-NEXT: movl L_xsrc$non_lazy_ptr, %eax 6082; DARWIN-32-DYNAMIC-NEXT: retl 6083; 6084; DARWIN-32-PIC-LABEL: bxr00: 6085; DARWIN-32-PIC: ## %bb.0: ## %entry 6086; DARWIN-32-PIC-NEXT: calll L67$pb 6087; DARWIN-32-PIC-NEXT: L67$pb: 6088; DARWIN-32-PIC-NEXT: popl %eax 6089; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-L67$pb(%eax), %eax 6090; DARWIN-32-PIC-NEXT: retl 6091; 6092; DARWIN-64-STATIC-LABEL: bxr00: 6093; DARWIN-64-STATIC: ## %bb.0: ## %entry 6094; DARWIN-64-STATIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 6095; DARWIN-64-STATIC-NEXT: retq 6096; 6097; DARWIN-64-DYNAMIC-LABEL: bxr00: 6098; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 6099; DARWIN-64-DYNAMIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 6100; DARWIN-64-DYNAMIC-NEXT: retq 6101; 6102; DARWIN-64-PIC-LABEL: bxr00: 6103; DARWIN-64-PIC: ## %bb.0: ## %entry 6104; DARWIN-64-PIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 6105; DARWIN-64-PIC-NEXT: retq 6106 6107entry: 6108 ret i8* bitcast ([32 x i32]* @xsrc to i8*) 6109} 6110 6111define dso_local i8* @bar01() nounwind { 6112; LINUX-64-STATIC-LABEL: bar01: 6113; LINUX-64-STATIC: # %bb.0: # %entry 6114; LINUX-64-STATIC-NEXT: movq dst@GOTPCREL(%rip), %rax 6115; LINUX-64-STATIC-NEXT: retq 6116; 6117; LINUX-32-STATIC-LABEL: bar01: 6118; LINUX-32-STATIC: # %bb.0: # %entry 6119; LINUX-32-STATIC-NEXT: movl $dst, %eax 6120; LINUX-32-STATIC-NEXT: retl 6121; 6122; LINUX-32-PIC-LABEL: bar01: 6123; LINUX-32-PIC: # %bb.0: # %entry 6124; LINUX-32-PIC-NEXT: calll .L68$pb 6125; LINUX-32-PIC-NEXT: .L68$pb: 6126; LINUX-32-PIC-NEXT: popl %eax 6127; LINUX-32-PIC-NEXT: .Ltmp68: 6128; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp68-.L68$pb), %eax 6129; LINUX-32-PIC-NEXT: movl dst@GOT(%eax), %eax 6130; LINUX-32-PIC-NEXT: retl 6131; 6132; LINUX-64-PIC-LABEL: bar01: 6133; LINUX-64-PIC: # %bb.0: # %entry 6134; LINUX-64-PIC-NEXT: movq dst@GOTPCREL(%rip), %rax 6135; LINUX-64-PIC-NEXT: retq 6136; 6137; DARWIN-32-STATIC-LABEL: bar01: 6138; DARWIN-32-STATIC: ## %bb.0: ## %entry 6139; DARWIN-32-STATIC-NEXT: movl $_dst, %eax 6140; DARWIN-32-STATIC-NEXT: retl 6141; 6142; DARWIN-32-DYNAMIC-LABEL: bar01: 6143; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 6144; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, %eax 6145; DARWIN-32-DYNAMIC-NEXT: retl 6146; 6147; DARWIN-32-PIC-LABEL: bar01: 6148; DARWIN-32-PIC: ## %bb.0: ## %entry 6149; DARWIN-32-PIC-NEXT: calll L68$pb 6150; DARWIN-32-PIC-NEXT: L68$pb: 6151; DARWIN-32-PIC-NEXT: popl %eax 6152; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L68$pb(%eax), %eax 6153; DARWIN-32-PIC-NEXT: retl 6154; 6155; DARWIN-64-STATIC-LABEL: bar01: 6156; DARWIN-64-STATIC: ## %bb.0: ## %entry 6157; DARWIN-64-STATIC-NEXT: movq _dst@GOTPCREL(%rip), %rax 6158; DARWIN-64-STATIC-NEXT: retq 6159; 6160; DARWIN-64-DYNAMIC-LABEL: bar01: 6161; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 6162; DARWIN-64-DYNAMIC-NEXT: movq _dst@GOTPCREL(%rip), %rax 6163; DARWIN-64-DYNAMIC-NEXT: retq 6164; 6165; DARWIN-64-PIC-LABEL: bar01: 6166; DARWIN-64-PIC: ## %bb.0: ## %entry 6167; DARWIN-64-PIC-NEXT: movq _dst@GOTPCREL(%rip), %rax 6168; DARWIN-64-PIC-NEXT: retq 6169 6170entry: 6171 ret i8* bitcast ([131072 x i32]* @dst to i8*) 6172} 6173 6174define dso_local i8* @bxr01() nounwind { 6175; LINUX-64-STATIC-LABEL: bxr01: 6176; LINUX-64-STATIC: # %bb.0: # %entry 6177; LINUX-64-STATIC-NEXT: movq xdst@GOTPCREL(%rip), %rax 6178; LINUX-64-STATIC-NEXT: retq 6179; 6180; LINUX-32-STATIC-LABEL: bxr01: 6181; LINUX-32-STATIC: # %bb.0: # %entry 6182; LINUX-32-STATIC-NEXT: movl $xdst, %eax 6183; LINUX-32-STATIC-NEXT: retl 6184; 6185; LINUX-32-PIC-LABEL: bxr01: 6186; LINUX-32-PIC: # %bb.0: # %entry 6187; LINUX-32-PIC-NEXT: calll .L69$pb 6188; LINUX-32-PIC-NEXT: .L69$pb: 6189; LINUX-32-PIC-NEXT: popl %eax 6190; LINUX-32-PIC-NEXT: .Ltmp69: 6191; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp69-.L69$pb), %eax 6192; LINUX-32-PIC-NEXT: movl xdst@GOT(%eax), %eax 6193; LINUX-32-PIC-NEXT: retl 6194; 6195; LINUX-64-PIC-LABEL: bxr01: 6196; LINUX-64-PIC: # %bb.0: # %entry 6197; LINUX-64-PIC-NEXT: movq xdst@GOTPCREL(%rip), %rax 6198; LINUX-64-PIC-NEXT: retq 6199; 6200; DARWIN-32-STATIC-LABEL: bxr01: 6201; DARWIN-32-STATIC: ## %bb.0: ## %entry 6202; DARWIN-32-STATIC-NEXT: movl $_xdst, %eax 6203; DARWIN-32-STATIC-NEXT: retl 6204; 6205; DARWIN-32-DYNAMIC-LABEL: bxr01: 6206; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 6207; DARWIN-32-DYNAMIC-NEXT: movl L_xdst$non_lazy_ptr, %eax 6208; DARWIN-32-DYNAMIC-NEXT: retl 6209; 6210; DARWIN-32-PIC-LABEL: bxr01: 6211; DARWIN-32-PIC: ## %bb.0: ## %entry 6212; DARWIN-32-PIC-NEXT: calll L69$pb 6213; DARWIN-32-PIC-NEXT: L69$pb: 6214; DARWIN-32-PIC-NEXT: popl %eax 6215; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-L69$pb(%eax), %eax 6216; DARWIN-32-PIC-NEXT: retl 6217; 6218; DARWIN-64-STATIC-LABEL: bxr01: 6219; DARWIN-64-STATIC: ## %bb.0: ## %entry 6220; DARWIN-64-STATIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax 6221; DARWIN-64-STATIC-NEXT: retq 6222; 6223; DARWIN-64-DYNAMIC-LABEL: bxr01: 6224; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 6225; DARWIN-64-DYNAMIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax 6226; DARWIN-64-DYNAMIC-NEXT: retq 6227; 6228; DARWIN-64-PIC-LABEL: bxr01: 6229; DARWIN-64-PIC: ## %bb.0: ## %entry 6230; DARWIN-64-PIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax 6231; DARWIN-64-PIC-NEXT: retq 6232 6233entry: 6234 ret i8* bitcast ([32 x i32]* @xdst to i8*) 6235} 6236 6237define dso_local i8* @bar02() nounwind { 6238; LINUX-64-STATIC-LABEL: bar02: 6239; LINUX-64-STATIC: # %bb.0: # %entry 6240; LINUX-64-STATIC-NEXT: movq ptr@GOTPCREL(%rip), %rax 6241; LINUX-64-STATIC-NEXT: retq 6242; 6243; LINUX-32-STATIC-LABEL: bar02: 6244; LINUX-32-STATIC: # %bb.0: # %entry 6245; LINUX-32-STATIC-NEXT: movl $ptr, %eax 6246; LINUX-32-STATIC-NEXT: retl 6247; 6248; LINUX-32-PIC-LABEL: bar02: 6249; LINUX-32-PIC: # %bb.0: # %entry 6250; LINUX-32-PIC-NEXT: calll .L70$pb 6251; LINUX-32-PIC-NEXT: .L70$pb: 6252; LINUX-32-PIC-NEXT: popl %eax 6253; LINUX-32-PIC-NEXT: .Ltmp70: 6254; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp70-.L70$pb), %eax 6255; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax 6256; LINUX-32-PIC-NEXT: retl 6257; 6258; LINUX-64-PIC-LABEL: bar02: 6259; LINUX-64-PIC: # %bb.0: # %entry 6260; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rax 6261; LINUX-64-PIC-NEXT: retq 6262; 6263; DARWIN-32-STATIC-LABEL: bar02: 6264; DARWIN-32-STATIC: ## %bb.0: ## %entry 6265; DARWIN-32-STATIC-NEXT: movl $_ptr, %eax 6266; DARWIN-32-STATIC-NEXT: retl 6267; 6268; DARWIN-32-DYNAMIC-LABEL: bar02: 6269; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 6270; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %eax 6271; DARWIN-32-DYNAMIC-NEXT: retl 6272; 6273; DARWIN-32-PIC-LABEL: bar02: 6274; DARWIN-32-PIC: ## %bb.0: ## %entry 6275; DARWIN-32-PIC-NEXT: calll L70$pb 6276; DARWIN-32-PIC-NEXT: L70$pb: 6277; DARWIN-32-PIC-NEXT: popl %eax 6278; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L70$pb(%eax), %eax 6279; DARWIN-32-PIC-NEXT: retl 6280; 6281; DARWIN-64-STATIC-LABEL: bar02: 6282; DARWIN-64-STATIC: ## %bb.0: ## %entry 6283; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax 6284; DARWIN-64-STATIC-NEXT: retq 6285; 6286; DARWIN-64-DYNAMIC-LABEL: bar02: 6287; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 6288; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax 6289; DARWIN-64-DYNAMIC-NEXT: retq 6290; 6291; DARWIN-64-PIC-LABEL: bar02: 6292; DARWIN-64-PIC: ## %bb.0: ## %entry 6293; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax 6294; DARWIN-64-PIC-NEXT: retq 6295 6296entry: 6297 ret i8* bitcast (i32** @ptr to i8*) 6298} 6299 6300define dso_local i8* @bar03() nounwind { 6301; LINUX-64-STATIC-LABEL: bar03: 6302; LINUX-64-STATIC: # %bb.0: # %entry 6303; LINUX-64-STATIC-NEXT: movl $dsrc, %eax 6304; LINUX-64-STATIC-NEXT: retq 6305; 6306; LINUX-32-STATIC-LABEL: bar03: 6307; LINUX-32-STATIC: # %bb.0: # %entry 6308; LINUX-32-STATIC-NEXT: movl $dsrc, %eax 6309; LINUX-32-STATIC-NEXT: retl 6310; 6311; LINUX-32-PIC-LABEL: bar03: 6312; LINUX-32-PIC: # %bb.0: # %entry 6313; LINUX-32-PIC-NEXT: calll .L71$pb 6314; LINUX-32-PIC-NEXT: .L71$pb: 6315; LINUX-32-PIC-NEXT: popl %eax 6316; LINUX-32-PIC-NEXT: .Ltmp71: 6317; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp71-.L71$pb), %eax 6318; LINUX-32-PIC-NEXT: leal .Ldsrc$local@GOTOFF(%eax), %eax 6319; LINUX-32-PIC-NEXT: retl 6320; 6321; LINUX-64-PIC-LABEL: bar03: 6322; LINUX-64-PIC: # %bb.0: # %entry 6323; LINUX-64-PIC-NEXT: leaq .Ldsrc$local(%rip), %rax 6324; LINUX-64-PIC-NEXT: retq 6325; 6326; DARWIN-32-STATIC-LABEL: bar03: 6327; DARWIN-32-STATIC: ## %bb.0: ## %entry 6328; DARWIN-32-STATIC-NEXT: movl $_dsrc, %eax 6329; DARWIN-32-STATIC-NEXT: retl 6330; 6331; DARWIN-32-DYNAMIC-LABEL: bar03: 6332; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 6333; DARWIN-32-DYNAMIC-NEXT: movl $_dsrc, %eax 6334; DARWIN-32-DYNAMIC-NEXT: retl 6335; 6336; DARWIN-32-PIC-LABEL: bar03: 6337; DARWIN-32-PIC: ## %bb.0: ## %entry 6338; DARWIN-32-PIC-NEXT: calll L71$pb 6339; DARWIN-32-PIC-NEXT: L71$pb: 6340; DARWIN-32-PIC-NEXT: popl %eax 6341; DARWIN-32-PIC-NEXT: leal _dsrc-L71$pb(%eax), %eax 6342; DARWIN-32-PIC-NEXT: retl 6343; 6344; DARWIN-64-STATIC-LABEL: bar03: 6345; DARWIN-64-STATIC: ## %bb.0: ## %entry 6346; DARWIN-64-STATIC-NEXT: leaq _dsrc(%rip), %rax 6347; DARWIN-64-STATIC-NEXT: retq 6348; 6349; DARWIN-64-DYNAMIC-LABEL: bar03: 6350; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 6351; DARWIN-64-DYNAMIC-NEXT: leaq _dsrc(%rip), %rax 6352; DARWIN-64-DYNAMIC-NEXT: retq 6353; 6354; DARWIN-64-PIC-LABEL: bar03: 6355; DARWIN-64-PIC: ## %bb.0: ## %entry 6356; DARWIN-64-PIC-NEXT: leaq _dsrc(%rip), %rax 6357; DARWIN-64-PIC-NEXT: retq 6358 6359entry: 6360 ret i8* bitcast ([131072 x i32]* @dsrc to i8*) 6361} 6362 6363define dso_local i8* @bar04() nounwind { 6364; LINUX-64-STATIC-LABEL: bar04: 6365; LINUX-64-STATIC: # %bb.0: # %entry 6366; LINUX-64-STATIC-NEXT: movl $ddst, %eax 6367; LINUX-64-STATIC-NEXT: retq 6368; 6369; LINUX-32-STATIC-LABEL: bar04: 6370; LINUX-32-STATIC: # %bb.0: # %entry 6371; LINUX-32-STATIC-NEXT: movl $ddst, %eax 6372; LINUX-32-STATIC-NEXT: retl 6373; 6374; LINUX-32-PIC-LABEL: bar04: 6375; LINUX-32-PIC: # %bb.0: # %entry 6376; LINUX-32-PIC-NEXT: calll .L72$pb 6377; LINUX-32-PIC-NEXT: .L72$pb: 6378; LINUX-32-PIC-NEXT: popl %eax 6379; LINUX-32-PIC-NEXT: .Ltmp72: 6380; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp72-.L72$pb), %eax 6381; LINUX-32-PIC-NEXT: leal .Lddst$local@GOTOFF(%eax), %eax 6382; LINUX-32-PIC-NEXT: retl 6383; 6384; LINUX-64-PIC-LABEL: bar04: 6385; LINUX-64-PIC: # %bb.0: # %entry 6386; LINUX-64-PIC-NEXT: leaq .Lddst$local(%rip), %rax 6387; LINUX-64-PIC-NEXT: retq 6388; 6389; DARWIN-32-STATIC-LABEL: bar04: 6390; DARWIN-32-STATIC: ## %bb.0: ## %entry 6391; DARWIN-32-STATIC-NEXT: movl $_ddst, %eax 6392; DARWIN-32-STATIC-NEXT: retl 6393; 6394; DARWIN-32-DYNAMIC-LABEL: bar04: 6395; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 6396; DARWIN-32-DYNAMIC-NEXT: movl $_ddst, %eax 6397; DARWIN-32-DYNAMIC-NEXT: retl 6398; 6399; DARWIN-32-PIC-LABEL: bar04: 6400; DARWIN-32-PIC: ## %bb.0: ## %entry 6401; DARWIN-32-PIC-NEXT: calll L72$pb 6402; DARWIN-32-PIC-NEXT: L72$pb: 6403; DARWIN-32-PIC-NEXT: popl %eax 6404; DARWIN-32-PIC-NEXT: leal _ddst-L72$pb(%eax), %eax 6405; DARWIN-32-PIC-NEXT: retl 6406; 6407; DARWIN-64-STATIC-LABEL: bar04: 6408; DARWIN-64-STATIC: ## %bb.0: ## %entry 6409; DARWIN-64-STATIC-NEXT: leaq _ddst(%rip), %rax 6410; DARWIN-64-STATIC-NEXT: retq 6411; 6412; DARWIN-64-DYNAMIC-LABEL: bar04: 6413; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 6414; DARWIN-64-DYNAMIC-NEXT: leaq _ddst(%rip), %rax 6415; DARWIN-64-DYNAMIC-NEXT: retq 6416; 6417; DARWIN-64-PIC-LABEL: bar04: 6418; DARWIN-64-PIC: ## %bb.0: ## %entry 6419; DARWIN-64-PIC-NEXT: leaq _ddst(%rip), %rax 6420; DARWIN-64-PIC-NEXT: retq 6421 6422entry: 6423 ret i8* bitcast ([131072 x i32]* @ddst to i8*) 6424} 6425 6426define dso_local i8* @bar05() nounwind { 6427; LINUX-64-STATIC-LABEL: bar05: 6428; LINUX-64-STATIC: # %bb.0: # %entry 6429; LINUX-64-STATIC-NEXT: movl $dptr, %eax 6430; LINUX-64-STATIC-NEXT: retq 6431; 6432; LINUX-32-STATIC-LABEL: bar05: 6433; LINUX-32-STATIC: # %bb.0: # %entry 6434; LINUX-32-STATIC-NEXT: movl $dptr, %eax 6435; LINUX-32-STATIC-NEXT: retl 6436; 6437; LINUX-32-PIC-LABEL: bar05: 6438; LINUX-32-PIC: # %bb.0: # %entry 6439; LINUX-32-PIC-NEXT: calll .L73$pb 6440; LINUX-32-PIC-NEXT: .L73$pb: 6441; LINUX-32-PIC-NEXT: popl %eax 6442; LINUX-32-PIC-NEXT: .Ltmp73: 6443; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp73-.L73$pb), %eax 6444; LINUX-32-PIC-NEXT: leal .Ldptr$local@GOTOFF(%eax), %eax 6445; LINUX-32-PIC-NEXT: retl 6446; 6447; LINUX-64-PIC-LABEL: bar05: 6448; LINUX-64-PIC: # %bb.0: # %entry 6449; LINUX-64-PIC-NEXT: leaq .Ldptr$local(%rip), %rax 6450; LINUX-64-PIC-NEXT: retq 6451; 6452; DARWIN-32-STATIC-LABEL: bar05: 6453; DARWIN-32-STATIC: ## %bb.0: ## %entry 6454; DARWIN-32-STATIC-NEXT: movl $_dptr, %eax 6455; DARWIN-32-STATIC-NEXT: retl 6456; 6457; DARWIN-32-DYNAMIC-LABEL: bar05: 6458; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 6459; DARWIN-32-DYNAMIC-NEXT: movl $_dptr, %eax 6460; DARWIN-32-DYNAMIC-NEXT: retl 6461; 6462; DARWIN-32-PIC-LABEL: bar05: 6463; DARWIN-32-PIC: ## %bb.0: ## %entry 6464; DARWIN-32-PIC-NEXT: calll L73$pb 6465; DARWIN-32-PIC-NEXT: L73$pb: 6466; DARWIN-32-PIC-NEXT: popl %eax 6467; DARWIN-32-PIC-NEXT: leal _dptr-L73$pb(%eax), %eax 6468; DARWIN-32-PIC-NEXT: retl 6469; 6470; DARWIN-64-STATIC-LABEL: bar05: 6471; DARWIN-64-STATIC: ## %bb.0: ## %entry 6472; DARWIN-64-STATIC-NEXT: leaq _dptr(%rip), %rax 6473; DARWIN-64-STATIC-NEXT: retq 6474; 6475; DARWIN-64-DYNAMIC-LABEL: bar05: 6476; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 6477; DARWIN-64-DYNAMIC-NEXT: leaq _dptr(%rip), %rax 6478; DARWIN-64-DYNAMIC-NEXT: retq 6479; 6480; DARWIN-64-PIC-LABEL: bar05: 6481; DARWIN-64-PIC: ## %bb.0: ## %entry 6482; DARWIN-64-PIC-NEXT: leaq _dptr(%rip), %rax 6483; DARWIN-64-PIC-NEXT: retq 6484 6485entry: 6486 ret i8* bitcast (i32** @dptr to i8*) 6487} 6488 6489define dso_local i8* @bar06() nounwind { 6490; LINUX-64-STATIC-LABEL: bar06: 6491; LINUX-64-STATIC: # %bb.0: # %entry 6492; LINUX-64-STATIC-NEXT: movl $lsrc, %eax 6493; LINUX-64-STATIC-NEXT: retq 6494; 6495; LINUX-32-STATIC-LABEL: bar06: 6496; LINUX-32-STATIC: # %bb.0: # %entry 6497; LINUX-32-STATIC-NEXT: movl $lsrc, %eax 6498; LINUX-32-STATIC-NEXT: retl 6499; 6500; LINUX-32-PIC-LABEL: bar06: 6501; LINUX-32-PIC: # %bb.0: # %entry 6502; LINUX-32-PIC-NEXT: calll .L74$pb 6503; LINUX-32-PIC-NEXT: .L74$pb: 6504; LINUX-32-PIC-NEXT: popl %eax 6505; LINUX-32-PIC-NEXT: .Ltmp74: 6506; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp74-.L74$pb), %eax 6507; LINUX-32-PIC-NEXT: leal lsrc@GOTOFF(%eax), %eax 6508; LINUX-32-PIC-NEXT: retl 6509; 6510; LINUX-64-PIC-LABEL: bar06: 6511; LINUX-64-PIC: # %bb.0: # %entry 6512; LINUX-64-PIC-NEXT: leaq lsrc(%rip), %rax 6513; LINUX-64-PIC-NEXT: retq 6514; 6515; DARWIN-32-STATIC-LABEL: bar06: 6516; DARWIN-32-STATIC: ## %bb.0: ## %entry 6517; DARWIN-32-STATIC-NEXT: movl $_lsrc, %eax 6518; DARWIN-32-STATIC-NEXT: retl 6519; 6520; DARWIN-32-DYNAMIC-LABEL: bar06: 6521; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 6522; DARWIN-32-DYNAMIC-NEXT: movl $_lsrc, %eax 6523; DARWIN-32-DYNAMIC-NEXT: retl 6524; 6525; DARWIN-32-PIC-LABEL: bar06: 6526; DARWIN-32-PIC: ## %bb.0: ## %entry 6527; DARWIN-32-PIC-NEXT: calll L74$pb 6528; DARWIN-32-PIC-NEXT: L74$pb: 6529; DARWIN-32-PIC-NEXT: popl %eax 6530; DARWIN-32-PIC-NEXT: leal _lsrc-L74$pb(%eax), %eax 6531; DARWIN-32-PIC-NEXT: retl 6532; 6533; DARWIN-64-STATIC-LABEL: bar06: 6534; DARWIN-64-STATIC: ## %bb.0: ## %entry 6535; DARWIN-64-STATIC-NEXT: leaq _lsrc(%rip), %rax 6536; DARWIN-64-STATIC-NEXT: retq 6537; 6538; DARWIN-64-DYNAMIC-LABEL: bar06: 6539; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 6540; DARWIN-64-DYNAMIC-NEXT: leaq _lsrc(%rip), %rax 6541; DARWIN-64-DYNAMIC-NEXT: retq 6542; 6543; DARWIN-64-PIC-LABEL: bar06: 6544; DARWIN-64-PIC: ## %bb.0: ## %entry 6545; DARWIN-64-PIC-NEXT: leaq _lsrc(%rip), %rax 6546; DARWIN-64-PIC-NEXT: retq 6547 6548entry: 6549 ret i8* bitcast ([131072 x i32]* @lsrc to i8*) 6550} 6551 6552define dso_local i8* @bar07() nounwind { 6553; LINUX-64-STATIC-LABEL: bar07: 6554; LINUX-64-STATIC: # %bb.0: # %entry 6555; LINUX-64-STATIC-NEXT: movl $ldst, %eax 6556; LINUX-64-STATIC-NEXT: retq 6557; 6558; LINUX-32-STATIC-LABEL: bar07: 6559; LINUX-32-STATIC: # %bb.0: # %entry 6560; LINUX-32-STATIC-NEXT: movl $ldst, %eax 6561; LINUX-32-STATIC-NEXT: retl 6562; 6563; LINUX-32-PIC-LABEL: bar07: 6564; LINUX-32-PIC: # %bb.0: # %entry 6565; LINUX-32-PIC-NEXT: calll .L75$pb 6566; LINUX-32-PIC-NEXT: .L75$pb: 6567; LINUX-32-PIC-NEXT: popl %eax 6568; LINUX-32-PIC-NEXT: .Ltmp75: 6569; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp75-.L75$pb), %eax 6570; LINUX-32-PIC-NEXT: leal ldst@GOTOFF(%eax), %eax 6571; LINUX-32-PIC-NEXT: retl 6572; 6573; LINUX-64-PIC-LABEL: bar07: 6574; LINUX-64-PIC: # %bb.0: # %entry 6575; LINUX-64-PIC-NEXT: leaq ldst(%rip), %rax 6576; LINUX-64-PIC-NEXT: retq 6577; 6578; DARWIN-32-STATIC-LABEL: bar07: 6579; DARWIN-32-STATIC: ## %bb.0: ## %entry 6580; DARWIN-32-STATIC-NEXT: movl $_ldst, %eax 6581; DARWIN-32-STATIC-NEXT: retl 6582; 6583; DARWIN-32-DYNAMIC-LABEL: bar07: 6584; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 6585; DARWIN-32-DYNAMIC-NEXT: movl $_ldst, %eax 6586; DARWIN-32-DYNAMIC-NEXT: retl 6587; 6588; DARWIN-32-PIC-LABEL: bar07: 6589; DARWIN-32-PIC: ## %bb.0: ## %entry 6590; DARWIN-32-PIC-NEXT: calll L75$pb 6591; DARWIN-32-PIC-NEXT: L75$pb: 6592; DARWIN-32-PIC-NEXT: popl %eax 6593; DARWIN-32-PIC-NEXT: leal _ldst-L75$pb(%eax), %eax 6594; DARWIN-32-PIC-NEXT: retl 6595; 6596; DARWIN-64-STATIC-LABEL: bar07: 6597; DARWIN-64-STATIC: ## %bb.0: ## %entry 6598; DARWIN-64-STATIC-NEXT: leaq _ldst(%rip), %rax 6599; DARWIN-64-STATIC-NEXT: retq 6600; 6601; DARWIN-64-DYNAMIC-LABEL: bar07: 6602; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 6603; DARWIN-64-DYNAMIC-NEXT: leaq _ldst(%rip), %rax 6604; DARWIN-64-DYNAMIC-NEXT: retq 6605; 6606; DARWIN-64-PIC-LABEL: bar07: 6607; DARWIN-64-PIC: ## %bb.0: ## %entry 6608; DARWIN-64-PIC-NEXT: leaq _ldst(%rip), %rax 6609; DARWIN-64-PIC-NEXT: retq 6610 6611entry: 6612 ret i8* bitcast ([131072 x i32]* @ldst to i8*) 6613} 6614 6615define dso_local i8* @bar08() nounwind { 6616; LINUX-64-STATIC-LABEL: bar08: 6617; LINUX-64-STATIC: # %bb.0: # %entry 6618; LINUX-64-STATIC-NEXT: movl $lptr, %eax 6619; LINUX-64-STATIC-NEXT: retq 6620; 6621; LINUX-32-STATIC-LABEL: bar08: 6622; LINUX-32-STATIC: # %bb.0: # %entry 6623; LINUX-32-STATIC-NEXT: movl $lptr, %eax 6624; LINUX-32-STATIC-NEXT: retl 6625; 6626; LINUX-32-PIC-LABEL: bar08: 6627; LINUX-32-PIC: # %bb.0: # %entry 6628; LINUX-32-PIC-NEXT: calll .L76$pb 6629; LINUX-32-PIC-NEXT: .L76$pb: 6630; LINUX-32-PIC-NEXT: popl %eax 6631; LINUX-32-PIC-NEXT: .Ltmp76: 6632; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp76-.L76$pb), %eax 6633; LINUX-32-PIC-NEXT: leal lptr@GOTOFF(%eax), %eax 6634; LINUX-32-PIC-NEXT: retl 6635; 6636; LINUX-64-PIC-LABEL: bar08: 6637; LINUX-64-PIC: # %bb.0: # %entry 6638; LINUX-64-PIC-NEXT: leaq lptr(%rip), %rax 6639; LINUX-64-PIC-NEXT: retq 6640; 6641; DARWIN-32-STATIC-LABEL: bar08: 6642; DARWIN-32-STATIC: ## %bb.0: ## %entry 6643; DARWIN-32-STATIC-NEXT: movl $_lptr, %eax 6644; DARWIN-32-STATIC-NEXT: retl 6645; 6646; DARWIN-32-DYNAMIC-LABEL: bar08: 6647; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 6648; DARWIN-32-DYNAMIC-NEXT: movl $_lptr, %eax 6649; DARWIN-32-DYNAMIC-NEXT: retl 6650; 6651; DARWIN-32-PIC-LABEL: bar08: 6652; DARWIN-32-PIC: ## %bb.0: ## %entry 6653; DARWIN-32-PIC-NEXT: calll L76$pb 6654; DARWIN-32-PIC-NEXT: L76$pb: 6655; DARWIN-32-PIC-NEXT: popl %eax 6656; DARWIN-32-PIC-NEXT: leal _lptr-L76$pb(%eax), %eax 6657; DARWIN-32-PIC-NEXT: retl 6658; 6659; DARWIN-64-STATIC-LABEL: bar08: 6660; DARWIN-64-STATIC: ## %bb.0: ## %entry 6661; DARWIN-64-STATIC-NEXT: leaq _lptr(%rip), %rax 6662; DARWIN-64-STATIC-NEXT: retq 6663; 6664; DARWIN-64-DYNAMIC-LABEL: bar08: 6665; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 6666; DARWIN-64-DYNAMIC-NEXT: leaq _lptr(%rip), %rax 6667; DARWIN-64-DYNAMIC-NEXT: retq 6668; 6669; DARWIN-64-PIC-LABEL: bar08: 6670; DARWIN-64-PIC: ## %bb.0: ## %entry 6671; DARWIN-64-PIC-NEXT: leaq _lptr(%rip), %rax 6672; DARWIN-64-PIC-NEXT: retq 6673 6674entry: 6675 ret i8* bitcast (i32** @lptr to i8*) 6676} 6677 6678define dso_local i8* @har00() nounwind { 6679; LINUX-64-STATIC-LABEL: har00: 6680; LINUX-64-STATIC: # %bb.0: # %entry 6681; LINUX-64-STATIC-NEXT: movq src@GOTPCREL(%rip), %rax 6682; LINUX-64-STATIC-NEXT: retq 6683; 6684; LINUX-32-STATIC-LABEL: har00: 6685; LINUX-32-STATIC: # %bb.0: # %entry 6686; LINUX-32-STATIC-NEXT: movl $src, %eax 6687; LINUX-32-STATIC-NEXT: retl 6688; 6689; LINUX-32-PIC-LABEL: har00: 6690; LINUX-32-PIC: # %bb.0: # %entry 6691; LINUX-32-PIC-NEXT: calll .L77$pb 6692; LINUX-32-PIC-NEXT: .L77$pb: 6693; LINUX-32-PIC-NEXT: popl %eax 6694; LINUX-32-PIC-NEXT: .Ltmp77: 6695; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp77-.L77$pb), %eax 6696; LINUX-32-PIC-NEXT: movl src@GOT(%eax), %eax 6697; LINUX-32-PIC-NEXT: retl 6698; 6699; LINUX-64-PIC-LABEL: har00: 6700; LINUX-64-PIC: # %bb.0: # %entry 6701; LINUX-64-PIC-NEXT: movq src@GOTPCREL(%rip), %rax 6702; LINUX-64-PIC-NEXT: retq 6703; 6704; DARWIN-32-STATIC-LABEL: har00: 6705; DARWIN-32-STATIC: ## %bb.0: ## %entry 6706; DARWIN-32-STATIC-NEXT: movl $_src, %eax 6707; DARWIN-32-STATIC-NEXT: retl 6708; 6709; DARWIN-32-DYNAMIC-LABEL: har00: 6710; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 6711; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %eax 6712; DARWIN-32-DYNAMIC-NEXT: retl 6713; 6714; DARWIN-32-PIC-LABEL: har00: 6715; DARWIN-32-PIC: ## %bb.0: ## %entry 6716; DARWIN-32-PIC-NEXT: calll L77$pb 6717; DARWIN-32-PIC-NEXT: L77$pb: 6718; DARWIN-32-PIC-NEXT: popl %eax 6719; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L77$pb(%eax), %eax 6720; DARWIN-32-PIC-NEXT: retl 6721; 6722; DARWIN-64-STATIC-LABEL: har00: 6723; DARWIN-64-STATIC: ## %bb.0: ## %entry 6724; DARWIN-64-STATIC-NEXT: movq _src@GOTPCREL(%rip), %rax 6725; DARWIN-64-STATIC-NEXT: retq 6726; 6727; DARWIN-64-DYNAMIC-LABEL: har00: 6728; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 6729; DARWIN-64-DYNAMIC-NEXT: movq _src@GOTPCREL(%rip), %rax 6730; DARWIN-64-DYNAMIC-NEXT: retq 6731; 6732; DARWIN-64-PIC-LABEL: har00: 6733; DARWIN-64-PIC: ## %bb.0: ## %entry 6734; DARWIN-64-PIC-NEXT: movq _src@GOTPCREL(%rip), %rax 6735; DARWIN-64-PIC-NEXT: retq 6736 6737entry: 6738 ret i8* bitcast ([131072 x i32]* @src to i8*) 6739} 6740 6741define dso_local i8* @hxr00() nounwind { 6742; LINUX-64-STATIC-LABEL: hxr00: 6743; LINUX-64-STATIC: # %bb.0: # %entry 6744; LINUX-64-STATIC-NEXT: movq xsrc@GOTPCREL(%rip), %rax 6745; LINUX-64-STATIC-NEXT: retq 6746; 6747; LINUX-32-STATIC-LABEL: hxr00: 6748; LINUX-32-STATIC: # %bb.0: # %entry 6749; LINUX-32-STATIC-NEXT: movl $xsrc, %eax 6750; LINUX-32-STATIC-NEXT: retl 6751; 6752; LINUX-32-PIC-LABEL: hxr00: 6753; LINUX-32-PIC: # %bb.0: # %entry 6754; LINUX-32-PIC-NEXT: calll .L78$pb 6755; LINUX-32-PIC-NEXT: .L78$pb: 6756; LINUX-32-PIC-NEXT: popl %eax 6757; LINUX-32-PIC-NEXT: .Ltmp78: 6758; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp78-.L78$pb), %eax 6759; LINUX-32-PIC-NEXT: movl xsrc@GOT(%eax), %eax 6760; LINUX-32-PIC-NEXT: retl 6761; 6762; LINUX-64-PIC-LABEL: hxr00: 6763; LINUX-64-PIC: # %bb.0: # %entry 6764; LINUX-64-PIC-NEXT: movq xsrc@GOTPCREL(%rip), %rax 6765; LINUX-64-PIC-NEXT: retq 6766; 6767; DARWIN-32-STATIC-LABEL: hxr00: 6768; DARWIN-32-STATIC: ## %bb.0: ## %entry 6769; DARWIN-32-STATIC-NEXT: movl $_xsrc, %eax 6770; DARWIN-32-STATIC-NEXT: retl 6771; 6772; DARWIN-32-DYNAMIC-LABEL: hxr00: 6773; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 6774; DARWIN-32-DYNAMIC-NEXT: movl L_xsrc$non_lazy_ptr, %eax 6775; DARWIN-32-DYNAMIC-NEXT: retl 6776; 6777; DARWIN-32-PIC-LABEL: hxr00: 6778; DARWIN-32-PIC: ## %bb.0: ## %entry 6779; DARWIN-32-PIC-NEXT: calll L78$pb 6780; DARWIN-32-PIC-NEXT: L78$pb: 6781; DARWIN-32-PIC-NEXT: popl %eax 6782; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-L78$pb(%eax), %eax 6783; DARWIN-32-PIC-NEXT: retl 6784; 6785; DARWIN-64-STATIC-LABEL: hxr00: 6786; DARWIN-64-STATIC: ## %bb.0: ## %entry 6787; DARWIN-64-STATIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 6788; DARWIN-64-STATIC-NEXT: retq 6789; 6790; DARWIN-64-DYNAMIC-LABEL: hxr00: 6791; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 6792; DARWIN-64-DYNAMIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 6793; DARWIN-64-DYNAMIC-NEXT: retq 6794; 6795; DARWIN-64-PIC-LABEL: hxr00: 6796; DARWIN-64-PIC: ## %bb.0: ## %entry 6797; DARWIN-64-PIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 6798; DARWIN-64-PIC-NEXT: retq 6799 6800entry: 6801 ret i8* bitcast ([32 x i32]* @xsrc to i8*) 6802} 6803 6804define dso_local i8* @har01() nounwind { 6805; LINUX-64-STATIC-LABEL: har01: 6806; LINUX-64-STATIC: # %bb.0: # %entry 6807; LINUX-64-STATIC-NEXT: movq dst@GOTPCREL(%rip), %rax 6808; LINUX-64-STATIC-NEXT: retq 6809; 6810; LINUX-32-STATIC-LABEL: har01: 6811; LINUX-32-STATIC: # %bb.0: # %entry 6812; LINUX-32-STATIC-NEXT: movl $dst, %eax 6813; LINUX-32-STATIC-NEXT: retl 6814; 6815; LINUX-32-PIC-LABEL: har01: 6816; LINUX-32-PIC: # %bb.0: # %entry 6817; LINUX-32-PIC-NEXT: calll .L79$pb 6818; LINUX-32-PIC-NEXT: .L79$pb: 6819; LINUX-32-PIC-NEXT: popl %eax 6820; LINUX-32-PIC-NEXT: .Ltmp79: 6821; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp79-.L79$pb), %eax 6822; LINUX-32-PIC-NEXT: movl dst@GOT(%eax), %eax 6823; LINUX-32-PIC-NEXT: retl 6824; 6825; LINUX-64-PIC-LABEL: har01: 6826; LINUX-64-PIC: # %bb.0: # %entry 6827; LINUX-64-PIC-NEXT: movq dst@GOTPCREL(%rip), %rax 6828; LINUX-64-PIC-NEXT: retq 6829; 6830; DARWIN-32-STATIC-LABEL: har01: 6831; DARWIN-32-STATIC: ## %bb.0: ## %entry 6832; DARWIN-32-STATIC-NEXT: movl $_dst, %eax 6833; DARWIN-32-STATIC-NEXT: retl 6834; 6835; DARWIN-32-DYNAMIC-LABEL: har01: 6836; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 6837; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, %eax 6838; DARWIN-32-DYNAMIC-NEXT: retl 6839; 6840; DARWIN-32-PIC-LABEL: har01: 6841; DARWIN-32-PIC: ## %bb.0: ## %entry 6842; DARWIN-32-PIC-NEXT: calll L79$pb 6843; DARWIN-32-PIC-NEXT: L79$pb: 6844; DARWIN-32-PIC-NEXT: popl %eax 6845; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L79$pb(%eax), %eax 6846; DARWIN-32-PIC-NEXT: retl 6847; 6848; DARWIN-64-STATIC-LABEL: har01: 6849; DARWIN-64-STATIC: ## %bb.0: ## %entry 6850; DARWIN-64-STATIC-NEXT: movq _dst@GOTPCREL(%rip), %rax 6851; DARWIN-64-STATIC-NEXT: retq 6852; 6853; DARWIN-64-DYNAMIC-LABEL: har01: 6854; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 6855; DARWIN-64-DYNAMIC-NEXT: movq _dst@GOTPCREL(%rip), %rax 6856; DARWIN-64-DYNAMIC-NEXT: retq 6857; 6858; DARWIN-64-PIC-LABEL: har01: 6859; DARWIN-64-PIC: ## %bb.0: ## %entry 6860; DARWIN-64-PIC-NEXT: movq _dst@GOTPCREL(%rip), %rax 6861; DARWIN-64-PIC-NEXT: retq 6862 6863entry: 6864 ret i8* bitcast ([131072 x i32]* @dst to i8*) 6865} 6866 6867define dso_local i8* @hxr01() nounwind { 6868; LINUX-64-STATIC-LABEL: hxr01: 6869; LINUX-64-STATIC: # %bb.0: # %entry 6870; LINUX-64-STATIC-NEXT: movq xdst@GOTPCREL(%rip), %rax 6871; LINUX-64-STATIC-NEXT: retq 6872; 6873; LINUX-32-STATIC-LABEL: hxr01: 6874; LINUX-32-STATIC: # %bb.0: # %entry 6875; LINUX-32-STATIC-NEXT: movl $xdst, %eax 6876; LINUX-32-STATIC-NEXT: retl 6877; 6878; LINUX-32-PIC-LABEL: hxr01: 6879; LINUX-32-PIC: # %bb.0: # %entry 6880; LINUX-32-PIC-NEXT: calll .L80$pb 6881; LINUX-32-PIC-NEXT: .L80$pb: 6882; LINUX-32-PIC-NEXT: popl %eax 6883; LINUX-32-PIC-NEXT: .Ltmp80: 6884; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp80-.L80$pb), %eax 6885; LINUX-32-PIC-NEXT: movl xdst@GOT(%eax), %eax 6886; LINUX-32-PIC-NEXT: retl 6887; 6888; LINUX-64-PIC-LABEL: hxr01: 6889; LINUX-64-PIC: # %bb.0: # %entry 6890; LINUX-64-PIC-NEXT: movq xdst@GOTPCREL(%rip), %rax 6891; LINUX-64-PIC-NEXT: retq 6892; 6893; DARWIN-32-STATIC-LABEL: hxr01: 6894; DARWIN-32-STATIC: ## %bb.0: ## %entry 6895; DARWIN-32-STATIC-NEXT: movl $_xdst, %eax 6896; DARWIN-32-STATIC-NEXT: retl 6897; 6898; DARWIN-32-DYNAMIC-LABEL: hxr01: 6899; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 6900; DARWIN-32-DYNAMIC-NEXT: movl L_xdst$non_lazy_ptr, %eax 6901; DARWIN-32-DYNAMIC-NEXT: retl 6902; 6903; DARWIN-32-PIC-LABEL: hxr01: 6904; DARWIN-32-PIC: ## %bb.0: ## %entry 6905; DARWIN-32-PIC-NEXT: calll L80$pb 6906; DARWIN-32-PIC-NEXT: L80$pb: 6907; DARWIN-32-PIC-NEXT: popl %eax 6908; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-L80$pb(%eax), %eax 6909; DARWIN-32-PIC-NEXT: retl 6910; 6911; DARWIN-64-STATIC-LABEL: hxr01: 6912; DARWIN-64-STATIC: ## %bb.0: ## %entry 6913; DARWIN-64-STATIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax 6914; DARWIN-64-STATIC-NEXT: retq 6915; 6916; DARWIN-64-DYNAMIC-LABEL: hxr01: 6917; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 6918; DARWIN-64-DYNAMIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax 6919; DARWIN-64-DYNAMIC-NEXT: retq 6920; 6921; DARWIN-64-PIC-LABEL: hxr01: 6922; DARWIN-64-PIC: ## %bb.0: ## %entry 6923; DARWIN-64-PIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax 6924; DARWIN-64-PIC-NEXT: retq 6925 6926entry: 6927 ret i8* bitcast ([32 x i32]* @xdst to i8*) 6928} 6929 6930define dso_local i8* @har02() nounwind { 6931; LINUX-64-STATIC-LABEL: har02: 6932; LINUX-64-STATIC: # %bb.0: # %entry 6933; LINUX-64-STATIC-NEXT: movq ptr@GOTPCREL(%rip), %rax 6934; LINUX-64-STATIC-NEXT: movq (%rax), %rax 6935; LINUX-64-STATIC-NEXT: retq 6936; 6937; LINUX-32-STATIC-LABEL: har02: 6938; LINUX-32-STATIC: # %bb.0: # %entry 6939; LINUX-32-STATIC-NEXT: movl ptr, %eax 6940; LINUX-32-STATIC-NEXT: retl 6941; 6942; LINUX-32-PIC-LABEL: har02: 6943; LINUX-32-PIC: # %bb.0: # %entry 6944; LINUX-32-PIC-NEXT: calll .L81$pb 6945; LINUX-32-PIC-NEXT: .L81$pb: 6946; LINUX-32-PIC-NEXT: popl %eax 6947; LINUX-32-PIC-NEXT: .Ltmp81: 6948; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp81-.L81$pb), %eax 6949; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax 6950; LINUX-32-PIC-NEXT: movl (%eax), %eax 6951; LINUX-32-PIC-NEXT: retl 6952; 6953; LINUX-64-PIC-LABEL: har02: 6954; LINUX-64-PIC: # %bb.0: # %entry 6955; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rax 6956; LINUX-64-PIC-NEXT: movq (%rax), %rax 6957; LINUX-64-PIC-NEXT: retq 6958; 6959; DARWIN-32-STATIC-LABEL: har02: 6960; DARWIN-32-STATIC: ## %bb.0: ## %entry 6961; DARWIN-32-STATIC-NEXT: movl _ptr, %eax 6962; DARWIN-32-STATIC-NEXT: retl 6963; 6964; DARWIN-32-DYNAMIC-LABEL: har02: 6965; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 6966; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %eax 6967; DARWIN-32-DYNAMIC-NEXT: movl (%eax), %eax 6968; DARWIN-32-DYNAMIC-NEXT: retl 6969; 6970; DARWIN-32-PIC-LABEL: har02: 6971; DARWIN-32-PIC: ## %bb.0: ## %entry 6972; DARWIN-32-PIC-NEXT: calll L81$pb 6973; DARWIN-32-PIC-NEXT: L81$pb: 6974; DARWIN-32-PIC-NEXT: popl %eax 6975; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L81$pb(%eax), %eax 6976; DARWIN-32-PIC-NEXT: movl (%eax), %eax 6977; DARWIN-32-PIC-NEXT: retl 6978; 6979; DARWIN-64-STATIC-LABEL: har02: 6980; DARWIN-64-STATIC: ## %bb.0: ## %entry 6981; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax 6982; DARWIN-64-STATIC-NEXT: movq (%rax), %rax 6983; DARWIN-64-STATIC-NEXT: retq 6984; 6985; DARWIN-64-DYNAMIC-LABEL: har02: 6986; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 6987; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax 6988; DARWIN-64-DYNAMIC-NEXT: movq (%rax), %rax 6989; DARWIN-64-DYNAMIC-NEXT: retq 6990; 6991; DARWIN-64-PIC-LABEL: har02: 6992; DARWIN-64-PIC: ## %bb.0: ## %entry 6993; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax 6994; DARWIN-64-PIC-NEXT: movq (%rax), %rax 6995; DARWIN-64-PIC-NEXT: retq 6996 6997entry: 6998 %0 = load i32*, i32** @ptr, align 8 6999 %1 = bitcast i32* %0 to i8* 7000 ret i8* %1 7001} 7002 7003define dso_local i8* @har03() nounwind { 7004; LINUX-64-STATIC-LABEL: har03: 7005; LINUX-64-STATIC: # %bb.0: # %entry 7006; LINUX-64-STATIC-NEXT: movl $dsrc, %eax 7007; LINUX-64-STATIC-NEXT: retq 7008; 7009; LINUX-32-STATIC-LABEL: har03: 7010; LINUX-32-STATIC: # %bb.0: # %entry 7011; LINUX-32-STATIC-NEXT: movl $dsrc, %eax 7012; LINUX-32-STATIC-NEXT: retl 7013; 7014; LINUX-32-PIC-LABEL: har03: 7015; LINUX-32-PIC: # %bb.0: # %entry 7016; LINUX-32-PIC-NEXT: calll .L82$pb 7017; LINUX-32-PIC-NEXT: .L82$pb: 7018; LINUX-32-PIC-NEXT: popl %eax 7019; LINUX-32-PIC-NEXT: .Ltmp82: 7020; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp82-.L82$pb), %eax 7021; LINUX-32-PIC-NEXT: leal .Ldsrc$local@GOTOFF(%eax), %eax 7022; LINUX-32-PIC-NEXT: retl 7023; 7024; LINUX-64-PIC-LABEL: har03: 7025; LINUX-64-PIC: # %bb.0: # %entry 7026; LINUX-64-PIC-NEXT: leaq .Ldsrc$local(%rip), %rax 7027; LINUX-64-PIC-NEXT: retq 7028; 7029; DARWIN-32-STATIC-LABEL: har03: 7030; DARWIN-32-STATIC: ## %bb.0: ## %entry 7031; DARWIN-32-STATIC-NEXT: movl $_dsrc, %eax 7032; DARWIN-32-STATIC-NEXT: retl 7033; 7034; DARWIN-32-DYNAMIC-LABEL: har03: 7035; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 7036; DARWIN-32-DYNAMIC-NEXT: movl $_dsrc, %eax 7037; DARWIN-32-DYNAMIC-NEXT: retl 7038; 7039; DARWIN-32-PIC-LABEL: har03: 7040; DARWIN-32-PIC: ## %bb.0: ## %entry 7041; DARWIN-32-PIC-NEXT: calll L82$pb 7042; DARWIN-32-PIC-NEXT: L82$pb: 7043; DARWIN-32-PIC-NEXT: popl %eax 7044; DARWIN-32-PIC-NEXT: leal _dsrc-L82$pb(%eax), %eax 7045; DARWIN-32-PIC-NEXT: retl 7046; 7047; DARWIN-64-STATIC-LABEL: har03: 7048; DARWIN-64-STATIC: ## %bb.0: ## %entry 7049; DARWIN-64-STATIC-NEXT: leaq _dsrc(%rip), %rax 7050; DARWIN-64-STATIC-NEXT: retq 7051; 7052; DARWIN-64-DYNAMIC-LABEL: har03: 7053; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 7054; DARWIN-64-DYNAMIC-NEXT: leaq _dsrc(%rip), %rax 7055; DARWIN-64-DYNAMIC-NEXT: retq 7056; 7057; DARWIN-64-PIC-LABEL: har03: 7058; DARWIN-64-PIC: ## %bb.0: ## %entry 7059; DARWIN-64-PIC-NEXT: leaq _dsrc(%rip), %rax 7060; DARWIN-64-PIC-NEXT: retq 7061 7062entry: 7063 ret i8* bitcast ([131072 x i32]* @dsrc to i8*) 7064} 7065 7066define dso_local i8* @har04() nounwind { 7067; LINUX-64-STATIC-LABEL: har04: 7068; LINUX-64-STATIC: # %bb.0: # %entry 7069; LINUX-64-STATIC-NEXT: movl $ddst, %eax 7070; LINUX-64-STATIC-NEXT: retq 7071; 7072; LINUX-32-STATIC-LABEL: har04: 7073; LINUX-32-STATIC: # %bb.0: # %entry 7074; LINUX-32-STATIC-NEXT: movl $ddst, %eax 7075; LINUX-32-STATIC-NEXT: retl 7076; 7077; LINUX-32-PIC-LABEL: har04: 7078; LINUX-32-PIC: # %bb.0: # %entry 7079; LINUX-32-PIC-NEXT: calll .L83$pb 7080; LINUX-32-PIC-NEXT: .L83$pb: 7081; LINUX-32-PIC-NEXT: popl %eax 7082; LINUX-32-PIC-NEXT: .Ltmp83: 7083; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp83-.L83$pb), %eax 7084; LINUX-32-PIC-NEXT: leal .Lddst$local@GOTOFF(%eax), %eax 7085; LINUX-32-PIC-NEXT: retl 7086; 7087; LINUX-64-PIC-LABEL: har04: 7088; LINUX-64-PIC: # %bb.0: # %entry 7089; LINUX-64-PIC-NEXT: leaq .Lddst$local(%rip), %rax 7090; LINUX-64-PIC-NEXT: retq 7091; 7092; DARWIN-32-STATIC-LABEL: har04: 7093; DARWIN-32-STATIC: ## %bb.0: ## %entry 7094; DARWIN-32-STATIC-NEXT: movl $_ddst, %eax 7095; DARWIN-32-STATIC-NEXT: retl 7096; 7097; DARWIN-32-DYNAMIC-LABEL: har04: 7098; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 7099; DARWIN-32-DYNAMIC-NEXT: movl $_ddst, %eax 7100; DARWIN-32-DYNAMIC-NEXT: retl 7101; 7102; DARWIN-32-PIC-LABEL: har04: 7103; DARWIN-32-PIC: ## %bb.0: ## %entry 7104; DARWIN-32-PIC-NEXT: calll L83$pb 7105; DARWIN-32-PIC-NEXT: L83$pb: 7106; DARWIN-32-PIC-NEXT: popl %eax 7107; DARWIN-32-PIC-NEXT: leal _ddst-L83$pb(%eax), %eax 7108; DARWIN-32-PIC-NEXT: retl 7109; 7110; DARWIN-64-STATIC-LABEL: har04: 7111; DARWIN-64-STATIC: ## %bb.0: ## %entry 7112; DARWIN-64-STATIC-NEXT: leaq _ddst(%rip), %rax 7113; DARWIN-64-STATIC-NEXT: retq 7114; 7115; DARWIN-64-DYNAMIC-LABEL: har04: 7116; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 7117; DARWIN-64-DYNAMIC-NEXT: leaq _ddst(%rip), %rax 7118; DARWIN-64-DYNAMIC-NEXT: retq 7119; 7120; DARWIN-64-PIC-LABEL: har04: 7121; DARWIN-64-PIC: ## %bb.0: ## %entry 7122; DARWIN-64-PIC-NEXT: leaq _ddst(%rip), %rax 7123; DARWIN-64-PIC-NEXT: retq 7124 7125entry: 7126 ret i8* bitcast ([131072 x i32]* @ddst to i8*) 7127} 7128 7129define dso_local i8* @har05() nounwind { 7130; LINUX-64-STATIC-LABEL: har05: 7131; LINUX-64-STATIC: # %bb.0: # %entry 7132; LINUX-64-STATIC-NEXT: movq dptr(%rip), %rax 7133; LINUX-64-STATIC-NEXT: retq 7134; 7135; LINUX-32-STATIC-LABEL: har05: 7136; LINUX-32-STATIC: # %bb.0: # %entry 7137; LINUX-32-STATIC-NEXT: movl dptr, %eax 7138; LINUX-32-STATIC-NEXT: retl 7139; 7140; LINUX-32-PIC-LABEL: har05: 7141; LINUX-32-PIC: # %bb.0: # %entry 7142; LINUX-32-PIC-NEXT: calll .L84$pb 7143; LINUX-32-PIC-NEXT: .L84$pb: 7144; LINUX-32-PIC-NEXT: popl %eax 7145; LINUX-32-PIC-NEXT: .Ltmp84: 7146; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp84-.L84$pb), %eax 7147; LINUX-32-PIC-NEXT: movl .Ldptr$local@GOTOFF(%eax), %eax 7148; LINUX-32-PIC-NEXT: retl 7149; 7150; LINUX-64-PIC-LABEL: har05: 7151; LINUX-64-PIC: # %bb.0: # %entry 7152; LINUX-64-PIC-NEXT: movq .Ldptr$local(%rip), %rax 7153; LINUX-64-PIC-NEXT: retq 7154; 7155; DARWIN-32-STATIC-LABEL: har05: 7156; DARWIN-32-STATIC: ## %bb.0: ## %entry 7157; DARWIN-32-STATIC-NEXT: movl _dptr, %eax 7158; DARWIN-32-STATIC-NEXT: retl 7159; 7160; DARWIN-32-DYNAMIC-LABEL: har05: 7161; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 7162; DARWIN-32-DYNAMIC-NEXT: movl _dptr, %eax 7163; DARWIN-32-DYNAMIC-NEXT: retl 7164; 7165; DARWIN-32-PIC-LABEL: har05: 7166; DARWIN-32-PIC: ## %bb.0: ## %entry 7167; DARWIN-32-PIC-NEXT: calll L84$pb 7168; DARWIN-32-PIC-NEXT: L84$pb: 7169; DARWIN-32-PIC-NEXT: popl %eax 7170; DARWIN-32-PIC-NEXT: movl _dptr-L84$pb(%eax), %eax 7171; DARWIN-32-PIC-NEXT: retl 7172; 7173; DARWIN-64-STATIC-LABEL: har05: 7174; DARWIN-64-STATIC: ## %bb.0: ## %entry 7175; DARWIN-64-STATIC-NEXT: movq _dptr(%rip), %rax 7176; DARWIN-64-STATIC-NEXT: retq 7177; 7178; DARWIN-64-DYNAMIC-LABEL: har05: 7179; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 7180; DARWIN-64-DYNAMIC-NEXT: movq _dptr(%rip), %rax 7181; DARWIN-64-DYNAMIC-NEXT: retq 7182; 7183; DARWIN-64-PIC-LABEL: har05: 7184; DARWIN-64-PIC: ## %bb.0: ## %entry 7185; DARWIN-64-PIC-NEXT: movq _dptr(%rip), %rax 7186; DARWIN-64-PIC-NEXT: retq 7187 7188entry: 7189 %0 = load i32*, i32** @dptr, align 8 7190 %1 = bitcast i32* %0 to i8* 7191 ret i8* %1 7192} 7193 7194define dso_local i8* @har06() nounwind { 7195; LINUX-64-STATIC-LABEL: har06: 7196; LINUX-64-STATIC: # %bb.0: # %entry 7197; LINUX-64-STATIC-NEXT: movl $lsrc, %eax 7198; LINUX-64-STATIC-NEXT: retq 7199; 7200; LINUX-32-STATIC-LABEL: har06: 7201; LINUX-32-STATIC: # %bb.0: # %entry 7202; LINUX-32-STATIC-NEXT: movl $lsrc, %eax 7203; LINUX-32-STATIC-NEXT: retl 7204; 7205; LINUX-32-PIC-LABEL: har06: 7206; LINUX-32-PIC: # %bb.0: # %entry 7207; LINUX-32-PIC-NEXT: calll .L85$pb 7208; LINUX-32-PIC-NEXT: .L85$pb: 7209; LINUX-32-PIC-NEXT: popl %eax 7210; LINUX-32-PIC-NEXT: .Ltmp85: 7211; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp85-.L85$pb), %eax 7212; LINUX-32-PIC-NEXT: leal lsrc@GOTOFF(%eax), %eax 7213; LINUX-32-PIC-NEXT: retl 7214; 7215; LINUX-64-PIC-LABEL: har06: 7216; LINUX-64-PIC: # %bb.0: # %entry 7217; LINUX-64-PIC-NEXT: leaq lsrc(%rip), %rax 7218; LINUX-64-PIC-NEXT: retq 7219; 7220; DARWIN-32-STATIC-LABEL: har06: 7221; DARWIN-32-STATIC: ## %bb.0: ## %entry 7222; DARWIN-32-STATIC-NEXT: movl $_lsrc, %eax 7223; DARWIN-32-STATIC-NEXT: retl 7224; 7225; DARWIN-32-DYNAMIC-LABEL: har06: 7226; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 7227; DARWIN-32-DYNAMIC-NEXT: movl $_lsrc, %eax 7228; DARWIN-32-DYNAMIC-NEXT: retl 7229; 7230; DARWIN-32-PIC-LABEL: har06: 7231; DARWIN-32-PIC: ## %bb.0: ## %entry 7232; DARWIN-32-PIC-NEXT: calll L85$pb 7233; DARWIN-32-PIC-NEXT: L85$pb: 7234; DARWIN-32-PIC-NEXT: popl %eax 7235; DARWIN-32-PIC-NEXT: leal _lsrc-L85$pb(%eax), %eax 7236; DARWIN-32-PIC-NEXT: retl 7237; 7238; DARWIN-64-STATIC-LABEL: har06: 7239; DARWIN-64-STATIC: ## %bb.0: ## %entry 7240; DARWIN-64-STATIC-NEXT: leaq _lsrc(%rip), %rax 7241; DARWIN-64-STATIC-NEXT: retq 7242; 7243; DARWIN-64-DYNAMIC-LABEL: har06: 7244; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 7245; DARWIN-64-DYNAMIC-NEXT: leaq _lsrc(%rip), %rax 7246; DARWIN-64-DYNAMIC-NEXT: retq 7247; 7248; DARWIN-64-PIC-LABEL: har06: 7249; DARWIN-64-PIC: ## %bb.0: ## %entry 7250; DARWIN-64-PIC-NEXT: leaq _lsrc(%rip), %rax 7251; DARWIN-64-PIC-NEXT: retq 7252 7253entry: 7254 ret i8* bitcast ([131072 x i32]* @lsrc to i8*) 7255} 7256 7257define dso_local i8* @har07() nounwind { 7258; LINUX-64-STATIC-LABEL: har07: 7259; LINUX-64-STATIC: # %bb.0: # %entry 7260; LINUX-64-STATIC-NEXT: movl $ldst, %eax 7261; LINUX-64-STATIC-NEXT: retq 7262; 7263; LINUX-32-STATIC-LABEL: har07: 7264; LINUX-32-STATIC: # %bb.0: # %entry 7265; LINUX-32-STATIC-NEXT: movl $ldst, %eax 7266; LINUX-32-STATIC-NEXT: retl 7267; 7268; LINUX-32-PIC-LABEL: har07: 7269; LINUX-32-PIC: # %bb.0: # %entry 7270; LINUX-32-PIC-NEXT: calll .L86$pb 7271; LINUX-32-PIC-NEXT: .L86$pb: 7272; LINUX-32-PIC-NEXT: popl %eax 7273; LINUX-32-PIC-NEXT: .Ltmp86: 7274; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp86-.L86$pb), %eax 7275; LINUX-32-PIC-NEXT: leal ldst@GOTOFF(%eax), %eax 7276; LINUX-32-PIC-NEXT: retl 7277; 7278; LINUX-64-PIC-LABEL: har07: 7279; LINUX-64-PIC: # %bb.0: # %entry 7280; LINUX-64-PIC-NEXT: leaq ldst(%rip), %rax 7281; LINUX-64-PIC-NEXT: retq 7282; 7283; DARWIN-32-STATIC-LABEL: har07: 7284; DARWIN-32-STATIC: ## %bb.0: ## %entry 7285; DARWIN-32-STATIC-NEXT: movl $_ldst, %eax 7286; DARWIN-32-STATIC-NEXT: retl 7287; 7288; DARWIN-32-DYNAMIC-LABEL: har07: 7289; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 7290; DARWIN-32-DYNAMIC-NEXT: movl $_ldst, %eax 7291; DARWIN-32-DYNAMIC-NEXT: retl 7292; 7293; DARWIN-32-PIC-LABEL: har07: 7294; DARWIN-32-PIC: ## %bb.0: ## %entry 7295; DARWIN-32-PIC-NEXT: calll L86$pb 7296; DARWIN-32-PIC-NEXT: L86$pb: 7297; DARWIN-32-PIC-NEXT: popl %eax 7298; DARWIN-32-PIC-NEXT: leal _ldst-L86$pb(%eax), %eax 7299; DARWIN-32-PIC-NEXT: retl 7300; 7301; DARWIN-64-STATIC-LABEL: har07: 7302; DARWIN-64-STATIC: ## %bb.0: ## %entry 7303; DARWIN-64-STATIC-NEXT: leaq _ldst(%rip), %rax 7304; DARWIN-64-STATIC-NEXT: retq 7305; 7306; DARWIN-64-DYNAMIC-LABEL: har07: 7307; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 7308; DARWIN-64-DYNAMIC-NEXT: leaq _ldst(%rip), %rax 7309; DARWIN-64-DYNAMIC-NEXT: retq 7310; 7311; DARWIN-64-PIC-LABEL: har07: 7312; DARWIN-64-PIC: ## %bb.0: ## %entry 7313; DARWIN-64-PIC-NEXT: leaq _ldst(%rip), %rax 7314; DARWIN-64-PIC-NEXT: retq 7315 7316entry: 7317 ret i8* bitcast ([131072 x i32]* @ldst to i8*) 7318} 7319 7320define dso_local i8* @har08() nounwind { 7321; LINUX-64-STATIC-LABEL: har08: 7322; LINUX-64-STATIC: # %bb.0: # %entry 7323; LINUX-64-STATIC-NEXT: movq lptr(%rip), %rax 7324; LINUX-64-STATIC-NEXT: retq 7325; 7326; LINUX-32-STATIC-LABEL: har08: 7327; LINUX-32-STATIC: # %bb.0: # %entry 7328; LINUX-32-STATIC-NEXT: movl lptr, %eax 7329; LINUX-32-STATIC-NEXT: retl 7330; 7331; LINUX-32-PIC-LABEL: har08: 7332; LINUX-32-PIC: # %bb.0: # %entry 7333; LINUX-32-PIC-NEXT: calll .L87$pb 7334; LINUX-32-PIC-NEXT: .L87$pb: 7335; LINUX-32-PIC-NEXT: popl %eax 7336; LINUX-32-PIC-NEXT: .Ltmp87: 7337; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp87-.L87$pb), %eax 7338; LINUX-32-PIC-NEXT: movl lptr@GOTOFF(%eax), %eax 7339; LINUX-32-PIC-NEXT: retl 7340; 7341; LINUX-64-PIC-LABEL: har08: 7342; LINUX-64-PIC: # %bb.0: # %entry 7343; LINUX-64-PIC-NEXT: movq lptr(%rip), %rax 7344; LINUX-64-PIC-NEXT: retq 7345; 7346; DARWIN-32-STATIC-LABEL: har08: 7347; DARWIN-32-STATIC: ## %bb.0: ## %entry 7348; DARWIN-32-STATIC-NEXT: movl _lptr, %eax 7349; DARWIN-32-STATIC-NEXT: retl 7350; 7351; DARWIN-32-DYNAMIC-LABEL: har08: 7352; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 7353; DARWIN-32-DYNAMIC-NEXT: movl _lptr, %eax 7354; DARWIN-32-DYNAMIC-NEXT: retl 7355; 7356; DARWIN-32-PIC-LABEL: har08: 7357; DARWIN-32-PIC: ## %bb.0: ## %entry 7358; DARWIN-32-PIC-NEXT: calll L87$pb 7359; DARWIN-32-PIC-NEXT: L87$pb: 7360; DARWIN-32-PIC-NEXT: popl %eax 7361; DARWIN-32-PIC-NEXT: movl _lptr-L87$pb(%eax), %eax 7362; DARWIN-32-PIC-NEXT: retl 7363; 7364; DARWIN-64-STATIC-LABEL: har08: 7365; DARWIN-64-STATIC: ## %bb.0: ## %entry 7366; DARWIN-64-STATIC-NEXT: movq _lptr(%rip), %rax 7367; DARWIN-64-STATIC-NEXT: retq 7368; 7369; DARWIN-64-DYNAMIC-LABEL: har08: 7370; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 7371; DARWIN-64-DYNAMIC-NEXT: movq _lptr(%rip), %rax 7372; DARWIN-64-DYNAMIC-NEXT: retq 7373; 7374; DARWIN-64-PIC-LABEL: har08: 7375; DARWIN-64-PIC: ## %bb.0: ## %entry 7376; DARWIN-64-PIC-NEXT: movq _lptr(%rip), %rax 7377; DARWIN-64-PIC-NEXT: retq 7378 7379entry: 7380 %0 = load i32*, i32** @lptr, align 8 7381 %1 = bitcast i32* %0 to i8* 7382 ret i8* %1 7383} 7384 7385define dso_local i8* @bat00() nounwind { 7386; LINUX-64-STATIC-LABEL: bat00: 7387; LINUX-64-STATIC: # %bb.0: # %entry 7388; LINUX-64-STATIC-NEXT: movq src@GOTPCREL(%rip), %rax 7389; LINUX-64-STATIC-NEXT: addq $64, %rax 7390; LINUX-64-STATIC-NEXT: retq 7391; 7392; LINUX-32-STATIC-LABEL: bat00: 7393; LINUX-32-STATIC: # %bb.0: # %entry 7394; LINUX-32-STATIC-NEXT: leal src+64, %eax 7395; LINUX-32-STATIC-NEXT: retl 7396; 7397; LINUX-32-PIC-LABEL: bat00: 7398; LINUX-32-PIC: # %bb.0: # %entry 7399; LINUX-32-PIC-NEXT: calll .L88$pb 7400; LINUX-32-PIC-NEXT: .L88$pb: 7401; LINUX-32-PIC-NEXT: popl %eax 7402; LINUX-32-PIC-NEXT: .Ltmp88: 7403; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp88-.L88$pb), %eax 7404; LINUX-32-PIC-NEXT: movl src@GOT(%eax), %eax 7405; LINUX-32-PIC-NEXT: addl $64, %eax 7406; LINUX-32-PIC-NEXT: retl 7407; 7408; LINUX-64-PIC-LABEL: bat00: 7409; LINUX-64-PIC: # %bb.0: # %entry 7410; LINUX-64-PIC-NEXT: movq src@GOTPCREL(%rip), %rax 7411; LINUX-64-PIC-NEXT: addq $64, %rax 7412; LINUX-64-PIC-NEXT: retq 7413; 7414; DARWIN-32-STATIC-LABEL: bat00: 7415; DARWIN-32-STATIC: ## %bb.0: ## %entry 7416; DARWIN-32-STATIC-NEXT: movl $_src+64, %eax 7417; DARWIN-32-STATIC-NEXT: retl 7418; 7419; DARWIN-32-DYNAMIC-LABEL: bat00: 7420; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 7421; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %eax 7422; DARWIN-32-DYNAMIC-NEXT: addl $64, %eax 7423; DARWIN-32-DYNAMIC-NEXT: retl 7424; 7425; DARWIN-32-PIC-LABEL: bat00: 7426; DARWIN-32-PIC: ## %bb.0: ## %entry 7427; DARWIN-32-PIC-NEXT: calll L88$pb 7428; DARWIN-32-PIC-NEXT: L88$pb: 7429; DARWIN-32-PIC-NEXT: popl %eax 7430; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L88$pb(%eax), %eax 7431; DARWIN-32-PIC-NEXT: addl $64, %eax 7432; DARWIN-32-PIC-NEXT: retl 7433; 7434; DARWIN-64-STATIC-LABEL: bat00: 7435; DARWIN-64-STATIC: ## %bb.0: ## %entry 7436; DARWIN-64-STATIC-NEXT: movq _src@GOTPCREL(%rip), %rax 7437; DARWIN-64-STATIC-NEXT: addq $64, %rax 7438; DARWIN-64-STATIC-NEXT: retq 7439; 7440; DARWIN-64-DYNAMIC-LABEL: bat00: 7441; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 7442; DARWIN-64-DYNAMIC-NEXT: movq _src@GOTPCREL(%rip), %rax 7443; DARWIN-64-DYNAMIC-NEXT: addq $64, %rax 7444; DARWIN-64-DYNAMIC-NEXT: retq 7445; 7446; DARWIN-64-PIC-LABEL: bat00: 7447; DARWIN-64-PIC: ## %bb.0: ## %entry 7448; DARWIN-64-PIC-NEXT: movq _src@GOTPCREL(%rip), %rax 7449; DARWIN-64-PIC-NEXT: addq $64, %rax 7450; DARWIN-64-PIC-NEXT: retq 7451 7452entry: 7453 ret i8* bitcast (i32* getelementptr ([131072 x i32], [131072 x i32]* @src, i32 0, i64 16) to i8*) 7454} 7455 7456define dso_local i8* @bxt00() nounwind { 7457; LINUX-64-STATIC-LABEL: bxt00: 7458; LINUX-64-STATIC: # %bb.0: # %entry 7459; LINUX-64-STATIC-NEXT: movq xsrc@GOTPCREL(%rip), %rax 7460; LINUX-64-STATIC-NEXT: addq $64, %rax 7461; LINUX-64-STATIC-NEXT: retq 7462; 7463; LINUX-32-STATIC-LABEL: bxt00: 7464; LINUX-32-STATIC: # %bb.0: # %entry 7465; LINUX-32-STATIC-NEXT: leal xsrc+64, %eax 7466; LINUX-32-STATIC-NEXT: retl 7467; 7468; LINUX-32-PIC-LABEL: bxt00: 7469; LINUX-32-PIC: # %bb.0: # %entry 7470; LINUX-32-PIC-NEXT: calll .L89$pb 7471; LINUX-32-PIC-NEXT: .L89$pb: 7472; LINUX-32-PIC-NEXT: popl %eax 7473; LINUX-32-PIC-NEXT: .Ltmp89: 7474; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp89-.L89$pb), %eax 7475; LINUX-32-PIC-NEXT: movl xsrc@GOT(%eax), %eax 7476; LINUX-32-PIC-NEXT: addl $64, %eax 7477; LINUX-32-PIC-NEXT: retl 7478; 7479; LINUX-64-PIC-LABEL: bxt00: 7480; LINUX-64-PIC: # %bb.0: # %entry 7481; LINUX-64-PIC-NEXT: movq xsrc@GOTPCREL(%rip), %rax 7482; LINUX-64-PIC-NEXT: addq $64, %rax 7483; LINUX-64-PIC-NEXT: retq 7484; 7485; DARWIN-32-STATIC-LABEL: bxt00: 7486; DARWIN-32-STATIC: ## %bb.0: ## %entry 7487; DARWIN-32-STATIC-NEXT: movl $_xsrc+64, %eax 7488; DARWIN-32-STATIC-NEXT: retl 7489; 7490; DARWIN-32-DYNAMIC-LABEL: bxt00: 7491; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 7492; DARWIN-32-DYNAMIC-NEXT: movl L_xsrc$non_lazy_ptr, %eax 7493; DARWIN-32-DYNAMIC-NEXT: addl $64, %eax 7494; DARWIN-32-DYNAMIC-NEXT: retl 7495; 7496; DARWIN-32-PIC-LABEL: bxt00: 7497; DARWIN-32-PIC: ## %bb.0: ## %entry 7498; DARWIN-32-PIC-NEXT: calll L89$pb 7499; DARWIN-32-PIC-NEXT: L89$pb: 7500; DARWIN-32-PIC-NEXT: popl %eax 7501; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-L89$pb(%eax), %eax 7502; DARWIN-32-PIC-NEXT: addl $64, %eax 7503; DARWIN-32-PIC-NEXT: retl 7504; 7505; DARWIN-64-STATIC-LABEL: bxt00: 7506; DARWIN-64-STATIC: ## %bb.0: ## %entry 7507; DARWIN-64-STATIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 7508; DARWIN-64-STATIC-NEXT: addq $64, %rax 7509; DARWIN-64-STATIC-NEXT: retq 7510; 7511; DARWIN-64-DYNAMIC-LABEL: bxt00: 7512; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 7513; DARWIN-64-DYNAMIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 7514; DARWIN-64-DYNAMIC-NEXT: addq $64, %rax 7515; DARWIN-64-DYNAMIC-NEXT: retq 7516; 7517; DARWIN-64-PIC-LABEL: bxt00: 7518; DARWIN-64-PIC: ## %bb.0: ## %entry 7519; DARWIN-64-PIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 7520; DARWIN-64-PIC-NEXT: addq $64, %rax 7521; DARWIN-64-PIC-NEXT: retq 7522 7523entry: 7524 ret i8* bitcast (i32* getelementptr ([32 x i32], [32 x i32]* @xsrc, i32 0, i64 16) to i8*) 7525} 7526 7527define dso_local i8* @bat01() nounwind { 7528; LINUX-64-STATIC-LABEL: bat01: 7529; LINUX-64-STATIC: # %bb.0: # %entry 7530; LINUX-64-STATIC-NEXT: movq dst@GOTPCREL(%rip), %rax 7531; LINUX-64-STATIC-NEXT: addq $64, %rax 7532; LINUX-64-STATIC-NEXT: retq 7533; 7534; LINUX-32-STATIC-LABEL: bat01: 7535; LINUX-32-STATIC: # %bb.0: # %entry 7536; LINUX-32-STATIC-NEXT: leal dst+64, %eax 7537; LINUX-32-STATIC-NEXT: retl 7538; 7539; LINUX-32-PIC-LABEL: bat01: 7540; LINUX-32-PIC: # %bb.0: # %entry 7541; LINUX-32-PIC-NEXT: calll .L90$pb 7542; LINUX-32-PIC-NEXT: .L90$pb: 7543; LINUX-32-PIC-NEXT: popl %eax 7544; LINUX-32-PIC-NEXT: .Ltmp90: 7545; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp90-.L90$pb), %eax 7546; LINUX-32-PIC-NEXT: movl dst@GOT(%eax), %eax 7547; LINUX-32-PIC-NEXT: addl $64, %eax 7548; LINUX-32-PIC-NEXT: retl 7549; 7550; LINUX-64-PIC-LABEL: bat01: 7551; LINUX-64-PIC: # %bb.0: # %entry 7552; LINUX-64-PIC-NEXT: movq dst@GOTPCREL(%rip), %rax 7553; LINUX-64-PIC-NEXT: addq $64, %rax 7554; LINUX-64-PIC-NEXT: retq 7555; 7556; DARWIN-32-STATIC-LABEL: bat01: 7557; DARWIN-32-STATIC: ## %bb.0: ## %entry 7558; DARWIN-32-STATIC-NEXT: movl $_dst+64, %eax 7559; DARWIN-32-STATIC-NEXT: retl 7560; 7561; DARWIN-32-DYNAMIC-LABEL: bat01: 7562; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 7563; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, %eax 7564; DARWIN-32-DYNAMIC-NEXT: addl $64, %eax 7565; DARWIN-32-DYNAMIC-NEXT: retl 7566; 7567; DARWIN-32-PIC-LABEL: bat01: 7568; DARWIN-32-PIC: ## %bb.0: ## %entry 7569; DARWIN-32-PIC-NEXT: calll L90$pb 7570; DARWIN-32-PIC-NEXT: L90$pb: 7571; DARWIN-32-PIC-NEXT: popl %eax 7572; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L90$pb(%eax), %eax 7573; DARWIN-32-PIC-NEXT: addl $64, %eax 7574; DARWIN-32-PIC-NEXT: retl 7575; 7576; DARWIN-64-STATIC-LABEL: bat01: 7577; DARWIN-64-STATIC: ## %bb.0: ## %entry 7578; DARWIN-64-STATIC-NEXT: movq _dst@GOTPCREL(%rip), %rax 7579; DARWIN-64-STATIC-NEXT: addq $64, %rax 7580; DARWIN-64-STATIC-NEXT: retq 7581; 7582; DARWIN-64-DYNAMIC-LABEL: bat01: 7583; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 7584; DARWIN-64-DYNAMIC-NEXT: movq _dst@GOTPCREL(%rip), %rax 7585; DARWIN-64-DYNAMIC-NEXT: addq $64, %rax 7586; DARWIN-64-DYNAMIC-NEXT: retq 7587; 7588; DARWIN-64-PIC-LABEL: bat01: 7589; DARWIN-64-PIC: ## %bb.0: ## %entry 7590; DARWIN-64-PIC-NEXT: movq _dst@GOTPCREL(%rip), %rax 7591; DARWIN-64-PIC-NEXT: addq $64, %rax 7592; DARWIN-64-PIC-NEXT: retq 7593 7594entry: 7595 ret i8* bitcast (i32* getelementptr ([131072 x i32], [131072 x i32]* @dst, i32 0, i64 16) to i8*) 7596} 7597 7598define dso_local i8* @bxt01() nounwind { 7599; LINUX-64-STATIC-LABEL: bxt01: 7600; LINUX-64-STATIC: # %bb.0: # %entry 7601; LINUX-64-STATIC-NEXT: movq xdst@GOTPCREL(%rip), %rax 7602; LINUX-64-STATIC-NEXT: addq $64, %rax 7603; LINUX-64-STATIC-NEXT: retq 7604; 7605; LINUX-32-STATIC-LABEL: bxt01: 7606; LINUX-32-STATIC: # %bb.0: # %entry 7607; LINUX-32-STATIC-NEXT: leal xdst+64, %eax 7608; LINUX-32-STATIC-NEXT: retl 7609; 7610; LINUX-32-PIC-LABEL: bxt01: 7611; LINUX-32-PIC: # %bb.0: # %entry 7612; LINUX-32-PIC-NEXT: calll .L91$pb 7613; LINUX-32-PIC-NEXT: .L91$pb: 7614; LINUX-32-PIC-NEXT: popl %eax 7615; LINUX-32-PIC-NEXT: .Ltmp91: 7616; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp91-.L91$pb), %eax 7617; LINUX-32-PIC-NEXT: movl xdst@GOT(%eax), %eax 7618; LINUX-32-PIC-NEXT: addl $64, %eax 7619; LINUX-32-PIC-NEXT: retl 7620; 7621; LINUX-64-PIC-LABEL: bxt01: 7622; LINUX-64-PIC: # %bb.0: # %entry 7623; LINUX-64-PIC-NEXT: movq xdst@GOTPCREL(%rip), %rax 7624; LINUX-64-PIC-NEXT: addq $64, %rax 7625; LINUX-64-PIC-NEXT: retq 7626; 7627; DARWIN-32-STATIC-LABEL: bxt01: 7628; DARWIN-32-STATIC: ## %bb.0: ## %entry 7629; DARWIN-32-STATIC-NEXT: movl $_xdst+64, %eax 7630; DARWIN-32-STATIC-NEXT: retl 7631; 7632; DARWIN-32-DYNAMIC-LABEL: bxt01: 7633; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 7634; DARWIN-32-DYNAMIC-NEXT: movl L_xdst$non_lazy_ptr, %eax 7635; DARWIN-32-DYNAMIC-NEXT: addl $64, %eax 7636; DARWIN-32-DYNAMIC-NEXT: retl 7637; 7638; DARWIN-32-PIC-LABEL: bxt01: 7639; DARWIN-32-PIC: ## %bb.0: ## %entry 7640; DARWIN-32-PIC-NEXT: calll L91$pb 7641; DARWIN-32-PIC-NEXT: L91$pb: 7642; DARWIN-32-PIC-NEXT: popl %eax 7643; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-L91$pb(%eax), %eax 7644; DARWIN-32-PIC-NEXT: addl $64, %eax 7645; DARWIN-32-PIC-NEXT: retl 7646; 7647; DARWIN-64-STATIC-LABEL: bxt01: 7648; DARWIN-64-STATIC: ## %bb.0: ## %entry 7649; DARWIN-64-STATIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax 7650; DARWIN-64-STATIC-NEXT: addq $64, %rax 7651; DARWIN-64-STATIC-NEXT: retq 7652; 7653; DARWIN-64-DYNAMIC-LABEL: bxt01: 7654; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 7655; DARWIN-64-DYNAMIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax 7656; DARWIN-64-DYNAMIC-NEXT: addq $64, %rax 7657; DARWIN-64-DYNAMIC-NEXT: retq 7658; 7659; DARWIN-64-PIC-LABEL: bxt01: 7660; DARWIN-64-PIC: ## %bb.0: ## %entry 7661; DARWIN-64-PIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax 7662; DARWIN-64-PIC-NEXT: addq $64, %rax 7663; DARWIN-64-PIC-NEXT: retq 7664 7665entry: 7666 ret i8* bitcast (i32* getelementptr ([32 x i32], [32 x i32]* @xdst, i32 0, i64 16) to i8*) 7667} 7668 7669define dso_local i8* @bat02() nounwind { 7670; LINUX-64-STATIC-LABEL: bat02: 7671; LINUX-64-STATIC: # %bb.0: # %entry 7672; LINUX-64-STATIC-NEXT: movq ptr@GOTPCREL(%rip), %rax 7673; LINUX-64-STATIC-NEXT: movq (%rax), %rax 7674; LINUX-64-STATIC-NEXT: addq $64, %rax 7675; LINUX-64-STATIC-NEXT: retq 7676; 7677; LINUX-32-STATIC-LABEL: bat02: 7678; LINUX-32-STATIC: # %bb.0: # %entry 7679; LINUX-32-STATIC-NEXT: movl ptr, %eax 7680; LINUX-32-STATIC-NEXT: addl $64, %eax 7681; LINUX-32-STATIC-NEXT: retl 7682; 7683; LINUX-32-PIC-LABEL: bat02: 7684; LINUX-32-PIC: # %bb.0: # %entry 7685; LINUX-32-PIC-NEXT: calll .L92$pb 7686; LINUX-32-PIC-NEXT: .L92$pb: 7687; LINUX-32-PIC-NEXT: popl %eax 7688; LINUX-32-PIC-NEXT: .Ltmp92: 7689; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp92-.L92$pb), %eax 7690; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax 7691; LINUX-32-PIC-NEXT: movl (%eax), %eax 7692; LINUX-32-PIC-NEXT: addl $64, %eax 7693; LINUX-32-PIC-NEXT: retl 7694; 7695; LINUX-64-PIC-LABEL: bat02: 7696; LINUX-64-PIC: # %bb.0: # %entry 7697; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rax 7698; LINUX-64-PIC-NEXT: movq (%rax), %rax 7699; LINUX-64-PIC-NEXT: addq $64, %rax 7700; LINUX-64-PIC-NEXT: retq 7701; 7702; DARWIN-32-STATIC-LABEL: bat02: 7703; DARWIN-32-STATIC: ## %bb.0: ## %entry 7704; DARWIN-32-STATIC-NEXT: movl _ptr, %eax 7705; DARWIN-32-STATIC-NEXT: addl $64, %eax 7706; DARWIN-32-STATIC-NEXT: retl 7707; 7708; DARWIN-32-DYNAMIC-LABEL: bat02: 7709; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 7710; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %eax 7711; DARWIN-32-DYNAMIC-NEXT: movl (%eax), %eax 7712; DARWIN-32-DYNAMIC-NEXT: addl $64, %eax 7713; DARWIN-32-DYNAMIC-NEXT: retl 7714; 7715; DARWIN-32-PIC-LABEL: bat02: 7716; DARWIN-32-PIC: ## %bb.0: ## %entry 7717; DARWIN-32-PIC-NEXT: calll L92$pb 7718; DARWIN-32-PIC-NEXT: L92$pb: 7719; DARWIN-32-PIC-NEXT: popl %eax 7720; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L92$pb(%eax), %eax 7721; DARWIN-32-PIC-NEXT: movl (%eax), %eax 7722; DARWIN-32-PIC-NEXT: addl $64, %eax 7723; DARWIN-32-PIC-NEXT: retl 7724; 7725; DARWIN-64-STATIC-LABEL: bat02: 7726; DARWIN-64-STATIC: ## %bb.0: ## %entry 7727; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax 7728; DARWIN-64-STATIC-NEXT: movq (%rax), %rax 7729; DARWIN-64-STATIC-NEXT: addq $64, %rax 7730; DARWIN-64-STATIC-NEXT: retq 7731; 7732; DARWIN-64-DYNAMIC-LABEL: bat02: 7733; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 7734; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax 7735; DARWIN-64-DYNAMIC-NEXT: movq (%rax), %rax 7736; DARWIN-64-DYNAMIC-NEXT: addq $64, %rax 7737; DARWIN-64-DYNAMIC-NEXT: retq 7738; 7739; DARWIN-64-PIC-LABEL: bat02: 7740; DARWIN-64-PIC: ## %bb.0: ## %entry 7741; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax 7742; DARWIN-64-PIC-NEXT: movq (%rax), %rax 7743; DARWIN-64-PIC-NEXT: addq $64, %rax 7744; DARWIN-64-PIC-NEXT: retq 7745 7746entry: 7747 %0 = load i32*, i32** @ptr, align 8 7748 %1 = getelementptr i32, i32* %0, i64 16 7749 %2 = bitcast i32* %1 to i8* 7750 ret i8* %2 7751} 7752 7753define dso_local i8* @bat03() nounwind { 7754; LINUX-64-STATIC-LABEL: bat03: 7755; LINUX-64-STATIC: # %bb.0: # %entry 7756; LINUX-64-STATIC-NEXT: movl $dsrc+64, %eax 7757; LINUX-64-STATIC-NEXT: retq 7758; 7759; LINUX-32-STATIC-LABEL: bat03: 7760; LINUX-32-STATIC: # %bb.0: # %entry 7761; LINUX-32-STATIC-NEXT: movl $dsrc+64, %eax 7762; LINUX-32-STATIC-NEXT: retl 7763; 7764; LINUX-32-PIC-LABEL: bat03: 7765; LINUX-32-PIC: # %bb.0: # %entry 7766; LINUX-32-PIC-NEXT: calll .L93$pb 7767; LINUX-32-PIC-NEXT: .L93$pb: 7768; LINUX-32-PIC-NEXT: popl %eax 7769; LINUX-32-PIC-NEXT: .Ltmp93: 7770; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp93-.L93$pb), %eax 7771; LINUX-32-PIC-NEXT: leal .Ldsrc$local@GOTOFF+64(%eax), %eax 7772; LINUX-32-PIC-NEXT: retl 7773; 7774; LINUX-64-PIC-LABEL: bat03: 7775; LINUX-64-PIC: # %bb.0: # %entry 7776; LINUX-64-PIC-NEXT: leaq .Ldsrc$local+64(%rip), %rax 7777; LINUX-64-PIC-NEXT: retq 7778; 7779; DARWIN-32-STATIC-LABEL: bat03: 7780; DARWIN-32-STATIC: ## %bb.0: ## %entry 7781; DARWIN-32-STATIC-NEXT: movl $_dsrc+64, %eax 7782; DARWIN-32-STATIC-NEXT: retl 7783; 7784; DARWIN-32-DYNAMIC-LABEL: bat03: 7785; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 7786; DARWIN-32-DYNAMIC-NEXT: movl $_dsrc+64, %eax 7787; DARWIN-32-DYNAMIC-NEXT: retl 7788; 7789; DARWIN-32-PIC-LABEL: bat03: 7790; DARWIN-32-PIC: ## %bb.0: ## %entry 7791; DARWIN-32-PIC-NEXT: calll L93$pb 7792; DARWIN-32-PIC-NEXT: L93$pb: 7793; DARWIN-32-PIC-NEXT: popl %eax 7794; DARWIN-32-PIC-NEXT: leal (_dsrc-L93$pb)+64(%eax), %eax 7795; DARWIN-32-PIC-NEXT: retl 7796; 7797; DARWIN-64-STATIC-LABEL: bat03: 7798; DARWIN-64-STATIC: ## %bb.0: ## %entry 7799; DARWIN-64-STATIC-NEXT: leaq _dsrc+64(%rip), %rax 7800; DARWIN-64-STATIC-NEXT: retq 7801; 7802; DARWIN-64-DYNAMIC-LABEL: bat03: 7803; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 7804; DARWIN-64-DYNAMIC-NEXT: leaq _dsrc+64(%rip), %rax 7805; DARWIN-64-DYNAMIC-NEXT: retq 7806; 7807; DARWIN-64-PIC-LABEL: bat03: 7808; DARWIN-64-PIC: ## %bb.0: ## %entry 7809; DARWIN-64-PIC-NEXT: leaq _dsrc+64(%rip), %rax 7810; DARWIN-64-PIC-NEXT: retq 7811 7812entry: 7813 ret i8* bitcast (i32* getelementptr ([131072 x i32], [131072 x i32]* @dsrc, i32 0, i64 16) to i8*) 7814} 7815 7816define dso_local i8* @bat04() nounwind { 7817; LINUX-64-STATIC-LABEL: bat04: 7818; LINUX-64-STATIC: # %bb.0: # %entry 7819; LINUX-64-STATIC-NEXT: movl $ddst+64, %eax 7820; LINUX-64-STATIC-NEXT: retq 7821; 7822; LINUX-32-STATIC-LABEL: bat04: 7823; LINUX-32-STATIC: # %bb.0: # %entry 7824; LINUX-32-STATIC-NEXT: movl $ddst+64, %eax 7825; LINUX-32-STATIC-NEXT: retl 7826; 7827; LINUX-32-PIC-LABEL: bat04: 7828; LINUX-32-PIC: # %bb.0: # %entry 7829; LINUX-32-PIC-NEXT: calll .L94$pb 7830; LINUX-32-PIC-NEXT: .L94$pb: 7831; LINUX-32-PIC-NEXT: popl %eax 7832; LINUX-32-PIC-NEXT: .Ltmp94: 7833; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp94-.L94$pb), %eax 7834; LINUX-32-PIC-NEXT: leal .Lddst$local@GOTOFF+64(%eax), %eax 7835; LINUX-32-PIC-NEXT: retl 7836; 7837; LINUX-64-PIC-LABEL: bat04: 7838; LINUX-64-PIC: # %bb.0: # %entry 7839; LINUX-64-PIC-NEXT: leaq .Lddst$local+64(%rip), %rax 7840; LINUX-64-PIC-NEXT: retq 7841; 7842; DARWIN-32-STATIC-LABEL: bat04: 7843; DARWIN-32-STATIC: ## %bb.0: ## %entry 7844; DARWIN-32-STATIC-NEXT: movl $_ddst+64, %eax 7845; DARWIN-32-STATIC-NEXT: retl 7846; 7847; DARWIN-32-DYNAMIC-LABEL: bat04: 7848; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 7849; DARWIN-32-DYNAMIC-NEXT: movl $_ddst+64, %eax 7850; DARWIN-32-DYNAMIC-NEXT: retl 7851; 7852; DARWIN-32-PIC-LABEL: bat04: 7853; DARWIN-32-PIC: ## %bb.0: ## %entry 7854; DARWIN-32-PIC-NEXT: calll L94$pb 7855; DARWIN-32-PIC-NEXT: L94$pb: 7856; DARWIN-32-PIC-NEXT: popl %eax 7857; DARWIN-32-PIC-NEXT: leal (_ddst-L94$pb)+64(%eax), %eax 7858; DARWIN-32-PIC-NEXT: retl 7859; 7860; DARWIN-64-STATIC-LABEL: bat04: 7861; DARWIN-64-STATIC: ## %bb.0: ## %entry 7862; DARWIN-64-STATIC-NEXT: leaq _ddst+64(%rip), %rax 7863; DARWIN-64-STATIC-NEXT: retq 7864; 7865; DARWIN-64-DYNAMIC-LABEL: bat04: 7866; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 7867; DARWIN-64-DYNAMIC-NEXT: leaq _ddst+64(%rip), %rax 7868; DARWIN-64-DYNAMIC-NEXT: retq 7869; 7870; DARWIN-64-PIC-LABEL: bat04: 7871; DARWIN-64-PIC: ## %bb.0: ## %entry 7872; DARWIN-64-PIC-NEXT: leaq _ddst+64(%rip), %rax 7873; DARWIN-64-PIC-NEXT: retq 7874 7875entry: 7876 ret i8* bitcast (i32* getelementptr ([131072 x i32], [131072 x i32]* @ddst, i32 0, i64 16) to i8*) 7877} 7878 7879define dso_local i8* @bat05() nounwind { 7880; LINUX-64-STATIC-LABEL: bat05: 7881; LINUX-64-STATIC: # %bb.0: # %entry 7882; LINUX-64-STATIC-NEXT: movq dptr(%rip), %rax 7883; LINUX-64-STATIC-NEXT: addq $64, %rax 7884; LINUX-64-STATIC-NEXT: retq 7885; 7886; LINUX-32-STATIC-LABEL: bat05: 7887; LINUX-32-STATIC: # %bb.0: # %entry 7888; LINUX-32-STATIC-NEXT: movl dptr, %eax 7889; LINUX-32-STATIC-NEXT: addl $64, %eax 7890; LINUX-32-STATIC-NEXT: retl 7891; 7892; LINUX-32-PIC-LABEL: bat05: 7893; LINUX-32-PIC: # %bb.0: # %entry 7894; LINUX-32-PIC-NEXT: calll .L95$pb 7895; LINUX-32-PIC-NEXT: .L95$pb: 7896; LINUX-32-PIC-NEXT: popl %eax 7897; LINUX-32-PIC-NEXT: .Ltmp95: 7898; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp95-.L95$pb), %eax 7899; LINUX-32-PIC-NEXT: movl .Ldptr$local@GOTOFF(%eax), %eax 7900; LINUX-32-PIC-NEXT: addl $64, %eax 7901; LINUX-32-PIC-NEXT: retl 7902; 7903; LINUX-64-PIC-LABEL: bat05: 7904; LINUX-64-PIC: # %bb.0: # %entry 7905; LINUX-64-PIC-NEXT: movq .Ldptr$local(%rip), %rax 7906; LINUX-64-PIC-NEXT: addq $64, %rax 7907; LINUX-64-PIC-NEXT: retq 7908; 7909; DARWIN-32-STATIC-LABEL: bat05: 7910; DARWIN-32-STATIC: ## %bb.0: ## %entry 7911; DARWIN-32-STATIC-NEXT: movl _dptr, %eax 7912; DARWIN-32-STATIC-NEXT: addl $64, %eax 7913; DARWIN-32-STATIC-NEXT: retl 7914; 7915; DARWIN-32-DYNAMIC-LABEL: bat05: 7916; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 7917; DARWIN-32-DYNAMIC-NEXT: movl _dptr, %eax 7918; DARWIN-32-DYNAMIC-NEXT: addl $64, %eax 7919; DARWIN-32-DYNAMIC-NEXT: retl 7920; 7921; DARWIN-32-PIC-LABEL: bat05: 7922; DARWIN-32-PIC: ## %bb.0: ## %entry 7923; DARWIN-32-PIC-NEXT: calll L95$pb 7924; DARWIN-32-PIC-NEXT: L95$pb: 7925; DARWIN-32-PIC-NEXT: popl %eax 7926; DARWIN-32-PIC-NEXT: movl _dptr-L95$pb(%eax), %eax 7927; DARWIN-32-PIC-NEXT: addl $64, %eax 7928; DARWIN-32-PIC-NEXT: retl 7929; 7930; DARWIN-64-STATIC-LABEL: bat05: 7931; DARWIN-64-STATIC: ## %bb.0: ## %entry 7932; DARWIN-64-STATIC-NEXT: movq _dptr(%rip), %rax 7933; DARWIN-64-STATIC-NEXT: addq $64, %rax 7934; DARWIN-64-STATIC-NEXT: retq 7935; 7936; DARWIN-64-DYNAMIC-LABEL: bat05: 7937; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 7938; DARWIN-64-DYNAMIC-NEXT: movq _dptr(%rip), %rax 7939; DARWIN-64-DYNAMIC-NEXT: addq $64, %rax 7940; DARWIN-64-DYNAMIC-NEXT: retq 7941; 7942; DARWIN-64-PIC-LABEL: bat05: 7943; DARWIN-64-PIC: ## %bb.0: ## %entry 7944; DARWIN-64-PIC-NEXT: movq _dptr(%rip), %rax 7945; DARWIN-64-PIC-NEXT: addq $64, %rax 7946; DARWIN-64-PIC-NEXT: retq 7947 7948entry: 7949 %0 = load i32*, i32** @dptr, align 8 7950 %1 = getelementptr i32, i32* %0, i64 16 7951 %2 = bitcast i32* %1 to i8* 7952 ret i8* %2 7953} 7954 7955define dso_local i8* @bat06() nounwind { 7956; LINUX-64-STATIC-LABEL: bat06: 7957; LINUX-64-STATIC: # %bb.0: # %entry 7958; LINUX-64-STATIC-NEXT: movl $lsrc+64, %eax 7959; LINUX-64-STATIC-NEXT: retq 7960; 7961; LINUX-32-STATIC-LABEL: bat06: 7962; LINUX-32-STATIC: # %bb.0: # %entry 7963; LINUX-32-STATIC-NEXT: movl $lsrc+64, %eax 7964; LINUX-32-STATIC-NEXT: retl 7965; 7966; LINUX-32-PIC-LABEL: bat06: 7967; LINUX-32-PIC: # %bb.0: # %entry 7968; LINUX-32-PIC-NEXT: calll .L96$pb 7969; LINUX-32-PIC-NEXT: .L96$pb: 7970; LINUX-32-PIC-NEXT: popl %eax 7971; LINUX-32-PIC-NEXT: .Ltmp96: 7972; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp96-.L96$pb), %eax 7973; LINUX-32-PIC-NEXT: leal lsrc@GOTOFF+64(%eax), %eax 7974; LINUX-32-PIC-NEXT: retl 7975; 7976; LINUX-64-PIC-LABEL: bat06: 7977; LINUX-64-PIC: # %bb.0: # %entry 7978; LINUX-64-PIC-NEXT: leaq lsrc+64(%rip), %rax 7979; LINUX-64-PIC-NEXT: retq 7980; 7981; DARWIN-32-STATIC-LABEL: bat06: 7982; DARWIN-32-STATIC: ## %bb.0: ## %entry 7983; DARWIN-32-STATIC-NEXT: movl $_lsrc+64, %eax 7984; DARWIN-32-STATIC-NEXT: retl 7985; 7986; DARWIN-32-DYNAMIC-LABEL: bat06: 7987; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 7988; DARWIN-32-DYNAMIC-NEXT: movl $_lsrc+64, %eax 7989; DARWIN-32-DYNAMIC-NEXT: retl 7990; 7991; DARWIN-32-PIC-LABEL: bat06: 7992; DARWIN-32-PIC: ## %bb.0: ## %entry 7993; DARWIN-32-PIC-NEXT: calll L96$pb 7994; DARWIN-32-PIC-NEXT: L96$pb: 7995; DARWIN-32-PIC-NEXT: popl %eax 7996; DARWIN-32-PIC-NEXT: leal (_lsrc-L96$pb)+64(%eax), %eax 7997; DARWIN-32-PIC-NEXT: retl 7998; 7999; DARWIN-64-STATIC-LABEL: bat06: 8000; DARWIN-64-STATIC: ## %bb.0: ## %entry 8001; DARWIN-64-STATIC-NEXT: leaq _lsrc+64(%rip), %rax 8002; DARWIN-64-STATIC-NEXT: retq 8003; 8004; DARWIN-64-DYNAMIC-LABEL: bat06: 8005; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 8006; DARWIN-64-DYNAMIC-NEXT: leaq _lsrc+64(%rip), %rax 8007; DARWIN-64-DYNAMIC-NEXT: retq 8008; 8009; DARWIN-64-PIC-LABEL: bat06: 8010; DARWIN-64-PIC: ## %bb.0: ## %entry 8011; DARWIN-64-PIC-NEXT: leaq _lsrc+64(%rip), %rax 8012; DARWIN-64-PIC-NEXT: retq 8013 8014entry: 8015 ret i8* bitcast (i32* getelementptr ([131072 x i32], [131072 x i32]* @lsrc, i32 0, i64 16) to i8*) 8016} 8017 8018define dso_local i8* @bat07() nounwind { 8019; LINUX-64-STATIC-LABEL: bat07: 8020; LINUX-64-STATIC: # %bb.0: # %entry 8021; LINUX-64-STATIC-NEXT: movl $ldst+64, %eax 8022; LINUX-64-STATIC-NEXT: retq 8023; 8024; LINUX-32-STATIC-LABEL: bat07: 8025; LINUX-32-STATIC: # %bb.0: # %entry 8026; LINUX-32-STATIC-NEXT: movl $ldst+64, %eax 8027; LINUX-32-STATIC-NEXT: retl 8028; 8029; LINUX-32-PIC-LABEL: bat07: 8030; LINUX-32-PIC: # %bb.0: # %entry 8031; LINUX-32-PIC-NEXT: calll .L97$pb 8032; LINUX-32-PIC-NEXT: .L97$pb: 8033; LINUX-32-PIC-NEXT: popl %eax 8034; LINUX-32-PIC-NEXT: .Ltmp97: 8035; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp97-.L97$pb), %eax 8036; LINUX-32-PIC-NEXT: leal ldst@GOTOFF+64(%eax), %eax 8037; LINUX-32-PIC-NEXT: retl 8038; 8039; LINUX-64-PIC-LABEL: bat07: 8040; LINUX-64-PIC: # %bb.0: # %entry 8041; LINUX-64-PIC-NEXT: leaq ldst+64(%rip), %rax 8042; LINUX-64-PIC-NEXT: retq 8043; 8044; DARWIN-32-STATIC-LABEL: bat07: 8045; DARWIN-32-STATIC: ## %bb.0: ## %entry 8046; DARWIN-32-STATIC-NEXT: movl $_ldst+64, %eax 8047; DARWIN-32-STATIC-NEXT: retl 8048; 8049; DARWIN-32-DYNAMIC-LABEL: bat07: 8050; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 8051; DARWIN-32-DYNAMIC-NEXT: movl $_ldst+64, %eax 8052; DARWIN-32-DYNAMIC-NEXT: retl 8053; 8054; DARWIN-32-PIC-LABEL: bat07: 8055; DARWIN-32-PIC: ## %bb.0: ## %entry 8056; DARWIN-32-PIC-NEXT: calll L97$pb 8057; DARWIN-32-PIC-NEXT: L97$pb: 8058; DARWIN-32-PIC-NEXT: popl %eax 8059; DARWIN-32-PIC-NEXT: leal (_ldst-L97$pb)+64(%eax), %eax 8060; DARWIN-32-PIC-NEXT: retl 8061; 8062; DARWIN-64-STATIC-LABEL: bat07: 8063; DARWIN-64-STATIC: ## %bb.0: ## %entry 8064; DARWIN-64-STATIC-NEXT: leaq _ldst+64(%rip), %rax 8065; DARWIN-64-STATIC-NEXT: retq 8066; 8067; DARWIN-64-DYNAMIC-LABEL: bat07: 8068; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 8069; DARWIN-64-DYNAMIC-NEXT: leaq _ldst+64(%rip), %rax 8070; DARWIN-64-DYNAMIC-NEXT: retq 8071; 8072; DARWIN-64-PIC-LABEL: bat07: 8073; DARWIN-64-PIC: ## %bb.0: ## %entry 8074; DARWIN-64-PIC-NEXT: leaq _ldst+64(%rip), %rax 8075; DARWIN-64-PIC-NEXT: retq 8076 8077entry: 8078 ret i8* bitcast (i32* getelementptr ([131072 x i32], [131072 x i32]* @ldst, i32 0, i64 16) to i8*) 8079} 8080 8081define dso_local i8* @bat08() nounwind { 8082; LINUX-64-STATIC-LABEL: bat08: 8083; LINUX-64-STATIC: # %bb.0: # %entry 8084; LINUX-64-STATIC-NEXT: movq lptr(%rip), %rax 8085; LINUX-64-STATIC-NEXT: addq $64, %rax 8086; LINUX-64-STATIC-NEXT: retq 8087; 8088; LINUX-32-STATIC-LABEL: bat08: 8089; LINUX-32-STATIC: # %bb.0: # %entry 8090; LINUX-32-STATIC-NEXT: movl lptr, %eax 8091; LINUX-32-STATIC-NEXT: addl $64, %eax 8092; LINUX-32-STATIC-NEXT: retl 8093; 8094; LINUX-32-PIC-LABEL: bat08: 8095; LINUX-32-PIC: # %bb.0: # %entry 8096; LINUX-32-PIC-NEXT: calll .L98$pb 8097; LINUX-32-PIC-NEXT: .L98$pb: 8098; LINUX-32-PIC-NEXT: popl %eax 8099; LINUX-32-PIC-NEXT: .Ltmp98: 8100; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp98-.L98$pb), %eax 8101; LINUX-32-PIC-NEXT: movl lptr@GOTOFF(%eax), %eax 8102; LINUX-32-PIC-NEXT: addl $64, %eax 8103; LINUX-32-PIC-NEXT: retl 8104; 8105; LINUX-64-PIC-LABEL: bat08: 8106; LINUX-64-PIC: # %bb.0: # %entry 8107; LINUX-64-PIC-NEXT: movq lptr(%rip), %rax 8108; LINUX-64-PIC-NEXT: addq $64, %rax 8109; LINUX-64-PIC-NEXT: retq 8110; 8111; DARWIN-32-STATIC-LABEL: bat08: 8112; DARWIN-32-STATIC: ## %bb.0: ## %entry 8113; DARWIN-32-STATIC-NEXT: movl _lptr, %eax 8114; DARWIN-32-STATIC-NEXT: addl $64, %eax 8115; DARWIN-32-STATIC-NEXT: retl 8116; 8117; DARWIN-32-DYNAMIC-LABEL: bat08: 8118; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 8119; DARWIN-32-DYNAMIC-NEXT: movl _lptr, %eax 8120; DARWIN-32-DYNAMIC-NEXT: addl $64, %eax 8121; DARWIN-32-DYNAMIC-NEXT: retl 8122; 8123; DARWIN-32-PIC-LABEL: bat08: 8124; DARWIN-32-PIC: ## %bb.0: ## %entry 8125; DARWIN-32-PIC-NEXT: calll L98$pb 8126; DARWIN-32-PIC-NEXT: L98$pb: 8127; DARWIN-32-PIC-NEXT: popl %eax 8128; DARWIN-32-PIC-NEXT: movl _lptr-L98$pb(%eax), %eax 8129; DARWIN-32-PIC-NEXT: addl $64, %eax 8130; DARWIN-32-PIC-NEXT: retl 8131; 8132; DARWIN-64-STATIC-LABEL: bat08: 8133; DARWIN-64-STATIC: ## %bb.0: ## %entry 8134; DARWIN-64-STATIC-NEXT: movq _lptr(%rip), %rax 8135; DARWIN-64-STATIC-NEXT: addq $64, %rax 8136; DARWIN-64-STATIC-NEXT: retq 8137; 8138; DARWIN-64-DYNAMIC-LABEL: bat08: 8139; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 8140; DARWIN-64-DYNAMIC-NEXT: movq _lptr(%rip), %rax 8141; DARWIN-64-DYNAMIC-NEXT: addq $64, %rax 8142; DARWIN-64-DYNAMIC-NEXT: retq 8143; 8144; DARWIN-64-PIC-LABEL: bat08: 8145; DARWIN-64-PIC: ## %bb.0: ## %entry 8146; DARWIN-64-PIC-NEXT: movq _lptr(%rip), %rax 8147; DARWIN-64-PIC-NEXT: addq $64, %rax 8148; DARWIN-64-PIC-NEXT: retq 8149 8150entry: 8151 %0 = load i32*, i32** @lptr, align 8 8152 %1 = getelementptr i32, i32* %0, i64 16 8153 %2 = bitcast i32* %1 to i8* 8154 ret i8* %2 8155} 8156 8157define dso_local i8* @bam00() nounwind { 8158; LINUX-64-STATIC-LABEL: bam00: 8159; LINUX-64-STATIC: # %bb.0: # %entry 8160; LINUX-64-STATIC-NEXT: movl $262144, %eax # imm = 0x40000 8161; LINUX-64-STATIC-NEXT: addq src@GOTPCREL(%rip), %rax 8162; LINUX-64-STATIC-NEXT: retq 8163; 8164; LINUX-32-STATIC-LABEL: bam00: 8165; LINUX-32-STATIC: # %bb.0: # %entry 8166; LINUX-32-STATIC-NEXT: leal src+262144, %eax 8167; LINUX-32-STATIC-NEXT: retl 8168; 8169; LINUX-32-PIC-LABEL: bam00: 8170; LINUX-32-PIC: # %bb.0: # %entry 8171; LINUX-32-PIC-NEXT: calll .L99$pb 8172; LINUX-32-PIC-NEXT: .L99$pb: 8173; LINUX-32-PIC-NEXT: popl %ecx 8174; LINUX-32-PIC-NEXT: .Ltmp99: 8175; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp99-.L99$pb), %ecx 8176; LINUX-32-PIC-NEXT: movl $262144, %eax # imm = 0x40000 8177; LINUX-32-PIC-NEXT: addl src@GOT(%ecx), %eax 8178; LINUX-32-PIC-NEXT: retl 8179; 8180; LINUX-64-PIC-LABEL: bam00: 8181; LINUX-64-PIC: # %bb.0: # %entry 8182; LINUX-64-PIC-NEXT: movl $262144, %eax # imm = 0x40000 8183; LINUX-64-PIC-NEXT: addq src@GOTPCREL(%rip), %rax 8184; LINUX-64-PIC-NEXT: retq 8185; 8186; DARWIN-32-STATIC-LABEL: bam00: 8187; DARWIN-32-STATIC: ## %bb.0: ## %entry 8188; DARWIN-32-STATIC-NEXT: movl $_src+262144, %eax 8189; DARWIN-32-STATIC-NEXT: retl 8190; 8191; DARWIN-32-DYNAMIC-LABEL: bam00: 8192; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 8193; DARWIN-32-DYNAMIC-NEXT: movl $262144, %eax ## imm = 0x40000 8194; DARWIN-32-DYNAMIC-NEXT: addl L_src$non_lazy_ptr, %eax 8195; DARWIN-32-DYNAMIC-NEXT: retl 8196; 8197; DARWIN-32-PIC-LABEL: bam00: 8198; DARWIN-32-PIC: ## %bb.0: ## %entry 8199; DARWIN-32-PIC-NEXT: calll L99$pb 8200; DARWIN-32-PIC-NEXT: L99$pb: 8201; DARWIN-32-PIC-NEXT: popl %ecx 8202; DARWIN-32-PIC-NEXT: movl $262144, %eax ## imm = 0x40000 8203; DARWIN-32-PIC-NEXT: addl L_src$non_lazy_ptr-L99$pb(%ecx), %eax 8204; DARWIN-32-PIC-NEXT: retl 8205; 8206; DARWIN-64-STATIC-LABEL: bam00: 8207; DARWIN-64-STATIC: ## %bb.0: ## %entry 8208; DARWIN-64-STATIC-NEXT: movl $262144, %eax ## imm = 0x40000 8209; DARWIN-64-STATIC-NEXT: addq _src@GOTPCREL(%rip), %rax 8210; DARWIN-64-STATIC-NEXT: retq 8211; 8212; DARWIN-64-DYNAMIC-LABEL: bam00: 8213; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 8214; DARWIN-64-DYNAMIC-NEXT: movl $262144, %eax ## imm = 0x40000 8215; DARWIN-64-DYNAMIC-NEXT: addq _src@GOTPCREL(%rip), %rax 8216; DARWIN-64-DYNAMIC-NEXT: retq 8217; 8218; DARWIN-64-PIC-LABEL: bam00: 8219; DARWIN-64-PIC: ## %bb.0: ## %entry 8220; DARWIN-64-PIC-NEXT: movl $262144, %eax ## imm = 0x40000 8221; DARWIN-64-PIC-NEXT: addq _src@GOTPCREL(%rip), %rax 8222; DARWIN-64-PIC-NEXT: retq 8223 8224entry: 8225 ret i8* bitcast (i32* getelementptr ([131072 x i32], [131072 x i32]* @src, i32 0, i64 65536) to i8*) 8226} 8227 8228define dso_local i8* @bam01() nounwind { 8229; LINUX-64-STATIC-LABEL: bam01: 8230; LINUX-64-STATIC: # %bb.0: # %entry 8231; LINUX-64-STATIC-NEXT: movl $262144, %eax # imm = 0x40000 8232; LINUX-64-STATIC-NEXT: addq dst@GOTPCREL(%rip), %rax 8233; LINUX-64-STATIC-NEXT: retq 8234; 8235; LINUX-32-STATIC-LABEL: bam01: 8236; LINUX-32-STATIC: # %bb.0: # %entry 8237; LINUX-32-STATIC-NEXT: leal dst+262144, %eax 8238; LINUX-32-STATIC-NEXT: retl 8239; 8240; LINUX-32-PIC-LABEL: bam01: 8241; LINUX-32-PIC: # %bb.0: # %entry 8242; LINUX-32-PIC-NEXT: calll .L100$pb 8243; LINUX-32-PIC-NEXT: .L100$pb: 8244; LINUX-32-PIC-NEXT: popl %ecx 8245; LINUX-32-PIC-NEXT: .Ltmp100: 8246; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp100-.L100$pb), %ecx 8247; LINUX-32-PIC-NEXT: movl $262144, %eax # imm = 0x40000 8248; LINUX-32-PIC-NEXT: addl dst@GOT(%ecx), %eax 8249; LINUX-32-PIC-NEXT: retl 8250; 8251; LINUX-64-PIC-LABEL: bam01: 8252; LINUX-64-PIC: # %bb.0: # %entry 8253; LINUX-64-PIC-NEXT: movl $262144, %eax # imm = 0x40000 8254; LINUX-64-PIC-NEXT: addq dst@GOTPCREL(%rip), %rax 8255; LINUX-64-PIC-NEXT: retq 8256; 8257; DARWIN-32-STATIC-LABEL: bam01: 8258; DARWIN-32-STATIC: ## %bb.0: ## %entry 8259; DARWIN-32-STATIC-NEXT: movl $_dst+262144, %eax 8260; DARWIN-32-STATIC-NEXT: retl 8261; 8262; DARWIN-32-DYNAMIC-LABEL: bam01: 8263; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 8264; DARWIN-32-DYNAMIC-NEXT: movl $262144, %eax ## imm = 0x40000 8265; DARWIN-32-DYNAMIC-NEXT: addl L_dst$non_lazy_ptr, %eax 8266; DARWIN-32-DYNAMIC-NEXT: retl 8267; 8268; DARWIN-32-PIC-LABEL: bam01: 8269; DARWIN-32-PIC: ## %bb.0: ## %entry 8270; DARWIN-32-PIC-NEXT: calll L100$pb 8271; DARWIN-32-PIC-NEXT: L100$pb: 8272; DARWIN-32-PIC-NEXT: popl %ecx 8273; DARWIN-32-PIC-NEXT: movl $262144, %eax ## imm = 0x40000 8274; DARWIN-32-PIC-NEXT: addl L_dst$non_lazy_ptr-L100$pb(%ecx), %eax 8275; DARWIN-32-PIC-NEXT: retl 8276; 8277; DARWIN-64-STATIC-LABEL: bam01: 8278; DARWIN-64-STATIC: ## %bb.0: ## %entry 8279; DARWIN-64-STATIC-NEXT: movl $262144, %eax ## imm = 0x40000 8280; DARWIN-64-STATIC-NEXT: addq _dst@GOTPCREL(%rip), %rax 8281; DARWIN-64-STATIC-NEXT: retq 8282; 8283; DARWIN-64-DYNAMIC-LABEL: bam01: 8284; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 8285; DARWIN-64-DYNAMIC-NEXT: movl $262144, %eax ## imm = 0x40000 8286; DARWIN-64-DYNAMIC-NEXT: addq _dst@GOTPCREL(%rip), %rax 8287; DARWIN-64-DYNAMIC-NEXT: retq 8288; 8289; DARWIN-64-PIC-LABEL: bam01: 8290; DARWIN-64-PIC: ## %bb.0: ## %entry 8291; DARWIN-64-PIC-NEXT: movl $262144, %eax ## imm = 0x40000 8292; DARWIN-64-PIC-NEXT: addq _dst@GOTPCREL(%rip), %rax 8293; DARWIN-64-PIC-NEXT: retq 8294 8295entry: 8296 ret i8* bitcast (i32* getelementptr ([131072 x i32], [131072 x i32]* @dst, i32 0, i64 65536) to i8*) 8297} 8298 8299define dso_local i8* @bxm01() nounwind { 8300; LINUX-64-STATIC-LABEL: bxm01: 8301; LINUX-64-STATIC: # %bb.0: # %entry 8302; LINUX-64-STATIC-NEXT: movl $262144, %eax # imm = 0x40000 8303; LINUX-64-STATIC-NEXT: addq xdst@GOTPCREL(%rip), %rax 8304; LINUX-64-STATIC-NEXT: retq 8305; 8306; LINUX-32-STATIC-LABEL: bxm01: 8307; LINUX-32-STATIC: # %bb.0: # %entry 8308; LINUX-32-STATIC-NEXT: leal xdst+262144, %eax 8309; LINUX-32-STATIC-NEXT: retl 8310; 8311; LINUX-32-PIC-LABEL: bxm01: 8312; LINUX-32-PIC: # %bb.0: # %entry 8313; LINUX-32-PIC-NEXT: calll .L101$pb 8314; LINUX-32-PIC-NEXT: .L101$pb: 8315; LINUX-32-PIC-NEXT: popl %ecx 8316; LINUX-32-PIC-NEXT: .Ltmp101: 8317; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp101-.L101$pb), %ecx 8318; LINUX-32-PIC-NEXT: movl $262144, %eax # imm = 0x40000 8319; LINUX-32-PIC-NEXT: addl xdst@GOT(%ecx), %eax 8320; LINUX-32-PIC-NEXT: retl 8321; 8322; LINUX-64-PIC-LABEL: bxm01: 8323; LINUX-64-PIC: # %bb.0: # %entry 8324; LINUX-64-PIC-NEXT: movl $262144, %eax # imm = 0x40000 8325; LINUX-64-PIC-NEXT: addq xdst@GOTPCREL(%rip), %rax 8326; LINUX-64-PIC-NEXT: retq 8327; 8328; DARWIN-32-STATIC-LABEL: bxm01: 8329; DARWIN-32-STATIC: ## %bb.0: ## %entry 8330; DARWIN-32-STATIC-NEXT: movl $_xdst+262144, %eax 8331; DARWIN-32-STATIC-NEXT: retl 8332; 8333; DARWIN-32-DYNAMIC-LABEL: bxm01: 8334; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 8335; DARWIN-32-DYNAMIC-NEXT: movl $262144, %eax ## imm = 0x40000 8336; DARWIN-32-DYNAMIC-NEXT: addl L_xdst$non_lazy_ptr, %eax 8337; DARWIN-32-DYNAMIC-NEXT: retl 8338; 8339; DARWIN-32-PIC-LABEL: bxm01: 8340; DARWIN-32-PIC: ## %bb.0: ## %entry 8341; DARWIN-32-PIC-NEXT: calll L101$pb 8342; DARWIN-32-PIC-NEXT: L101$pb: 8343; DARWIN-32-PIC-NEXT: popl %ecx 8344; DARWIN-32-PIC-NEXT: movl $262144, %eax ## imm = 0x40000 8345; DARWIN-32-PIC-NEXT: addl L_xdst$non_lazy_ptr-L101$pb(%ecx), %eax 8346; DARWIN-32-PIC-NEXT: retl 8347; 8348; DARWIN-64-STATIC-LABEL: bxm01: 8349; DARWIN-64-STATIC: ## %bb.0: ## %entry 8350; DARWIN-64-STATIC-NEXT: movl $262144, %eax ## imm = 0x40000 8351; DARWIN-64-STATIC-NEXT: addq _xdst@GOTPCREL(%rip), %rax 8352; DARWIN-64-STATIC-NEXT: retq 8353; 8354; DARWIN-64-DYNAMIC-LABEL: bxm01: 8355; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 8356; DARWIN-64-DYNAMIC-NEXT: movl $262144, %eax ## imm = 0x40000 8357; DARWIN-64-DYNAMIC-NEXT: addq _xdst@GOTPCREL(%rip), %rax 8358; DARWIN-64-DYNAMIC-NEXT: retq 8359; 8360; DARWIN-64-PIC-LABEL: bxm01: 8361; DARWIN-64-PIC: ## %bb.0: ## %entry 8362; DARWIN-64-PIC-NEXT: movl $262144, %eax ## imm = 0x40000 8363; DARWIN-64-PIC-NEXT: addq _xdst@GOTPCREL(%rip), %rax 8364; DARWIN-64-PIC-NEXT: retq 8365 8366entry: 8367 ret i8* bitcast (i32* getelementptr ([32 x i32], [32 x i32]* @xdst, i32 0, i64 65536) to i8*) 8368} 8369 8370define dso_local i8* @bam02() nounwind { 8371; LINUX-64-STATIC-LABEL: bam02: 8372; LINUX-64-STATIC: # %bb.0: # %entry 8373; LINUX-64-STATIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx 8374; LINUX-64-STATIC-NEXT: movl $262144, %eax # imm = 0x40000 8375; LINUX-64-STATIC-NEXT: addq (%rcx), %rax 8376; LINUX-64-STATIC-NEXT: retq 8377; 8378; LINUX-32-STATIC-LABEL: bam02: 8379; LINUX-32-STATIC: # %bb.0: # %entry 8380; LINUX-32-STATIC-NEXT: movl $262144, %eax # imm = 0x40000 8381; LINUX-32-STATIC-NEXT: addl ptr, %eax 8382; LINUX-32-STATIC-NEXT: retl 8383; 8384; LINUX-32-PIC-LABEL: bam02: 8385; LINUX-32-PIC: # %bb.0: # %entry 8386; LINUX-32-PIC-NEXT: calll .L102$pb 8387; LINUX-32-PIC-NEXT: .L102$pb: 8388; LINUX-32-PIC-NEXT: popl %eax 8389; LINUX-32-PIC-NEXT: .Ltmp102: 8390; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp102-.L102$pb), %eax 8391; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %ecx 8392; LINUX-32-PIC-NEXT: movl $262144, %eax # imm = 0x40000 8393; LINUX-32-PIC-NEXT: addl (%ecx), %eax 8394; LINUX-32-PIC-NEXT: retl 8395; 8396; LINUX-64-PIC-LABEL: bam02: 8397; LINUX-64-PIC: # %bb.0: # %entry 8398; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx 8399; LINUX-64-PIC-NEXT: movl $262144, %eax # imm = 0x40000 8400; LINUX-64-PIC-NEXT: addq (%rcx), %rax 8401; LINUX-64-PIC-NEXT: retq 8402; 8403; DARWIN-32-STATIC-LABEL: bam02: 8404; DARWIN-32-STATIC: ## %bb.0: ## %entry 8405; DARWIN-32-STATIC-NEXT: movl $262144, %eax ## imm = 0x40000 8406; DARWIN-32-STATIC-NEXT: addl _ptr, %eax 8407; DARWIN-32-STATIC-NEXT: retl 8408; 8409; DARWIN-32-DYNAMIC-LABEL: bam02: 8410; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 8411; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx 8412; DARWIN-32-DYNAMIC-NEXT: movl $262144, %eax ## imm = 0x40000 8413; DARWIN-32-DYNAMIC-NEXT: addl (%ecx), %eax 8414; DARWIN-32-DYNAMIC-NEXT: retl 8415; 8416; DARWIN-32-PIC-LABEL: bam02: 8417; DARWIN-32-PIC: ## %bb.0: ## %entry 8418; DARWIN-32-PIC-NEXT: calll L102$pb 8419; DARWIN-32-PIC-NEXT: L102$pb: 8420; DARWIN-32-PIC-NEXT: popl %eax 8421; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L102$pb(%eax), %ecx 8422; DARWIN-32-PIC-NEXT: movl $262144, %eax ## imm = 0x40000 8423; DARWIN-32-PIC-NEXT: addl (%ecx), %eax 8424; DARWIN-32-PIC-NEXT: retl 8425; 8426; DARWIN-64-STATIC-LABEL: bam02: 8427; DARWIN-64-STATIC: ## %bb.0: ## %entry 8428; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 8429; DARWIN-64-STATIC-NEXT: movl $262144, %eax ## imm = 0x40000 8430; DARWIN-64-STATIC-NEXT: addq (%rcx), %rax 8431; DARWIN-64-STATIC-NEXT: retq 8432; 8433; DARWIN-64-DYNAMIC-LABEL: bam02: 8434; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 8435; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 8436; DARWIN-64-DYNAMIC-NEXT: movl $262144, %eax ## imm = 0x40000 8437; DARWIN-64-DYNAMIC-NEXT: addq (%rcx), %rax 8438; DARWIN-64-DYNAMIC-NEXT: retq 8439; 8440; DARWIN-64-PIC-LABEL: bam02: 8441; DARWIN-64-PIC: ## %bb.0: ## %entry 8442; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 8443; DARWIN-64-PIC-NEXT: movl $262144, %eax ## imm = 0x40000 8444; DARWIN-64-PIC-NEXT: addq (%rcx), %rax 8445; DARWIN-64-PIC-NEXT: retq 8446 8447entry: 8448 %0 = load i32*, i32** @ptr, align 8 8449 %1 = getelementptr i32, i32* %0, i64 65536 8450 %2 = bitcast i32* %1 to i8* 8451 ret i8* %2 8452} 8453 8454define dso_local i8* @bam03() nounwind { 8455; LINUX-64-STATIC-LABEL: bam03: 8456; LINUX-64-STATIC: # %bb.0: # %entry 8457; LINUX-64-STATIC-NEXT: movl $dsrc+262144, %eax 8458; LINUX-64-STATIC-NEXT: retq 8459; 8460; LINUX-32-STATIC-LABEL: bam03: 8461; LINUX-32-STATIC: # %bb.0: # %entry 8462; LINUX-32-STATIC-NEXT: movl $dsrc+262144, %eax 8463; LINUX-32-STATIC-NEXT: retl 8464; 8465; LINUX-32-PIC-LABEL: bam03: 8466; LINUX-32-PIC: # %bb.0: # %entry 8467; LINUX-32-PIC-NEXT: calll .L103$pb 8468; LINUX-32-PIC-NEXT: .L103$pb: 8469; LINUX-32-PIC-NEXT: popl %eax 8470; LINUX-32-PIC-NEXT: .Ltmp103: 8471; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp103-.L103$pb), %eax 8472; LINUX-32-PIC-NEXT: leal .Ldsrc$local@GOTOFF+262144(%eax), %eax 8473; LINUX-32-PIC-NEXT: retl 8474; 8475; LINUX-64-PIC-LABEL: bam03: 8476; LINUX-64-PIC: # %bb.0: # %entry 8477; LINUX-64-PIC-NEXT: leaq .Ldsrc$local+262144(%rip), %rax 8478; LINUX-64-PIC-NEXT: retq 8479; 8480; DARWIN-32-STATIC-LABEL: bam03: 8481; DARWIN-32-STATIC: ## %bb.0: ## %entry 8482; DARWIN-32-STATIC-NEXT: movl $_dsrc+262144, %eax 8483; DARWIN-32-STATIC-NEXT: retl 8484; 8485; DARWIN-32-DYNAMIC-LABEL: bam03: 8486; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 8487; DARWIN-32-DYNAMIC-NEXT: movl $_dsrc+262144, %eax 8488; DARWIN-32-DYNAMIC-NEXT: retl 8489; 8490; DARWIN-32-PIC-LABEL: bam03: 8491; DARWIN-32-PIC: ## %bb.0: ## %entry 8492; DARWIN-32-PIC-NEXT: calll L103$pb 8493; DARWIN-32-PIC-NEXT: L103$pb: 8494; DARWIN-32-PIC-NEXT: popl %eax 8495; DARWIN-32-PIC-NEXT: leal (_dsrc-L103$pb)+262144(%eax), %eax 8496; DARWIN-32-PIC-NEXT: retl 8497; 8498; DARWIN-64-STATIC-LABEL: bam03: 8499; DARWIN-64-STATIC: ## %bb.0: ## %entry 8500; DARWIN-64-STATIC-NEXT: leaq _dsrc+262144(%rip), %rax 8501; DARWIN-64-STATIC-NEXT: retq 8502; 8503; DARWIN-64-DYNAMIC-LABEL: bam03: 8504; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 8505; DARWIN-64-DYNAMIC-NEXT: leaq _dsrc+262144(%rip), %rax 8506; DARWIN-64-DYNAMIC-NEXT: retq 8507; 8508; DARWIN-64-PIC-LABEL: bam03: 8509; DARWIN-64-PIC: ## %bb.0: ## %entry 8510; DARWIN-64-PIC-NEXT: leaq _dsrc+262144(%rip), %rax 8511; DARWIN-64-PIC-NEXT: retq 8512 8513entry: 8514 ret i8* bitcast (i32* getelementptr ([131072 x i32], [131072 x i32]* @dsrc, i32 0, i64 65536) to i8*) 8515} 8516 8517define dso_local i8* @bam04() nounwind { 8518; LINUX-64-STATIC-LABEL: bam04: 8519; LINUX-64-STATIC: # %bb.0: # %entry 8520; LINUX-64-STATIC-NEXT: movl $ddst+262144, %eax 8521; LINUX-64-STATIC-NEXT: retq 8522; 8523; LINUX-32-STATIC-LABEL: bam04: 8524; LINUX-32-STATIC: # %bb.0: # %entry 8525; LINUX-32-STATIC-NEXT: movl $ddst+262144, %eax 8526; LINUX-32-STATIC-NEXT: retl 8527; 8528; LINUX-32-PIC-LABEL: bam04: 8529; LINUX-32-PIC: # %bb.0: # %entry 8530; LINUX-32-PIC-NEXT: calll .L104$pb 8531; LINUX-32-PIC-NEXT: .L104$pb: 8532; LINUX-32-PIC-NEXT: popl %eax 8533; LINUX-32-PIC-NEXT: .Ltmp104: 8534; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp104-.L104$pb), %eax 8535; LINUX-32-PIC-NEXT: leal .Lddst$local@GOTOFF+262144(%eax), %eax 8536; LINUX-32-PIC-NEXT: retl 8537; 8538; LINUX-64-PIC-LABEL: bam04: 8539; LINUX-64-PIC: # %bb.0: # %entry 8540; LINUX-64-PIC-NEXT: leaq .Lddst$local+262144(%rip), %rax 8541; LINUX-64-PIC-NEXT: retq 8542; 8543; DARWIN-32-STATIC-LABEL: bam04: 8544; DARWIN-32-STATIC: ## %bb.0: ## %entry 8545; DARWIN-32-STATIC-NEXT: movl $_ddst+262144, %eax 8546; DARWIN-32-STATIC-NEXT: retl 8547; 8548; DARWIN-32-DYNAMIC-LABEL: bam04: 8549; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 8550; DARWIN-32-DYNAMIC-NEXT: movl $_ddst+262144, %eax 8551; DARWIN-32-DYNAMIC-NEXT: retl 8552; 8553; DARWIN-32-PIC-LABEL: bam04: 8554; DARWIN-32-PIC: ## %bb.0: ## %entry 8555; DARWIN-32-PIC-NEXT: calll L104$pb 8556; DARWIN-32-PIC-NEXT: L104$pb: 8557; DARWIN-32-PIC-NEXT: popl %eax 8558; DARWIN-32-PIC-NEXT: leal (_ddst-L104$pb)+262144(%eax), %eax 8559; DARWIN-32-PIC-NEXT: retl 8560; 8561; DARWIN-64-STATIC-LABEL: bam04: 8562; DARWIN-64-STATIC: ## %bb.0: ## %entry 8563; DARWIN-64-STATIC-NEXT: leaq _ddst+262144(%rip), %rax 8564; DARWIN-64-STATIC-NEXT: retq 8565; 8566; DARWIN-64-DYNAMIC-LABEL: bam04: 8567; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 8568; DARWIN-64-DYNAMIC-NEXT: leaq _ddst+262144(%rip), %rax 8569; DARWIN-64-DYNAMIC-NEXT: retq 8570; 8571; DARWIN-64-PIC-LABEL: bam04: 8572; DARWIN-64-PIC: ## %bb.0: ## %entry 8573; DARWIN-64-PIC-NEXT: leaq _ddst+262144(%rip), %rax 8574; DARWIN-64-PIC-NEXT: retq 8575 8576entry: 8577 ret i8* bitcast (i32* getelementptr ([131072 x i32], [131072 x i32]* @ddst, i32 0, i64 65536) to i8*) 8578} 8579 8580define dso_local i8* @bam05() nounwind { 8581; LINUX-64-STATIC-LABEL: bam05: 8582; LINUX-64-STATIC: # %bb.0: # %entry 8583; LINUX-64-STATIC-NEXT: movl $262144, %eax # imm = 0x40000 8584; LINUX-64-STATIC-NEXT: addq dptr(%rip), %rax 8585; LINUX-64-STATIC-NEXT: retq 8586; 8587; LINUX-32-STATIC-LABEL: bam05: 8588; LINUX-32-STATIC: # %bb.0: # %entry 8589; LINUX-32-STATIC-NEXT: movl $262144, %eax # imm = 0x40000 8590; LINUX-32-STATIC-NEXT: addl dptr, %eax 8591; LINUX-32-STATIC-NEXT: retl 8592; 8593; LINUX-32-PIC-LABEL: bam05: 8594; LINUX-32-PIC: # %bb.0: # %entry 8595; LINUX-32-PIC-NEXT: calll .L105$pb 8596; LINUX-32-PIC-NEXT: .L105$pb: 8597; LINUX-32-PIC-NEXT: popl %ecx 8598; LINUX-32-PIC-NEXT: .Ltmp105: 8599; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp105-.L105$pb), %ecx 8600; LINUX-32-PIC-NEXT: movl $262144, %eax # imm = 0x40000 8601; LINUX-32-PIC-NEXT: addl .Ldptr$local@GOTOFF(%ecx), %eax 8602; LINUX-32-PIC-NEXT: retl 8603; 8604; LINUX-64-PIC-LABEL: bam05: 8605; LINUX-64-PIC: # %bb.0: # %entry 8606; LINUX-64-PIC-NEXT: movl $262144, %eax # imm = 0x40000 8607; LINUX-64-PIC-NEXT: addq .Ldptr$local(%rip), %rax 8608; LINUX-64-PIC-NEXT: retq 8609; 8610; DARWIN-32-STATIC-LABEL: bam05: 8611; DARWIN-32-STATIC: ## %bb.0: ## %entry 8612; DARWIN-32-STATIC-NEXT: movl $262144, %eax ## imm = 0x40000 8613; DARWIN-32-STATIC-NEXT: addl _dptr, %eax 8614; DARWIN-32-STATIC-NEXT: retl 8615; 8616; DARWIN-32-DYNAMIC-LABEL: bam05: 8617; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 8618; DARWIN-32-DYNAMIC-NEXT: movl $262144, %eax ## imm = 0x40000 8619; DARWIN-32-DYNAMIC-NEXT: addl _dptr, %eax 8620; DARWIN-32-DYNAMIC-NEXT: retl 8621; 8622; DARWIN-32-PIC-LABEL: bam05: 8623; DARWIN-32-PIC: ## %bb.0: ## %entry 8624; DARWIN-32-PIC-NEXT: calll L105$pb 8625; DARWIN-32-PIC-NEXT: L105$pb: 8626; DARWIN-32-PIC-NEXT: popl %ecx 8627; DARWIN-32-PIC-NEXT: movl $262144, %eax ## imm = 0x40000 8628; DARWIN-32-PIC-NEXT: addl _dptr-L105$pb(%ecx), %eax 8629; DARWIN-32-PIC-NEXT: retl 8630; 8631; DARWIN-64-STATIC-LABEL: bam05: 8632; DARWIN-64-STATIC: ## %bb.0: ## %entry 8633; DARWIN-64-STATIC-NEXT: movl $262144, %eax ## imm = 0x40000 8634; DARWIN-64-STATIC-NEXT: addq _dptr(%rip), %rax 8635; DARWIN-64-STATIC-NEXT: retq 8636; 8637; DARWIN-64-DYNAMIC-LABEL: bam05: 8638; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 8639; DARWIN-64-DYNAMIC-NEXT: movl $262144, %eax ## imm = 0x40000 8640; DARWIN-64-DYNAMIC-NEXT: addq _dptr(%rip), %rax 8641; DARWIN-64-DYNAMIC-NEXT: retq 8642; 8643; DARWIN-64-PIC-LABEL: bam05: 8644; DARWIN-64-PIC: ## %bb.0: ## %entry 8645; DARWIN-64-PIC-NEXT: movl $262144, %eax ## imm = 0x40000 8646; DARWIN-64-PIC-NEXT: addq _dptr(%rip), %rax 8647; DARWIN-64-PIC-NEXT: retq 8648 8649entry: 8650 %0 = load i32*, i32** @dptr, align 8 8651 %1 = getelementptr i32, i32* %0, i64 65536 8652 %2 = bitcast i32* %1 to i8* 8653 ret i8* %2 8654} 8655 8656define dso_local i8* @bam06() nounwind { 8657; LINUX-64-STATIC-LABEL: bam06: 8658; LINUX-64-STATIC: # %bb.0: # %entry 8659; LINUX-64-STATIC-NEXT: movl $lsrc+262144, %eax 8660; LINUX-64-STATIC-NEXT: retq 8661; 8662; LINUX-32-STATIC-LABEL: bam06: 8663; LINUX-32-STATIC: # %bb.0: # %entry 8664; LINUX-32-STATIC-NEXT: movl $lsrc+262144, %eax 8665; LINUX-32-STATIC-NEXT: retl 8666; 8667; LINUX-32-PIC-LABEL: bam06: 8668; LINUX-32-PIC: # %bb.0: # %entry 8669; LINUX-32-PIC-NEXT: calll .L106$pb 8670; LINUX-32-PIC-NEXT: .L106$pb: 8671; LINUX-32-PIC-NEXT: popl %eax 8672; LINUX-32-PIC-NEXT: .Ltmp106: 8673; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp106-.L106$pb), %eax 8674; LINUX-32-PIC-NEXT: leal lsrc@GOTOFF+262144(%eax), %eax 8675; LINUX-32-PIC-NEXT: retl 8676; 8677; LINUX-64-PIC-LABEL: bam06: 8678; LINUX-64-PIC: # %bb.0: # %entry 8679; LINUX-64-PIC-NEXT: leaq lsrc+262144(%rip), %rax 8680; LINUX-64-PIC-NEXT: retq 8681; 8682; DARWIN-32-STATIC-LABEL: bam06: 8683; DARWIN-32-STATIC: ## %bb.0: ## %entry 8684; DARWIN-32-STATIC-NEXT: movl $_lsrc+262144, %eax 8685; DARWIN-32-STATIC-NEXT: retl 8686; 8687; DARWIN-32-DYNAMIC-LABEL: bam06: 8688; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 8689; DARWIN-32-DYNAMIC-NEXT: movl $_lsrc+262144, %eax 8690; DARWIN-32-DYNAMIC-NEXT: retl 8691; 8692; DARWIN-32-PIC-LABEL: bam06: 8693; DARWIN-32-PIC: ## %bb.0: ## %entry 8694; DARWIN-32-PIC-NEXT: calll L106$pb 8695; DARWIN-32-PIC-NEXT: L106$pb: 8696; DARWIN-32-PIC-NEXT: popl %eax 8697; DARWIN-32-PIC-NEXT: leal (_lsrc-L106$pb)+262144(%eax), %eax 8698; DARWIN-32-PIC-NEXT: retl 8699; 8700; DARWIN-64-STATIC-LABEL: bam06: 8701; DARWIN-64-STATIC: ## %bb.0: ## %entry 8702; DARWIN-64-STATIC-NEXT: leaq _lsrc+262144(%rip), %rax 8703; DARWIN-64-STATIC-NEXT: retq 8704; 8705; DARWIN-64-DYNAMIC-LABEL: bam06: 8706; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 8707; DARWIN-64-DYNAMIC-NEXT: leaq _lsrc+262144(%rip), %rax 8708; DARWIN-64-DYNAMIC-NEXT: retq 8709; 8710; DARWIN-64-PIC-LABEL: bam06: 8711; DARWIN-64-PIC: ## %bb.0: ## %entry 8712; DARWIN-64-PIC-NEXT: leaq _lsrc+262144(%rip), %rax 8713; DARWIN-64-PIC-NEXT: retq 8714 8715entry: 8716 ret i8* bitcast (i32* getelementptr ([131072 x i32], [131072 x i32]* @lsrc, i32 0, i64 65536) to i8*) 8717} 8718 8719define dso_local i8* @bam07() nounwind { 8720; LINUX-64-STATIC-LABEL: bam07: 8721; LINUX-64-STATIC: # %bb.0: # %entry 8722; LINUX-64-STATIC-NEXT: movl $ldst+262144, %eax 8723; LINUX-64-STATIC-NEXT: retq 8724; 8725; LINUX-32-STATIC-LABEL: bam07: 8726; LINUX-32-STATIC: # %bb.0: # %entry 8727; LINUX-32-STATIC-NEXT: movl $ldst+262144, %eax 8728; LINUX-32-STATIC-NEXT: retl 8729; 8730; LINUX-32-PIC-LABEL: bam07: 8731; LINUX-32-PIC: # %bb.0: # %entry 8732; LINUX-32-PIC-NEXT: calll .L107$pb 8733; LINUX-32-PIC-NEXT: .L107$pb: 8734; LINUX-32-PIC-NEXT: popl %eax 8735; LINUX-32-PIC-NEXT: .Ltmp107: 8736; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp107-.L107$pb), %eax 8737; LINUX-32-PIC-NEXT: leal ldst@GOTOFF+262144(%eax), %eax 8738; LINUX-32-PIC-NEXT: retl 8739; 8740; LINUX-64-PIC-LABEL: bam07: 8741; LINUX-64-PIC: # %bb.0: # %entry 8742; LINUX-64-PIC-NEXT: leaq ldst+262144(%rip), %rax 8743; LINUX-64-PIC-NEXT: retq 8744; 8745; DARWIN-32-STATIC-LABEL: bam07: 8746; DARWIN-32-STATIC: ## %bb.0: ## %entry 8747; DARWIN-32-STATIC-NEXT: movl $_ldst+262144, %eax 8748; DARWIN-32-STATIC-NEXT: retl 8749; 8750; DARWIN-32-DYNAMIC-LABEL: bam07: 8751; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 8752; DARWIN-32-DYNAMIC-NEXT: movl $_ldst+262144, %eax 8753; DARWIN-32-DYNAMIC-NEXT: retl 8754; 8755; DARWIN-32-PIC-LABEL: bam07: 8756; DARWIN-32-PIC: ## %bb.0: ## %entry 8757; DARWIN-32-PIC-NEXT: calll L107$pb 8758; DARWIN-32-PIC-NEXT: L107$pb: 8759; DARWIN-32-PIC-NEXT: popl %eax 8760; DARWIN-32-PIC-NEXT: leal (_ldst-L107$pb)+262144(%eax), %eax 8761; DARWIN-32-PIC-NEXT: retl 8762; 8763; DARWIN-64-STATIC-LABEL: bam07: 8764; DARWIN-64-STATIC: ## %bb.0: ## %entry 8765; DARWIN-64-STATIC-NEXT: leaq _ldst+262144(%rip), %rax 8766; DARWIN-64-STATIC-NEXT: retq 8767; 8768; DARWIN-64-DYNAMIC-LABEL: bam07: 8769; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 8770; DARWIN-64-DYNAMIC-NEXT: leaq _ldst+262144(%rip), %rax 8771; DARWIN-64-DYNAMIC-NEXT: retq 8772; 8773; DARWIN-64-PIC-LABEL: bam07: 8774; DARWIN-64-PIC: ## %bb.0: ## %entry 8775; DARWIN-64-PIC-NEXT: leaq _ldst+262144(%rip), %rax 8776; DARWIN-64-PIC-NEXT: retq 8777 8778entry: 8779 ret i8* bitcast (i32* getelementptr ([131072 x i32], [131072 x i32]* @ldst, i32 0, i64 65536) to i8*) 8780} 8781 8782define dso_local i8* @bam08() nounwind { 8783; LINUX-64-STATIC-LABEL: bam08: 8784; LINUX-64-STATIC: # %bb.0: # %entry 8785; LINUX-64-STATIC-NEXT: movl $262144, %eax # imm = 0x40000 8786; LINUX-64-STATIC-NEXT: addq lptr(%rip), %rax 8787; LINUX-64-STATIC-NEXT: retq 8788; 8789; LINUX-32-STATIC-LABEL: bam08: 8790; LINUX-32-STATIC: # %bb.0: # %entry 8791; LINUX-32-STATIC-NEXT: movl $262144, %eax # imm = 0x40000 8792; LINUX-32-STATIC-NEXT: addl lptr, %eax 8793; LINUX-32-STATIC-NEXT: retl 8794; 8795; LINUX-32-PIC-LABEL: bam08: 8796; LINUX-32-PIC: # %bb.0: # %entry 8797; LINUX-32-PIC-NEXT: calll .L108$pb 8798; LINUX-32-PIC-NEXT: .L108$pb: 8799; LINUX-32-PIC-NEXT: popl %ecx 8800; LINUX-32-PIC-NEXT: .Ltmp108: 8801; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp108-.L108$pb), %ecx 8802; LINUX-32-PIC-NEXT: movl $262144, %eax # imm = 0x40000 8803; LINUX-32-PIC-NEXT: addl lptr@GOTOFF(%ecx), %eax 8804; LINUX-32-PIC-NEXT: retl 8805; 8806; LINUX-64-PIC-LABEL: bam08: 8807; LINUX-64-PIC: # %bb.0: # %entry 8808; LINUX-64-PIC-NEXT: movl $262144, %eax # imm = 0x40000 8809; LINUX-64-PIC-NEXT: addq lptr(%rip), %rax 8810; LINUX-64-PIC-NEXT: retq 8811; 8812; DARWIN-32-STATIC-LABEL: bam08: 8813; DARWIN-32-STATIC: ## %bb.0: ## %entry 8814; DARWIN-32-STATIC-NEXT: movl $262144, %eax ## imm = 0x40000 8815; DARWIN-32-STATIC-NEXT: addl _lptr, %eax 8816; DARWIN-32-STATIC-NEXT: retl 8817; 8818; DARWIN-32-DYNAMIC-LABEL: bam08: 8819; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 8820; DARWIN-32-DYNAMIC-NEXT: movl $262144, %eax ## imm = 0x40000 8821; DARWIN-32-DYNAMIC-NEXT: addl _lptr, %eax 8822; DARWIN-32-DYNAMIC-NEXT: retl 8823; 8824; DARWIN-32-PIC-LABEL: bam08: 8825; DARWIN-32-PIC: ## %bb.0: ## %entry 8826; DARWIN-32-PIC-NEXT: calll L108$pb 8827; DARWIN-32-PIC-NEXT: L108$pb: 8828; DARWIN-32-PIC-NEXT: popl %ecx 8829; DARWIN-32-PIC-NEXT: movl $262144, %eax ## imm = 0x40000 8830; DARWIN-32-PIC-NEXT: addl _lptr-L108$pb(%ecx), %eax 8831; DARWIN-32-PIC-NEXT: retl 8832; 8833; DARWIN-64-STATIC-LABEL: bam08: 8834; DARWIN-64-STATIC: ## %bb.0: ## %entry 8835; DARWIN-64-STATIC-NEXT: movl $262144, %eax ## imm = 0x40000 8836; DARWIN-64-STATIC-NEXT: addq _lptr(%rip), %rax 8837; DARWIN-64-STATIC-NEXT: retq 8838; 8839; DARWIN-64-DYNAMIC-LABEL: bam08: 8840; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 8841; DARWIN-64-DYNAMIC-NEXT: movl $262144, %eax ## imm = 0x40000 8842; DARWIN-64-DYNAMIC-NEXT: addq _lptr(%rip), %rax 8843; DARWIN-64-DYNAMIC-NEXT: retq 8844; 8845; DARWIN-64-PIC-LABEL: bam08: 8846; DARWIN-64-PIC: ## %bb.0: ## %entry 8847; DARWIN-64-PIC-NEXT: movl $262144, %eax ## imm = 0x40000 8848; DARWIN-64-PIC-NEXT: addq _lptr(%rip), %rax 8849; DARWIN-64-PIC-NEXT: retq 8850 8851entry: 8852 %0 = load i32*, i32** @lptr, align 8 8853 %1 = getelementptr i32, i32* %0, i64 65536 8854 %2 = bitcast i32* %1 to i8* 8855 ret i8* %2 8856} 8857 8858define dso_local i8* @cat00(i64 %i) nounwind { 8859; LINUX-64-STATIC-LABEL: cat00: 8860; LINUX-64-STATIC: # %bb.0: # %entry 8861; LINUX-64-STATIC-NEXT: movq src@GOTPCREL(%rip), %rax 8862; LINUX-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax 8863; LINUX-64-STATIC-NEXT: retq 8864; 8865; LINUX-32-STATIC-LABEL: cat00: 8866; LINUX-32-STATIC: # %bb.0: # %entry 8867; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 8868; LINUX-32-STATIC-NEXT: leal src+64(,%eax,4), %eax 8869; LINUX-32-STATIC-NEXT: retl 8870; 8871; LINUX-32-PIC-LABEL: cat00: 8872; LINUX-32-PIC: # %bb.0: # %entry 8873; LINUX-32-PIC-NEXT: calll .L109$pb 8874; LINUX-32-PIC-NEXT: .L109$pb: 8875; LINUX-32-PIC-NEXT: popl %eax 8876; LINUX-32-PIC-NEXT: .Ltmp109: 8877; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp109-.L109$pb), %eax 8878; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 8879; LINUX-32-PIC-NEXT: movl src@GOT(%eax), %eax 8880; LINUX-32-PIC-NEXT: leal 64(%eax,%ecx,4), %eax 8881; LINUX-32-PIC-NEXT: retl 8882; 8883; LINUX-64-PIC-LABEL: cat00: 8884; LINUX-64-PIC: # %bb.0: # %entry 8885; LINUX-64-PIC-NEXT: movq src@GOTPCREL(%rip), %rax 8886; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax 8887; LINUX-64-PIC-NEXT: retq 8888; 8889; DARWIN-32-STATIC-LABEL: cat00: 8890; DARWIN-32-STATIC: ## %bb.0: ## %entry 8891; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 8892; DARWIN-32-STATIC-NEXT: leal _src+64(,%eax,4), %eax 8893; DARWIN-32-STATIC-NEXT: retl 8894; 8895; DARWIN-32-DYNAMIC-LABEL: cat00: 8896; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 8897; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 8898; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %ecx 8899; DARWIN-32-DYNAMIC-NEXT: leal 64(%ecx,%eax,4), %eax 8900; DARWIN-32-DYNAMIC-NEXT: retl 8901; 8902; DARWIN-32-PIC-LABEL: cat00: 8903; DARWIN-32-PIC: ## %bb.0: ## %entry 8904; DARWIN-32-PIC-NEXT: calll L109$pb 8905; DARWIN-32-PIC-NEXT: L109$pb: 8906; DARWIN-32-PIC-NEXT: popl %eax 8907; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 8908; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L109$pb(%eax), %eax 8909; DARWIN-32-PIC-NEXT: leal 64(%eax,%ecx,4), %eax 8910; DARWIN-32-PIC-NEXT: retl 8911; 8912; DARWIN-64-STATIC-LABEL: cat00: 8913; DARWIN-64-STATIC: ## %bb.0: ## %entry 8914; DARWIN-64-STATIC-NEXT: movq _src@GOTPCREL(%rip), %rax 8915; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax 8916; DARWIN-64-STATIC-NEXT: retq 8917; 8918; DARWIN-64-DYNAMIC-LABEL: cat00: 8919; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 8920; DARWIN-64-DYNAMIC-NEXT: movq _src@GOTPCREL(%rip), %rax 8921; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax 8922; DARWIN-64-DYNAMIC-NEXT: retq 8923; 8924; DARWIN-64-PIC-LABEL: cat00: 8925; DARWIN-64-PIC: ## %bb.0: ## %entry 8926; DARWIN-64-PIC-NEXT: movq _src@GOTPCREL(%rip), %rax 8927; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax 8928; DARWIN-64-PIC-NEXT: retq 8929 8930entry: 8931 %0 = add i64 %i, 16 8932 %1 = getelementptr [131072 x i32], [131072 x i32]* @src, i64 0, i64 %0 8933 %2 = bitcast i32* %1 to i8* 8934 ret i8* %2 8935} 8936 8937define dso_local i8* @cxt00(i64 %i) nounwind { 8938; LINUX-64-STATIC-LABEL: cxt00: 8939; LINUX-64-STATIC: # %bb.0: # %entry 8940; LINUX-64-STATIC-NEXT: movq xsrc@GOTPCREL(%rip), %rax 8941; LINUX-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax 8942; LINUX-64-STATIC-NEXT: retq 8943; 8944; LINUX-32-STATIC-LABEL: cxt00: 8945; LINUX-32-STATIC: # %bb.0: # %entry 8946; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 8947; LINUX-32-STATIC-NEXT: leal xsrc+64(,%eax,4), %eax 8948; LINUX-32-STATIC-NEXT: retl 8949; 8950; LINUX-32-PIC-LABEL: cxt00: 8951; LINUX-32-PIC: # %bb.0: # %entry 8952; LINUX-32-PIC-NEXT: calll .L110$pb 8953; LINUX-32-PIC-NEXT: .L110$pb: 8954; LINUX-32-PIC-NEXT: popl %eax 8955; LINUX-32-PIC-NEXT: .Ltmp110: 8956; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp110-.L110$pb), %eax 8957; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 8958; LINUX-32-PIC-NEXT: movl xsrc@GOT(%eax), %eax 8959; LINUX-32-PIC-NEXT: leal 64(%eax,%ecx,4), %eax 8960; LINUX-32-PIC-NEXT: retl 8961; 8962; LINUX-64-PIC-LABEL: cxt00: 8963; LINUX-64-PIC: # %bb.0: # %entry 8964; LINUX-64-PIC-NEXT: movq xsrc@GOTPCREL(%rip), %rax 8965; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax 8966; LINUX-64-PIC-NEXT: retq 8967; 8968; DARWIN-32-STATIC-LABEL: cxt00: 8969; DARWIN-32-STATIC: ## %bb.0: ## %entry 8970; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 8971; DARWIN-32-STATIC-NEXT: leal _xsrc+64(,%eax,4), %eax 8972; DARWIN-32-STATIC-NEXT: retl 8973; 8974; DARWIN-32-DYNAMIC-LABEL: cxt00: 8975; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 8976; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 8977; DARWIN-32-DYNAMIC-NEXT: movl L_xsrc$non_lazy_ptr, %ecx 8978; DARWIN-32-DYNAMIC-NEXT: leal 64(%ecx,%eax,4), %eax 8979; DARWIN-32-DYNAMIC-NEXT: retl 8980; 8981; DARWIN-32-PIC-LABEL: cxt00: 8982; DARWIN-32-PIC: ## %bb.0: ## %entry 8983; DARWIN-32-PIC-NEXT: calll L110$pb 8984; DARWIN-32-PIC-NEXT: L110$pb: 8985; DARWIN-32-PIC-NEXT: popl %eax 8986; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 8987; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-L110$pb(%eax), %eax 8988; DARWIN-32-PIC-NEXT: leal 64(%eax,%ecx,4), %eax 8989; DARWIN-32-PIC-NEXT: retl 8990; 8991; DARWIN-64-STATIC-LABEL: cxt00: 8992; DARWIN-64-STATIC: ## %bb.0: ## %entry 8993; DARWIN-64-STATIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 8994; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax 8995; DARWIN-64-STATIC-NEXT: retq 8996; 8997; DARWIN-64-DYNAMIC-LABEL: cxt00: 8998; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 8999; DARWIN-64-DYNAMIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 9000; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9001; DARWIN-64-DYNAMIC-NEXT: retq 9002; 9003; DARWIN-64-PIC-LABEL: cxt00: 9004; DARWIN-64-PIC: ## %bb.0: ## %entry 9005; DARWIN-64-PIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 9006; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9007; DARWIN-64-PIC-NEXT: retq 9008 9009entry: 9010 %0 = add i64 %i, 16 9011 %1 = getelementptr [32 x i32], [32 x i32]* @xsrc, i64 0, i64 %0 9012 %2 = bitcast i32* %1 to i8* 9013 ret i8* %2 9014} 9015 9016define dso_local i8* @cat01(i64 %i) nounwind { 9017; LINUX-64-STATIC-LABEL: cat01: 9018; LINUX-64-STATIC: # %bb.0: # %entry 9019; LINUX-64-STATIC-NEXT: movq dst@GOTPCREL(%rip), %rax 9020; LINUX-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9021; LINUX-64-STATIC-NEXT: retq 9022; 9023; LINUX-32-STATIC-LABEL: cat01: 9024; LINUX-32-STATIC: # %bb.0: # %entry 9025; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9026; LINUX-32-STATIC-NEXT: leal dst+64(,%eax,4), %eax 9027; LINUX-32-STATIC-NEXT: retl 9028; 9029; LINUX-32-PIC-LABEL: cat01: 9030; LINUX-32-PIC: # %bb.0: # %entry 9031; LINUX-32-PIC-NEXT: calll .L111$pb 9032; LINUX-32-PIC-NEXT: .L111$pb: 9033; LINUX-32-PIC-NEXT: popl %eax 9034; LINUX-32-PIC-NEXT: .Ltmp111: 9035; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp111-.L111$pb), %eax 9036; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 9037; LINUX-32-PIC-NEXT: movl dst@GOT(%eax), %eax 9038; LINUX-32-PIC-NEXT: leal 64(%eax,%ecx,4), %eax 9039; LINUX-32-PIC-NEXT: retl 9040; 9041; LINUX-64-PIC-LABEL: cat01: 9042; LINUX-64-PIC: # %bb.0: # %entry 9043; LINUX-64-PIC-NEXT: movq dst@GOTPCREL(%rip), %rax 9044; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9045; LINUX-64-PIC-NEXT: retq 9046; 9047; DARWIN-32-STATIC-LABEL: cat01: 9048; DARWIN-32-STATIC: ## %bb.0: ## %entry 9049; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9050; DARWIN-32-STATIC-NEXT: leal _dst+64(,%eax,4), %eax 9051; DARWIN-32-STATIC-NEXT: retl 9052; 9053; DARWIN-32-DYNAMIC-LABEL: cat01: 9054; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 9055; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9056; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, %ecx 9057; DARWIN-32-DYNAMIC-NEXT: leal 64(%ecx,%eax,4), %eax 9058; DARWIN-32-DYNAMIC-NEXT: retl 9059; 9060; DARWIN-32-PIC-LABEL: cat01: 9061; DARWIN-32-PIC: ## %bb.0: ## %entry 9062; DARWIN-32-PIC-NEXT: calll L111$pb 9063; DARWIN-32-PIC-NEXT: L111$pb: 9064; DARWIN-32-PIC-NEXT: popl %eax 9065; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 9066; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L111$pb(%eax), %eax 9067; DARWIN-32-PIC-NEXT: leal 64(%eax,%ecx,4), %eax 9068; DARWIN-32-PIC-NEXT: retl 9069; 9070; DARWIN-64-STATIC-LABEL: cat01: 9071; DARWIN-64-STATIC: ## %bb.0: ## %entry 9072; DARWIN-64-STATIC-NEXT: movq _dst@GOTPCREL(%rip), %rax 9073; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9074; DARWIN-64-STATIC-NEXT: retq 9075; 9076; DARWIN-64-DYNAMIC-LABEL: cat01: 9077; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 9078; DARWIN-64-DYNAMIC-NEXT: movq _dst@GOTPCREL(%rip), %rax 9079; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9080; DARWIN-64-DYNAMIC-NEXT: retq 9081; 9082; DARWIN-64-PIC-LABEL: cat01: 9083; DARWIN-64-PIC: ## %bb.0: ## %entry 9084; DARWIN-64-PIC-NEXT: movq _dst@GOTPCREL(%rip), %rax 9085; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9086; DARWIN-64-PIC-NEXT: retq 9087 9088entry: 9089 %0 = add i64 %i, 16 9090 %1 = getelementptr [131072 x i32], [131072 x i32]* @dst, i64 0, i64 %0 9091 %2 = bitcast i32* %1 to i8* 9092 ret i8* %2 9093} 9094 9095define dso_local i8* @cxt01(i64 %i) nounwind { 9096; LINUX-64-STATIC-LABEL: cxt01: 9097; LINUX-64-STATIC: # %bb.0: # %entry 9098; LINUX-64-STATIC-NEXT: movq xdst@GOTPCREL(%rip), %rax 9099; LINUX-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9100; LINUX-64-STATIC-NEXT: retq 9101; 9102; LINUX-32-STATIC-LABEL: cxt01: 9103; LINUX-32-STATIC: # %bb.0: # %entry 9104; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9105; LINUX-32-STATIC-NEXT: leal xdst+64(,%eax,4), %eax 9106; LINUX-32-STATIC-NEXT: retl 9107; 9108; LINUX-32-PIC-LABEL: cxt01: 9109; LINUX-32-PIC: # %bb.0: # %entry 9110; LINUX-32-PIC-NEXT: calll .L112$pb 9111; LINUX-32-PIC-NEXT: .L112$pb: 9112; LINUX-32-PIC-NEXT: popl %eax 9113; LINUX-32-PIC-NEXT: .Ltmp112: 9114; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp112-.L112$pb), %eax 9115; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 9116; LINUX-32-PIC-NEXT: movl xdst@GOT(%eax), %eax 9117; LINUX-32-PIC-NEXT: leal 64(%eax,%ecx,4), %eax 9118; LINUX-32-PIC-NEXT: retl 9119; 9120; LINUX-64-PIC-LABEL: cxt01: 9121; LINUX-64-PIC: # %bb.0: # %entry 9122; LINUX-64-PIC-NEXT: movq xdst@GOTPCREL(%rip), %rax 9123; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9124; LINUX-64-PIC-NEXT: retq 9125; 9126; DARWIN-32-STATIC-LABEL: cxt01: 9127; DARWIN-32-STATIC: ## %bb.0: ## %entry 9128; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9129; DARWIN-32-STATIC-NEXT: leal _xdst+64(,%eax,4), %eax 9130; DARWIN-32-STATIC-NEXT: retl 9131; 9132; DARWIN-32-DYNAMIC-LABEL: cxt01: 9133; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 9134; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9135; DARWIN-32-DYNAMIC-NEXT: movl L_xdst$non_lazy_ptr, %ecx 9136; DARWIN-32-DYNAMIC-NEXT: leal 64(%ecx,%eax,4), %eax 9137; DARWIN-32-DYNAMIC-NEXT: retl 9138; 9139; DARWIN-32-PIC-LABEL: cxt01: 9140; DARWIN-32-PIC: ## %bb.0: ## %entry 9141; DARWIN-32-PIC-NEXT: calll L112$pb 9142; DARWIN-32-PIC-NEXT: L112$pb: 9143; DARWIN-32-PIC-NEXT: popl %eax 9144; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 9145; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-L112$pb(%eax), %eax 9146; DARWIN-32-PIC-NEXT: leal 64(%eax,%ecx,4), %eax 9147; DARWIN-32-PIC-NEXT: retl 9148; 9149; DARWIN-64-STATIC-LABEL: cxt01: 9150; DARWIN-64-STATIC: ## %bb.0: ## %entry 9151; DARWIN-64-STATIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax 9152; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9153; DARWIN-64-STATIC-NEXT: retq 9154; 9155; DARWIN-64-DYNAMIC-LABEL: cxt01: 9156; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 9157; DARWIN-64-DYNAMIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax 9158; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9159; DARWIN-64-DYNAMIC-NEXT: retq 9160; 9161; DARWIN-64-PIC-LABEL: cxt01: 9162; DARWIN-64-PIC: ## %bb.0: ## %entry 9163; DARWIN-64-PIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax 9164; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9165; DARWIN-64-PIC-NEXT: retq 9166 9167entry: 9168 %0 = add i64 %i, 16 9169 %1 = getelementptr [32 x i32], [32 x i32]* @xdst, i64 0, i64 %0 9170 %2 = bitcast i32* %1 to i8* 9171 ret i8* %2 9172} 9173 9174define dso_local i8* @cat02(i64 %i) nounwind { 9175; LINUX-64-STATIC-LABEL: cat02: 9176; LINUX-64-STATIC: # %bb.0: # %entry 9177; LINUX-64-STATIC-NEXT: movq ptr@GOTPCREL(%rip), %rax 9178; LINUX-64-STATIC-NEXT: movq (%rax), %rax 9179; LINUX-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9180; LINUX-64-STATIC-NEXT: retq 9181; 9182; LINUX-32-STATIC-LABEL: cat02: 9183; LINUX-32-STATIC: # %bb.0: # %entry 9184; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9185; LINUX-32-STATIC-NEXT: movl ptr, %ecx 9186; LINUX-32-STATIC-NEXT: leal 64(%ecx,%eax,4), %eax 9187; LINUX-32-STATIC-NEXT: retl 9188; 9189; LINUX-32-PIC-LABEL: cat02: 9190; LINUX-32-PIC: # %bb.0: # %entry 9191; LINUX-32-PIC-NEXT: calll .L113$pb 9192; LINUX-32-PIC-NEXT: .L113$pb: 9193; LINUX-32-PIC-NEXT: popl %eax 9194; LINUX-32-PIC-NEXT: .Ltmp113: 9195; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp113-.L113$pb), %eax 9196; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax 9197; LINUX-32-PIC-NEXT: movl (%eax), %eax 9198; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 9199; LINUX-32-PIC-NEXT: leal 64(%eax,%ecx,4), %eax 9200; LINUX-32-PIC-NEXT: retl 9201; 9202; LINUX-64-PIC-LABEL: cat02: 9203; LINUX-64-PIC: # %bb.0: # %entry 9204; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rax 9205; LINUX-64-PIC-NEXT: movq (%rax), %rax 9206; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9207; LINUX-64-PIC-NEXT: retq 9208; 9209; DARWIN-32-STATIC-LABEL: cat02: 9210; DARWIN-32-STATIC: ## %bb.0: ## %entry 9211; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9212; DARWIN-32-STATIC-NEXT: movl _ptr, %ecx 9213; DARWIN-32-STATIC-NEXT: leal 64(%ecx,%eax,4), %eax 9214; DARWIN-32-STATIC-NEXT: retl 9215; 9216; DARWIN-32-DYNAMIC-LABEL: cat02: 9217; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 9218; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %eax 9219; DARWIN-32-DYNAMIC-NEXT: movl (%eax), %eax 9220; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 9221; DARWIN-32-DYNAMIC-NEXT: leal 64(%eax,%ecx,4), %eax 9222; DARWIN-32-DYNAMIC-NEXT: retl 9223; 9224; DARWIN-32-PIC-LABEL: cat02: 9225; DARWIN-32-PIC: ## %bb.0: ## %entry 9226; DARWIN-32-PIC-NEXT: calll L113$pb 9227; DARWIN-32-PIC-NEXT: L113$pb: 9228; DARWIN-32-PIC-NEXT: popl %eax 9229; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L113$pb(%eax), %eax 9230; DARWIN-32-PIC-NEXT: movl (%eax), %eax 9231; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 9232; DARWIN-32-PIC-NEXT: leal 64(%eax,%ecx,4), %eax 9233; DARWIN-32-PIC-NEXT: retl 9234; 9235; DARWIN-64-STATIC-LABEL: cat02: 9236; DARWIN-64-STATIC: ## %bb.0: ## %entry 9237; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax 9238; DARWIN-64-STATIC-NEXT: movq (%rax), %rax 9239; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9240; DARWIN-64-STATIC-NEXT: retq 9241; 9242; DARWIN-64-DYNAMIC-LABEL: cat02: 9243; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 9244; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax 9245; DARWIN-64-DYNAMIC-NEXT: movq (%rax), %rax 9246; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9247; DARWIN-64-DYNAMIC-NEXT: retq 9248; 9249; DARWIN-64-PIC-LABEL: cat02: 9250; DARWIN-64-PIC: ## %bb.0: ## %entry 9251; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax 9252; DARWIN-64-PIC-NEXT: movq (%rax), %rax 9253; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9254; DARWIN-64-PIC-NEXT: retq 9255 9256entry: 9257 %0 = load i32*, i32** @ptr, align 8 9258 %1 = add i64 %i, 16 9259 %2 = getelementptr i32, i32* %0, i64 %1 9260 %3 = bitcast i32* %2 to i8* 9261 ret i8* %3 9262} 9263 9264define dso_local i8* @cat03(i64 %i) nounwind { 9265; LINUX-64-STATIC-LABEL: cat03: 9266; LINUX-64-STATIC: # %bb.0: # %entry 9267; LINUX-64-STATIC-NEXT: leaq dsrc+64(,%rdi,4), %rax 9268; LINUX-64-STATIC-NEXT: retq 9269; 9270; LINUX-32-STATIC-LABEL: cat03: 9271; LINUX-32-STATIC: # %bb.0: # %entry 9272; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9273; LINUX-32-STATIC-NEXT: leal dsrc+64(,%eax,4), %eax 9274; LINUX-32-STATIC-NEXT: retl 9275; 9276; LINUX-32-PIC-LABEL: cat03: 9277; LINUX-32-PIC: # %bb.0: # %entry 9278; LINUX-32-PIC-NEXT: calll .L114$pb 9279; LINUX-32-PIC-NEXT: .L114$pb: 9280; LINUX-32-PIC-NEXT: popl %eax 9281; LINUX-32-PIC-NEXT: .Ltmp114: 9282; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp114-.L114$pb), %eax 9283; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 9284; LINUX-32-PIC-NEXT: leal .Ldsrc$local@GOTOFF+64(%eax,%ecx,4), %eax 9285; LINUX-32-PIC-NEXT: retl 9286; 9287; LINUX-64-PIC-LABEL: cat03: 9288; LINUX-64-PIC: # %bb.0: # %entry 9289; LINUX-64-PIC-NEXT: leaq .Ldsrc$local(%rip), %rax 9290; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9291; LINUX-64-PIC-NEXT: retq 9292; 9293; DARWIN-32-STATIC-LABEL: cat03: 9294; DARWIN-32-STATIC: ## %bb.0: ## %entry 9295; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9296; DARWIN-32-STATIC-NEXT: leal _dsrc+64(,%eax,4), %eax 9297; DARWIN-32-STATIC-NEXT: retl 9298; 9299; DARWIN-32-DYNAMIC-LABEL: cat03: 9300; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 9301; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9302; DARWIN-32-DYNAMIC-NEXT: leal _dsrc+64(,%eax,4), %eax 9303; DARWIN-32-DYNAMIC-NEXT: retl 9304; 9305; DARWIN-32-PIC-LABEL: cat03: 9306; DARWIN-32-PIC: ## %bb.0: ## %entry 9307; DARWIN-32-PIC-NEXT: calll L114$pb 9308; DARWIN-32-PIC-NEXT: L114$pb: 9309; DARWIN-32-PIC-NEXT: popl %eax 9310; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 9311; DARWIN-32-PIC-NEXT: leal (_dsrc-L114$pb)+64(%eax,%ecx,4), %eax 9312; DARWIN-32-PIC-NEXT: retl 9313; 9314; DARWIN-64-STATIC-LABEL: cat03: 9315; DARWIN-64-STATIC: ## %bb.0: ## %entry 9316; DARWIN-64-STATIC-NEXT: leaq _dsrc(%rip), %rax 9317; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9318; DARWIN-64-STATIC-NEXT: retq 9319; 9320; DARWIN-64-DYNAMIC-LABEL: cat03: 9321; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 9322; DARWIN-64-DYNAMIC-NEXT: leaq _dsrc(%rip), %rax 9323; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9324; DARWIN-64-DYNAMIC-NEXT: retq 9325; 9326; DARWIN-64-PIC-LABEL: cat03: 9327; DARWIN-64-PIC: ## %bb.0: ## %entry 9328; DARWIN-64-PIC-NEXT: leaq _dsrc(%rip), %rax 9329; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9330; DARWIN-64-PIC-NEXT: retq 9331 9332entry: 9333 %0 = add i64 %i, 16 9334 %1 = getelementptr [131072 x i32], [131072 x i32]* @dsrc, i64 0, i64 %0 9335 %2 = bitcast i32* %1 to i8* 9336 ret i8* %2 9337} 9338 9339define dso_local i8* @cat04(i64 %i) nounwind { 9340; LINUX-64-STATIC-LABEL: cat04: 9341; LINUX-64-STATIC: # %bb.0: # %entry 9342; LINUX-64-STATIC-NEXT: leaq ddst+64(,%rdi,4), %rax 9343; LINUX-64-STATIC-NEXT: retq 9344; 9345; LINUX-32-STATIC-LABEL: cat04: 9346; LINUX-32-STATIC: # %bb.0: # %entry 9347; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9348; LINUX-32-STATIC-NEXT: leal ddst+64(,%eax,4), %eax 9349; LINUX-32-STATIC-NEXT: retl 9350; 9351; LINUX-32-PIC-LABEL: cat04: 9352; LINUX-32-PIC: # %bb.0: # %entry 9353; LINUX-32-PIC-NEXT: calll .L115$pb 9354; LINUX-32-PIC-NEXT: .L115$pb: 9355; LINUX-32-PIC-NEXT: popl %eax 9356; LINUX-32-PIC-NEXT: .Ltmp115: 9357; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp115-.L115$pb), %eax 9358; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 9359; LINUX-32-PIC-NEXT: leal .Lddst$local@GOTOFF+64(%eax,%ecx,4), %eax 9360; LINUX-32-PIC-NEXT: retl 9361; 9362; LINUX-64-PIC-LABEL: cat04: 9363; LINUX-64-PIC: # %bb.0: # %entry 9364; LINUX-64-PIC-NEXT: leaq .Lddst$local(%rip), %rax 9365; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9366; LINUX-64-PIC-NEXT: retq 9367; 9368; DARWIN-32-STATIC-LABEL: cat04: 9369; DARWIN-32-STATIC: ## %bb.0: ## %entry 9370; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9371; DARWIN-32-STATIC-NEXT: leal _ddst+64(,%eax,4), %eax 9372; DARWIN-32-STATIC-NEXT: retl 9373; 9374; DARWIN-32-DYNAMIC-LABEL: cat04: 9375; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 9376; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9377; DARWIN-32-DYNAMIC-NEXT: leal _ddst+64(,%eax,4), %eax 9378; DARWIN-32-DYNAMIC-NEXT: retl 9379; 9380; DARWIN-32-PIC-LABEL: cat04: 9381; DARWIN-32-PIC: ## %bb.0: ## %entry 9382; DARWIN-32-PIC-NEXT: calll L115$pb 9383; DARWIN-32-PIC-NEXT: L115$pb: 9384; DARWIN-32-PIC-NEXT: popl %eax 9385; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 9386; DARWIN-32-PIC-NEXT: leal (_ddst-L115$pb)+64(%eax,%ecx,4), %eax 9387; DARWIN-32-PIC-NEXT: retl 9388; 9389; DARWIN-64-STATIC-LABEL: cat04: 9390; DARWIN-64-STATIC: ## %bb.0: ## %entry 9391; DARWIN-64-STATIC-NEXT: leaq _ddst(%rip), %rax 9392; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9393; DARWIN-64-STATIC-NEXT: retq 9394; 9395; DARWIN-64-DYNAMIC-LABEL: cat04: 9396; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 9397; DARWIN-64-DYNAMIC-NEXT: leaq _ddst(%rip), %rax 9398; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9399; DARWIN-64-DYNAMIC-NEXT: retq 9400; 9401; DARWIN-64-PIC-LABEL: cat04: 9402; DARWIN-64-PIC: ## %bb.0: ## %entry 9403; DARWIN-64-PIC-NEXT: leaq _ddst(%rip), %rax 9404; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9405; DARWIN-64-PIC-NEXT: retq 9406 9407entry: 9408 %0 = add i64 %i, 16 9409 %1 = getelementptr [131072 x i32], [131072 x i32]* @ddst, i64 0, i64 %0 9410 %2 = bitcast i32* %1 to i8* 9411 ret i8* %2 9412} 9413 9414define dso_local i8* @cat05(i64 %i) nounwind { 9415; LINUX-64-STATIC-LABEL: cat05: 9416; LINUX-64-STATIC: # %bb.0: # %entry 9417; LINUX-64-STATIC-NEXT: movq dptr(%rip), %rax 9418; LINUX-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9419; LINUX-64-STATIC-NEXT: retq 9420; 9421; LINUX-32-STATIC-LABEL: cat05: 9422; LINUX-32-STATIC: # %bb.0: # %entry 9423; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9424; LINUX-32-STATIC-NEXT: movl dptr, %ecx 9425; LINUX-32-STATIC-NEXT: leal 64(%ecx,%eax,4), %eax 9426; LINUX-32-STATIC-NEXT: retl 9427; 9428; LINUX-32-PIC-LABEL: cat05: 9429; LINUX-32-PIC: # %bb.0: # %entry 9430; LINUX-32-PIC-NEXT: calll .L116$pb 9431; LINUX-32-PIC-NEXT: .L116$pb: 9432; LINUX-32-PIC-NEXT: popl %eax 9433; LINUX-32-PIC-NEXT: .Ltmp116: 9434; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp116-.L116$pb), %eax 9435; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 9436; LINUX-32-PIC-NEXT: movl .Ldptr$local@GOTOFF(%eax), %eax 9437; LINUX-32-PIC-NEXT: leal 64(%eax,%ecx,4), %eax 9438; LINUX-32-PIC-NEXT: retl 9439; 9440; LINUX-64-PIC-LABEL: cat05: 9441; LINUX-64-PIC: # %bb.0: # %entry 9442; LINUX-64-PIC-NEXT: movq .Ldptr$local(%rip), %rax 9443; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9444; LINUX-64-PIC-NEXT: retq 9445; 9446; DARWIN-32-STATIC-LABEL: cat05: 9447; DARWIN-32-STATIC: ## %bb.0: ## %entry 9448; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9449; DARWIN-32-STATIC-NEXT: movl _dptr, %ecx 9450; DARWIN-32-STATIC-NEXT: leal 64(%ecx,%eax,4), %eax 9451; DARWIN-32-STATIC-NEXT: retl 9452; 9453; DARWIN-32-DYNAMIC-LABEL: cat05: 9454; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 9455; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9456; DARWIN-32-DYNAMIC-NEXT: movl _dptr, %ecx 9457; DARWIN-32-DYNAMIC-NEXT: leal 64(%ecx,%eax,4), %eax 9458; DARWIN-32-DYNAMIC-NEXT: retl 9459; 9460; DARWIN-32-PIC-LABEL: cat05: 9461; DARWIN-32-PIC: ## %bb.0: ## %entry 9462; DARWIN-32-PIC-NEXT: calll L116$pb 9463; DARWIN-32-PIC-NEXT: L116$pb: 9464; DARWIN-32-PIC-NEXT: popl %eax 9465; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 9466; DARWIN-32-PIC-NEXT: movl _dptr-L116$pb(%eax), %eax 9467; DARWIN-32-PIC-NEXT: leal 64(%eax,%ecx,4), %eax 9468; DARWIN-32-PIC-NEXT: retl 9469; 9470; DARWIN-64-STATIC-LABEL: cat05: 9471; DARWIN-64-STATIC: ## %bb.0: ## %entry 9472; DARWIN-64-STATIC-NEXT: movq _dptr(%rip), %rax 9473; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9474; DARWIN-64-STATIC-NEXT: retq 9475; 9476; DARWIN-64-DYNAMIC-LABEL: cat05: 9477; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 9478; DARWIN-64-DYNAMIC-NEXT: movq _dptr(%rip), %rax 9479; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9480; DARWIN-64-DYNAMIC-NEXT: retq 9481; 9482; DARWIN-64-PIC-LABEL: cat05: 9483; DARWIN-64-PIC: ## %bb.0: ## %entry 9484; DARWIN-64-PIC-NEXT: movq _dptr(%rip), %rax 9485; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9486; DARWIN-64-PIC-NEXT: retq 9487 9488entry: 9489 %0 = load i32*, i32** @dptr, align 8 9490 %1 = add i64 %i, 16 9491 %2 = getelementptr i32, i32* %0, i64 %1 9492 %3 = bitcast i32* %2 to i8* 9493 ret i8* %3 9494} 9495 9496define dso_local i8* @cat06(i64 %i) nounwind { 9497; LINUX-64-STATIC-LABEL: cat06: 9498; LINUX-64-STATIC: # %bb.0: # %entry 9499; LINUX-64-STATIC-NEXT: leaq lsrc+64(,%rdi,4), %rax 9500; LINUX-64-STATIC-NEXT: retq 9501; 9502; LINUX-32-STATIC-LABEL: cat06: 9503; LINUX-32-STATIC: # %bb.0: # %entry 9504; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9505; LINUX-32-STATIC-NEXT: leal lsrc+64(,%eax,4), %eax 9506; LINUX-32-STATIC-NEXT: retl 9507; 9508; LINUX-32-PIC-LABEL: cat06: 9509; LINUX-32-PIC: # %bb.0: # %entry 9510; LINUX-32-PIC-NEXT: calll .L117$pb 9511; LINUX-32-PIC-NEXT: .L117$pb: 9512; LINUX-32-PIC-NEXT: popl %eax 9513; LINUX-32-PIC-NEXT: .Ltmp117: 9514; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp117-.L117$pb), %eax 9515; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 9516; LINUX-32-PIC-NEXT: leal lsrc@GOTOFF+64(%eax,%ecx,4), %eax 9517; LINUX-32-PIC-NEXT: retl 9518; 9519; LINUX-64-PIC-LABEL: cat06: 9520; LINUX-64-PIC: # %bb.0: # %entry 9521; LINUX-64-PIC-NEXT: leaq lsrc(%rip), %rax 9522; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9523; LINUX-64-PIC-NEXT: retq 9524; 9525; DARWIN-32-STATIC-LABEL: cat06: 9526; DARWIN-32-STATIC: ## %bb.0: ## %entry 9527; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9528; DARWIN-32-STATIC-NEXT: leal _lsrc+64(,%eax,4), %eax 9529; DARWIN-32-STATIC-NEXT: retl 9530; 9531; DARWIN-32-DYNAMIC-LABEL: cat06: 9532; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 9533; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9534; DARWIN-32-DYNAMIC-NEXT: leal _lsrc+64(,%eax,4), %eax 9535; DARWIN-32-DYNAMIC-NEXT: retl 9536; 9537; DARWIN-32-PIC-LABEL: cat06: 9538; DARWIN-32-PIC: ## %bb.0: ## %entry 9539; DARWIN-32-PIC-NEXT: calll L117$pb 9540; DARWIN-32-PIC-NEXT: L117$pb: 9541; DARWIN-32-PIC-NEXT: popl %eax 9542; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 9543; DARWIN-32-PIC-NEXT: leal (_lsrc-L117$pb)+64(%eax,%ecx,4), %eax 9544; DARWIN-32-PIC-NEXT: retl 9545; 9546; DARWIN-64-STATIC-LABEL: cat06: 9547; DARWIN-64-STATIC: ## %bb.0: ## %entry 9548; DARWIN-64-STATIC-NEXT: leaq _lsrc(%rip), %rax 9549; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9550; DARWIN-64-STATIC-NEXT: retq 9551; 9552; DARWIN-64-DYNAMIC-LABEL: cat06: 9553; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 9554; DARWIN-64-DYNAMIC-NEXT: leaq _lsrc(%rip), %rax 9555; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9556; DARWIN-64-DYNAMIC-NEXT: retq 9557; 9558; DARWIN-64-PIC-LABEL: cat06: 9559; DARWIN-64-PIC: ## %bb.0: ## %entry 9560; DARWIN-64-PIC-NEXT: leaq _lsrc(%rip), %rax 9561; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9562; DARWIN-64-PIC-NEXT: retq 9563 9564entry: 9565 %0 = add i64 %i, 16 9566 %1 = getelementptr [131072 x i32], [131072 x i32]* @lsrc, i64 0, i64 %0 9567 %2 = bitcast i32* %1 to i8* 9568 ret i8* %2 9569} 9570 9571define dso_local i8* @cat07(i64 %i) nounwind { 9572; LINUX-64-STATIC-LABEL: cat07: 9573; LINUX-64-STATIC: # %bb.0: # %entry 9574; LINUX-64-STATIC-NEXT: leaq ldst+64(,%rdi,4), %rax 9575; LINUX-64-STATIC-NEXT: retq 9576; 9577; LINUX-32-STATIC-LABEL: cat07: 9578; LINUX-32-STATIC: # %bb.0: # %entry 9579; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9580; LINUX-32-STATIC-NEXT: leal ldst+64(,%eax,4), %eax 9581; LINUX-32-STATIC-NEXT: retl 9582; 9583; LINUX-32-PIC-LABEL: cat07: 9584; LINUX-32-PIC: # %bb.0: # %entry 9585; LINUX-32-PIC-NEXT: calll .L118$pb 9586; LINUX-32-PIC-NEXT: .L118$pb: 9587; LINUX-32-PIC-NEXT: popl %eax 9588; LINUX-32-PIC-NEXT: .Ltmp118: 9589; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp118-.L118$pb), %eax 9590; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 9591; LINUX-32-PIC-NEXT: leal ldst@GOTOFF+64(%eax,%ecx,4), %eax 9592; LINUX-32-PIC-NEXT: retl 9593; 9594; LINUX-64-PIC-LABEL: cat07: 9595; LINUX-64-PIC: # %bb.0: # %entry 9596; LINUX-64-PIC-NEXT: leaq ldst(%rip), %rax 9597; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9598; LINUX-64-PIC-NEXT: retq 9599; 9600; DARWIN-32-STATIC-LABEL: cat07: 9601; DARWIN-32-STATIC: ## %bb.0: ## %entry 9602; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9603; DARWIN-32-STATIC-NEXT: leal _ldst+64(,%eax,4), %eax 9604; DARWIN-32-STATIC-NEXT: retl 9605; 9606; DARWIN-32-DYNAMIC-LABEL: cat07: 9607; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 9608; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9609; DARWIN-32-DYNAMIC-NEXT: leal _ldst+64(,%eax,4), %eax 9610; DARWIN-32-DYNAMIC-NEXT: retl 9611; 9612; DARWIN-32-PIC-LABEL: cat07: 9613; DARWIN-32-PIC: ## %bb.0: ## %entry 9614; DARWIN-32-PIC-NEXT: calll L118$pb 9615; DARWIN-32-PIC-NEXT: L118$pb: 9616; DARWIN-32-PIC-NEXT: popl %eax 9617; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 9618; DARWIN-32-PIC-NEXT: leal (_ldst-L118$pb)+64(%eax,%ecx,4), %eax 9619; DARWIN-32-PIC-NEXT: retl 9620; 9621; DARWIN-64-STATIC-LABEL: cat07: 9622; DARWIN-64-STATIC: ## %bb.0: ## %entry 9623; DARWIN-64-STATIC-NEXT: leaq _ldst(%rip), %rax 9624; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9625; DARWIN-64-STATIC-NEXT: retq 9626; 9627; DARWIN-64-DYNAMIC-LABEL: cat07: 9628; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 9629; DARWIN-64-DYNAMIC-NEXT: leaq _ldst(%rip), %rax 9630; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9631; DARWIN-64-DYNAMIC-NEXT: retq 9632; 9633; DARWIN-64-PIC-LABEL: cat07: 9634; DARWIN-64-PIC: ## %bb.0: ## %entry 9635; DARWIN-64-PIC-NEXT: leaq _ldst(%rip), %rax 9636; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9637; DARWIN-64-PIC-NEXT: retq 9638 9639entry: 9640 %0 = add i64 %i, 16 9641 %1 = getelementptr [131072 x i32], [131072 x i32]* @ldst, i64 0, i64 %0 9642 %2 = bitcast i32* %1 to i8* 9643 ret i8* %2 9644} 9645 9646define dso_local i8* @cat08(i64 %i) nounwind { 9647; LINUX-64-STATIC-LABEL: cat08: 9648; LINUX-64-STATIC: # %bb.0: # %entry 9649; LINUX-64-STATIC-NEXT: movq lptr(%rip), %rax 9650; LINUX-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9651; LINUX-64-STATIC-NEXT: retq 9652; 9653; LINUX-32-STATIC-LABEL: cat08: 9654; LINUX-32-STATIC: # %bb.0: # %entry 9655; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9656; LINUX-32-STATIC-NEXT: movl lptr, %ecx 9657; LINUX-32-STATIC-NEXT: leal 64(%ecx,%eax,4), %eax 9658; LINUX-32-STATIC-NEXT: retl 9659; 9660; LINUX-32-PIC-LABEL: cat08: 9661; LINUX-32-PIC: # %bb.0: # %entry 9662; LINUX-32-PIC-NEXT: calll .L119$pb 9663; LINUX-32-PIC-NEXT: .L119$pb: 9664; LINUX-32-PIC-NEXT: popl %eax 9665; LINUX-32-PIC-NEXT: .Ltmp119: 9666; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp119-.L119$pb), %eax 9667; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 9668; LINUX-32-PIC-NEXT: movl lptr@GOTOFF(%eax), %eax 9669; LINUX-32-PIC-NEXT: leal 64(%eax,%ecx,4), %eax 9670; LINUX-32-PIC-NEXT: retl 9671; 9672; LINUX-64-PIC-LABEL: cat08: 9673; LINUX-64-PIC: # %bb.0: # %entry 9674; LINUX-64-PIC-NEXT: movq lptr(%rip), %rax 9675; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9676; LINUX-64-PIC-NEXT: retq 9677; 9678; DARWIN-32-STATIC-LABEL: cat08: 9679; DARWIN-32-STATIC: ## %bb.0: ## %entry 9680; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9681; DARWIN-32-STATIC-NEXT: movl _lptr, %ecx 9682; DARWIN-32-STATIC-NEXT: leal 64(%ecx,%eax,4), %eax 9683; DARWIN-32-STATIC-NEXT: retl 9684; 9685; DARWIN-32-DYNAMIC-LABEL: cat08: 9686; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 9687; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9688; DARWIN-32-DYNAMIC-NEXT: movl _lptr, %ecx 9689; DARWIN-32-DYNAMIC-NEXT: leal 64(%ecx,%eax,4), %eax 9690; DARWIN-32-DYNAMIC-NEXT: retl 9691; 9692; DARWIN-32-PIC-LABEL: cat08: 9693; DARWIN-32-PIC: ## %bb.0: ## %entry 9694; DARWIN-32-PIC-NEXT: calll L119$pb 9695; DARWIN-32-PIC-NEXT: L119$pb: 9696; DARWIN-32-PIC-NEXT: popl %eax 9697; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 9698; DARWIN-32-PIC-NEXT: movl _lptr-L119$pb(%eax), %eax 9699; DARWIN-32-PIC-NEXT: leal 64(%eax,%ecx,4), %eax 9700; DARWIN-32-PIC-NEXT: retl 9701; 9702; DARWIN-64-STATIC-LABEL: cat08: 9703; DARWIN-64-STATIC: ## %bb.0: ## %entry 9704; DARWIN-64-STATIC-NEXT: movq _lptr(%rip), %rax 9705; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9706; DARWIN-64-STATIC-NEXT: retq 9707; 9708; DARWIN-64-DYNAMIC-LABEL: cat08: 9709; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 9710; DARWIN-64-DYNAMIC-NEXT: movq _lptr(%rip), %rax 9711; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9712; DARWIN-64-DYNAMIC-NEXT: retq 9713; 9714; DARWIN-64-PIC-LABEL: cat08: 9715; DARWIN-64-PIC: ## %bb.0: ## %entry 9716; DARWIN-64-PIC-NEXT: movq _lptr(%rip), %rax 9717; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9718; DARWIN-64-PIC-NEXT: retq 9719 9720entry: 9721 %0 = load i32*, i32** @lptr, align 8 9722 %1 = add i64 %i, 16 9723 %2 = getelementptr i32, i32* %0, i64 %1 9724 %3 = bitcast i32* %2 to i8* 9725 ret i8* %3 9726} 9727 9728define dso_local i8* @cam00(i64 %i) nounwind { 9729; LINUX-64-STATIC-LABEL: cam00: 9730; LINUX-64-STATIC: # %bb.0: # %entry 9731; LINUX-64-STATIC-NEXT: movq src@GOTPCREL(%rip), %rax 9732; LINUX-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 9733; LINUX-64-STATIC-NEXT: retq 9734; 9735; LINUX-32-STATIC-LABEL: cam00: 9736; LINUX-32-STATIC: # %bb.0: # %entry 9737; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9738; LINUX-32-STATIC-NEXT: leal src+262144(,%eax,4), %eax 9739; LINUX-32-STATIC-NEXT: retl 9740; 9741; LINUX-32-PIC-LABEL: cam00: 9742; LINUX-32-PIC: # %bb.0: # %entry 9743; LINUX-32-PIC-NEXT: calll .L120$pb 9744; LINUX-32-PIC-NEXT: .L120$pb: 9745; LINUX-32-PIC-NEXT: popl %eax 9746; LINUX-32-PIC-NEXT: .Ltmp120: 9747; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp120-.L120$pb), %eax 9748; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 9749; LINUX-32-PIC-NEXT: movl src@GOT(%eax), %eax 9750; LINUX-32-PIC-NEXT: leal 262144(%eax,%ecx,4), %eax 9751; LINUX-32-PIC-NEXT: retl 9752; 9753; LINUX-64-PIC-LABEL: cam00: 9754; LINUX-64-PIC: # %bb.0: # %entry 9755; LINUX-64-PIC-NEXT: movq src@GOTPCREL(%rip), %rax 9756; LINUX-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 9757; LINUX-64-PIC-NEXT: retq 9758; 9759; DARWIN-32-STATIC-LABEL: cam00: 9760; DARWIN-32-STATIC: ## %bb.0: ## %entry 9761; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9762; DARWIN-32-STATIC-NEXT: leal _src+262144(,%eax,4), %eax 9763; DARWIN-32-STATIC-NEXT: retl 9764; 9765; DARWIN-32-DYNAMIC-LABEL: cam00: 9766; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 9767; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9768; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %ecx 9769; DARWIN-32-DYNAMIC-NEXT: leal 262144(%ecx,%eax,4), %eax 9770; DARWIN-32-DYNAMIC-NEXT: retl 9771; 9772; DARWIN-32-PIC-LABEL: cam00: 9773; DARWIN-32-PIC: ## %bb.0: ## %entry 9774; DARWIN-32-PIC-NEXT: calll L120$pb 9775; DARWIN-32-PIC-NEXT: L120$pb: 9776; DARWIN-32-PIC-NEXT: popl %eax 9777; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 9778; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L120$pb(%eax), %eax 9779; DARWIN-32-PIC-NEXT: leal 262144(%eax,%ecx,4), %eax 9780; DARWIN-32-PIC-NEXT: retl 9781; 9782; DARWIN-64-STATIC-LABEL: cam00: 9783; DARWIN-64-STATIC: ## %bb.0: ## %entry 9784; DARWIN-64-STATIC-NEXT: movq _src@GOTPCREL(%rip), %rax 9785; DARWIN-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 9786; DARWIN-64-STATIC-NEXT: retq 9787; 9788; DARWIN-64-DYNAMIC-LABEL: cam00: 9789; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 9790; DARWIN-64-DYNAMIC-NEXT: movq _src@GOTPCREL(%rip), %rax 9791; DARWIN-64-DYNAMIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 9792; DARWIN-64-DYNAMIC-NEXT: retq 9793; 9794; DARWIN-64-PIC-LABEL: cam00: 9795; DARWIN-64-PIC: ## %bb.0: ## %entry 9796; DARWIN-64-PIC-NEXT: movq _src@GOTPCREL(%rip), %rax 9797; DARWIN-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 9798; DARWIN-64-PIC-NEXT: retq 9799 9800entry: 9801 %0 = add i64 %i, 65536 9802 %1 = getelementptr [131072 x i32], [131072 x i32]* @src, i64 0, i64 %0 9803 %2 = bitcast i32* %1 to i8* 9804 ret i8* %2 9805} 9806 9807define dso_local i8* @cxm00(i64 %i) nounwind { 9808; LINUX-64-STATIC-LABEL: cxm00: 9809; LINUX-64-STATIC: # %bb.0: # %entry 9810; LINUX-64-STATIC-NEXT: movq xsrc@GOTPCREL(%rip), %rax 9811; LINUX-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 9812; LINUX-64-STATIC-NEXT: retq 9813; 9814; LINUX-32-STATIC-LABEL: cxm00: 9815; LINUX-32-STATIC: # %bb.0: # %entry 9816; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9817; LINUX-32-STATIC-NEXT: leal xsrc+262144(,%eax,4), %eax 9818; LINUX-32-STATIC-NEXT: retl 9819; 9820; LINUX-32-PIC-LABEL: cxm00: 9821; LINUX-32-PIC: # %bb.0: # %entry 9822; LINUX-32-PIC-NEXT: calll .L121$pb 9823; LINUX-32-PIC-NEXT: .L121$pb: 9824; LINUX-32-PIC-NEXT: popl %eax 9825; LINUX-32-PIC-NEXT: .Ltmp121: 9826; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp121-.L121$pb), %eax 9827; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 9828; LINUX-32-PIC-NEXT: movl xsrc@GOT(%eax), %eax 9829; LINUX-32-PIC-NEXT: leal 262144(%eax,%ecx,4), %eax 9830; LINUX-32-PIC-NEXT: retl 9831; 9832; LINUX-64-PIC-LABEL: cxm00: 9833; LINUX-64-PIC: # %bb.0: # %entry 9834; LINUX-64-PIC-NEXT: movq xsrc@GOTPCREL(%rip), %rax 9835; LINUX-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 9836; LINUX-64-PIC-NEXT: retq 9837; 9838; DARWIN-32-STATIC-LABEL: cxm00: 9839; DARWIN-32-STATIC: ## %bb.0: ## %entry 9840; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9841; DARWIN-32-STATIC-NEXT: leal _xsrc+262144(,%eax,4), %eax 9842; DARWIN-32-STATIC-NEXT: retl 9843; 9844; DARWIN-32-DYNAMIC-LABEL: cxm00: 9845; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 9846; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9847; DARWIN-32-DYNAMIC-NEXT: movl L_xsrc$non_lazy_ptr, %ecx 9848; DARWIN-32-DYNAMIC-NEXT: leal 262144(%ecx,%eax,4), %eax 9849; DARWIN-32-DYNAMIC-NEXT: retl 9850; 9851; DARWIN-32-PIC-LABEL: cxm00: 9852; DARWIN-32-PIC: ## %bb.0: ## %entry 9853; DARWIN-32-PIC-NEXT: calll L121$pb 9854; DARWIN-32-PIC-NEXT: L121$pb: 9855; DARWIN-32-PIC-NEXT: popl %eax 9856; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 9857; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-L121$pb(%eax), %eax 9858; DARWIN-32-PIC-NEXT: leal 262144(%eax,%ecx,4), %eax 9859; DARWIN-32-PIC-NEXT: retl 9860; 9861; DARWIN-64-STATIC-LABEL: cxm00: 9862; DARWIN-64-STATIC: ## %bb.0: ## %entry 9863; DARWIN-64-STATIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 9864; DARWIN-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 9865; DARWIN-64-STATIC-NEXT: retq 9866; 9867; DARWIN-64-DYNAMIC-LABEL: cxm00: 9868; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 9869; DARWIN-64-DYNAMIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 9870; DARWIN-64-DYNAMIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 9871; DARWIN-64-DYNAMIC-NEXT: retq 9872; 9873; DARWIN-64-PIC-LABEL: cxm00: 9874; DARWIN-64-PIC: ## %bb.0: ## %entry 9875; DARWIN-64-PIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 9876; DARWIN-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 9877; DARWIN-64-PIC-NEXT: retq 9878 9879entry: 9880 %0 = add i64 %i, 65536 9881 %1 = getelementptr [32 x i32], [32 x i32]* @xsrc, i64 0, i64 %0 9882 %2 = bitcast i32* %1 to i8* 9883 ret i8* %2 9884} 9885 9886define dso_local i8* @cam01(i64 %i) nounwind { 9887; LINUX-64-STATIC-LABEL: cam01: 9888; LINUX-64-STATIC: # %bb.0: # %entry 9889; LINUX-64-STATIC-NEXT: movq dst@GOTPCREL(%rip), %rax 9890; LINUX-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 9891; LINUX-64-STATIC-NEXT: retq 9892; 9893; LINUX-32-STATIC-LABEL: cam01: 9894; LINUX-32-STATIC: # %bb.0: # %entry 9895; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9896; LINUX-32-STATIC-NEXT: leal dst+262144(,%eax,4), %eax 9897; LINUX-32-STATIC-NEXT: retl 9898; 9899; LINUX-32-PIC-LABEL: cam01: 9900; LINUX-32-PIC: # %bb.0: # %entry 9901; LINUX-32-PIC-NEXT: calll .L122$pb 9902; LINUX-32-PIC-NEXT: .L122$pb: 9903; LINUX-32-PIC-NEXT: popl %eax 9904; LINUX-32-PIC-NEXT: .Ltmp122: 9905; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp122-.L122$pb), %eax 9906; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 9907; LINUX-32-PIC-NEXT: movl dst@GOT(%eax), %eax 9908; LINUX-32-PIC-NEXT: leal 262144(%eax,%ecx,4), %eax 9909; LINUX-32-PIC-NEXT: retl 9910; 9911; LINUX-64-PIC-LABEL: cam01: 9912; LINUX-64-PIC: # %bb.0: # %entry 9913; LINUX-64-PIC-NEXT: movq dst@GOTPCREL(%rip), %rax 9914; LINUX-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 9915; LINUX-64-PIC-NEXT: retq 9916; 9917; DARWIN-32-STATIC-LABEL: cam01: 9918; DARWIN-32-STATIC: ## %bb.0: ## %entry 9919; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9920; DARWIN-32-STATIC-NEXT: leal _dst+262144(,%eax,4), %eax 9921; DARWIN-32-STATIC-NEXT: retl 9922; 9923; DARWIN-32-DYNAMIC-LABEL: cam01: 9924; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 9925; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9926; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, %ecx 9927; DARWIN-32-DYNAMIC-NEXT: leal 262144(%ecx,%eax,4), %eax 9928; DARWIN-32-DYNAMIC-NEXT: retl 9929; 9930; DARWIN-32-PIC-LABEL: cam01: 9931; DARWIN-32-PIC: ## %bb.0: ## %entry 9932; DARWIN-32-PIC-NEXT: calll L122$pb 9933; DARWIN-32-PIC-NEXT: L122$pb: 9934; DARWIN-32-PIC-NEXT: popl %eax 9935; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 9936; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L122$pb(%eax), %eax 9937; DARWIN-32-PIC-NEXT: leal 262144(%eax,%ecx,4), %eax 9938; DARWIN-32-PIC-NEXT: retl 9939; 9940; DARWIN-64-STATIC-LABEL: cam01: 9941; DARWIN-64-STATIC: ## %bb.0: ## %entry 9942; DARWIN-64-STATIC-NEXT: movq _dst@GOTPCREL(%rip), %rax 9943; DARWIN-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 9944; DARWIN-64-STATIC-NEXT: retq 9945; 9946; DARWIN-64-DYNAMIC-LABEL: cam01: 9947; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 9948; DARWIN-64-DYNAMIC-NEXT: movq _dst@GOTPCREL(%rip), %rax 9949; DARWIN-64-DYNAMIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 9950; DARWIN-64-DYNAMIC-NEXT: retq 9951; 9952; DARWIN-64-PIC-LABEL: cam01: 9953; DARWIN-64-PIC: ## %bb.0: ## %entry 9954; DARWIN-64-PIC-NEXT: movq _dst@GOTPCREL(%rip), %rax 9955; DARWIN-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 9956; DARWIN-64-PIC-NEXT: retq 9957 9958entry: 9959 %0 = add i64 %i, 65536 9960 %1 = getelementptr [131072 x i32], [131072 x i32]* @dst, i64 0, i64 %0 9961 %2 = bitcast i32* %1 to i8* 9962 ret i8* %2 9963} 9964 9965define dso_local i8* @cxm01(i64 %i) nounwind { 9966; LINUX-64-STATIC-LABEL: cxm01: 9967; LINUX-64-STATIC: # %bb.0: # %entry 9968; LINUX-64-STATIC-NEXT: movq xdst@GOTPCREL(%rip), %rax 9969; LINUX-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 9970; LINUX-64-STATIC-NEXT: retq 9971; 9972; LINUX-32-STATIC-LABEL: cxm01: 9973; LINUX-32-STATIC: # %bb.0: # %entry 9974; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9975; LINUX-32-STATIC-NEXT: leal xdst+262144(,%eax,4), %eax 9976; LINUX-32-STATIC-NEXT: retl 9977; 9978; LINUX-32-PIC-LABEL: cxm01: 9979; LINUX-32-PIC: # %bb.0: # %entry 9980; LINUX-32-PIC-NEXT: calll .L123$pb 9981; LINUX-32-PIC-NEXT: .L123$pb: 9982; LINUX-32-PIC-NEXT: popl %eax 9983; LINUX-32-PIC-NEXT: .Ltmp123: 9984; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp123-.L123$pb), %eax 9985; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 9986; LINUX-32-PIC-NEXT: movl xdst@GOT(%eax), %eax 9987; LINUX-32-PIC-NEXT: leal 262144(%eax,%ecx,4), %eax 9988; LINUX-32-PIC-NEXT: retl 9989; 9990; LINUX-64-PIC-LABEL: cxm01: 9991; LINUX-64-PIC: # %bb.0: # %entry 9992; LINUX-64-PIC-NEXT: movq xdst@GOTPCREL(%rip), %rax 9993; LINUX-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 9994; LINUX-64-PIC-NEXT: retq 9995; 9996; DARWIN-32-STATIC-LABEL: cxm01: 9997; DARWIN-32-STATIC: ## %bb.0: ## %entry 9998; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9999; DARWIN-32-STATIC-NEXT: leal _xdst+262144(,%eax,4), %eax 10000; DARWIN-32-STATIC-NEXT: retl 10001; 10002; DARWIN-32-DYNAMIC-LABEL: cxm01: 10003; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 10004; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 10005; DARWIN-32-DYNAMIC-NEXT: movl L_xdst$non_lazy_ptr, %ecx 10006; DARWIN-32-DYNAMIC-NEXT: leal 262144(%ecx,%eax,4), %eax 10007; DARWIN-32-DYNAMIC-NEXT: retl 10008; 10009; DARWIN-32-PIC-LABEL: cxm01: 10010; DARWIN-32-PIC: ## %bb.0: ## %entry 10011; DARWIN-32-PIC-NEXT: calll L123$pb 10012; DARWIN-32-PIC-NEXT: L123$pb: 10013; DARWIN-32-PIC-NEXT: popl %eax 10014; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 10015; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-L123$pb(%eax), %eax 10016; DARWIN-32-PIC-NEXT: leal 262144(%eax,%ecx,4), %eax 10017; DARWIN-32-PIC-NEXT: retl 10018; 10019; DARWIN-64-STATIC-LABEL: cxm01: 10020; DARWIN-64-STATIC: ## %bb.0: ## %entry 10021; DARWIN-64-STATIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax 10022; DARWIN-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 10023; DARWIN-64-STATIC-NEXT: retq 10024; 10025; DARWIN-64-DYNAMIC-LABEL: cxm01: 10026; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 10027; DARWIN-64-DYNAMIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax 10028; DARWIN-64-DYNAMIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 10029; DARWIN-64-DYNAMIC-NEXT: retq 10030; 10031; DARWIN-64-PIC-LABEL: cxm01: 10032; DARWIN-64-PIC: ## %bb.0: ## %entry 10033; DARWIN-64-PIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax 10034; DARWIN-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 10035; DARWIN-64-PIC-NEXT: retq 10036 10037entry: 10038 %0 = add i64 %i, 65536 10039 %1 = getelementptr [32 x i32], [32 x i32]* @xdst, i64 0, i64 %0 10040 %2 = bitcast i32* %1 to i8* 10041 ret i8* %2 10042} 10043 10044define dso_local i8* @cam02(i64 %i) nounwind { 10045; LINUX-64-STATIC-LABEL: cam02: 10046; LINUX-64-STATIC: # %bb.0: # %entry 10047; LINUX-64-STATIC-NEXT: movq ptr@GOTPCREL(%rip), %rax 10048; LINUX-64-STATIC-NEXT: movq (%rax), %rax 10049; LINUX-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 10050; LINUX-64-STATIC-NEXT: retq 10051; 10052; LINUX-32-STATIC-LABEL: cam02: 10053; LINUX-32-STATIC: # %bb.0: # %entry 10054; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 10055; LINUX-32-STATIC-NEXT: movl ptr, %ecx 10056; LINUX-32-STATIC-NEXT: leal 262144(%ecx,%eax,4), %eax 10057; LINUX-32-STATIC-NEXT: retl 10058; 10059; LINUX-32-PIC-LABEL: cam02: 10060; LINUX-32-PIC: # %bb.0: # %entry 10061; LINUX-32-PIC-NEXT: calll .L124$pb 10062; LINUX-32-PIC-NEXT: .L124$pb: 10063; LINUX-32-PIC-NEXT: popl %eax 10064; LINUX-32-PIC-NEXT: .Ltmp124: 10065; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp124-.L124$pb), %eax 10066; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax 10067; LINUX-32-PIC-NEXT: movl (%eax), %eax 10068; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 10069; LINUX-32-PIC-NEXT: leal 262144(%eax,%ecx,4), %eax 10070; LINUX-32-PIC-NEXT: retl 10071; 10072; LINUX-64-PIC-LABEL: cam02: 10073; LINUX-64-PIC: # %bb.0: # %entry 10074; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rax 10075; LINUX-64-PIC-NEXT: movq (%rax), %rax 10076; LINUX-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 10077; LINUX-64-PIC-NEXT: retq 10078; 10079; DARWIN-32-STATIC-LABEL: cam02: 10080; DARWIN-32-STATIC: ## %bb.0: ## %entry 10081; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 10082; DARWIN-32-STATIC-NEXT: movl _ptr, %ecx 10083; DARWIN-32-STATIC-NEXT: leal 262144(%ecx,%eax,4), %eax 10084; DARWIN-32-STATIC-NEXT: retl 10085; 10086; DARWIN-32-DYNAMIC-LABEL: cam02: 10087; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 10088; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %eax 10089; DARWIN-32-DYNAMIC-NEXT: movl (%eax), %eax 10090; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 10091; DARWIN-32-DYNAMIC-NEXT: leal 262144(%eax,%ecx,4), %eax 10092; DARWIN-32-DYNAMIC-NEXT: retl 10093; 10094; DARWIN-32-PIC-LABEL: cam02: 10095; DARWIN-32-PIC: ## %bb.0: ## %entry 10096; DARWIN-32-PIC-NEXT: calll L124$pb 10097; DARWIN-32-PIC-NEXT: L124$pb: 10098; DARWIN-32-PIC-NEXT: popl %eax 10099; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L124$pb(%eax), %eax 10100; DARWIN-32-PIC-NEXT: movl (%eax), %eax 10101; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 10102; DARWIN-32-PIC-NEXT: leal 262144(%eax,%ecx,4), %eax 10103; DARWIN-32-PIC-NEXT: retl 10104; 10105; DARWIN-64-STATIC-LABEL: cam02: 10106; DARWIN-64-STATIC: ## %bb.0: ## %entry 10107; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax 10108; DARWIN-64-STATIC-NEXT: movq (%rax), %rax 10109; DARWIN-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 10110; DARWIN-64-STATIC-NEXT: retq 10111; 10112; DARWIN-64-DYNAMIC-LABEL: cam02: 10113; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 10114; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax 10115; DARWIN-64-DYNAMIC-NEXT: movq (%rax), %rax 10116; DARWIN-64-DYNAMIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 10117; DARWIN-64-DYNAMIC-NEXT: retq 10118; 10119; DARWIN-64-PIC-LABEL: cam02: 10120; DARWIN-64-PIC: ## %bb.0: ## %entry 10121; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax 10122; DARWIN-64-PIC-NEXT: movq (%rax), %rax 10123; DARWIN-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 10124; DARWIN-64-PIC-NEXT: retq 10125 10126entry: 10127 %0 = load i32*, i32** @ptr, align 8 10128 %1 = add i64 %i, 65536 10129 %2 = getelementptr i32, i32* %0, i64 %1 10130 %3 = bitcast i32* %2 to i8* 10131 ret i8* %3 10132} 10133 10134define dso_local i8* @cam03(i64 %i) nounwind { 10135; LINUX-64-STATIC-LABEL: cam03: 10136; LINUX-64-STATIC: # %bb.0: # %entry 10137; LINUX-64-STATIC-NEXT: leaq dsrc+262144(,%rdi,4), %rax 10138; LINUX-64-STATIC-NEXT: retq 10139; 10140; LINUX-32-STATIC-LABEL: cam03: 10141; LINUX-32-STATIC: # %bb.0: # %entry 10142; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 10143; LINUX-32-STATIC-NEXT: leal dsrc+262144(,%eax,4), %eax 10144; LINUX-32-STATIC-NEXT: retl 10145; 10146; LINUX-32-PIC-LABEL: cam03: 10147; LINUX-32-PIC: # %bb.0: # %entry 10148; LINUX-32-PIC-NEXT: calll .L125$pb 10149; LINUX-32-PIC-NEXT: .L125$pb: 10150; LINUX-32-PIC-NEXT: popl %eax 10151; LINUX-32-PIC-NEXT: .Ltmp125: 10152; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp125-.L125$pb), %eax 10153; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 10154; LINUX-32-PIC-NEXT: leal .Ldsrc$local@GOTOFF+262144(%eax,%ecx,4), %eax 10155; LINUX-32-PIC-NEXT: retl 10156; 10157; LINUX-64-PIC-LABEL: cam03: 10158; LINUX-64-PIC: # %bb.0: # %entry 10159; LINUX-64-PIC-NEXT: leaq .Ldsrc$local(%rip), %rax 10160; LINUX-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 10161; LINUX-64-PIC-NEXT: retq 10162; 10163; DARWIN-32-STATIC-LABEL: cam03: 10164; DARWIN-32-STATIC: ## %bb.0: ## %entry 10165; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 10166; DARWIN-32-STATIC-NEXT: leal _dsrc+262144(,%eax,4), %eax 10167; DARWIN-32-STATIC-NEXT: retl 10168; 10169; DARWIN-32-DYNAMIC-LABEL: cam03: 10170; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 10171; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 10172; DARWIN-32-DYNAMIC-NEXT: leal _dsrc+262144(,%eax,4), %eax 10173; DARWIN-32-DYNAMIC-NEXT: retl 10174; 10175; DARWIN-32-PIC-LABEL: cam03: 10176; DARWIN-32-PIC: ## %bb.0: ## %entry 10177; DARWIN-32-PIC-NEXT: calll L125$pb 10178; DARWIN-32-PIC-NEXT: L125$pb: 10179; DARWIN-32-PIC-NEXT: popl %eax 10180; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 10181; DARWIN-32-PIC-NEXT: leal (_dsrc-L125$pb)+262144(%eax,%ecx,4), %eax 10182; DARWIN-32-PIC-NEXT: retl 10183; 10184; DARWIN-64-STATIC-LABEL: cam03: 10185; DARWIN-64-STATIC: ## %bb.0: ## %entry 10186; DARWIN-64-STATIC-NEXT: leaq _dsrc(%rip), %rax 10187; DARWIN-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 10188; DARWIN-64-STATIC-NEXT: retq 10189; 10190; DARWIN-64-DYNAMIC-LABEL: cam03: 10191; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 10192; DARWIN-64-DYNAMIC-NEXT: leaq _dsrc(%rip), %rax 10193; DARWIN-64-DYNAMIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 10194; DARWIN-64-DYNAMIC-NEXT: retq 10195; 10196; DARWIN-64-PIC-LABEL: cam03: 10197; DARWIN-64-PIC: ## %bb.0: ## %entry 10198; DARWIN-64-PIC-NEXT: leaq _dsrc(%rip), %rax 10199; DARWIN-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 10200; DARWIN-64-PIC-NEXT: retq 10201 10202entry: 10203 %0 = add i64 %i, 65536 10204 %1 = getelementptr [131072 x i32], [131072 x i32]* @dsrc, i64 0, i64 %0 10205 %2 = bitcast i32* %1 to i8* 10206 ret i8* %2 10207} 10208 10209define dso_local i8* @cam04(i64 %i) nounwind { 10210; LINUX-64-STATIC-LABEL: cam04: 10211; LINUX-64-STATIC: # %bb.0: # %entry 10212; LINUX-64-STATIC-NEXT: leaq ddst+262144(,%rdi,4), %rax 10213; LINUX-64-STATIC-NEXT: retq 10214; 10215; LINUX-32-STATIC-LABEL: cam04: 10216; LINUX-32-STATIC: # %bb.0: # %entry 10217; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 10218; LINUX-32-STATIC-NEXT: leal ddst+262144(,%eax,4), %eax 10219; LINUX-32-STATIC-NEXT: retl 10220; 10221; LINUX-32-PIC-LABEL: cam04: 10222; LINUX-32-PIC: # %bb.0: # %entry 10223; LINUX-32-PIC-NEXT: calll .L126$pb 10224; LINUX-32-PIC-NEXT: .L126$pb: 10225; LINUX-32-PIC-NEXT: popl %eax 10226; LINUX-32-PIC-NEXT: .Ltmp126: 10227; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp126-.L126$pb), %eax 10228; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 10229; LINUX-32-PIC-NEXT: leal .Lddst$local@GOTOFF+262144(%eax,%ecx,4), %eax 10230; LINUX-32-PIC-NEXT: retl 10231; 10232; LINUX-64-PIC-LABEL: cam04: 10233; LINUX-64-PIC: # %bb.0: # %entry 10234; LINUX-64-PIC-NEXT: leaq .Lddst$local(%rip), %rax 10235; LINUX-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 10236; LINUX-64-PIC-NEXT: retq 10237; 10238; DARWIN-32-STATIC-LABEL: cam04: 10239; DARWIN-32-STATIC: ## %bb.0: ## %entry 10240; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 10241; DARWIN-32-STATIC-NEXT: leal _ddst+262144(,%eax,4), %eax 10242; DARWIN-32-STATIC-NEXT: retl 10243; 10244; DARWIN-32-DYNAMIC-LABEL: cam04: 10245; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 10246; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 10247; DARWIN-32-DYNAMIC-NEXT: leal _ddst+262144(,%eax,4), %eax 10248; DARWIN-32-DYNAMIC-NEXT: retl 10249; 10250; DARWIN-32-PIC-LABEL: cam04: 10251; DARWIN-32-PIC: ## %bb.0: ## %entry 10252; DARWIN-32-PIC-NEXT: calll L126$pb 10253; DARWIN-32-PIC-NEXT: L126$pb: 10254; DARWIN-32-PIC-NEXT: popl %eax 10255; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 10256; DARWIN-32-PIC-NEXT: leal (_ddst-L126$pb)+262144(%eax,%ecx,4), %eax 10257; DARWIN-32-PIC-NEXT: retl 10258; 10259; DARWIN-64-STATIC-LABEL: cam04: 10260; DARWIN-64-STATIC: ## %bb.0: ## %entry 10261; DARWIN-64-STATIC-NEXT: leaq _ddst(%rip), %rax 10262; DARWIN-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 10263; DARWIN-64-STATIC-NEXT: retq 10264; 10265; DARWIN-64-DYNAMIC-LABEL: cam04: 10266; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 10267; DARWIN-64-DYNAMIC-NEXT: leaq _ddst(%rip), %rax 10268; DARWIN-64-DYNAMIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 10269; DARWIN-64-DYNAMIC-NEXT: retq 10270; 10271; DARWIN-64-PIC-LABEL: cam04: 10272; DARWIN-64-PIC: ## %bb.0: ## %entry 10273; DARWIN-64-PIC-NEXT: leaq _ddst(%rip), %rax 10274; DARWIN-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 10275; DARWIN-64-PIC-NEXT: retq 10276 10277entry: 10278 %0 = add i64 %i, 65536 10279 %1 = getelementptr [131072 x i32], [131072 x i32]* @ddst, i64 0, i64 %0 10280 %2 = bitcast i32* %1 to i8* 10281 ret i8* %2 10282} 10283 10284define dso_local i8* @cam05(i64 %i) nounwind { 10285; LINUX-64-STATIC-LABEL: cam05: 10286; LINUX-64-STATIC: # %bb.0: # %entry 10287; LINUX-64-STATIC-NEXT: movq dptr(%rip), %rax 10288; LINUX-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 10289; LINUX-64-STATIC-NEXT: retq 10290; 10291; LINUX-32-STATIC-LABEL: cam05: 10292; LINUX-32-STATIC: # %bb.0: # %entry 10293; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 10294; LINUX-32-STATIC-NEXT: movl dptr, %ecx 10295; LINUX-32-STATIC-NEXT: leal 262144(%ecx,%eax,4), %eax 10296; LINUX-32-STATIC-NEXT: retl 10297; 10298; LINUX-32-PIC-LABEL: cam05: 10299; LINUX-32-PIC: # %bb.0: # %entry 10300; LINUX-32-PIC-NEXT: calll .L127$pb 10301; LINUX-32-PIC-NEXT: .L127$pb: 10302; LINUX-32-PIC-NEXT: popl %eax 10303; LINUX-32-PIC-NEXT: .Ltmp127: 10304; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp127-.L127$pb), %eax 10305; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 10306; LINUX-32-PIC-NEXT: movl .Ldptr$local@GOTOFF(%eax), %eax 10307; LINUX-32-PIC-NEXT: leal 262144(%eax,%ecx,4), %eax 10308; LINUX-32-PIC-NEXT: retl 10309; 10310; LINUX-64-PIC-LABEL: cam05: 10311; LINUX-64-PIC: # %bb.0: # %entry 10312; LINUX-64-PIC-NEXT: movq .Ldptr$local(%rip), %rax 10313; LINUX-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 10314; LINUX-64-PIC-NEXT: retq 10315; 10316; DARWIN-32-STATIC-LABEL: cam05: 10317; DARWIN-32-STATIC: ## %bb.0: ## %entry 10318; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 10319; DARWIN-32-STATIC-NEXT: movl _dptr, %ecx 10320; DARWIN-32-STATIC-NEXT: leal 262144(%ecx,%eax,4), %eax 10321; DARWIN-32-STATIC-NEXT: retl 10322; 10323; DARWIN-32-DYNAMIC-LABEL: cam05: 10324; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 10325; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 10326; DARWIN-32-DYNAMIC-NEXT: movl _dptr, %ecx 10327; DARWIN-32-DYNAMIC-NEXT: leal 262144(%ecx,%eax,4), %eax 10328; DARWIN-32-DYNAMIC-NEXT: retl 10329; 10330; DARWIN-32-PIC-LABEL: cam05: 10331; DARWIN-32-PIC: ## %bb.0: ## %entry 10332; DARWIN-32-PIC-NEXT: calll L127$pb 10333; DARWIN-32-PIC-NEXT: L127$pb: 10334; DARWIN-32-PIC-NEXT: popl %eax 10335; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 10336; DARWIN-32-PIC-NEXT: movl _dptr-L127$pb(%eax), %eax 10337; DARWIN-32-PIC-NEXT: leal 262144(%eax,%ecx,4), %eax 10338; DARWIN-32-PIC-NEXT: retl 10339; 10340; DARWIN-64-STATIC-LABEL: cam05: 10341; DARWIN-64-STATIC: ## %bb.0: ## %entry 10342; DARWIN-64-STATIC-NEXT: movq _dptr(%rip), %rax 10343; DARWIN-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 10344; DARWIN-64-STATIC-NEXT: retq 10345; 10346; DARWIN-64-DYNAMIC-LABEL: cam05: 10347; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 10348; DARWIN-64-DYNAMIC-NEXT: movq _dptr(%rip), %rax 10349; DARWIN-64-DYNAMIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 10350; DARWIN-64-DYNAMIC-NEXT: retq 10351; 10352; DARWIN-64-PIC-LABEL: cam05: 10353; DARWIN-64-PIC: ## %bb.0: ## %entry 10354; DARWIN-64-PIC-NEXT: movq _dptr(%rip), %rax 10355; DARWIN-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 10356; DARWIN-64-PIC-NEXT: retq 10357 10358entry: 10359 %0 = load i32*, i32** @dptr, align 8 10360 %1 = add i64 %i, 65536 10361 %2 = getelementptr i32, i32* %0, i64 %1 10362 %3 = bitcast i32* %2 to i8* 10363 ret i8* %3 10364} 10365 10366define dso_local i8* @cam06(i64 %i) nounwind { 10367; LINUX-64-STATIC-LABEL: cam06: 10368; LINUX-64-STATIC: # %bb.0: # %entry 10369; LINUX-64-STATIC-NEXT: leaq lsrc+262144(,%rdi,4), %rax 10370; LINUX-64-STATIC-NEXT: retq 10371; 10372; LINUX-32-STATIC-LABEL: cam06: 10373; LINUX-32-STATIC: # %bb.0: # %entry 10374; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 10375; LINUX-32-STATIC-NEXT: leal lsrc+262144(,%eax,4), %eax 10376; LINUX-32-STATIC-NEXT: retl 10377; 10378; LINUX-32-PIC-LABEL: cam06: 10379; LINUX-32-PIC: # %bb.0: # %entry 10380; LINUX-32-PIC-NEXT: calll .L128$pb 10381; LINUX-32-PIC-NEXT: .L128$pb: 10382; LINUX-32-PIC-NEXT: popl %eax 10383; LINUX-32-PIC-NEXT: .Ltmp128: 10384; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp128-.L128$pb), %eax 10385; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 10386; LINUX-32-PIC-NEXT: leal lsrc@GOTOFF+262144(%eax,%ecx,4), %eax 10387; LINUX-32-PIC-NEXT: retl 10388; 10389; LINUX-64-PIC-LABEL: cam06: 10390; LINUX-64-PIC: # %bb.0: # %entry 10391; LINUX-64-PIC-NEXT: leaq lsrc(%rip), %rax 10392; LINUX-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 10393; LINUX-64-PIC-NEXT: retq 10394; 10395; DARWIN-32-STATIC-LABEL: cam06: 10396; DARWIN-32-STATIC: ## %bb.0: ## %entry 10397; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 10398; DARWIN-32-STATIC-NEXT: leal _lsrc+262144(,%eax,4), %eax 10399; DARWIN-32-STATIC-NEXT: retl 10400; 10401; DARWIN-32-DYNAMIC-LABEL: cam06: 10402; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 10403; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 10404; DARWIN-32-DYNAMIC-NEXT: leal _lsrc+262144(,%eax,4), %eax 10405; DARWIN-32-DYNAMIC-NEXT: retl 10406; 10407; DARWIN-32-PIC-LABEL: cam06: 10408; DARWIN-32-PIC: ## %bb.0: ## %entry 10409; DARWIN-32-PIC-NEXT: calll L128$pb 10410; DARWIN-32-PIC-NEXT: L128$pb: 10411; DARWIN-32-PIC-NEXT: popl %eax 10412; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 10413; DARWIN-32-PIC-NEXT: leal (_lsrc-L128$pb)+262144(%eax,%ecx,4), %eax 10414; DARWIN-32-PIC-NEXT: retl 10415; 10416; DARWIN-64-STATIC-LABEL: cam06: 10417; DARWIN-64-STATIC: ## %bb.0: ## %entry 10418; DARWIN-64-STATIC-NEXT: leaq _lsrc(%rip), %rax 10419; DARWIN-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 10420; DARWIN-64-STATIC-NEXT: retq 10421; 10422; DARWIN-64-DYNAMIC-LABEL: cam06: 10423; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 10424; DARWIN-64-DYNAMIC-NEXT: leaq _lsrc(%rip), %rax 10425; DARWIN-64-DYNAMIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 10426; DARWIN-64-DYNAMIC-NEXT: retq 10427; 10428; DARWIN-64-PIC-LABEL: cam06: 10429; DARWIN-64-PIC: ## %bb.0: ## %entry 10430; DARWIN-64-PIC-NEXT: leaq _lsrc(%rip), %rax 10431; DARWIN-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 10432; DARWIN-64-PIC-NEXT: retq 10433 10434entry: 10435 %0 = add i64 %i, 65536 10436 %1 = getelementptr [131072 x i32], [131072 x i32]* @lsrc, i64 0, i64 %0 10437 %2 = bitcast i32* %1 to i8* 10438 ret i8* %2 10439} 10440 10441define dso_local i8* @cam07(i64 %i) nounwind { 10442; LINUX-64-STATIC-LABEL: cam07: 10443; LINUX-64-STATIC: # %bb.0: # %entry 10444; LINUX-64-STATIC-NEXT: leaq ldst+262144(,%rdi,4), %rax 10445; LINUX-64-STATIC-NEXT: retq 10446; 10447; LINUX-32-STATIC-LABEL: cam07: 10448; LINUX-32-STATIC: # %bb.0: # %entry 10449; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 10450; LINUX-32-STATIC-NEXT: leal ldst+262144(,%eax,4), %eax 10451; LINUX-32-STATIC-NEXT: retl 10452; 10453; LINUX-32-PIC-LABEL: cam07: 10454; LINUX-32-PIC: # %bb.0: # %entry 10455; LINUX-32-PIC-NEXT: calll .L129$pb 10456; LINUX-32-PIC-NEXT: .L129$pb: 10457; LINUX-32-PIC-NEXT: popl %eax 10458; LINUX-32-PIC-NEXT: .Ltmp129: 10459; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp129-.L129$pb), %eax 10460; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 10461; LINUX-32-PIC-NEXT: leal ldst@GOTOFF+262144(%eax,%ecx,4), %eax 10462; LINUX-32-PIC-NEXT: retl 10463; 10464; LINUX-64-PIC-LABEL: cam07: 10465; LINUX-64-PIC: # %bb.0: # %entry 10466; LINUX-64-PIC-NEXT: leaq ldst(%rip), %rax 10467; LINUX-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 10468; LINUX-64-PIC-NEXT: retq 10469; 10470; DARWIN-32-STATIC-LABEL: cam07: 10471; DARWIN-32-STATIC: ## %bb.0: ## %entry 10472; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 10473; DARWIN-32-STATIC-NEXT: leal _ldst+262144(,%eax,4), %eax 10474; DARWIN-32-STATIC-NEXT: retl 10475; 10476; DARWIN-32-DYNAMIC-LABEL: cam07: 10477; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 10478; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 10479; DARWIN-32-DYNAMIC-NEXT: leal _ldst+262144(,%eax,4), %eax 10480; DARWIN-32-DYNAMIC-NEXT: retl 10481; 10482; DARWIN-32-PIC-LABEL: cam07: 10483; DARWIN-32-PIC: ## %bb.0: ## %entry 10484; DARWIN-32-PIC-NEXT: calll L129$pb 10485; DARWIN-32-PIC-NEXT: L129$pb: 10486; DARWIN-32-PIC-NEXT: popl %eax 10487; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 10488; DARWIN-32-PIC-NEXT: leal (_ldst-L129$pb)+262144(%eax,%ecx,4), %eax 10489; DARWIN-32-PIC-NEXT: retl 10490; 10491; DARWIN-64-STATIC-LABEL: cam07: 10492; DARWIN-64-STATIC: ## %bb.0: ## %entry 10493; DARWIN-64-STATIC-NEXT: leaq _ldst(%rip), %rax 10494; DARWIN-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 10495; DARWIN-64-STATIC-NEXT: retq 10496; 10497; DARWIN-64-DYNAMIC-LABEL: cam07: 10498; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 10499; DARWIN-64-DYNAMIC-NEXT: leaq _ldst(%rip), %rax 10500; DARWIN-64-DYNAMIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 10501; DARWIN-64-DYNAMIC-NEXT: retq 10502; 10503; DARWIN-64-PIC-LABEL: cam07: 10504; DARWIN-64-PIC: ## %bb.0: ## %entry 10505; DARWIN-64-PIC-NEXT: leaq _ldst(%rip), %rax 10506; DARWIN-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 10507; DARWIN-64-PIC-NEXT: retq 10508 10509entry: 10510 %0 = add i64 %i, 65536 10511 %1 = getelementptr [131072 x i32], [131072 x i32]* @ldst, i64 0, i64 %0 10512 %2 = bitcast i32* %1 to i8* 10513 ret i8* %2 10514} 10515 10516define dso_local i8* @cam08(i64 %i) nounwind { 10517; LINUX-64-STATIC-LABEL: cam08: 10518; LINUX-64-STATIC: # %bb.0: # %entry 10519; LINUX-64-STATIC-NEXT: movq lptr(%rip), %rax 10520; LINUX-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 10521; LINUX-64-STATIC-NEXT: retq 10522; 10523; LINUX-32-STATIC-LABEL: cam08: 10524; LINUX-32-STATIC: # %bb.0: # %entry 10525; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 10526; LINUX-32-STATIC-NEXT: movl lptr, %ecx 10527; LINUX-32-STATIC-NEXT: leal 262144(%ecx,%eax,4), %eax 10528; LINUX-32-STATIC-NEXT: retl 10529; 10530; LINUX-32-PIC-LABEL: cam08: 10531; LINUX-32-PIC: # %bb.0: # %entry 10532; LINUX-32-PIC-NEXT: calll .L130$pb 10533; LINUX-32-PIC-NEXT: .L130$pb: 10534; LINUX-32-PIC-NEXT: popl %eax 10535; LINUX-32-PIC-NEXT: .Ltmp130: 10536; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp130-.L130$pb), %eax 10537; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 10538; LINUX-32-PIC-NEXT: movl lptr@GOTOFF(%eax), %eax 10539; LINUX-32-PIC-NEXT: leal 262144(%eax,%ecx,4), %eax 10540; LINUX-32-PIC-NEXT: retl 10541; 10542; LINUX-64-PIC-LABEL: cam08: 10543; LINUX-64-PIC: # %bb.0: # %entry 10544; LINUX-64-PIC-NEXT: movq lptr(%rip), %rax 10545; LINUX-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 10546; LINUX-64-PIC-NEXT: retq 10547; 10548; DARWIN-32-STATIC-LABEL: cam08: 10549; DARWIN-32-STATIC: ## %bb.0: ## %entry 10550; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 10551; DARWIN-32-STATIC-NEXT: movl _lptr, %ecx 10552; DARWIN-32-STATIC-NEXT: leal 262144(%ecx,%eax,4), %eax 10553; DARWIN-32-STATIC-NEXT: retl 10554; 10555; DARWIN-32-DYNAMIC-LABEL: cam08: 10556; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 10557; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 10558; DARWIN-32-DYNAMIC-NEXT: movl _lptr, %ecx 10559; DARWIN-32-DYNAMIC-NEXT: leal 262144(%ecx,%eax,4), %eax 10560; DARWIN-32-DYNAMIC-NEXT: retl 10561; 10562; DARWIN-32-PIC-LABEL: cam08: 10563; DARWIN-32-PIC: ## %bb.0: ## %entry 10564; DARWIN-32-PIC-NEXT: calll L130$pb 10565; DARWIN-32-PIC-NEXT: L130$pb: 10566; DARWIN-32-PIC-NEXT: popl %eax 10567; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 10568; DARWIN-32-PIC-NEXT: movl _lptr-L130$pb(%eax), %eax 10569; DARWIN-32-PIC-NEXT: leal 262144(%eax,%ecx,4), %eax 10570; DARWIN-32-PIC-NEXT: retl 10571; 10572; DARWIN-64-STATIC-LABEL: cam08: 10573; DARWIN-64-STATIC: ## %bb.0: ## %entry 10574; DARWIN-64-STATIC-NEXT: movq _lptr(%rip), %rax 10575; DARWIN-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 10576; DARWIN-64-STATIC-NEXT: retq 10577; 10578; DARWIN-64-DYNAMIC-LABEL: cam08: 10579; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 10580; DARWIN-64-DYNAMIC-NEXT: movq _lptr(%rip), %rax 10581; DARWIN-64-DYNAMIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 10582; DARWIN-64-DYNAMIC-NEXT: retq 10583; 10584; DARWIN-64-PIC-LABEL: cam08: 10585; DARWIN-64-PIC: ## %bb.0: ## %entry 10586; DARWIN-64-PIC-NEXT: movq _lptr(%rip), %rax 10587; DARWIN-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 10588; DARWIN-64-PIC-NEXT: retq 10589 10590entry: 10591 %0 = load i32*, i32** @lptr, align 8 10592 %1 = add i64 %i, 65536 10593 %2 = getelementptr i32, i32* %0, i64 %1 10594 %3 = bitcast i32* %2 to i8* 10595 ret i8* %3 10596} 10597 10598define dso_local void @lcallee() nounwind { 10599; LINUX-64-STATIC-LABEL: lcallee: 10600; LINUX-64-STATIC: # %bb.0: # %entry 10601; LINUX-64-STATIC-NEXT: pushq %rax 10602; LINUX-64-STATIC-NEXT: callq x@PLT 10603; LINUX-64-STATIC-NEXT: callq x@PLT 10604; LINUX-64-STATIC-NEXT: callq x@PLT 10605; LINUX-64-STATIC-NEXT: callq x@PLT 10606; LINUX-64-STATIC-NEXT: callq x@PLT 10607; LINUX-64-STATIC-NEXT: callq x@PLT 10608; LINUX-64-STATIC-NEXT: callq x@PLT 10609; LINUX-64-STATIC-NEXT: popq %rax 10610; LINUX-64-STATIC-NEXT: retq 10611; 10612; LINUX-32-STATIC-LABEL: lcallee: 10613; LINUX-32-STATIC: # %bb.0: # %entry 10614; LINUX-32-STATIC-NEXT: subl $12, %esp 10615; LINUX-32-STATIC-NEXT: calll x@PLT 10616; LINUX-32-STATIC-NEXT: calll x@PLT 10617; LINUX-32-STATIC-NEXT: calll x@PLT 10618; LINUX-32-STATIC-NEXT: calll x@PLT 10619; LINUX-32-STATIC-NEXT: calll x@PLT 10620; LINUX-32-STATIC-NEXT: calll x@PLT 10621; LINUX-32-STATIC-NEXT: calll x@PLT 10622; LINUX-32-STATIC-NEXT: addl $12, %esp 10623; LINUX-32-STATIC-NEXT: retl 10624; 10625; LINUX-32-PIC-LABEL: lcallee: 10626; LINUX-32-PIC: # %bb.0: # %entry 10627; LINUX-32-PIC-NEXT: pushl %ebx 10628; LINUX-32-PIC-NEXT: subl $8, %esp 10629; LINUX-32-PIC-NEXT: calll .L131$pb 10630; LINUX-32-PIC-NEXT: .L131$pb: 10631; LINUX-32-PIC-NEXT: popl %ebx 10632; LINUX-32-PIC-NEXT: .Ltmp131: 10633; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp131-.L131$pb), %ebx 10634; LINUX-32-PIC-NEXT: calll x@PLT 10635; LINUX-32-PIC-NEXT: calll x@PLT 10636; LINUX-32-PIC-NEXT: calll x@PLT 10637; LINUX-32-PIC-NEXT: calll x@PLT 10638; LINUX-32-PIC-NEXT: calll x@PLT 10639; LINUX-32-PIC-NEXT: calll x@PLT 10640; LINUX-32-PIC-NEXT: calll x@PLT 10641; LINUX-32-PIC-NEXT: addl $8, %esp 10642; LINUX-32-PIC-NEXT: popl %ebx 10643; LINUX-32-PIC-NEXT: retl 10644; 10645; LINUX-64-PIC-LABEL: lcallee: 10646; LINUX-64-PIC: # %bb.0: # %entry 10647; LINUX-64-PIC-NEXT: pushq %rax 10648; LINUX-64-PIC-NEXT: callq x@PLT 10649; LINUX-64-PIC-NEXT: callq x@PLT 10650; LINUX-64-PIC-NEXT: callq x@PLT 10651; LINUX-64-PIC-NEXT: callq x@PLT 10652; LINUX-64-PIC-NEXT: callq x@PLT 10653; LINUX-64-PIC-NEXT: callq x@PLT 10654; LINUX-64-PIC-NEXT: callq x@PLT 10655; LINUX-64-PIC-NEXT: popq %rax 10656; LINUX-64-PIC-NEXT: retq 10657; 10658; DARWIN-32-STATIC-LABEL: lcallee: 10659; DARWIN-32-STATIC: ## %bb.0: ## %entry 10660; DARWIN-32-STATIC-NEXT: subl $12, %esp 10661; DARWIN-32-STATIC-NEXT: calll _x 10662; DARWIN-32-STATIC-NEXT: calll _x 10663; DARWIN-32-STATIC-NEXT: calll _x 10664; DARWIN-32-STATIC-NEXT: calll _x 10665; DARWIN-32-STATIC-NEXT: calll _x 10666; DARWIN-32-STATIC-NEXT: calll _x 10667; DARWIN-32-STATIC-NEXT: calll _x 10668; DARWIN-32-STATIC-NEXT: addl $12, %esp 10669; DARWIN-32-STATIC-NEXT: retl 10670; 10671; DARWIN-32-DYNAMIC-LABEL: lcallee: 10672; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 10673; DARWIN-32-DYNAMIC-NEXT: subl $12, %esp 10674; DARWIN-32-DYNAMIC-NEXT: calll _x 10675; DARWIN-32-DYNAMIC-NEXT: calll _x 10676; DARWIN-32-DYNAMIC-NEXT: calll _x 10677; DARWIN-32-DYNAMIC-NEXT: calll _x 10678; DARWIN-32-DYNAMIC-NEXT: calll _x 10679; DARWIN-32-DYNAMIC-NEXT: calll _x 10680; DARWIN-32-DYNAMIC-NEXT: calll _x 10681; DARWIN-32-DYNAMIC-NEXT: addl $12, %esp 10682; DARWIN-32-DYNAMIC-NEXT: retl 10683; 10684; DARWIN-32-PIC-LABEL: lcallee: 10685; DARWIN-32-PIC: ## %bb.0: ## %entry 10686; DARWIN-32-PIC-NEXT: subl $12, %esp 10687; DARWIN-32-PIC-NEXT: calll _x 10688; DARWIN-32-PIC-NEXT: calll _x 10689; DARWIN-32-PIC-NEXT: calll _x 10690; DARWIN-32-PIC-NEXT: calll _x 10691; DARWIN-32-PIC-NEXT: calll _x 10692; DARWIN-32-PIC-NEXT: calll _x 10693; DARWIN-32-PIC-NEXT: calll _x 10694; DARWIN-32-PIC-NEXT: addl $12, %esp 10695; DARWIN-32-PIC-NEXT: retl 10696; 10697; DARWIN-64-STATIC-LABEL: lcallee: 10698; DARWIN-64-STATIC: ## %bb.0: ## %entry 10699; DARWIN-64-STATIC-NEXT: pushq %rax 10700; DARWIN-64-STATIC-NEXT: callq _x 10701; DARWIN-64-STATIC-NEXT: callq _x 10702; DARWIN-64-STATIC-NEXT: callq _x 10703; DARWIN-64-STATIC-NEXT: callq _x 10704; DARWIN-64-STATIC-NEXT: callq _x 10705; DARWIN-64-STATIC-NEXT: callq _x 10706; DARWIN-64-STATIC-NEXT: callq _x 10707; DARWIN-64-STATIC-NEXT: popq %rax 10708; DARWIN-64-STATIC-NEXT: retq 10709; 10710; DARWIN-64-DYNAMIC-LABEL: lcallee: 10711; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 10712; DARWIN-64-DYNAMIC-NEXT: pushq %rax 10713; DARWIN-64-DYNAMIC-NEXT: callq _x 10714; DARWIN-64-DYNAMIC-NEXT: callq _x 10715; DARWIN-64-DYNAMIC-NEXT: callq _x 10716; DARWIN-64-DYNAMIC-NEXT: callq _x 10717; DARWIN-64-DYNAMIC-NEXT: callq _x 10718; DARWIN-64-DYNAMIC-NEXT: callq _x 10719; DARWIN-64-DYNAMIC-NEXT: callq _x 10720; DARWIN-64-DYNAMIC-NEXT: popq %rax 10721; DARWIN-64-DYNAMIC-NEXT: retq 10722; 10723; DARWIN-64-PIC-LABEL: lcallee: 10724; DARWIN-64-PIC: ## %bb.0: ## %entry 10725; DARWIN-64-PIC-NEXT: pushq %rax 10726; DARWIN-64-PIC-NEXT: callq _x 10727; DARWIN-64-PIC-NEXT: callq _x 10728; DARWIN-64-PIC-NEXT: callq _x 10729; DARWIN-64-PIC-NEXT: callq _x 10730; DARWIN-64-PIC-NEXT: callq _x 10731; DARWIN-64-PIC-NEXT: callq _x 10732; DARWIN-64-PIC-NEXT: callq _x 10733; DARWIN-64-PIC-NEXT: popq %rax 10734; DARWIN-64-PIC-NEXT: retq 10735 10736entry: 10737 call void @x() nounwind 10738 call void @x() nounwind 10739 call void @x() nounwind 10740 call void @x() nounwind 10741 call void @x() nounwind 10742 call void @x() nounwind 10743 call void @x() nounwind 10744 ret void 10745} 10746 10747declare void @x() 10748 10749define internal void @dcallee() nounwind { 10750; LINUX-64-STATIC-LABEL: dcallee: 10751; LINUX-64-STATIC: # %bb.0: # %entry 10752; LINUX-64-STATIC-NEXT: pushq %rax 10753; LINUX-64-STATIC-NEXT: callq y@PLT 10754; LINUX-64-STATIC-NEXT: callq y@PLT 10755; LINUX-64-STATIC-NEXT: callq y@PLT 10756; LINUX-64-STATIC-NEXT: callq y@PLT 10757; LINUX-64-STATIC-NEXT: callq y@PLT 10758; LINUX-64-STATIC-NEXT: callq y@PLT 10759; LINUX-64-STATIC-NEXT: callq y@PLT 10760; LINUX-64-STATIC-NEXT: popq %rax 10761; LINUX-64-STATIC-NEXT: retq 10762; 10763; LINUX-32-STATIC-LABEL: dcallee: 10764; LINUX-32-STATIC: # %bb.0: # %entry 10765; LINUX-32-STATIC-NEXT: subl $12, %esp 10766; LINUX-32-STATIC-NEXT: calll y@PLT 10767; LINUX-32-STATIC-NEXT: calll y@PLT 10768; LINUX-32-STATIC-NEXT: calll y@PLT 10769; LINUX-32-STATIC-NEXT: calll y@PLT 10770; LINUX-32-STATIC-NEXT: calll y@PLT 10771; LINUX-32-STATIC-NEXT: calll y@PLT 10772; LINUX-32-STATIC-NEXT: calll y@PLT 10773; LINUX-32-STATIC-NEXT: addl $12, %esp 10774; LINUX-32-STATIC-NEXT: retl 10775; 10776; LINUX-32-PIC-LABEL: dcallee: 10777; LINUX-32-PIC: # %bb.0: # %entry 10778; LINUX-32-PIC-NEXT: pushl %ebx 10779; LINUX-32-PIC-NEXT: subl $8, %esp 10780; LINUX-32-PIC-NEXT: calll .L132$pb 10781; LINUX-32-PIC-NEXT: .L132$pb: 10782; LINUX-32-PIC-NEXT: popl %ebx 10783; LINUX-32-PIC-NEXT: .Ltmp132: 10784; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp132-.L132$pb), %ebx 10785; LINUX-32-PIC-NEXT: calll y@PLT 10786; LINUX-32-PIC-NEXT: calll y@PLT 10787; LINUX-32-PIC-NEXT: calll y@PLT 10788; LINUX-32-PIC-NEXT: calll y@PLT 10789; LINUX-32-PIC-NEXT: calll y@PLT 10790; LINUX-32-PIC-NEXT: calll y@PLT 10791; LINUX-32-PIC-NEXT: calll y@PLT 10792; LINUX-32-PIC-NEXT: addl $8, %esp 10793; LINUX-32-PIC-NEXT: popl %ebx 10794; LINUX-32-PIC-NEXT: retl 10795; 10796; LINUX-64-PIC-LABEL: dcallee: 10797; LINUX-64-PIC: # %bb.0: # %entry 10798; LINUX-64-PIC-NEXT: pushq %rax 10799; LINUX-64-PIC-NEXT: callq y@PLT 10800; LINUX-64-PIC-NEXT: callq y@PLT 10801; LINUX-64-PIC-NEXT: callq y@PLT 10802; LINUX-64-PIC-NEXT: callq y@PLT 10803; LINUX-64-PIC-NEXT: callq y@PLT 10804; LINUX-64-PIC-NEXT: callq y@PLT 10805; LINUX-64-PIC-NEXT: callq y@PLT 10806; LINUX-64-PIC-NEXT: popq %rax 10807; LINUX-64-PIC-NEXT: retq 10808; 10809; DARWIN-32-STATIC-LABEL: dcallee: 10810; DARWIN-32-STATIC: ## %bb.0: ## %entry 10811; DARWIN-32-STATIC-NEXT: subl $12, %esp 10812; DARWIN-32-STATIC-NEXT: calll _y 10813; DARWIN-32-STATIC-NEXT: calll _y 10814; DARWIN-32-STATIC-NEXT: calll _y 10815; DARWIN-32-STATIC-NEXT: calll _y 10816; DARWIN-32-STATIC-NEXT: calll _y 10817; DARWIN-32-STATIC-NEXT: calll _y 10818; DARWIN-32-STATIC-NEXT: calll _y 10819; DARWIN-32-STATIC-NEXT: addl $12, %esp 10820; DARWIN-32-STATIC-NEXT: retl 10821; 10822; DARWIN-32-DYNAMIC-LABEL: dcallee: 10823; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 10824; DARWIN-32-DYNAMIC-NEXT: subl $12, %esp 10825; DARWIN-32-DYNAMIC-NEXT: calll _y 10826; DARWIN-32-DYNAMIC-NEXT: calll _y 10827; DARWIN-32-DYNAMIC-NEXT: calll _y 10828; DARWIN-32-DYNAMIC-NEXT: calll _y 10829; DARWIN-32-DYNAMIC-NEXT: calll _y 10830; DARWIN-32-DYNAMIC-NEXT: calll _y 10831; DARWIN-32-DYNAMIC-NEXT: calll _y 10832; DARWIN-32-DYNAMIC-NEXT: addl $12, %esp 10833; DARWIN-32-DYNAMIC-NEXT: retl 10834; 10835; DARWIN-32-PIC-LABEL: dcallee: 10836; DARWIN-32-PIC: ## %bb.0: ## %entry 10837; DARWIN-32-PIC-NEXT: subl $12, %esp 10838; DARWIN-32-PIC-NEXT: calll _y 10839; DARWIN-32-PIC-NEXT: calll _y 10840; DARWIN-32-PIC-NEXT: calll _y 10841; DARWIN-32-PIC-NEXT: calll _y 10842; DARWIN-32-PIC-NEXT: calll _y 10843; DARWIN-32-PIC-NEXT: calll _y 10844; DARWIN-32-PIC-NEXT: calll _y 10845; DARWIN-32-PIC-NEXT: addl $12, %esp 10846; DARWIN-32-PIC-NEXT: retl 10847; 10848; DARWIN-64-STATIC-LABEL: dcallee: 10849; DARWIN-64-STATIC: ## %bb.0: ## %entry 10850; DARWIN-64-STATIC-NEXT: pushq %rax 10851; DARWIN-64-STATIC-NEXT: callq _y 10852; DARWIN-64-STATIC-NEXT: callq _y 10853; DARWIN-64-STATIC-NEXT: callq _y 10854; DARWIN-64-STATIC-NEXT: callq _y 10855; DARWIN-64-STATIC-NEXT: callq _y 10856; DARWIN-64-STATIC-NEXT: callq _y 10857; DARWIN-64-STATIC-NEXT: callq _y 10858; DARWIN-64-STATIC-NEXT: popq %rax 10859; DARWIN-64-STATIC-NEXT: retq 10860; 10861; DARWIN-64-DYNAMIC-LABEL: dcallee: 10862; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 10863; DARWIN-64-DYNAMIC-NEXT: pushq %rax 10864; DARWIN-64-DYNAMIC-NEXT: callq _y 10865; DARWIN-64-DYNAMIC-NEXT: callq _y 10866; DARWIN-64-DYNAMIC-NEXT: callq _y 10867; DARWIN-64-DYNAMIC-NEXT: callq _y 10868; DARWIN-64-DYNAMIC-NEXT: callq _y 10869; DARWIN-64-DYNAMIC-NEXT: callq _y 10870; DARWIN-64-DYNAMIC-NEXT: callq _y 10871; DARWIN-64-DYNAMIC-NEXT: popq %rax 10872; DARWIN-64-DYNAMIC-NEXT: retq 10873; 10874; DARWIN-64-PIC-LABEL: dcallee: 10875; DARWIN-64-PIC: ## %bb.0: ## %entry 10876; DARWIN-64-PIC-NEXT: pushq %rax 10877; DARWIN-64-PIC-NEXT: callq _y 10878; DARWIN-64-PIC-NEXT: callq _y 10879; DARWIN-64-PIC-NEXT: callq _y 10880; DARWIN-64-PIC-NEXT: callq _y 10881; DARWIN-64-PIC-NEXT: callq _y 10882; DARWIN-64-PIC-NEXT: callq _y 10883; DARWIN-64-PIC-NEXT: callq _y 10884; DARWIN-64-PIC-NEXT: popq %rax 10885; DARWIN-64-PIC-NEXT: retq 10886 10887entry: 10888 call void @y() nounwind 10889 call void @y() nounwind 10890 call void @y() nounwind 10891 call void @y() nounwind 10892 call void @y() nounwind 10893 call void @y() nounwind 10894 call void @y() nounwind 10895 ret void 10896} 10897 10898declare void @y() 10899 10900define dso_local void ()* @address() nounwind { 10901; LINUX-64-STATIC-LABEL: address: 10902; LINUX-64-STATIC: # %bb.0: # %entry 10903; LINUX-64-STATIC-NEXT: movq callee@GOTPCREL(%rip), %rax 10904; LINUX-64-STATIC-NEXT: retq 10905; 10906; LINUX-32-STATIC-LABEL: address: 10907; LINUX-32-STATIC: # %bb.0: # %entry 10908; LINUX-32-STATIC-NEXT: movl $callee, %eax 10909; LINUX-32-STATIC-NEXT: retl 10910; 10911; LINUX-32-PIC-LABEL: address: 10912; LINUX-32-PIC: # %bb.0: # %entry 10913; LINUX-32-PIC-NEXT: calll .L133$pb 10914; LINUX-32-PIC-NEXT: .L133$pb: 10915; LINUX-32-PIC-NEXT: popl %eax 10916; LINUX-32-PIC-NEXT: .Ltmp133: 10917; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp133-.L133$pb), %eax 10918; LINUX-32-PIC-NEXT: movl callee@GOT(%eax), %eax 10919; LINUX-32-PIC-NEXT: retl 10920; 10921; LINUX-64-PIC-LABEL: address: 10922; LINUX-64-PIC: # %bb.0: # %entry 10923; LINUX-64-PIC-NEXT: movq callee@GOTPCREL(%rip), %rax 10924; LINUX-64-PIC-NEXT: retq 10925; 10926; DARWIN-32-STATIC-LABEL: address: 10927; DARWIN-32-STATIC: ## %bb.0: ## %entry 10928; DARWIN-32-STATIC-NEXT: movl $_callee, %eax 10929; DARWIN-32-STATIC-NEXT: retl 10930; 10931; DARWIN-32-DYNAMIC-LABEL: address: 10932; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 10933; DARWIN-32-DYNAMIC-NEXT: movl L_callee$non_lazy_ptr, %eax 10934; DARWIN-32-DYNAMIC-NEXT: retl 10935; 10936; DARWIN-32-PIC-LABEL: address: 10937; DARWIN-32-PIC: ## %bb.0: ## %entry 10938; DARWIN-32-PIC-NEXT: calll L133$pb 10939; DARWIN-32-PIC-NEXT: L133$pb: 10940; DARWIN-32-PIC-NEXT: popl %eax 10941; DARWIN-32-PIC-NEXT: movl L_callee$non_lazy_ptr-L133$pb(%eax), %eax 10942; DARWIN-32-PIC-NEXT: retl 10943; 10944; DARWIN-64-STATIC-LABEL: address: 10945; DARWIN-64-STATIC: ## %bb.0: ## %entry 10946; DARWIN-64-STATIC-NEXT: movq _callee@GOTPCREL(%rip), %rax 10947; DARWIN-64-STATIC-NEXT: retq 10948; 10949; DARWIN-64-DYNAMIC-LABEL: address: 10950; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 10951; DARWIN-64-DYNAMIC-NEXT: movq _callee@GOTPCREL(%rip), %rax 10952; DARWIN-64-DYNAMIC-NEXT: retq 10953; 10954; DARWIN-64-PIC-LABEL: address: 10955; DARWIN-64-PIC: ## %bb.0: ## %entry 10956; DARWIN-64-PIC-NEXT: movq _callee@GOTPCREL(%rip), %rax 10957; DARWIN-64-PIC-NEXT: retq 10958 10959entry: 10960 ret void ()* @callee 10961} 10962 10963declare void @callee() 10964 10965define dso_local void ()* @laddress() nounwind { 10966; LINUX-64-STATIC-LABEL: laddress: 10967; LINUX-64-STATIC: # %bb.0: # %entry 10968; LINUX-64-STATIC-NEXT: movl $lcallee, %eax 10969; LINUX-64-STATIC-NEXT: retq 10970; 10971; LINUX-32-STATIC-LABEL: laddress: 10972; LINUX-32-STATIC: # %bb.0: # %entry 10973; LINUX-32-STATIC-NEXT: movl $lcallee, %eax 10974; LINUX-32-STATIC-NEXT: retl 10975; 10976; LINUX-32-PIC-LABEL: laddress: 10977; LINUX-32-PIC: # %bb.0: # %entry 10978; LINUX-32-PIC-NEXT: calll .L134$pb 10979; LINUX-32-PIC-NEXT: .L134$pb: 10980; LINUX-32-PIC-NEXT: popl %eax 10981; LINUX-32-PIC-NEXT: .Ltmp134: 10982; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp134-.L134$pb), %eax 10983; LINUX-32-PIC-NEXT: leal .Llcallee$local@GOTOFF(%eax), %eax 10984; LINUX-32-PIC-NEXT: retl 10985; 10986; LINUX-64-PIC-LABEL: laddress: 10987; LINUX-64-PIC: # %bb.0: # %entry 10988; LINUX-64-PIC-NEXT: leaq .Llcallee$local(%rip), %rax 10989; LINUX-64-PIC-NEXT: retq 10990; 10991; DARWIN-32-STATIC-LABEL: laddress: 10992; DARWIN-32-STATIC: ## %bb.0: ## %entry 10993; DARWIN-32-STATIC-NEXT: movl $_lcallee, %eax 10994; DARWIN-32-STATIC-NEXT: retl 10995; 10996; DARWIN-32-DYNAMIC-LABEL: laddress: 10997; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 10998; DARWIN-32-DYNAMIC-NEXT: movl $_lcallee, %eax 10999; DARWIN-32-DYNAMIC-NEXT: retl 11000; 11001; DARWIN-32-PIC-LABEL: laddress: 11002; DARWIN-32-PIC: ## %bb.0: ## %entry 11003; DARWIN-32-PIC-NEXT: calll L134$pb 11004; DARWIN-32-PIC-NEXT: L134$pb: 11005; DARWIN-32-PIC-NEXT: popl %eax 11006; DARWIN-32-PIC-NEXT: leal _lcallee-L134$pb(%eax), %eax 11007; DARWIN-32-PIC-NEXT: retl 11008; 11009; DARWIN-64-STATIC-LABEL: laddress: 11010; DARWIN-64-STATIC: ## %bb.0: ## %entry 11011; DARWIN-64-STATIC-NEXT: leaq _lcallee(%rip), %rax 11012; DARWIN-64-STATIC-NEXT: retq 11013; 11014; DARWIN-64-DYNAMIC-LABEL: laddress: 11015; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 11016; DARWIN-64-DYNAMIC-NEXT: leaq _lcallee(%rip), %rax 11017; DARWIN-64-DYNAMIC-NEXT: retq 11018; 11019; DARWIN-64-PIC-LABEL: laddress: 11020; DARWIN-64-PIC: ## %bb.0: ## %entry 11021; DARWIN-64-PIC-NEXT: leaq _lcallee(%rip), %rax 11022; DARWIN-64-PIC-NEXT: retq 11023 11024entry: 11025 ret void ()* @lcallee 11026} 11027 11028define dso_local void ()* @daddress() nounwind { 11029; LINUX-64-STATIC-LABEL: daddress: 11030; LINUX-64-STATIC: # %bb.0: # %entry 11031; LINUX-64-STATIC-NEXT: movl $dcallee, %eax 11032; LINUX-64-STATIC-NEXT: retq 11033; 11034; LINUX-32-STATIC-LABEL: daddress: 11035; LINUX-32-STATIC: # %bb.0: # %entry 11036; LINUX-32-STATIC-NEXT: movl $dcallee, %eax 11037; LINUX-32-STATIC-NEXT: retl 11038; 11039; LINUX-32-PIC-LABEL: daddress: 11040; LINUX-32-PIC: # %bb.0: # %entry 11041; LINUX-32-PIC-NEXT: calll .L135$pb 11042; LINUX-32-PIC-NEXT: .L135$pb: 11043; LINUX-32-PIC-NEXT: popl %eax 11044; LINUX-32-PIC-NEXT: .Ltmp135: 11045; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp135-.L135$pb), %eax 11046; LINUX-32-PIC-NEXT: leal dcallee@GOTOFF(%eax), %eax 11047; LINUX-32-PIC-NEXT: retl 11048; 11049; LINUX-64-PIC-LABEL: daddress: 11050; LINUX-64-PIC: # %bb.0: # %entry 11051; LINUX-64-PIC-NEXT: leaq dcallee(%rip), %rax 11052; LINUX-64-PIC-NEXT: retq 11053; 11054; DARWIN-32-STATIC-LABEL: daddress: 11055; DARWIN-32-STATIC: ## %bb.0: ## %entry 11056; DARWIN-32-STATIC-NEXT: movl $_dcallee, %eax 11057; DARWIN-32-STATIC-NEXT: retl 11058; 11059; DARWIN-32-DYNAMIC-LABEL: daddress: 11060; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 11061; DARWIN-32-DYNAMIC-NEXT: movl $_dcallee, %eax 11062; DARWIN-32-DYNAMIC-NEXT: retl 11063; 11064; DARWIN-32-PIC-LABEL: daddress: 11065; DARWIN-32-PIC: ## %bb.0: ## %entry 11066; DARWIN-32-PIC-NEXT: calll L135$pb 11067; DARWIN-32-PIC-NEXT: L135$pb: 11068; DARWIN-32-PIC-NEXT: popl %eax 11069; DARWIN-32-PIC-NEXT: leal _dcallee-L135$pb(%eax), %eax 11070; DARWIN-32-PIC-NEXT: retl 11071; 11072; DARWIN-64-STATIC-LABEL: daddress: 11073; DARWIN-64-STATIC: ## %bb.0: ## %entry 11074; DARWIN-64-STATIC-NEXT: leaq _dcallee(%rip), %rax 11075; DARWIN-64-STATIC-NEXT: retq 11076; 11077; DARWIN-64-DYNAMIC-LABEL: daddress: 11078; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 11079; DARWIN-64-DYNAMIC-NEXT: leaq _dcallee(%rip), %rax 11080; DARWIN-64-DYNAMIC-NEXT: retq 11081; 11082; DARWIN-64-PIC-LABEL: daddress: 11083; DARWIN-64-PIC: ## %bb.0: ## %entry 11084; DARWIN-64-PIC-NEXT: leaq _dcallee(%rip), %rax 11085; DARWIN-64-PIC-NEXT: retq 11086 11087entry: 11088 ret void ()* @dcallee 11089} 11090 11091define dso_local void @caller() nounwind { 11092; LINUX-64-STATIC-LABEL: caller: 11093; LINUX-64-STATIC: # %bb.0: # %entry 11094; LINUX-64-STATIC-NEXT: pushq %rax 11095; LINUX-64-STATIC-NEXT: callq callee@PLT 11096; LINUX-64-STATIC-NEXT: callq callee@PLT 11097; LINUX-64-STATIC-NEXT: popq %rax 11098; LINUX-64-STATIC-NEXT: retq 11099; 11100; LINUX-32-STATIC-LABEL: caller: 11101; LINUX-32-STATIC: # %bb.0: # %entry 11102; LINUX-32-STATIC-NEXT: subl $12, %esp 11103; LINUX-32-STATIC-NEXT: calll callee@PLT 11104; LINUX-32-STATIC-NEXT: calll callee@PLT 11105; LINUX-32-STATIC-NEXT: addl $12, %esp 11106; LINUX-32-STATIC-NEXT: retl 11107; 11108; LINUX-32-PIC-LABEL: caller: 11109; LINUX-32-PIC: # %bb.0: # %entry 11110; LINUX-32-PIC-NEXT: pushl %ebx 11111; LINUX-32-PIC-NEXT: subl $8, %esp 11112; LINUX-32-PIC-NEXT: calll .L136$pb 11113; LINUX-32-PIC-NEXT: .L136$pb: 11114; LINUX-32-PIC-NEXT: popl %ebx 11115; LINUX-32-PIC-NEXT: .Ltmp136: 11116; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp136-.L136$pb), %ebx 11117; LINUX-32-PIC-NEXT: calll callee@PLT 11118; LINUX-32-PIC-NEXT: calll callee@PLT 11119; LINUX-32-PIC-NEXT: addl $8, %esp 11120; LINUX-32-PIC-NEXT: popl %ebx 11121; LINUX-32-PIC-NEXT: retl 11122; 11123; LINUX-64-PIC-LABEL: caller: 11124; LINUX-64-PIC: # %bb.0: # %entry 11125; LINUX-64-PIC-NEXT: pushq %rax 11126; LINUX-64-PIC-NEXT: callq callee@PLT 11127; LINUX-64-PIC-NEXT: callq callee@PLT 11128; LINUX-64-PIC-NEXT: popq %rax 11129; LINUX-64-PIC-NEXT: retq 11130; 11131; DARWIN-32-STATIC-LABEL: caller: 11132; DARWIN-32-STATIC: ## %bb.0: ## %entry 11133; DARWIN-32-STATIC-NEXT: subl $12, %esp 11134; DARWIN-32-STATIC-NEXT: calll _callee 11135; DARWIN-32-STATIC-NEXT: calll _callee 11136; DARWIN-32-STATIC-NEXT: addl $12, %esp 11137; DARWIN-32-STATIC-NEXT: retl 11138; 11139; DARWIN-32-DYNAMIC-LABEL: caller: 11140; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 11141; DARWIN-32-DYNAMIC-NEXT: subl $12, %esp 11142; DARWIN-32-DYNAMIC-NEXT: calll _callee 11143; DARWIN-32-DYNAMIC-NEXT: calll _callee 11144; DARWIN-32-DYNAMIC-NEXT: addl $12, %esp 11145; DARWIN-32-DYNAMIC-NEXT: retl 11146; 11147; DARWIN-32-PIC-LABEL: caller: 11148; DARWIN-32-PIC: ## %bb.0: ## %entry 11149; DARWIN-32-PIC-NEXT: subl $12, %esp 11150; DARWIN-32-PIC-NEXT: calll _callee 11151; DARWIN-32-PIC-NEXT: calll _callee 11152; DARWIN-32-PIC-NEXT: addl $12, %esp 11153; DARWIN-32-PIC-NEXT: retl 11154; 11155; DARWIN-64-STATIC-LABEL: caller: 11156; DARWIN-64-STATIC: ## %bb.0: ## %entry 11157; DARWIN-64-STATIC-NEXT: pushq %rax 11158; DARWIN-64-STATIC-NEXT: callq _callee 11159; DARWIN-64-STATIC-NEXT: callq _callee 11160; DARWIN-64-STATIC-NEXT: popq %rax 11161; DARWIN-64-STATIC-NEXT: retq 11162; 11163; DARWIN-64-DYNAMIC-LABEL: caller: 11164; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 11165; DARWIN-64-DYNAMIC-NEXT: pushq %rax 11166; DARWIN-64-DYNAMIC-NEXT: callq _callee 11167; DARWIN-64-DYNAMIC-NEXT: callq _callee 11168; DARWIN-64-DYNAMIC-NEXT: popq %rax 11169; DARWIN-64-DYNAMIC-NEXT: retq 11170; 11171; DARWIN-64-PIC-LABEL: caller: 11172; DARWIN-64-PIC: ## %bb.0: ## %entry 11173; DARWIN-64-PIC-NEXT: pushq %rax 11174; DARWIN-64-PIC-NEXT: callq _callee 11175; DARWIN-64-PIC-NEXT: callq _callee 11176; DARWIN-64-PIC-NEXT: popq %rax 11177; DARWIN-64-PIC-NEXT: retq 11178 11179entry: 11180 call void @callee() nounwind 11181 call void @callee() nounwind 11182 ret void 11183} 11184 11185define dso_local void @dcaller() nounwind { 11186; LINUX-64-STATIC-LABEL: dcaller: 11187; LINUX-64-STATIC: # %bb.0: # %entry 11188; LINUX-64-STATIC-NEXT: pushq %rax 11189; LINUX-64-STATIC-NEXT: callq dcallee 11190; LINUX-64-STATIC-NEXT: callq dcallee 11191; LINUX-64-STATIC-NEXT: popq %rax 11192; LINUX-64-STATIC-NEXT: retq 11193; 11194; LINUX-32-STATIC-LABEL: dcaller: 11195; LINUX-32-STATIC: # %bb.0: # %entry 11196; LINUX-32-STATIC-NEXT: subl $12, %esp 11197; LINUX-32-STATIC-NEXT: calll dcallee 11198; LINUX-32-STATIC-NEXT: calll dcallee 11199; LINUX-32-STATIC-NEXT: addl $12, %esp 11200; LINUX-32-STATIC-NEXT: retl 11201; 11202; LINUX-32-PIC-LABEL: dcaller: 11203; LINUX-32-PIC: # %bb.0: # %entry 11204; LINUX-32-PIC-NEXT: pushl %ebx 11205; LINUX-32-PIC-NEXT: subl $8, %esp 11206; LINUX-32-PIC-NEXT: calll .L137$pb 11207; LINUX-32-PIC-NEXT: .L137$pb: 11208; LINUX-32-PIC-NEXT: popl %ebx 11209; LINUX-32-PIC-NEXT: .Ltmp137: 11210; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp137-.L137$pb), %ebx 11211; LINUX-32-PIC-NEXT: calll dcallee 11212; LINUX-32-PIC-NEXT: calll dcallee 11213; LINUX-32-PIC-NEXT: addl $8, %esp 11214; LINUX-32-PIC-NEXT: popl %ebx 11215; LINUX-32-PIC-NEXT: retl 11216; 11217; LINUX-64-PIC-LABEL: dcaller: 11218; LINUX-64-PIC: # %bb.0: # %entry 11219; LINUX-64-PIC-NEXT: pushq %rax 11220; LINUX-64-PIC-NEXT: callq dcallee 11221; LINUX-64-PIC-NEXT: callq dcallee 11222; LINUX-64-PIC-NEXT: popq %rax 11223; LINUX-64-PIC-NEXT: retq 11224; 11225; DARWIN-32-STATIC-LABEL: dcaller: 11226; DARWIN-32-STATIC: ## %bb.0: ## %entry 11227; DARWIN-32-STATIC-NEXT: subl $12, %esp 11228; DARWIN-32-STATIC-NEXT: calll _dcallee 11229; DARWIN-32-STATIC-NEXT: calll _dcallee 11230; DARWIN-32-STATIC-NEXT: addl $12, %esp 11231; DARWIN-32-STATIC-NEXT: retl 11232; 11233; DARWIN-32-DYNAMIC-LABEL: dcaller: 11234; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 11235; DARWIN-32-DYNAMIC-NEXT: subl $12, %esp 11236; DARWIN-32-DYNAMIC-NEXT: calll _dcallee 11237; DARWIN-32-DYNAMIC-NEXT: calll _dcallee 11238; DARWIN-32-DYNAMIC-NEXT: addl $12, %esp 11239; DARWIN-32-DYNAMIC-NEXT: retl 11240; 11241; DARWIN-32-PIC-LABEL: dcaller: 11242; DARWIN-32-PIC: ## %bb.0: ## %entry 11243; DARWIN-32-PIC-NEXT: subl $12, %esp 11244; DARWIN-32-PIC-NEXT: calll _dcallee 11245; DARWIN-32-PIC-NEXT: calll _dcallee 11246; DARWIN-32-PIC-NEXT: addl $12, %esp 11247; DARWIN-32-PIC-NEXT: retl 11248; 11249; DARWIN-64-STATIC-LABEL: dcaller: 11250; DARWIN-64-STATIC: ## %bb.0: ## %entry 11251; DARWIN-64-STATIC-NEXT: pushq %rax 11252; DARWIN-64-STATIC-NEXT: callq _dcallee 11253; DARWIN-64-STATIC-NEXT: callq _dcallee 11254; DARWIN-64-STATIC-NEXT: popq %rax 11255; DARWIN-64-STATIC-NEXT: retq 11256; 11257; DARWIN-64-DYNAMIC-LABEL: dcaller: 11258; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 11259; DARWIN-64-DYNAMIC-NEXT: pushq %rax 11260; DARWIN-64-DYNAMIC-NEXT: callq _dcallee 11261; DARWIN-64-DYNAMIC-NEXT: callq _dcallee 11262; DARWIN-64-DYNAMIC-NEXT: popq %rax 11263; DARWIN-64-DYNAMIC-NEXT: retq 11264; 11265; DARWIN-64-PIC-LABEL: dcaller: 11266; DARWIN-64-PIC: ## %bb.0: ## %entry 11267; DARWIN-64-PIC-NEXT: pushq %rax 11268; DARWIN-64-PIC-NEXT: callq _dcallee 11269; DARWIN-64-PIC-NEXT: callq _dcallee 11270; DARWIN-64-PIC-NEXT: popq %rax 11271; DARWIN-64-PIC-NEXT: retq 11272 11273entry: 11274 call void @dcallee() nounwind 11275 call void @dcallee() nounwind 11276 ret void 11277} 11278 11279define dso_local void @lcaller() nounwind { 11280; LINUX-64-STATIC-LABEL: lcaller: 11281; LINUX-64-STATIC: # %bb.0: # %entry 11282; LINUX-64-STATIC-NEXT: pushq %rax 11283; LINUX-64-STATIC-NEXT: callq lcallee 11284; LINUX-64-STATIC-NEXT: callq lcallee 11285; LINUX-64-STATIC-NEXT: popq %rax 11286; LINUX-64-STATIC-NEXT: retq 11287; 11288; LINUX-32-STATIC-LABEL: lcaller: 11289; LINUX-32-STATIC: # %bb.0: # %entry 11290; LINUX-32-STATIC-NEXT: subl $12, %esp 11291; LINUX-32-STATIC-NEXT: calll lcallee 11292; LINUX-32-STATIC-NEXT: calll lcallee 11293; LINUX-32-STATIC-NEXT: addl $12, %esp 11294; LINUX-32-STATIC-NEXT: retl 11295; 11296; LINUX-32-PIC-LABEL: lcaller: 11297; LINUX-32-PIC: # %bb.0: # %entry 11298; LINUX-32-PIC-NEXT: pushl %ebx 11299; LINUX-32-PIC-NEXT: subl $8, %esp 11300; LINUX-32-PIC-NEXT: calll .L138$pb 11301; LINUX-32-PIC-NEXT: .L138$pb: 11302; LINUX-32-PIC-NEXT: popl %ebx 11303; LINUX-32-PIC-NEXT: .Ltmp138: 11304; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp138-.L138$pb), %ebx 11305; LINUX-32-PIC-NEXT: calll .Llcallee$local 11306; LINUX-32-PIC-NEXT: calll .Llcallee$local 11307; LINUX-32-PIC-NEXT: addl $8, %esp 11308; LINUX-32-PIC-NEXT: popl %ebx 11309; LINUX-32-PIC-NEXT: retl 11310; 11311; LINUX-64-PIC-LABEL: lcaller: 11312; LINUX-64-PIC: # %bb.0: # %entry 11313; LINUX-64-PIC-NEXT: pushq %rax 11314; LINUX-64-PIC-NEXT: callq .Llcallee$local 11315; LINUX-64-PIC-NEXT: callq .Llcallee$local 11316; LINUX-64-PIC-NEXT: popq %rax 11317; LINUX-64-PIC-NEXT: retq 11318; 11319; DARWIN-32-STATIC-LABEL: lcaller: 11320; DARWIN-32-STATIC: ## %bb.0: ## %entry 11321; DARWIN-32-STATIC-NEXT: subl $12, %esp 11322; DARWIN-32-STATIC-NEXT: calll _lcallee 11323; DARWIN-32-STATIC-NEXT: calll _lcallee 11324; DARWIN-32-STATIC-NEXT: addl $12, %esp 11325; DARWIN-32-STATIC-NEXT: retl 11326; 11327; DARWIN-32-DYNAMIC-LABEL: lcaller: 11328; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 11329; DARWIN-32-DYNAMIC-NEXT: subl $12, %esp 11330; DARWIN-32-DYNAMIC-NEXT: calll _lcallee 11331; DARWIN-32-DYNAMIC-NEXT: calll _lcallee 11332; DARWIN-32-DYNAMIC-NEXT: addl $12, %esp 11333; DARWIN-32-DYNAMIC-NEXT: retl 11334; 11335; DARWIN-32-PIC-LABEL: lcaller: 11336; DARWIN-32-PIC: ## %bb.0: ## %entry 11337; DARWIN-32-PIC-NEXT: subl $12, %esp 11338; DARWIN-32-PIC-NEXT: calll _lcallee 11339; DARWIN-32-PIC-NEXT: calll _lcallee 11340; DARWIN-32-PIC-NEXT: addl $12, %esp 11341; DARWIN-32-PIC-NEXT: retl 11342; 11343; DARWIN-64-STATIC-LABEL: lcaller: 11344; DARWIN-64-STATIC: ## %bb.0: ## %entry 11345; DARWIN-64-STATIC-NEXT: pushq %rax 11346; DARWIN-64-STATIC-NEXT: callq _lcallee 11347; DARWIN-64-STATIC-NEXT: callq _lcallee 11348; DARWIN-64-STATIC-NEXT: popq %rax 11349; DARWIN-64-STATIC-NEXT: retq 11350; 11351; DARWIN-64-DYNAMIC-LABEL: lcaller: 11352; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 11353; DARWIN-64-DYNAMIC-NEXT: pushq %rax 11354; DARWIN-64-DYNAMIC-NEXT: callq _lcallee 11355; DARWIN-64-DYNAMIC-NEXT: callq _lcallee 11356; DARWIN-64-DYNAMIC-NEXT: popq %rax 11357; DARWIN-64-DYNAMIC-NEXT: retq 11358; 11359; DARWIN-64-PIC-LABEL: lcaller: 11360; DARWIN-64-PIC: ## %bb.0: ## %entry 11361; DARWIN-64-PIC-NEXT: pushq %rax 11362; DARWIN-64-PIC-NEXT: callq _lcallee 11363; DARWIN-64-PIC-NEXT: callq _lcallee 11364; DARWIN-64-PIC-NEXT: popq %rax 11365; DARWIN-64-PIC-NEXT: retq 11366 11367entry: 11368 call void @lcallee() nounwind 11369 call void @lcallee() nounwind 11370 ret void 11371} 11372 11373define dso_local void @tailcaller() nounwind { 11374; LINUX-64-STATIC-LABEL: tailcaller: 11375; LINUX-64-STATIC: # %bb.0: # %entry 11376; LINUX-64-STATIC-NEXT: pushq %rax 11377; LINUX-64-STATIC-NEXT: callq callee@PLT 11378; LINUX-64-STATIC-NEXT: popq %rax 11379; LINUX-64-STATIC-NEXT: retq 11380; 11381; LINUX-32-STATIC-LABEL: tailcaller: 11382; LINUX-32-STATIC: # %bb.0: # %entry 11383; LINUX-32-STATIC-NEXT: subl $12, %esp 11384; LINUX-32-STATIC-NEXT: calll callee@PLT 11385; LINUX-32-STATIC-NEXT: addl $12, %esp 11386; LINUX-32-STATIC-NEXT: retl 11387; 11388; LINUX-32-PIC-LABEL: tailcaller: 11389; LINUX-32-PIC: # %bb.0: # %entry 11390; LINUX-32-PIC-NEXT: pushl %ebx 11391; LINUX-32-PIC-NEXT: subl $8, %esp 11392; LINUX-32-PIC-NEXT: calll .L139$pb 11393; LINUX-32-PIC-NEXT: .L139$pb: 11394; LINUX-32-PIC-NEXT: popl %ebx 11395; LINUX-32-PIC-NEXT: .Ltmp139: 11396; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp139-.L139$pb), %ebx 11397; LINUX-32-PIC-NEXT: calll callee@PLT 11398; LINUX-32-PIC-NEXT: addl $8, %esp 11399; LINUX-32-PIC-NEXT: popl %ebx 11400; LINUX-32-PIC-NEXT: retl 11401; 11402; LINUX-64-PIC-LABEL: tailcaller: 11403; LINUX-64-PIC: # %bb.0: # %entry 11404; LINUX-64-PIC-NEXT: pushq %rax 11405; LINUX-64-PIC-NEXT: callq callee@PLT 11406; LINUX-64-PIC-NEXT: popq %rax 11407; LINUX-64-PIC-NEXT: retq 11408; 11409; DARWIN-32-STATIC-LABEL: tailcaller: 11410; DARWIN-32-STATIC: ## %bb.0: ## %entry 11411; DARWIN-32-STATIC-NEXT: subl $12, %esp 11412; DARWIN-32-STATIC-NEXT: calll _callee 11413; DARWIN-32-STATIC-NEXT: addl $12, %esp 11414; DARWIN-32-STATIC-NEXT: retl 11415; 11416; DARWIN-32-DYNAMIC-LABEL: tailcaller: 11417; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 11418; DARWIN-32-DYNAMIC-NEXT: subl $12, %esp 11419; DARWIN-32-DYNAMIC-NEXT: calll _callee 11420; DARWIN-32-DYNAMIC-NEXT: addl $12, %esp 11421; DARWIN-32-DYNAMIC-NEXT: retl 11422; 11423; DARWIN-32-PIC-LABEL: tailcaller: 11424; DARWIN-32-PIC: ## %bb.0: ## %entry 11425; DARWIN-32-PIC-NEXT: subl $12, %esp 11426; DARWIN-32-PIC-NEXT: calll _callee 11427; DARWIN-32-PIC-NEXT: addl $12, %esp 11428; DARWIN-32-PIC-NEXT: retl 11429; 11430; DARWIN-64-STATIC-LABEL: tailcaller: 11431; DARWIN-64-STATIC: ## %bb.0: ## %entry 11432; DARWIN-64-STATIC-NEXT: pushq %rax 11433; DARWIN-64-STATIC-NEXT: callq _callee 11434; DARWIN-64-STATIC-NEXT: popq %rax 11435; DARWIN-64-STATIC-NEXT: retq 11436; 11437; DARWIN-64-DYNAMIC-LABEL: tailcaller: 11438; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 11439; DARWIN-64-DYNAMIC-NEXT: pushq %rax 11440; DARWIN-64-DYNAMIC-NEXT: callq _callee 11441; DARWIN-64-DYNAMIC-NEXT: popq %rax 11442; DARWIN-64-DYNAMIC-NEXT: retq 11443; 11444; DARWIN-64-PIC-LABEL: tailcaller: 11445; DARWIN-64-PIC: ## %bb.0: ## %entry 11446; DARWIN-64-PIC-NEXT: pushq %rax 11447; DARWIN-64-PIC-NEXT: callq _callee 11448; DARWIN-64-PIC-NEXT: popq %rax 11449; DARWIN-64-PIC-NEXT: retq 11450 11451entry: 11452 call void @callee() nounwind 11453 ret void 11454} 11455 11456define dso_local void @dtailcaller() nounwind { 11457; LINUX-64-STATIC-LABEL: dtailcaller: 11458; LINUX-64-STATIC: # %bb.0: # %entry 11459; LINUX-64-STATIC-NEXT: pushq %rax 11460; LINUX-64-STATIC-NEXT: callq dcallee 11461; LINUX-64-STATIC-NEXT: popq %rax 11462; LINUX-64-STATIC-NEXT: retq 11463; 11464; LINUX-32-STATIC-LABEL: dtailcaller: 11465; LINUX-32-STATIC: # %bb.0: # %entry 11466; LINUX-32-STATIC-NEXT: subl $12, %esp 11467; LINUX-32-STATIC-NEXT: calll dcallee 11468; LINUX-32-STATIC-NEXT: addl $12, %esp 11469; LINUX-32-STATIC-NEXT: retl 11470; 11471; LINUX-32-PIC-LABEL: dtailcaller: 11472; LINUX-32-PIC: # %bb.0: # %entry 11473; LINUX-32-PIC-NEXT: pushl %ebx 11474; LINUX-32-PIC-NEXT: subl $8, %esp 11475; LINUX-32-PIC-NEXT: calll .L140$pb 11476; LINUX-32-PIC-NEXT: .L140$pb: 11477; LINUX-32-PIC-NEXT: popl %ebx 11478; LINUX-32-PIC-NEXT: .Ltmp140: 11479; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp140-.L140$pb), %ebx 11480; LINUX-32-PIC-NEXT: calll dcallee 11481; LINUX-32-PIC-NEXT: addl $8, %esp 11482; LINUX-32-PIC-NEXT: popl %ebx 11483; LINUX-32-PIC-NEXT: retl 11484; 11485; LINUX-64-PIC-LABEL: dtailcaller: 11486; LINUX-64-PIC: # %bb.0: # %entry 11487; LINUX-64-PIC-NEXT: pushq %rax 11488; LINUX-64-PIC-NEXT: callq dcallee 11489; LINUX-64-PIC-NEXT: popq %rax 11490; LINUX-64-PIC-NEXT: retq 11491; 11492; DARWIN-32-STATIC-LABEL: dtailcaller: 11493; DARWIN-32-STATIC: ## %bb.0: ## %entry 11494; DARWIN-32-STATIC-NEXT: subl $12, %esp 11495; DARWIN-32-STATIC-NEXT: calll _dcallee 11496; DARWIN-32-STATIC-NEXT: addl $12, %esp 11497; DARWIN-32-STATIC-NEXT: retl 11498; 11499; DARWIN-32-DYNAMIC-LABEL: dtailcaller: 11500; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 11501; DARWIN-32-DYNAMIC-NEXT: subl $12, %esp 11502; DARWIN-32-DYNAMIC-NEXT: calll _dcallee 11503; DARWIN-32-DYNAMIC-NEXT: addl $12, %esp 11504; DARWIN-32-DYNAMIC-NEXT: retl 11505; 11506; DARWIN-32-PIC-LABEL: dtailcaller: 11507; DARWIN-32-PIC: ## %bb.0: ## %entry 11508; DARWIN-32-PIC-NEXT: subl $12, %esp 11509; DARWIN-32-PIC-NEXT: calll _dcallee 11510; DARWIN-32-PIC-NEXT: addl $12, %esp 11511; DARWIN-32-PIC-NEXT: retl 11512; 11513; DARWIN-64-STATIC-LABEL: dtailcaller: 11514; DARWIN-64-STATIC: ## %bb.0: ## %entry 11515; DARWIN-64-STATIC-NEXT: pushq %rax 11516; DARWIN-64-STATIC-NEXT: callq _dcallee 11517; DARWIN-64-STATIC-NEXT: popq %rax 11518; DARWIN-64-STATIC-NEXT: retq 11519; 11520; DARWIN-64-DYNAMIC-LABEL: dtailcaller: 11521; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 11522; DARWIN-64-DYNAMIC-NEXT: pushq %rax 11523; DARWIN-64-DYNAMIC-NEXT: callq _dcallee 11524; DARWIN-64-DYNAMIC-NEXT: popq %rax 11525; DARWIN-64-DYNAMIC-NEXT: retq 11526; 11527; DARWIN-64-PIC-LABEL: dtailcaller: 11528; DARWIN-64-PIC: ## %bb.0: ## %entry 11529; DARWIN-64-PIC-NEXT: pushq %rax 11530; DARWIN-64-PIC-NEXT: callq _dcallee 11531; DARWIN-64-PIC-NEXT: popq %rax 11532; DARWIN-64-PIC-NEXT: retq 11533 11534entry: 11535 call void @dcallee() nounwind 11536 ret void 11537} 11538 11539define dso_local void @ltailcaller() nounwind { 11540; LINUX-64-STATIC-LABEL: ltailcaller: 11541; LINUX-64-STATIC: # %bb.0: # %entry 11542; LINUX-64-STATIC-NEXT: pushq %rax 11543; LINUX-64-STATIC-NEXT: callq lcallee 11544; LINUX-64-STATIC-NEXT: popq %rax 11545; LINUX-64-STATIC-NEXT: retq 11546; 11547; LINUX-32-STATIC-LABEL: ltailcaller: 11548; LINUX-32-STATIC: # %bb.0: # %entry 11549; LINUX-32-STATIC-NEXT: subl $12, %esp 11550; LINUX-32-STATIC-NEXT: calll lcallee 11551; LINUX-32-STATIC-NEXT: addl $12, %esp 11552; LINUX-32-STATIC-NEXT: retl 11553; 11554; LINUX-32-PIC-LABEL: ltailcaller: 11555; LINUX-32-PIC: # %bb.0: # %entry 11556; LINUX-32-PIC-NEXT: pushl %ebx 11557; LINUX-32-PIC-NEXT: subl $8, %esp 11558; LINUX-32-PIC-NEXT: calll .L141$pb 11559; LINUX-32-PIC-NEXT: .L141$pb: 11560; LINUX-32-PIC-NEXT: popl %ebx 11561; LINUX-32-PIC-NEXT: .Ltmp141: 11562; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp141-.L141$pb), %ebx 11563; LINUX-32-PIC-NEXT: calll .Llcallee$local 11564; LINUX-32-PIC-NEXT: addl $8, %esp 11565; LINUX-32-PIC-NEXT: popl %ebx 11566; LINUX-32-PIC-NEXT: retl 11567; 11568; LINUX-64-PIC-LABEL: ltailcaller: 11569; LINUX-64-PIC: # %bb.0: # %entry 11570; LINUX-64-PIC-NEXT: pushq %rax 11571; LINUX-64-PIC-NEXT: callq .Llcallee$local 11572; LINUX-64-PIC-NEXT: popq %rax 11573; LINUX-64-PIC-NEXT: retq 11574; 11575; DARWIN-32-STATIC-LABEL: ltailcaller: 11576; DARWIN-32-STATIC: ## %bb.0: ## %entry 11577; DARWIN-32-STATIC-NEXT: subl $12, %esp 11578; DARWIN-32-STATIC-NEXT: calll _lcallee 11579; DARWIN-32-STATIC-NEXT: addl $12, %esp 11580; DARWIN-32-STATIC-NEXT: retl 11581; 11582; DARWIN-32-DYNAMIC-LABEL: ltailcaller: 11583; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 11584; DARWIN-32-DYNAMIC-NEXT: subl $12, %esp 11585; DARWIN-32-DYNAMIC-NEXT: calll _lcallee 11586; DARWIN-32-DYNAMIC-NEXT: addl $12, %esp 11587; DARWIN-32-DYNAMIC-NEXT: retl 11588; 11589; DARWIN-32-PIC-LABEL: ltailcaller: 11590; DARWIN-32-PIC: ## %bb.0: ## %entry 11591; DARWIN-32-PIC-NEXT: subl $12, %esp 11592; DARWIN-32-PIC-NEXT: calll _lcallee 11593; DARWIN-32-PIC-NEXT: addl $12, %esp 11594; DARWIN-32-PIC-NEXT: retl 11595; 11596; DARWIN-64-STATIC-LABEL: ltailcaller: 11597; DARWIN-64-STATIC: ## %bb.0: ## %entry 11598; DARWIN-64-STATIC-NEXT: pushq %rax 11599; DARWIN-64-STATIC-NEXT: callq _lcallee 11600; DARWIN-64-STATIC-NEXT: popq %rax 11601; DARWIN-64-STATIC-NEXT: retq 11602; 11603; DARWIN-64-DYNAMIC-LABEL: ltailcaller: 11604; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 11605; DARWIN-64-DYNAMIC-NEXT: pushq %rax 11606; DARWIN-64-DYNAMIC-NEXT: callq _lcallee 11607; DARWIN-64-DYNAMIC-NEXT: popq %rax 11608; DARWIN-64-DYNAMIC-NEXT: retq 11609; 11610; DARWIN-64-PIC-LABEL: ltailcaller: 11611; DARWIN-64-PIC: ## %bb.0: ## %entry 11612; DARWIN-64-PIC-NEXT: pushq %rax 11613; DARWIN-64-PIC-NEXT: callq _lcallee 11614; DARWIN-64-PIC-NEXT: popq %rax 11615; DARWIN-64-PIC-NEXT: retq 11616 11617entry: 11618 call void @lcallee() nounwind 11619 ret void 11620} 11621 11622define dso_local void @icaller() nounwind { 11623; LINUX-64-STATIC-LABEL: icaller: 11624; LINUX-64-STATIC: # %bb.0: # %entry 11625; LINUX-64-STATIC-NEXT: pushq %rbx 11626; LINUX-64-STATIC-NEXT: movq ifunc@GOTPCREL(%rip), %rbx 11627; LINUX-64-STATIC-NEXT: callq *(%rbx) 11628; LINUX-64-STATIC-NEXT: callq *(%rbx) 11629; LINUX-64-STATIC-NEXT: popq %rbx 11630; LINUX-64-STATIC-NEXT: retq 11631; 11632; LINUX-32-STATIC-LABEL: icaller: 11633; LINUX-32-STATIC: # %bb.0: # %entry 11634; LINUX-32-STATIC-NEXT: subl $12, %esp 11635; LINUX-32-STATIC-NEXT: calll *ifunc 11636; LINUX-32-STATIC-NEXT: calll *ifunc 11637; LINUX-32-STATIC-NEXT: addl $12, %esp 11638; LINUX-32-STATIC-NEXT: retl 11639; 11640; LINUX-32-PIC-LABEL: icaller: 11641; LINUX-32-PIC: # %bb.0: # %entry 11642; LINUX-32-PIC-NEXT: pushl %ebx 11643; LINUX-32-PIC-NEXT: pushl %esi 11644; LINUX-32-PIC-NEXT: pushl %eax 11645; LINUX-32-PIC-NEXT: calll .L142$pb 11646; LINUX-32-PIC-NEXT: .L142$pb: 11647; LINUX-32-PIC-NEXT: popl %ebx 11648; LINUX-32-PIC-NEXT: .Ltmp142: 11649; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp142-.L142$pb), %ebx 11650; LINUX-32-PIC-NEXT: movl ifunc@GOT(%ebx), %esi 11651; LINUX-32-PIC-NEXT: calll *(%esi) 11652; LINUX-32-PIC-NEXT: calll *(%esi) 11653; LINUX-32-PIC-NEXT: addl $4, %esp 11654; LINUX-32-PIC-NEXT: popl %esi 11655; LINUX-32-PIC-NEXT: popl %ebx 11656; LINUX-32-PIC-NEXT: retl 11657; 11658; LINUX-64-PIC-LABEL: icaller: 11659; LINUX-64-PIC: # %bb.0: # %entry 11660; LINUX-64-PIC-NEXT: pushq %rbx 11661; LINUX-64-PIC-NEXT: movq ifunc@GOTPCREL(%rip), %rbx 11662; LINUX-64-PIC-NEXT: callq *(%rbx) 11663; LINUX-64-PIC-NEXT: callq *(%rbx) 11664; LINUX-64-PIC-NEXT: popq %rbx 11665; LINUX-64-PIC-NEXT: retq 11666; 11667; DARWIN-32-STATIC-LABEL: icaller: 11668; DARWIN-32-STATIC: ## %bb.0: ## %entry 11669; DARWIN-32-STATIC-NEXT: subl $12, %esp 11670; DARWIN-32-STATIC-NEXT: calll *_ifunc 11671; DARWIN-32-STATIC-NEXT: calll *_ifunc 11672; DARWIN-32-STATIC-NEXT: addl $12, %esp 11673; DARWIN-32-STATIC-NEXT: retl 11674; 11675; DARWIN-32-DYNAMIC-LABEL: icaller: 11676; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 11677; DARWIN-32-DYNAMIC-NEXT: pushl %esi 11678; DARWIN-32-DYNAMIC-NEXT: subl $8, %esp 11679; DARWIN-32-DYNAMIC-NEXT: movl L_ifunc$non_lazy_ptr, %esi 11680; DARWIN-32-DYNAMIC-NEXT: calll *(%esi) 11681; DARWIN-32-DYNAMIC-NEXT: calll *(%esi) 11682; DARWIN-32-DYNAMIC-NEXT: addl $8, %esp 11683; DARWIN-32-DYNAMIC-NEXT: popl %esi 11684; DARWIN-32-DYNAMIC-NEXT: retl 11685; 11686; DARWIN-32-PIC-LABEL: icaller: 11687; DARWIN-32-PIC: ## %bb.0: ## %entry 11688; DARWIN-32-PIC-NEXT: pushl %esi 11689; DARWIN-32-PIC-NEXT: subl $8, %esp 11690; DARWIN-32-PIC-NEXT: calll L142$pb 11691; DARWIN-32-PIC-NEXT: L142$pb: 11692; DARWIN-32-PIC-NEXT: popl %eax 11693; DARWIN-32-PIC-NEXT: movl L_ifunc$non_lazy_ptr-L142$pb(%eax), %esi 11694; DARWIN-32-PIC-NEXT: calll *(%esi) 11695; DARWIN-32-PIC-NEXT: calll *(%esi) 11696; DARWIN-32-PIC-NEXT: addl $8, %esp 11697; DARWIN-32-PIC-NEXT: popl %esi 11698; DARWIN-32-PIC-NEXT: retl 11699; 11700; DARWIN-64-STATIC-LABEL: icaller: 11701; DARWIN-64-STATIC: ## %bb.0: ## %entry 11702; DARWIN-64-STATIC-NEXT: pushq %rbx 11703; DARWIN-64-STATIC-NEXT: movq _ifunc@GOTPCREL(%rip), %rbx 11704; DARWIN-64-STATIC-NEXT: callq *(%rbx) 11705; DARWIN-64-STATIC-NEXT: callq *(%rbx) 11706; DARWIN-64-STATIC-NEXT: popq %rbx 11707; DARWIN-64-STATIC-NEXT: retq 11708; 11709; DARWIN-64-DYNAMIC-LABEL: icaller: 11710; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 11711; DARWIN-64-DYNAMIC-NEXT: pushq %rbx 11712; DARWIN-64-DYNAMIC-NEXT: movq _ifunc@GOTPCREL(%rip), %rbx 11713; DARWIN-64-DYNAMIC-NEXT: callq *(%rbx) 11714; DARWIN-64-DYNAMIC-NEXT: callq *(%rbx) 11715; DARWIN-64-DYNAMIC-NEXT: popq %rbx 11716; DARWIN-64-DYNAMIC-NEXT: retq 11717; 11718; DARWIN-64-PIC-LABEL: icaller: 11719; DARWIN-64-PIC: ## %bb.0: ## %entry 11720; DARWIN-64-PIC-NEXT: pushq %rbx 11721; DARWIN-64-PIC-NEXT: movq _ifunc@GOTPCREL(%rip), %rbx 11722; DARWIN-64-PIC-NEXT: callq *(%rbx) 11723; DARWIN-64-PIC-NEXT: callq *(%rbx) 11724; DARWIN-64-PIC-NEXT: popq %rbx 11725; DARWIN-64-PIC-NEXT: retq 11726 11727entry: 11728 %0 = load void ()*, void ()** @ifunc, align 8 11729 call void %0() nounwind 11730 %1 = load void ()*, void ()** @ifunc, align 8 11731 call void %1() nounwind 11732 ret void 11733} 11734 11735define dso_local void @dicaller() nounwind { 11736; LINUX-64-STATIC-LABEL: dicaller: 11737; LINUX-64-STATIC: # %bb.0: # %entry 11738; LINUX-64-STATIC-NEXT: pushq %rax 11739; LINUX-64-STATIC-NEXT: callq *difunc(%rip) 11740; LINUX-64-STATIC-NEXT: callq *difunc(%rip) 11741; LINUX-64-STATIC-NEXT: popq %rax 11742; LINUX-64-STATIC-NEXT: retq 11743; 11744; LINUX-32-STATIC-LABEL: dicaller: 11745; LINUX-32-STATIC: # %bb.0: # %entry 11746; LINUX-32-STATIC-NEXT: subl $12, %esp 11747; LINUX-32-STATIC-NEXT: calll *difunc 11748; LINUX-32-STATIC-NEXT: calll *difunc 11749; LINUX-32-STATIC-NEXT: addl $12, %esp 11750; LINUX-32-STATIC-NEXT: retl 11751; 11752; LINUX-32-PIC-LABEL: dicaller: 11753; LINUX-32-PIC: # %bb.0: # %entry 11754; LINUX-32-PIC-NEXT: pushl %ebx 11755; LINUX-32-PIC-NEXT: subl $8, %esp 11756; LINUX-32-PIC-NEXT: calll .L143$pb 11757; LINUX-32-PIC-NEXT: .L143$pb: 11758; LINUX-32-PIC-NEXT: popl %ebx 11759; LINUX-32-PIC-NEXT: .Ltmp143: 11760; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp143-.L143$pb), %ebx 11761; LINUX-32-PIC-NEXT: calll *.Ldifunc$local@GOTOFF(%ebx) 11762; LINUX-32-PIC-NEXT: calll *.Ldifunc$local@GOTOFF(%ebx) 11763; LINUX-32-PIC-NEXT: addl $8, %esp 11764; LINUX-32-PIC-NEXT: popl %ebx 11765; LINUX-32-PIC-NEXT: retl 11766; 11767; LINUX-64-PIC-LABEL: dicaller: 11768; LINUX-64-PIC: # %bb.0: # %entry 11769; LINUX-64-PIC-NEXT: pushq %rax 11770; LINUX-64-PIC-NEXT: callq *.Ldifunc$local(%rip) 11771; LINUX-64-PIC-NEXT: callq *.Ldifunc$local(%rip) 11772; LINUX-64-PIC-NEXT: popq %rax 11773; LINUX-64-PIC-NEXT: retq 11774; 11775; DARWIN-32-STATIC-LABEL: dicaller: 11776; DARWIN-32-STATIC: ## %bb.0: ## %entry 11777; DARWIN-32-STATIC-NEXT: subl $12, %esp 11778; DARWIN-32-STATIC-NEXT: calll *_difunc 11779; DARWIN-32-STATIC-NEXT: calll *_difunc 11780; DARWIN-32-STATIC-NEXT: addl $12, %esp 11781; DARWIN-32-STATIC-NEXT: retl 11782; 11783; DARWIN-32-DYNAMIC-LABEL: dicaller: 11784; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 11785; DARWIN-32-DYNAMIC-NEXT: subl $12, %esp 11786; DARWIN-32-DYNAMIC-NEXT: calll *_difunc 11787; DARWIN-32-DYNAMIC-NEXT: calll *_difunc 11788; DARWIN-32-DYNAMIC-NEXT: addl $12, %esp 11789; DARWIN-32-DYNAMIC-NEXT: retl 11790; 11791; DARWIN-32-PIC-LABEL: dicaller: 11792; DARWIN-32-PIC: ## %bb.0: ## %entry 11793; DARWIN-32-PIC-NEXT: pushl %esi 11794; DARWIN-32-PIC-NEXT: subl $8, %esp 11795; DARWIN-32-PIC-NEXT: calll L143$pb 11796; DARWIN-32-PIC-NEXT: L143$pb: 11797; DARWIN-32-PIC-NEXT: popl %esi 11798; DARWIN-32-PIC-NEXT: calll *_difunc-L143$pb(%esi) 11799; DARWIN-32-PIC-NEXT: calll *_difunc-L143$pb(%esi) 11800; DARWIN-32-PIC-NEXT: addl $8, %esp 11801; DARWIN-32-PIC-NEXT: popl %esi 11802; DARWIN-32-PIC-NEXT: retl 11803; 11804; DARWIN-64-STATIC-LABEL: dicaller: 11805; DARWIN-64-STATIC: ## %bb.0: ## %entry 11806; DARWIN-64-STATIC-NEXT: pushq %rax 11807; DARWIN-64-STATIC-NEXT: callq *_difunc(%rip) 11808; DARWIN-64-STATIC-NEXT: callq *_difunc(%rip) 11809; DARWIN-64-STATIC-NEXT: popq %rax 11810; DARWIN-64-STATIC-NEXT: retq 11811; 11812; DARWIN-64-DYNAMIC-LABEL: dicaller: 11813; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 11814; DARWIN-64-DYNAMIC-NEXT: pushq %rax 11815; DARWIN-64-DYNAMIC-NEXT: callq *_difunc(%rip) 11816; DARWIN-64-DYNAMIC-NEXT: callq *_difunc(%rip) 11817; DARWIN-64-DYNAMIC-NEXT: popq %rax 11818; DARWIN-64-DYNAMIC-NEXT: retq 11819; 11820; DARWIN-64-PIC-LABEL: dicaller: 11821; DARWIN-64-PIC: ## %bb.0: ## %entry 11822; DARWIN-64-PIC-NEXT: pushq %rax 11823; DARWIN-64-PIC-NEXT: callq *_difunc(%rip) 11824; DARWIN-64-PIC-NEXT: callq *_difunc(%rip) 11825; DARWIN-64-PIC-NEXT: popq %rax 11826; DARWIN-64-PIC-NEXT: retq 11827 11828entry: 11829 %0 = load void ()*, void ()** @difunc, align 8 11830 call void %0() nounwind 11831 %1 = load void ()*, void ()** @difunc, align 8 11832 call void %1() nounwind 11833 ret void 11834} 11835 11836define dso_local void @licaller() nounwind { 11837; LINUX-64-STATIC-LABEL: licaller: 11838; LINUX-64-STATIC: # %bb.0: # %entry 11839; LINUX-64-STATIC-NEXT: pushq %rax 11840; LINUX-64-STATIC-NEXT: callq *lifunc(%rip) 11841; LINUX-64-STATIC-NEXT: callq *lifunc(%rip) 11842; LINUX-64-STATIC-NEXT: popq %rax 11843; LINUX-64-STATIC-NEXT: retq 11844; 11845; LINUX-32-STATIC-LABEL: licaller: 11846; LINUX-32-STATIC: # %bb.0: # %entry 11847; LINUX-32-STATIC-NEXT: subl $12, %esp 11848; LINUX-32-STATIC-NEXT: calll *lifunc 11849; LINUX-32-STATIC-NEXT: calll *lifunc 11850; LINUX-32-STATIC-NEXT: addl $12, %esp 11851; LINUX-32-STATIC-NEXT: retl 11852; 11853; LINUX-32-PIC-LABEL: licaller: 11854; LINUX-32-PIC: # %bb.0: # %entry 11855; LINUX-32-PIC-NEXT: pushl %ebx 11856; LINUX-32-PIC-NEXT: subl $8, %esp 11857; LINUX-32-PIC-NEXT: calll .L144$pb 11858; LINUX-32-PIC-NEXT: .L144$pb: 11859; LINUX-32-PIC-NEXT: popl %ebx 11860; LINUX-32-PIC-NEXT: .Ltmp144: 11861; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp144-.L144$pb), %ebx 11862; LINUX-32-PIC-NEXT: calll *lifunc@GOTOFF(%ebx) 11863; LINUX-32-PIC-NEXT: calll *lifunc@GOTOFF(%ebx) 11864; LINUX-32-PIC-NEXT: addl $8, %esp 11865; LINUX-32-PIC-NEXT: popl %ebx 11866; LINUX-32-PIC-NEXT: retl 11867; 11868; LINUX-64-PIC-LABEL: licaller: 11869; LINUX-64-PIC: # %bb.0: # %entry 11870; LINUX-64-PIC-NEXT: pushq %rax 11871; LINUX-64-PIC-NEXT: callq *lifunc(%rip) 11872; LINUX-64-PIC-NEXT: callq *lifunc(%rip) 11873; LINUX-64-PIC-NEXT: popq %rax 11874; LINUX-64-PIC-NEXT: retq 11875; 11876; DARWIN-32-STATIC-LABEL: licaller: 11877; DARWIN-32-STATIC: ## %bb.0: ## %entry 11878; DARWIN-32-STATIC-NEXT: subl $12, %esp 11879; DARWIN-32-STATIC-NEXT: calll *_lifunc 11880; DARWIN-32-STATIC-NEXT: calll *_lifunc 11881; DARWIN-32-STATIC-NEXT: addl $12, %esp 11882; DARWIN-32-STATIC-NEXT: retl 11883; 11884; DARWIN-32-DYNAMIC-LABEL: licaller: 11885; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 11886; DARWIN-32-DYNAMIC-NEXT: subl $12, %esp 11887; DARWIN-32-DYNAMIC-NEXT: calll *_lifunc 11888; DARWIN-32-DYNAMIC-NEXT: calll *_lifunc 11889; DARWIN-32-DYNAMIC-NEXT: addl $12, %esp 11890; DARWIN-32-DYNAMIC-NEXT: retl 11891; 11892; DARWIN-32-PIC-LABEL: licaller: 11893; DARWIN-32-PIC: ## %bb.0: ## %entry 11894; DARWIN-32-PIC-NEXT: pushl %esi 11895; DARWIN-32-PIC-NEXT: subl $8, %esp 11896; DARWIN-32-PIC-NEXT: calll L144$pb 11897; DARWIN-32-PIC-NEXT: L144$pb: 11898; DARWIN-32-PIC-NEXT: popl %esi 11899; DARWIN-32-PIC-NEXT: calll *_lifunc-L144$pb(%esi) 11900; DARWIN-32-PIC-NEXT: calll *_lifunc-L144$pb(%esi) 11901; DARWIN-32-PIC-NEXT: addl $8, %esp 11902; DARWIN-32-PIC-NEXT: popl %esi 11903; DARWIN-32-PIC-NEXT: retl 11904; 11905; DARWIN-64-STATIC-LABEL: licaller: 11906; DARWIN-64-STATIC: ## %bb.0: ## %entry 11907; DARWIN-64-STATIC-NEXT: pushq %rax 11908; DARWIN-64-STATIC-NEXT: callq *_lifunc(%rip) 11909; DARWIN-64-STATIC-NEXT: callq *_lifunc(%rip) 11910; DARWIN-64-STATIC-NEXT: popq %rax 11911; DARWIN-64-STATIC-NEXT: retq 11912; 11913; DARWIN-64-DYNAMIC-LABEL: licaller: 11914; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 11915; DARWIN-64-DYNAMIC-NEXT: pushq %rax 11916; DARWIN-64-DYNAMIC-NEXT: callq *_lifunc(%rip) 11917; DARWIN-64-DYNAMIC-NEXT: callq *_lifunc(%rip) 11918; DARWIN-64-DYNAMIC-NEXT: popq %rax 11919; DARWIN-64-DYNAMIC-NEXT: retq 11920; 11921; DARWIN-64-PIC-LABEL: licaller: 11922; DARWIN-64-PIC: ## %bb.0: ## %entry 11923; DARWIN-64-PIC-NEXT: pushq %rax 11924; DARWIN-64-PIC-NEXT: callq *_lifunc(%rip) 11925; DARWIN-64-PIC-NEXT: callq *_lifunc(%rip) 11926; DARWIN-64-PIC-NEXT: popq %rax 11927; DARWIN-64-PIC-NEXT: retq 11928 11929entry: 11930 %0 = load void ()*, void ()** @lifunc, align 8 11931 call void %0() nounwind 11932 %1 = load void ()*, void ()** @lifunc, align 8 11933 call void %1() nounwind 11934 ret void 11935} 11936 11937define dso_local void @itailcaller() nounwind { 11938; LINUX-64-STATIC-LABEL: itailcaller: 11939; LINUX-64-STATIC: # %bb.0: # %entry 11940; LINUX-64-STATIC-NEXT: pushq %rbx 11941; LINUX-64-STATIC-NEXT: movq ifunc@GOTPCREL(%rip), %rbx 11942; LINUX-64-STATIC-NEXT: callq *(%rbx) 11943; LINUX-64-STATIC-NEXT: callq *(%rbx) 11944; LINUX-64-STATIC-NEXT: popq %rbx 11945; LINUX-64-STATIC-NEXT: retq 11946; 11947; LINUX-32-STATIC-LABEL: itailcaller: 11948; LINUX-32-STATIC: # %bb.0: # %entry 11949; LINUX-32-STATIC-NEXT: subl $12, %esp 11950; LINUX-32-STATIC-NEXT: calll *ifunc 11951; LINUX-32-STATIC-NEXT: calll *ifunc 11952; LINUX-32-STATIC-NEXT: addl $12, %esp 11953; LINUX-32-STATIC-NEXT: retl 11954; 11955; LINUX-32-PIC-LABEL: itailcaller: 11956; LINUX-32-PIC: # %bb.0: # %entry 11957; LINUX-32-PIC-NEXT: pushl %ebx 11958; LINUX-32-PIC-NEXT: pushl %esi 11959; LINUX-32-PIC-NEXT: pushl %eax 11960; LINUX-32-PIC-NEXT: calll .L145$pb 11961; LINUX-32-PIC-NEXT: .L145$pb: 11962; LINUX-32-PIC-NEXT: popl %ebx 11963; LINUX-32-PIC-NEXT: .Ltmp145: 11964; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp145-.L145$pb), %ebx 11965; LINUX-32-PIC-NEXT: movl ifunc@GOT(%ebx), %esi 11966; LINUX-32-PIC-NEXT: calll *(%esi) 11967; LINUX-32-PIC-NEXT: calll *(%esi) 11968; LINUX-32-PIC-NEXT: addl $4, %esp 11969; LINUX-32-PIC-NEXT: popl %esi 11970; LINUX-32-PIC-NEXT: popl %ebx 11971; LINUX-32-PIC-NEXT: retl 11972; 11973; LINUX-64-PIC-LABEL: itailcaller: 11974; LINUX-64-PIC: # %bb.0: # %entry 11975; LINUX-64-PIC-NEXT: pushq %rbx 11976; LINUX-64-PIC-NEXT: movq ifunc@GOTPCREL(%rip), %rbx 11977; LINUX-64-PIC-NEXT: callq *(%rbx) 11978; LINUX-64-PIC-NEXT: callq *(%rbx) 11979; LINUX-64-PIC-NEXT: popq %rbx 11980; LINUX-64-PIC-NEXT: retq 11981; 11982; DARWIN-32-STATIC-LABEL: itailcaller: 11983; DARWIN-32-STATIC: ## %bb.0: ## %entry 11984; DARWIN-32-STATIC-NEXT: subl $12, %esp 11985; DARWIN-32-STATIC-NEXT: calll *_ifunc 11986; DARWIN-32-STATIC-NEXT: calll *_ifunc 11987; DARWIN-32-STATIC-NEXT: addl $12, %esp 11988; DARWIN-32-STATIC-NEXT: retl 11989; 11990; DARWIN-32-DYNAMIC-LABEL: itailcaller: 11991; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 11992; DARWIN-32-DYNAMIC-NEXT: pushl %esi 11993; DARWIN-32-DYNAMIC-NEXT: subl $8, %esp 11994; DARWIN-32-DYNAMIC-NEXT: movl L_ifunc$non_lazy_ptr, %esi 11995; DARWIN-32-DYNAMIC-NEXT: calll *(%esi) 11996; DARWIN-32-DYNAMIC-NEXT: calll *(%esi) 11997; DARWIN-32-DYNAMIC-NEXT: addl $8, %esp 11998; DARWIN-32-DYNAMIC-NEXT: popl %esi 11999; DARWIN-32-DYNAMIC-NEXT: retl 12000; 12001; DARWIN-32-PIC-LABEL: itailcaller: 12002; DARWIN-32-PIC: ## %bb.0: ## %entry 12003; DARWIN-32-PIC-NEXT: pushl %esi 12004; DARWIN-32-PIC-NEXT: subl $8, %esp 12005; DARWIN-32-PIC-NEXT: calll L145$pb 12006; DARWIN-32-PIC-NEXT: L145$pb: 12007; DARWIN-32-PIC-NEXT: popl %eax 12008; DARWIN-32-PIC-NEXT: movl L_ifunc$non_lazy_ptr-L145$pb(%eax), %esi 12009; DARWIN-32-PIC-NEXT: calll *(%esi) 12010; DARWIN-32-PIC-NEXT: calll *(%esi) 12011; DARWIN-32-PIC-NEXT: addl $8, %esp 12012; DARWIN-32-PIC-NEXT: popl %esi 12013; DARWIN-32-PIC-NEXT: retl 12014; 12015; DARWIN-64-STATIC-LABEL: itailcaller: 12016; DARWIN-64-STATIC: ## %bb.0: ## %entry 12017; DARWIN-64-STATIC-NEXT: pushq %rbx 12018; DARWIN-64-STATIC-NEXT: movq _ifunc@GOTPCREL(%rip), %rbx 12019; DARWIN-64-STATIC-NEXT: callq *(%rbx) 12020; DARWIN-64-STATIC-NEXT: callq *(%rbx) 12021; DARWIN-64-STATIC-NEXT: popq %rbx 12022; DARWIN-64-STATIC-NEXT: retq 12023; 12024; DARWIN-64-DYNAMIC-LABEL: itailcaller: 12025; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 12026; DARWIN-64-DYNAMIC-NEXT: pushq %rbx 12027; DARWIN-64-DYNAMIC-NEXT: movq _ifunc@GOTPCREL(%rip), %rbx 12028; DARWIN-64-DYNAMIC-NEXT: callq *(%rbx) 12029; DARWIN-64-DYNAMIC-NEXT: callq *(%rbx) 12030; DARWIN-64-DYNAMIC-NEXT: popq %rbx 12031; DARWIN-64-DYNAMIC-NEXT: retq 12032; 12033; DARWIN-64-PIC-LABEL: itailcaller: 12034; DARWIN-64-PIC: ## %bb.0: ## %entry 12035; DARWIN-64-PIC-NEXT: pushq %rbx 12036; DARWIN-64-PIC-NEXT: movq _ifunc@GOTPCREL(%rip), %rbx 12037; DARWIN-64-PIC-NEXT: callq *(%rbx) 12038; DARWIN-64-PIC-NEXT: callq *(%rbx) 12039; DARWIN-64-PIC-NEXT: popq %rbx 12040; DARWIN-64-PIC-NEXT: retq 12041 12042entry: 12043 %0 = load void ()*, void ()** @ifunc, align 8 12044 call void %0() nounwind 12045 %1 = load void ()*, void ()** @ifunc, align 8 12046 call void %1() nounwind 12047 ret void 12048} 12049 12050define dso_local void @ditailcaller() nounwind { 12051; LINUX-64-STATIC-LABEL: ditailcaller: 12052; LINUX-64-STATIC: # %bb.0: # %entry 12053; LINUX-64-STATIC-NEXT: pushq %rax 12054; LINUX-64-STATIC-NEXT: callq *difunc(%rip) 12055; LINUX-64-STATIC-NEXT: popq %rax 12056; LINUX-64-STATIC-NEXT: retq 12057; 12058; LINUX-32-STATIC-LABEL: ditailcaller: 12059; LINUX-32-STATIC: # %bb.0: # %entry 12060; LINUX-32-STATIC-NEXT: subl $12, %esp 12061; LINUX-32-STATIC-NEXT: calll *difunc 12062; LINUX-32-STATIC-NEXT: addl $12, %esp 12063; LINUX-32-STATIC-NEXT: retl 12064; 12065; LINUX-32-PIC-LABEL: ditailcaller: 12066; LINUX-32-PIC: # %bb.0: # %entry 12067; LINUX-32-PIC-NEXT: pushl %ebx 12068; LINUX-32-PIC-NEXT: subl $8, %esp 12069; LINUX-32-PIC-NEXT: calll .L146$pb 12070; LINUX-32-PIC-NEXT: .L146$pb: 12071; LINUX-32-PIC-NEXT: popl %ebx 12072; LINUX-32-PIC-NEXT: .Ltmp146: 12073; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp146-.L146$pb), %ebx 12074; LINUX-32-PIC-NEXT: calll *.Ldifunc$local@GOTOFF(%ebx) 12075; LINUX-32-PIC-NEXT: addl $8, %esp 12076; LINUX-32-PIC-NEXT: popl %ebx 12077; LINUX-32-PIC-NEXT: retl 12078; 12079; LINUX-64-PIC-LABEL: ditailcaller: 12080; LINUX-64-PIC: # %bb.0: # %entry 12081; LINUX-64-PIC-NEXT: pushq %rax 12082; LINUX-64-PIC-NEXT: callq *.Ldifunc$local(%rip) 12083; LINUX-64-PIC-NEXT: popq %rax 12084; LINUX-64-PIC-NEXT: retq 12085; 12086; DARWIN-32-STATIC-LABEL: ditailcaller: 12087; DARWIN-32-STATIC: ## %bb.0: ## %entry 12088; DARWIN-32-STATIC-NEXT: subl $12, %esp 12089; DARWIN-32-STATIC-NEXT: calll *_difunc 12090; DARWIN-32-STATIC-NEXT: addl $12, %esp 12091; DARWIN-32-STATIC-NEXT: retl 12092; 12093; DARWIN-32-DYNAMIC-LABEL: ditailcaller: 12094; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 12095; DARWIN-32-DYNAMIC-NEXT: subl $12, %esp 12096; DARWIN-32-DYNAMIC-NEXT: calll *_difunc 12097; DARWIN-32-DYNAMIC-NEXT: addl $12, %esp 12098; DARWIN-32-DYNAMIC-NEXT: retl 12099; 12100; DARWIN-32-PIC-LABEL: ditailcaller: 12101; DARWIN-32-PIC: ## %bb.0: ## %entry 12102; DARWIN-32-PIC-NEXT: subl $12, %esp 12103; DARWIN-32-PIC-NEXT: calll L146$pb 12104; DARWIN-32-PIC-NEXT: L146$pb: 12105; DARWIN-32-PIC-NEXT: popl %eax 12106; DARWIN-32-PIC-NEXT: calll *_difunc-L146$pb(%eax) 12107; DARWIN-32-PIC-NEXT: addl $12, %esp 12108; DARWIN-32-PIC-NEXT: retl 12109; 12110; DARWIN-64-STATIC-LABEL: ditailcaller: 12111; DARWIN-64-STATIC: ## %bb.0: ## %entry 12112; DARWIN-64-STATIC-NEXT: pushq %rax 12113; DARWIN-64-STATIC-NEXT: callq *_difunc(%rip) 12114; DARWIN-64-STATIC-NEXT: popq %rax 12115; DARWIN-64-STATIC-NEXT: retq 12116; 12117; DARWIN-64-DYNAMIC-LABEL: ditailcaller: 12118; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 12119; DARWIN-64-DYNAMIC-NEXT: pushq %rax 12120; DARWIN-64-DYNAMIC-NEXT: callq *_difunc(%rip) 12121; DARWIN-64-DYNAMIC-NEXT: popq %rax 12122; DARWIN-64-DYNAMIC-NEXT: retq 12123; 12124; DARWIN-64-PIC-LABEL: ditailcaller: 12125; DARWIN-64-PIC: ## %bb.0: ## %entry 12126; DARWIN-64-PIC-NEXT: pushq %rax 12127; DARWIN-64-PIC-NEXT: callq *_difunc(%rip) 12128; DARWIN-64-PIC-NEXT: popq %rax 12129; DARWIN-64-PIC-NEXT: retq 12130 12131entry: 12132 %0 = load void ()*, void ()** @difunc, align 8 12133 call void %0() nounwind 12134 ret void 12135} 12136 12137define dso_local void @litailcaller() nounwind { 12138; LINUX-64-STATIC-LABEL: litailcaller: 12139; LINUX-64-STATIC: # %bb.0: # %entry 12140; LINUX-64-STATIC-NEXT: pushq %rax 12141; LINUX-64-STATIC-NEXT: callq *lifunc(%rip) 12142; LINUX-64-STATIC-NEXT: popq %rax 12143; LINUX-64-STATIC-NEXT: retq 12144; 12145; LINUX-32-STATIC-LABEL: litailcaller: 12146; LINUX-32-STATIC: # %bb.0: # %entry 12147; LINUX-32-STATIC-NEXT: subl $12, %esp 12148; LINUX-32-STATIC-NEXT: calll *lifunc 12149; LINUX-32-STATIC-NEXT: addl $12, %esp 12150; LINUX-32-STATIC-NEXT: retl 12151; 12152; LINUX-32-PIC-LABEL: litailcaller: 12153; LINUX-32-PIC: # %bb.0: # %entry 12154; LINUX-32-PIC-NEXT: pushl %ebx 12155; LINUX-32-PIC-NEXT: subl $8, %esp 12156; LINUX-32-PIC-NEXT: calll .L147$pb 12157; LINUX-32-PIC-NEXT: .L147$pb: 12158; LINUX-32-PIC-NEXT: popl %ebx 12159; LINUX-32-PIC-NEXT: .Ltmp147: 12160; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp147-.L147$pb), %ebx 12161; LINUX-32-PIC-NEXT: calll *lifunc@GOTOFF(%ebx) 12162; LINUX-32-PIC-NEXT: addl $8, %esp 12163; LINUX-32-PIC-NEXT: popl %ebx 12164; LINUX-32-PIC-NEXT: retl 12165; 12166; LINUX-64-PIC-LABEL: litailcaller: 12167; LINUX-64-PIC: # %bb.0: # %entry 12168; LINUX-64-PIC-NEXT: pushq %rax 12169; LINUX-64-PIC-NEXT: callq *lifunc(%rip) 12170; LINUX-64-PIC-NEXT: popq %rax 12171; LINUX-64-PIC-NEXT: retq 12172; 12173; DARWIN-32-STATIC-LABEL: litailcaller: 12174; DARWIN-32-STATIC: ## %bb.0: ## %entry 12175; DARWIN-32-STATIC-NEXT: subl $12, %esp 12176; DARWIN-32-STATIC-NEXT: calll *_lifunc 12177; DARWIN-32-STATIC-NEXT: addl $12, %esp 12178; DARWIN-32-STATIC-NEXT: retl 12179; 12180; DARWIN-32-DYNAMIC-LABEL: litailcaller: 12181; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 12182; DARWIN-32-DYNAMIC-NEXT: subl $12, %esp 12183; DARWIN-32-DYNAMIC-NEXT: calll *_lifunc 12184; DARWIN-32-DYNAMIC-NEXT: addl $12, %esp 12185; DARWIN-32-DYNAMIC-NEXT: retl 12186; 12187; DARWIN-32-PIC-LABEL: litailcaller: 12188; DARWIN-32-PIC: ## %bb.0: ## %entry 12189; DARWIN-32-PIC-NEXT: subl $12, %esp 12190; DARWIN-32-PIC-NEXT: calll L147$pb 12191; DARWIN-32-PIC-NEXT: L147$pb: 12192; DARWIN-32-PIC-NEXT: popl %eax 12193; DARWIN-32-PIC-NEXT: calll *_lifunc-L147$pb(%eax) 12194; DARWIN-32-PIC-NEXT: addl $12, %esp 12195; DARWIN-32-PIC-NEXT: retl 12196; 12197; DARWIN-64-STATIC-LABEL: litailcaller: 12198; DARWIN-64-STATIC: ## %bb.0: ## %entry 12199; DARWIN-64-STATIC-NEXT: pushq %rax 12200; DARWIN-64-STATIC-NEXT: callq *_lifunc(%rip) 12201; DARWIN-64-STATIC-NEXT: popq %rax 12202; DARWIN-64-STATIC-NEXT: retq 12203; 12204; DARWIN-64-DYNAMIC-LABEL: litailcaller: 12205; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 12206; DARWIN-64-DYNAMIC-NEXT: pushq %rax 12207; DARWIN-64-DYNAMIC-NEXT: callq *_lifunc(%rip) 12208; DARWIN-64-DYNAMIC-NEXT: popq %rax 12209; DARWIN-64-DYNAMIC-NEXT: retq 12210; 12211; DARWIN-64-PIC-LABEL: litailcaller: 12212; DARWIN-64-PIC: ## %bb.0: ## %entry 12213; DARWIN-64-PIC-NEXT: pushq %rax 12214; DARWIN-64-PIC-NEXT: callq *_lifunc(%rip) 12215; DARWIN-64-PIC-NEXT: popq %rax 12216; DARWIN-64-PIC-NEXT: retq 12217 12218entry: 12219 %0 = load void ()*, void ()** @lifunc, align 8 12220 call void %0() nounwind 12221 ret void 12222} 12223