diff options
author | Mehdi Amini <mehdi.amini@apple.com> | 2016-04-16 06:56:44 +0000 |
---|---|---|
committer | Mehdi Amini <mehdi.amini@apple.com> | 2016-04-16 06:56:44 +0000 |
commit | 2d28f7aa07483ba57428c654170467966581849c (patch) | |
tree | 57505eb0c7546aa598bca418a57f455fe0e74bf4 /llvm/test/Bitcode/thinlto-alias.ll | |
parent | d82f494aa41ffbac2586d4b090af33aa51e3dd15 (diff) | |
download | bcm5719-llvm-2d28f7aa07483ba57428c654170467966581849c.tar.gz bcm5719-llvm-2d28f7aa07483ba57428c654170467966581849c.zip |
ThinLTO: Make aliases explicit in the 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.
Differential Revision: http://reviews.llvm.org/D18836
From: Mehdi Amini <mehdi.amini@apple.com>
llvm-svn: 266517
Diffstat (limited to 'llvm/test/Bitcode/thinlto-alias.ll')
-rw-r--r-- | llvm/test/Bitcode/thinlto-alias.ll | 45 |
1 files changed, 45 insertions, 0 deletions
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(...) |