diff options
author | Mehdi Amini <mehdi.amini@apple.com> | 2016-04-13 17:18:42 +0000 |
---|---|---|
committer | Mehdi Amini <mehdi.amini@apple.com> | 2016-04-13 17:18:42 +0000 |
commit | ce744a95fd99e7b9ae368e2f98de60b09c70fed0 (patch) | |
tree | ef64981e3528a03565000d7b4a5fe58d6a5e8179 /llvm/test/Bitcode | |
parent | f5a7ec7a5ced6720b84dbebe2b396bc95cadce09 (diff) | |
download | bcm5719-llvm-ce744a95fd99e7b9ae368e2f98de60b09c70fed0.tar.gz bcm5719-llvm-ce744a95fd99e7b9ae368e2f98de60b09c70fed0.zip |
Make aliases explicit in the summary
Summary:
To be able to work accurately on the reference graph when taking decision
about internalizing, promoting, renaming, etc. We need to have the alias
information explicit.
Reviewers: tejohnson
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D18836
From: Mehdi Amini <mehdi.amini@apple.com>
llvm-svn: 266214
Diffstat (limited to 'llvm/test/Bitcode')
-rw-r--r-- | llvm/test/Bitcode/Inputs/thinlto-alias.ll | 13 | ||||
-rw-r--r-- | llvm/test/Bitcode/thinlto-alias.ll | 45 | ||||
-rw-r--r-- | llvm/test/Bitcode/thinlto-function-summary.ll | 8 |
3 files changed, 62 insertions, 4 deletions
diff --git a/llvm/test/Bitcode/Inputs/thinlto-alias.ll b/llvm/test/Bitcode/Inputs/thinlto-alias.ll new file mode 100644 index 00000000000..5a628e8a3b9 --- /dev/null +++ b/llvm/test/Bitcode/Inputs/thinlto-alias.ll @@ -0,0 +1,13 @@ +target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" +target triple = "x86_64-unknown-linux-gnu" + + + +@analias = alias void (...), bitcast (void ()* @aliasee to void (...)*) + +; Function Attrs: nounwind uwtable +define void @aliasee() #0 { +entry: + ret void +} + diff --git a/llvm/test/Bitcode/thinlto-alias.ll b/llvm/test/Bitcode/thinlto-alias.ll new file mode 100644 index 00000000000..7fe6d43ca48 --- /dev/null +++ b/llvm/test/Bitcode/thinlto-alias.ll @@ -0,0 +1,45 @@ +; Test to check the callgraph in summary +; RUN: opt -module-summary %s -o %t.o +; RUN: llvm-bcanalyzer -dump %t.o | FileCheck %s +; RUN: opt -module-summary %p/Inputs/thinlto-alias.ll -o %t2.o +; RUN: llvm-lto -thinlto -o %t3 %t.o %t2.o +; RUN: llvm-bcanalyzer -dump %t3.thinlto.bc | FileCheck %s --check-prefix=COMBINED + +; CHECK: <GLOBALVAL_SUMMARY_BLOCK +; See if the call to func is registered, using the expected callsite count +; and value id matching the subsequent value symbol table. +; CHECK-NEXT: <PERMODULE {{.*}} op4=[[FUNCID:[0-9]+]] op5=1/> +; CHECK-NEXT: </GLOBALVAL_SUMMARY_BLOCK> +; CHECK-NEXT: <VALUE_SYMTAB +; CHECK-NEXT: <FNENTRY {{.*}} record string = 'main' +; External function analias should have entry with value id FUNCID +; CHECK-NEXT: <ENTRY {{.*}} op0=[[FUNCID]] {{.*}} record string = 'analias' +; CHECK-NEXT: </VALUE_SYMTAB> + +; COMBINED: <GLOBALVAL_SUMMARY_BLOCK +; See if the call to analias is registered, using the expected callsite count +; and value id matching the subsequent value symbol table. +; COMBINED-NEXT: <COMBINED {{.*}} op4=[[ALIASID:[0-9]+]] op5=1/> +; Followed by the alias and aliasee +; COMBINED-NEXT: <COMBINED {{.*}} +; COMBINED-NEXT: <COMBINED_ALIAS {{.*}} op2=[[ALIASEEOFFSET:[0-9]+]] +; COMBINED-NEXT: </GLOBALVAL_SUMMARY_BLOCK +; COMBINED-NEXT: <VALUE_SYMTAB +; Entry for function func should have entry with value id ALIASID +; COMBINED-NEXT: <COMBINED_GVDEFENTRY {{.*}} op0=[[ALIASID]] {{.*}} op2=-5751648690987223394/> +; COMBINED-NEXT: <COMBINED_GVDEFENTRY +; COMBINED-NEXT: <COMBINED_GVDEFENTRY {{.*}} op1=[[ALIASEEOFFSET]] op2=-1039159065113703048/> +; COMBINED-NEXT: </VALUE_SYMTAB> + +; ModuleID = 'thinlto-function-summary-callgraph.ll' +target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" +target triple = "x86_64-unknown-linux-gnu" + +; Function Attrs: nounwind uwtable +define i32 @main() { +entry: + call void (...) @analias() + ret i32 0 +} + +declare void @analias(...) diff --git a/llvm/test/Bitcode/thinlto-function-summary.ll b/llvm/test/Bitcode/thinlto-function-summary.ll index 04a316585a4..b763a847026 100644 --- a/llvm/test/Bitcode/thinlto-function-summary.ll +++ b/llvm/test/Bitcode/thinlto-function-summary.ll @@ -1,4 +1,4 @@ -; RUN: opt -module-summary < %s | llvm-bcanalyzer -dump | FileCheck %s -check-prefix=BC +; RUN: opt -name-anon-functions -module-summary < %s | llvm-bcanalyzer -dump | FileCheck %s -check-prefix=BC ; Check for summary block/records. ; Check the value ids in the summary entries against the @@ -7,13 +7,13 @@ ; BC: <GLOBALVAL_SUMMARY_BLOCK ; BC-NEXT: <PERMODULE {{.*}} op0=1 op1=0 ; BC-NEXT: <PERMODULE {{.*}} op0=2 op1=0 -; BC-NEXT: </GLOBALVAL_SUMMARY_BLOCK +; BC: </GLOBALVAL_SUMMARY_BLOCK ; BC-NEXT: <VALUE_SYMTAB -; BC-NEXT: <FNENTRY {{.*}} op0=1 {{.*}}> record string = 'foo' +; BC: <FNENTRY {{.*}} op0=1 {{.*}}> record string = 'foo' ; BC-NEXT: <FNENTRY {{.*}} op0=2 {{.*}}> record string = 'bar' ; BC-NEXT: <FNENTRY {{.*}} op0=4 {{.*}}> record string = 'f' -; RUN: opt -module-summary < %s | llvm-dis | FileCheck %s +; RUN: opt -name-anon-functions -module-summary < %s | llvm-dis | FileCheck %s ; Check that this round-trips correctly. ; ModuleID = '<stdin>' |