brintos

brintos / llvm-project-archived public Read only

0
0
Text · 8.2 KiB · bc5e3ec Raw
166 lines · plain
1; RUN: opt -module-summary %s -o %t1.bc2; RUN: opt -module-summary %p/Inputs/alias_import.ll -o %t2.bc3; RUN: llvm-lto -thinlto-action=thinlink -o %t.index.bc %t1.bc %t2.bc4; RUN: llvm-lto -thinlto-action=promote -thinlto-index %t.index.bc %t2.bc -o - | llvm-dis -o - | FileCheck -allow-deprecated-dag-overlap %s --check-prefix=PROMOTE5; RUN: llvm-lto -thinlto-action=import -thinlto-index %t.index.bc %t1.bc -o - | llvm-dis -o - | FileCheck -allow-deprecated-dag-overlap %s --check-prefix=IMPORT6 7; Alias can't point to "available_externally", so they are implemented by8; importing the alias as an available_externally definition copied from the9; aliasee's body.10; PROMOTE-DAG: @globalfuncAlias = alias void (...), ptr @globalfunc11; PROMOTE-DAG: @globalfuncWeakAlias = weak alias void (...), ptr @globalfunc12; PROMOTE-DAG: @globalfuncLinkonceAlias = weak alias void (...), ptr @globalfunc13; PROMOTE-DAG: @globalfuncWeakODRAlias = weak_odr alias void (...), ptr @globalfunc14; PROMOTE-DAG: @globalfuncLinkonceODRAlias = weak_odr alias void (...), ptr @globalfunc15; PROMOTE-DAG: @internalfuncAlias = alias void (...), ptr @internalfunc16; PROMOTE-DAG: @internalfuncWeakAlias = weak alias void (...), ptr @internalfunc17; PROMOTE-DAG: @internalfuncLinkonceAlias = weak alias void (...), ptr @internalfunc18; PROMOTE-DAG: @internalfuncWeakODRAlias = weak_odr alias void (...), ptr @internalfunc19; PROMOTE-DAG: @internalfuncLinkonceODRAlias = weak_odr alias void (...), ptr @internalfunc20; PROMOTE-DAG: @linkoncefuncAlias = alias void (...), ptr @linkoncefunc21; PROMOTE-DAG: @linkoncefuncWeakAlias = weak alias void (...), ptr @linkoncefunc22; PROMOTE-DAG: @linkoncefuncLinkonceAlias = weak alias void (...), ptr @linkoncefunc23; PROMOTE-DAG: @linkoncefuncWeakODRAlias = weak_odr alias void (...), ptr @linkoncefunc24; PROMOTE-DAG: @linkoncefuncLinkonceODRAlias = weak_odr alias void (...), ptr @linkoncefunc25; PROMOTE-DAG: @weakfuncAlias = alias void (...), ptr @weakfunc26; PROMOTE-DAG: @weakfuncWeakAlias = weak alias void (...), ptr @weakfunc27; PROMOTE-DAG: @weakfuncLinkonceAlias = weak alias void (...), ptr @weakfunc28; PROMOTE-DAG: @weakfuncWeakODRAlias = weak_odr alias void (...), ptr @weakfunc29; PROMOTE-DAG: @weakfuncLinkonceODRAlias = weak_odr alias void (...), ptr @weakfunc30; PROMOTE-DAG: @weakODRfuncAlias = alias void (...), ptr @weakODRfunc31; PROMOTE-DAG: @weakODRfuncWeakAlias = weak alias void (...), ptr @weakODRfunc32; PROMOTE-DAG: @weakODRfuncLinkonceAlias = weak alias void (...), ptr @weakODRfunc33; PROMOTE-DAG: @weakODRfuncWeakODRAlias = weak_odr alias void (...), ptr @weakODRfunc34; PROMOTE-DAG: @weakODRfuncLinkonceODRAlias = weak_odr alias void (...), ptr @weakODRfunc35; PROMOTE-DAG: @linkonceODRfuncAlias = alias void (...), ptr @linkonceODRfunc36; PROMOTE-DAG: @linkonceODRfuncWeakAlias = weak alias void (...), ptr @linkonceODRfunc37; PROMOTE-DAG: @linkonceODRfuncWeakODRAlias = weak_odr alias void (...), ptr @linkonceODRfunc38; PROMOTE-DAG: @linkonceODRfuncLinkonceAlias = weak alias void (...), ptr @linkonceODRfunc39; PROMOTE-DAG: @linkonceODRfuncLinkonceODRAlias = weak_odr alias void (...), ptr @linkonceODRfunc40 41; PROMOTE-DAG: define hidden void @globalfunc()42; PROMOTE-DAG: define internal void @internalfunc()43; PROMOTE-DAG: define weak_odr void @linkonceODRfunc()44; PROMOTE-DAG: define weak_odr void @weakODRfunc()45; PROMOTE-DAG: define weak void @linkoncefunc()46; PROMOTE-DAG: define weak void @weakfunc()47 48; On the import side now, verify that aliases are imported unless they49; are preemptible (non-ODR weak/linkonce).50; IMPORT-DAG: declare void @linkonceODRfuncWeakAlias51; IMPORT-DAG: declare void @linkonceODRfuncLinkonceAlias52; IMPORT-DAG: define available_externally void @linkonceODRfuncAlias53; IMPORT-DAG: define available_externally void @linkonceODRfuncWeakODRAlias54; IMPORT-DAG: define available_externally void @linkonceODRfuncLinkonceODRAlias55; IMPORT-DAG: define available_externally dso_local void @globalfuncAlias()56; IMPORT-DAG: declare void @globalfuncWeakAlias()57; IMPORT-DAG: declare void @globalfuncLinkonceAlias()58; IMPORT-DAG: define available_externally dso_local void @globalfuncWeakODRAlias()59; IMPORT-DAG: define available_externally dso_local void @globalfuncLinkonceODRAlias()60; IMPORT-DAG: define available_externally dso_local void @internalfuncAlias()61; IMPORT-DAG: declare void @internalfuncWeakAlias()62; IMPORT-DAG: declare void @internalfuncLinkonceAlias()63; IMPORT-DAG: define available_externally dso_local void @internalfuncWeakODRAlias()64; IMPORT-DAG: define available_externally dso_local void @internalfuncLinkonceODRAlias()65; IMPORT-DAG: define available_externally void @weakODRfuncAlias()66; IMPORT-DAG: declare void @weakODRfuncWeakAlias()67; IMPORT-DAG: declare void @weakODRfuncLinkonceAlias()68; IMPORT-DAG: define available_externally void @weakODRfuncWeakODRAlias()69; IMPORT-DAG: define available_externally void @weakODRfuncLinkonceODRAlias()70; IMPORT-DAG: define available_externally void @linkoncefuncAlias()71; IMPORT-DAG: declare void @linkoncefuncWeakAlias()72; IMPORT-DAG: declare void @linkoncefuncLinkonceAlias()73; IMPORT-DAG: define available_externally void @linkoncefuncWeakODRAlias()74; IMPORT-DAG: define available_externally void @linkoncefuncLinkonceODRAlias()75; IMPORT-DAG: define available_externally void @weakfuncAlias()76; IMPORT-DAG: declare void @weakfuncWeakAlias()77; IMPORT-DAG: declare void @weakfuncLinkonceAlias()78; IMPORT-DAG: define available_externally void @weakfuncWeakODRAlias()79; IMPORT-DAG: define available_externally void @weakfuncLinkonceODRAlias()80; IMPORT-DAG: define available_externally void @linkonceODRfuncAlias()81; IMPORT-DAG: declare void @linkonceODRfuncWeakAlias()82; IMPORT-DAG: define available_externally void @linkonceODRfuncWeakODRAlias()83; IMPORT-DAG: declare void @linkonceODRfuncLinkonceAlias()84; IMPORT-DAG: define available_externally void @linkonceODRfuncLinkonceODRAlias()85 86target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"87 88define i32 @main() #0 {89entry:90  call void @globalfuncAlias()91  call void @globalfuncWeakAlias()92  call void @globalfuncLinkonceAlias()93  call void @globalfuncWeakODRAlias()94  call void @globalfuncLinkonceODRAlias()95 96  call void @internalfuncAlias()97  call void @internalfuncWeakAlias()98  call void @internalfuncLinkonceAlias()99  call void @internalfuncWeakODRAlias()100  call void @internalfuncLinkonceODRAlias()101  call void @linkonceODRfuncAlias()102  call void @linkonceODRfuncWeakAlias()103  call void @linkonceODRfuncLinkonceAlias()104  call void @linkonceODRfuncWeakODRAlias()105  call void @linkonceODRfuncLinkonceODRAlias()106 107  call void @weakODRfuncAlias()108  call void @weakODRfuncWeakAlias()109  call void @weakODRfuncLinkonceAlias()110  call void @weakODRfuncWeakODRAlias()111  call void @weakODRfuncLinkonceODRAlias()112 113  call void @linkoncefuncAlias()114  call void @linkoncefuncWeakAlias()115  call void @linkoncefuncLinkonceAlias()116  call void @linkoncefuncWeakODRAlias()117  call void @linkoncefuncLinkonceODRAlias()118 119  call void @weakfuncAlias()120  call void @weakfuncWeakAlias()121  call void @weakfuncLinkonceAlias()122  call void @weakfuncWeakODRAlias()123  call void @weakfuncLinkonceODRAlias()124 125  ret i32 0126}127 128 129declare void @globalfuncAlias()130declare void @globalfuncWeakAlias()131declare void @globalfuncLinkonceAlias()132declare void @globalfuncWeakODRAlias()133declare void @globalfuncLinkonceODRAlias()134 135declare void @internalfuncAlias()136declare void @internalfuncWeakAlias()137declare void @internalfuncLinkonceAlias()138declare void @internalfuncWeakODRAlias()139declare void @internalfuncLinkonceODRAlias()140 141declare void @linkonceODRfuncAlias()142declare void @linkonceODRfuncWeakAlias()143declare void @linkonceODRfuncLinkonceAlias()144declare void @linkonceODRfuncWeakODRAlias()145declare void @linkonceODRfuncLinkonceODRAlias()146 147declare void @weakODRfuncAlias()148declare void @weakODRfuncWeakAlias()149declare void @weakODRfuncLinkonceAlias()150declare void @weakODRfuncWeakODRAlias()151declare void @weakODRfuncLinkonceODRAlias()152 153declare void @linkoncefuncAlias()154declare void @linkoncefuncWeakAlias()155declare void @linkoncefuncLinkonceAlias()156declare void @linkoncefuncWeakODRAlias()157declare void @linkoncefuncLinkonceODRAlias()158 159declare void @weakfuncAlias()160declare void @weakfuncWeakAlias()161declare void @weakfuncLinkonceAlias()162declare void @weakfuncWeakODRAlias()163declare void @weakfuncLinkonceODRAlias()164 165 166