summaryrefslogtreecommitdiffstats
path: root/llvm/test
diff options
context:
space:
mode:
authorVolodymyr Sapsai <vsapsai@apple.com>2017-11-10 00:47:47 +0000
committerVolodymyr Sapsai <vsapsai@apple.com>2017-11-10 00:47:47 +0000
commita73960213eac65cbb099a52318035cf4539b7703 (patch)
tree8b656ede5a98dc9b870aab6a7d30fe0834e9e4ef /llvm/test
parentc183e2c33b0581390e678e74bcfc83b3a34f3350 (diff)
downloadbcm5719-llvm-a73960213eac65cbb099a52318035cf4539b7703.tar.gz
bcm5719-llvm-a73960213eac65cbb099a52318035cf4539b7703.zip
[ThinLTO] Fix missing call graph edges for calls with bitcasts.
This change doesn't fix the root cause of the miscompile PR34966 as the root cause is in the linker ld64. This change makes call graph more complete allowing to have better module imports/exports. rdar://problem/35344706 Reviewers: tejohnson Reviewed By: tejohnson Subscribers: mehdi_amini, inglorion, eraman, llvm-commits, hiraditya Differential Revision: https://reviews.llvm.org/D39356 llvm-svn: 317853
Diffstat (limited to 'llvm/test')
-rw-r--r--llvm/test/Bitcode/thinlto-function-summary-callgraph-cast.ll31
1 files changed, 31 insertions, 0 deletions
diff --git a/llvm/test/Bitcode/thinlto-function-summary-callgraph-cast.ll b/llvm/test/Bitcode/thinlto-function-summary-callgraph-cast.ll
new file mode 100644
index 00000000000..b377ba8f00d
--- /dev/null
+++ b/llvm/test/Bitcode/thinlto-function-summary-callgraph-cast.ll
@@ -0,0 +1,31 @@
+; Test to check the callgraph for calls to casts.
+; RUN: opt -module-summary %s -o %t.o
+; RUN: llvm-bcanalyzer -dump %t.o | FileCheck %s
+; PR34966
+
+; CHECK: <GLOBALVAL_SUMMARY_BLOCK
+; CHECK-NEXT: <VERSION
+; "op7=1" is a call to "callee" function.
+; CHECK-NEXT: <PERMODULE {{.*}} op7=1 op8=[[ALIASID:[0-9]+]]/>
+; CHECK-NEXT: <PERMODULE {{.*}} op0=[[ALIASEEID:[0-9]+]]
+; CHECK-NEXT: <ALIAS {{.*}} op0=[[ALIASID]] {{.*}} op2=[[ALIASEEID]]/>
+; CHECK-NEXT: </GLOBALVAL_SUMMARY_BLOCK>
+
+; ModuleID = 'thinlto-function-summary-callgraph-cast.ll'
+target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
+target triple = "x86_64-unknown-linux-gnu"
+
+define void @caller() {
+ call void bitcast (void (...)* @callee to void ()*)()
+ call void bitcast (void (...)* @analias to void ()*)()
+ ret void
+}
+
+declare void @callee(...)
+
+@analias = alias void (...), bitcast (void ()* @aliasee to void (...)*)
+
+define void @aliasee() {
+entry:
+ ret void
+}
OpenPOWER on IntegriCloud