brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.2 KiB · f4ff766 Raw
125 lines · plain
1; RUN: split-file %s %t2; RUN: opt -module-summary %t/a.ll -o %t/a.bc3; RUN: opt -module-summary %t/b.ll -o %t/b.bc4 5;; With a small limit, *_aux are either imported declarations (external/linkonce_odr/weak_odr)6;; or unimported (linkonce/weak). Check we discard dso_local.7; RUN: llvm-lto2 run %t/a.bc %t/b.bc -o %t1 -save-temps -import-instr-limit=3 \8; RUN:   -r=%t/a.bc,main,plx -r=%t/a.bc,extern, -r=%t/a.bc,linkonce, -r=%t/a.bc,linkonceodr, -r=%t/a.bc,weak, -r=%t/a.bc,weakodr, \9; RUN:   -r=%t/b.bc,a,pl -r=%t/b.bc,b,pl -r=%t/b.bc,extern,pl -r=%t/b.bc,extern_aux,pl \10; RUN:   -r=%t/b.bc,linkonce,pl -r=%t/b.bc,linkonce_aux,pl -r=%t/b.bc,linkonceodr,pl -r=%t/b.bc,linkonceodr_aux,pl \11; RUN:   -r=%t/b.bc,weak,pl -r=%t/b.bc,weak_aux,pl -r=%t/b.bc,weakodr,pl -r=%t/b.bc,weakodr_aux,pl12; RUN: llvm-dis %t1.1.3.import.bc -o - | FileCheck %s --check-prefixes=DEST,DEST113 14;; With a large limit, *_aux are either imported definitions (external/linkonce_odr/weak_odr)15;; or unimported (linkonce/weak). Check we discard dso_local as well.16; RUN: llvm-lto2 run %t/a.bc %t/b.bc -o %t2 -save-temps -import-instr-limit=10 \17; RUN:   -r=%t/a.bc,main,plx -r=%t/a.bc,extern, -r=%t/a.bc,linkonce, -r=%t/a.bc,linkonceodr, -r=%t/a.bc,weak, -r=%t/a.bc,weakodr, \18; RUN:   -r=%t/b.bc,a,pl -r=%t/b.bc,b,pl -r=%t/b.bc,extern,pl -r=%t/b.bc,extern_aux,pl \19; RUN:   -r=%t/b.bc,linkonce,pl -r=%t/b.bc,linkonce_aux,pl -r=%t/b.bc,linkonceodr,pl -r=%t/b.bc,linkonceodr_aux,pl \20; RUN:   -r=%t/b.bc,weak,pl -r=%t/b.bc,weak_aux,pl -r=%t/b.bc,weakodr,pl -r=%t/b.bc,weakodr_aux,pl21; RUN: llvm-dis %t2.1.3.import.bc -o - | FileCheck %s --check-prefixes=DEST,DEST222 23; DEST:      @a = available_externally global i32 42, align 424; DEST-NEXT: @b = external global ptr, align 825; DEST:      declare void @linkonce()26; DEST:      declare void @weak()27; DEST:      define dso_local i32 @main()28; DEST:      define available_externally void @extern()29 30; DEST1:     declare i32 @extern_aux(ptr, ptr)31; DEST1:     declare i32 @linkonceodr_aux(ptr, ptr)32; DEST2:     define available_externally i32 @extern_aux(ptr %a, ptr %b)33; DEST2:     define available_externally i32 @linkonceodr_aux(ptr %a, ptr %b)34 35; DEST:      define available_externally void @weakodr()36 37; DEST1:     declare i32 @weakodr_aux(ptr, ptr)38; DEST2:     define available_externally i32 @weakodr_aux(ptr %a, ptr %b)39 40;--- a.ll41target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"42target triple = "x86_64-unknown-linux-gnu"43 44declare void @extern()45declare void @linkonce()46declare void @linkonceodr()47declare void @weak()48declare void @weakodr()49 50define i32 @main() {51  call void @extern()52  call void @linkonce()53  call void @linkonceodr()54  call void @weak()55  call void @weakodr()56  ret i32 057}58 59;--- b.ll60target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"61target triple = "x86_64-unknown-linux-gnu"62 63@a = dso_local global i32 42, align 464@b = dso_local global ptr @a, align 865 66define dso_local void @extern() {67  call i32 @extern_aux(ptr @a, ptr @b)68  ret void69}70 71define dso_local i32 @extern_aux(ptr %a, ptr %b) {72  %p = load ptr, ptr %b, align 873  store i32 33, ptr %p, align 474  %v = load i32, ptr %a, align 475  ret i32 %v76}77 78define linkonce dso_local void @linkonce() {79  call i32 @linkonce_aux(ptr @a, ptr @b)80  ret void81}82 83define linkonce i32 @linkonce_aux(ptr %a, ptr %b) {84  %p = load ptr, ptr %b, align 885  store i32 33, ptr %p, align 486  %v = load i32, ptr %a, align 487  ret i32 %v88}89 90define linkonce_odr dso_local void @linkonceodr() {91  call i32 @linkonceodr_aux(ptr @a, ptr @b)92  ret void93}94 95define linkonce_odr i32 @linkonceodr_aux(ptr %a, ptr %b) {96  %p = load ptr, ptr %b, align 897  store i32 33, ptr %p, align 498  %v = load i32, ptr %a, align 499  ret i32 %v100}101 102define weak dso_local void @weak() {103  call i32 @weak_aux(ptr @a, ptr @b)104  ret void105}106 107define weak i32 @weak_aux(ptr %a, ptr %b) {108  %p = load ptr, ptr %b, align 8109  store i32 33, ptr %p, align 4110  %v = load i32, ptr %a, align 4111  ret i32 %v112}113 114define weak_odr dso_local void @weakodr() {115  call i32 @weakodr_aux(ptr @a, ptr @b)116  ret void117}118 119define weak_odr i32 @weakodr_aux(ptr %a, ptr %b) {120  %p = load ptr, ptr %b, align 8121  store i32 33, ptr %p, align 4122  %v = load i32, ptr %a, align 4123  ret i32 %v124}125