diff options
author | Charles Saternos <charles.saternos@gmail.com> | 2017-08-04 16:00:58 +0000 |
---|---|---|
committer | Charles Saternos <charles.saternos@gmail.com> | 2017-08-04 16:00:58 +0000 |
commit | 4c314d6d3012bf82b496873e1aef9b5f8ece6c6a (patch) | |
tree | fb711fa2e18a307ac772c95975cbbd54a49a1632 /test/Bitcode | |
parent | 4e29225d159ad62fed5f0b7f8e11843b53e573fd (diff) |
[ThinLTO] Add FunctionAttrs to ThinLTO index
Adds function attributes to index: ReadNone, ReadOnly, NoRecurse, NoAlias. This attributes will be used for future ThinLTO optimizations that will propagate function attributes across modules.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@310061 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/Bitcode')
-rw-r--r-- | test/Bitcode/summary_version.ll | 2 | ||||
-rw-r--r-- | test/Bitcode/thinlto-alias.ll | 4 | ||||
-rw-r--r-- | test/Bitcode/thinlto-alias2.ll | 2 | ||||
-rw-r--r-- | test/Bitcode/thinlto-function-summary-callgraph-pgo.ll | 4 | ||||
-rw-r--r-- | test/Bitcode/thinlto-function-summary-callgraph-profile-summary.ll | 4 | ||||
-rw-r--r-- | test/Bitcode/thinlto-function-summary-callgraph-sample-profile-summary.ll | 4 | ||||
-rw-r--r-- | test/Bitcode/thinlto-function-summary-callgraph.ll | 4 | ||||
-rw-r--r-- | test/Bitcode/thinlto-function-summary-functionattrs.ll | 27 | ||||
-rw-r--r-- | test/Bitcode/thinlto-function-summary-refgraph.ll | 10 |
9 files changed, 44 insertions, 17 deletions
diff --git a/test/Bitcode/summary_version.ll b/test/Bitcode/summary_version.ll index 81025a221bb1..b285da7a6f4e 100644 --- a/test/Bitcode/summary_version.ll +++ b/test/Bitcode/summary_version.ll @@ -2,7 +2,7 @@ ; RUN: opt -module-summary %s -o - | llvm-bcanalyzer -dump | FileCheck %s ; CHECK: <GLOBALVAL_SUMMARY_BLOCK -; CHECK: <VERSION op0=3/> +; CHECK: <VERSION op0=4/> diff --git a/test/Bitcode/thinlto-alias.ll b/test/Bitcode/thinlto-alias.ll index 81fbb767ba94..668c5cd22dc6 100644 --- a/test/Bitcode/thinlto-alias.ll +++ b/test/Bitcode/thinlto-alias.ll @@ -14,7 +14,7 @@ ; CHECK-NEXT: <VERSION ; See if the call to func is registered. ; The value id 1 matches the second FUNCTION record above. -; CHECK-NEXT: <PERMODULE {{.*}} op4=1/> +; CHECK-NEXT: <PERMODULE {{.*}} op5=1/> ; CHECK-NEXT: </GLOBALVAL_SUMMARY_BLOCK> ; CHECK: <STRTAB_BLOCK @@ -26,7 +26,7 @@ ; COMBINED-NEXT: <VALUE_GUID op0=[[ALIASID:[0-9]+]] op1=-5751648690987223394/> ; COMBINED-NEXT: <VALUE_GUID ; COMBINED-NEXT: <VALUE_GUID op0=[[ALIASEEID:[0-9]+]] op1=-1039159065113703048/> -; COMBINED-NEXT: <COMBINED {{.*}} op5=[[ALIASID]]/> +; COMBINED-NEXT: <COMBINED {{.*}} op6=[[ALIASID]]/> ; COMBINED-NEXT: <COMBINED {{.*}} ; COMBINED-NEXT: <COMBINED_ALIAS {{.*}} op3=[[ALIASEEID]] ; COMBINED-NEXT: </GLOBALVAL_SUMMARY_BLOCK diff --git a/test/Bitcode/thinlto-alias2.ll b/test/Bitcode/thinlto-alias2.ll index d2b7f723fa44..90e886570d8f 100644 --- a/test/Bitcode/thinlto-alias2.ll +++ b/test/Bitcode/thinlto-alias2.ll @@ -4,7 +4,7 @@ ; CHECK: <GLOBALVAL_SUMMARY_BLOCK ; CHECK-NEXT: <VERSION -; CHECK-NEXT: <PERMODULE {{.*}} op3=0 op4=[[ALIASID:[0-9]+]]/> +; CHECK-NEXT: <PERMODULE {{.*}} op4=0 op5=[[ALIASID:[0-9]+]]/> ; CHECK-NEXT: <PERMODULE {{.*}} op0=[[ALIASEEID:[0-9]+]] ; CHECK-NEXT: <ALIAS {{.*}} op0=[[ALIASID]] {{.*}} op2=[[ALIASEEID]]/> ; CHECK-NEXT: </GLOBALVAL_SUMMARY_BLOCK> diff --git a/test/Bitcode/thinlto-function-summary-callgraph-pgo.ll b/test/Bitcode/thinlto-function-summary-callgraph-pgo.ll index ef5fb36d8e05..9376e8017659 100644 --- a/test/Bitcode/thinlto-function-summary-callgraph-pgo.ll +++ b/test/Bitcode/thinlto-function-summary-callgraph-pgo.ll @@ -17,7 +17,7 @@ ; CHECK: <GLOBALVAL_SUMMARY_BLOCK ; CHECK-NEXT: <VERSION ; See if the call to func is registered, using the expected hotness type. -; CHECK-NEXT: <PERMODULE_PROFILE {{.*}} op4=1 op5=2/> +; CHECK-NEXT: <PERMODULE_PROFILE {{.*}} op5=1 op6=2/> ; CHECK-NEXT: </GLOBALVAL_SUMMARY_BLOCK> ; CHECK: <STRTAB_BLOCK ; CHECK-NEXT: blob data = 'mainfunc{{.*}}' @@ -29,7 +29,7 @@ ; COMBINED-NEXT: <COMBINED ; See if the call to func is registered, using the expected hotness type. ; op6=2 which is hotnessType::None. -; COMBINED-NEXT: <COMBINED_PROFILE {{.*}} op5=[[FUNCID]] op6=2/> +; COMBINED-NEXT: <COMBINED_PROFILE {{.*}} op6=[[FUNCID]] op7=2/> ; COMBINED-NEXT: </GLOBALVAL_SUMMARY_BLOCK> ; ModuleID = 'thinlto-function-summary-callgraph.ll' diff --git a/test/Bitcode/thinlto-function-summary-callgraph-profile-summary.ll b/test/Bitcode/thinlto-function-summary-callgraph-profile-summary.ll index 86766f194688..d0cfa093ecdf 100644 --- a/test/Bitcode/thinlto-function-summary-callgraph-profile-summary.ll +++ b/test/Bitcode/thinlto-function-summary-callgraph-profile-summary.ll @@ -29,7 +29,7 @@ ; CHECK-NEXT: <VERSION ; CHECK-NEXT: <VALUE_GUID op0=25 op1=123/> ; op4=hot1 op6=cold op8=hot2 op10=hot4 op12=none1 op14=hot3 op16=none2 op18=none3 op20=123 -; CHECK-NEXT: <PERMODULE_PROFILE {{.*}} op4=1 op5=3 op6=5 op7=1 op8=2 op9=3 op10=4 op11=1 op12=6 op13=2 op14=3 op15=3 op16=7 op17=2 op18=8 op19=2 op20=25 op21=4/> +; CHECK-NEXT: <PERMODULE_PROFILE {{.*}} op5=1 op6=3 op7=5 op8=1 op9=2 op10=3 op11=4 op12=1 op13=6 op14=2 op15=3 op16=3 op17=7 op18=2 op19=8 op20=2 op21=25 op22=4/> ; CHECK-NEXT: </GLOBALVAL_SUMMARY_BLOCK> ; CHECK: <STRTAB_BLOCK @@ -51,7 +51,7 @@ ; COMBINED-NEXT: <COMBINED abbrevid= ; COMBINED-NEXT: <COMBINED abbrevid= ; COMBINED-NEXT: <COMBINED abbrevid= -; COMBINED-NEXT: <COMBINED_PROFILE {{.*}} op5=[[HOT1:.*]] op6=3 op7=[[COLD:.*]] op8=1 op9=[[HOT2:.*]] op10=3 op11=[[NONE1:.*]] op12=2 op13=[[HOT3:.*]] op14=3 op15=[[NONE2:.*]] op16=2 op17=[[NONE3:.*]] op18=2/> +; COMBINED-NEXT: <COMBINED_PROFILE {{.*}} op6=[[HOT1:.*]] op7=3 op8=[[COLD:.*]] op9=1 op10=[[HOT2:.*]] op11=3 op12=[[NONE1:.*]] op13=2 op14=[[HOT3:.*]] op15=3 op16=[[NONE2:.*]] op17=2 op18=[[NONE3:.*]] op19=2/> ; COMBINED_NEXT: <COMBINED abbrevid= ; COMBINED_NEXT: </GLOBALVAL_SUMMARY_BLOCK> diff --git a/test/Bitcode/thinlto-function-summary-callgraph-sample-profile-summary.ll b/test/Bitcode/thinlto-function-summary-callgraph-sample-profile-summary.ll index c940eba89b5b..4085174ae275 100644 --- a/test/Bitcode/thinlto-function-summary-callgraph-sample-profile-summary.ll +++ b/test/Bitcode/thinlto-function-summary-callgraph-sample-profile-summary.ll @@ -31,7 +31,7 @@ ; CHECK-NEXT: <VERSION ; CHECK-NEXT: <VALUE_GUID op0=26 op1=123/> ; op4=none1 op6=hot1 op8=cold1 op10=none2 op12=hot2 op14=cold2 op16=none3 op18=hot3 op20=cold3 op22=123 -; CHECK-NEXT: <PERMODULE_PROFILE {{.*}} op4=7 op5=0 op6=1 op7=3 op8=4 op9=1 op10=8 op11=0 op12=2 op13=3 op14=5 op15=1 op16=9 op17=0 op18=3 op19=3 op20=6 op21=1 op22=26 op23=4/> +; CHECK-NEXT: <PERMODULE_PROFILE {{.*}} op5=7 op6=0 op7=1 op8=3 op9=4 op10=1 op11=8 op12=0 op13=2 op14=3 op15=5 op16=1 op17=9 op18=0 op19=3 op20=3 op21=6 op22=1 op23=26 op24=4/> ; CHECK-NEXT: </GLOBALVAL_SUMMARY_BLOCK> ; CHECK: <STRTAB_BLOCK @@ -57,7 +57,7 @@ ; COMBINED-NEXT: <COMBINED abbrevid= ; COMBINED-NEXT: <COMBINED abbrevid= ; COMBINED-NEXT: <COMBINED abbrevid= -; COMBINED-NEXT: <COMBINED_PROFILE {{.*}} op5=[[NONE1:.*]] op6=0 op7=[[HOT1:.*]] op8=3 op9=[[COLD1:.*]] op10=1 op11=[[NONE2:.*]] op12=0 op13=[[HOT2:.*]] op14=3 op15=[[COLD2:.*]] op16=1 op17=[[NONE3:.*]] op18=0 op19=[[HOT3:.*]] op20=3 op21=[[COLD3:.*]] op22=1/> +; COMBINED-NEXT: <COMBINED_PROFILE {{.*}} op6=[[NONE1:.*]] op7=0 op8=[[HOT1:.*]] op9=3 op10=[[COLD1:.*]] op11=1 op12=[[NONE2:.*]] op13=0 op14=[[HOT2:.*]] op15=3 op16=[[COLD2:.*]] op17=1 op18=[[NONE3:.*]] op19=0 op20=[[HOT3:.*]] op21=3 op22=[[COLD3:.*]] op23=1/> ; COMBINED_NEXT: <COMBINED abbrevid= ; COMBINED_NEXT: </GLOBALVAL_SUMMARY_BLOCK> diff --git a/test/Bitcode/thinlto-function-summary-callgraph.ll b/test/Bitcode/thinlto-function-summary-callgraph.ll index 749909badd95..1389710e18d0 100644 --- a/test/Bitcode/thinlto-function-summary-callgraph.ll +++ b/test/Bitcode/thinlto-function-summary-callgraph.ll @@ -18,7 +18,7 @@ ; CHECK: <GLOBALVAL_SUMMARY_BLOCK ; CHECK-NEXT: <VERSION ; See if the call to func is registered. -; CHECK-NEXT: <PERMODULE {{.*}} op3=1 +; CHECK-NEXT: <PERMODULE {{.*}} op4=1 ; CHECK-NEXT: </GLOBALVAL_SUMMARY_BLOCK> ; CHECK: <STRTAB_BLOCK ; CHECK-NEXT: blob data = 'undefinedglobmainfunc{{.*}}' @@ -32,7 +32,7 @@ ; COMBINED-NEXT: <VALUE_GUID ; COMBINED-NEXT: <COMBINED ; See if the call to func is registered. -; COMBINED-NEXT: <COMBINED {{.*}} op5=[[FUNCID]]/> +; COMBINED-NEXT: <COMBINED {{.*}} op6=[[FUNCID]]/> ; COMBINED-NEXT: </GLOBALVAL_SUMMARY_BLOCK> ; ModuleID = 'thinlto-function-summary-callgraph.ll' diff --git a/test/Bitcode/thinlto-function-summary-functionattrs.ll b/test/Bitcode/thinlto-function-summary-functionattrs.ll new file mode 100644 index 000000000000..2ad49e3c8647 --- /dev/null +++ b/test/Bitcode/thinlto-function-summary-functionattrs.ll @@ -0,0 +1,27 @@ +; RUN: opt -module-summary %s -o %t.o +; RUN: llvm-bcanalyzer -dump %t.o | FileCheck %s + +; CHECK: <GLOBALVAL_SUMMARY_BLOCK +; ensure @f is marked readnone +; CHECK: <PERMODULE {{.*}} op0=0 {{.*}} op3=1 +; ensure @g is marked readonly +; CHECK: <PERMODULE {{.*}} op0=1 {{.*}} op3=2 +; ensure @h is marked norecurse +; CHECK: <PERMODULE {{.*}} op0=2 {{.*}} op3=4 +; ensure @i is marked returndoesnotalias +; CHECK: <PERMODULE {{.*}} op0=3 {{.*}} op3=8 + +define void @f() readnone { + ret void +} +define void @g() readonly { + ret void +} +define void @h() norecurse { + ret void +} + +define noalias i8* @i() { + %r = alloca i8 + ret i8* %r +} diff --git a/test/Bitcode/thinlto-function-summary-refgraph.ll b/test/Bitcode/thinlto-function-summary-refgraph.ll index 47a44b789223..08dae47bbf75 100644 --- a/test/Bitcode/thinlto-function-summary-refgraph.ll +++ b/test/Bitcode/thinlto-function-summary-refgraph.ll @@ -38,24 +38,24 @@ ; CHECK: <GLOBALVAL_SUMMARY_BLOCK ; Function main contains call to func, as well as address reference to func: ; op0=main op4=func op5=func -; CHECK-DAG: <PERMODULE {{.*}} op0=11 op1=0 {{.*}} op3=1 op4=2 op5=2/> +; CHECK-DAG: <PERMODULE {{.*}} op0=11 op1=0 {{.*}} op4=1 op5=2 op6=2/> ; Function W contains a call to func3 as well as a reference to globalvar: ; op0=W op4=globalvar op5=func3 -; CHECK-DAG: <PERMODULE {{.*}} op0=6 op1=5 {{.*}} op3=1 op4=1 op5=5/> +; CHECK-DAG: <PERMODULE {{.*}} op0=6 op1=5 {{.*}} op4=1 op5=1 op6=5/> ; Function X contains call to foo, as well as address reference to foo ; which is in the same instruction as the call: ; op0=X op4=foo op5=foo -; CHECK-DAG: <PERMODULE {{.*}} op0=7 op1=1 {{.*}} op3=1 op4=4 op5=4/> +; CHECK-DAG: <PERMODULE {{.*}} op0=7 op1=1 {{.*}} op4=1 op5=4 op6=4/> ; Function Y contains call to func2, and ensures we don't incorrectly add ; a reference to it when reached while earlier analyzing the phi using its ; return value: ; op0=Y op4=func2 -; CHECK-DAG: <PERMODULE {{.*}} op0=8 op1=8 {{.*}} op3=0 op4=3/> +; CHECK-DAG: <PERMODULE {{.*}} op0=8 op1=8 {{.*}} op4=0 op5=3/> ; Function Z contains call to func2, and ensures we don't incorrectly add ; a reference to it when reached while analyzing subsequent use of its return ; value: ; op0=Z op4=func2 -; CHECK-DAG: <PERMODULE {{.*}} op0=9 op1=3 {{.*}} op3=0 op4=3/> +; CHECK-DAG: <PERMODULE {{.*}} op0=9 op1=3 {{.*}} op4=0 op5=3/> ; Variable bar initialization contains address reference to func: ; op0=bar op2=func ; CHECK-DAG: <PERMODULE_GLOBALVAR_INIT_REFS {{.*}} op0=0 op1=0 op2=2/> |