[PATCH] D39356: [ThinLTO] Fix missing call graph edges for calls with bitcasts.

Volodymyr Sapsai via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Nov 10 17:19:50 PST 2017


vsapsai added inline comments.


================
Comment at: llvm/trunk/lib/Analysis/ModuleSummaryAnalysis.cpp:284
+        assert(CalledValue && !isa<Constant>(CalledValue) &&
+               "Expected indirect call");
 
----------------
efriedma wrote:
> The following testcase triggers this assertion:
> 
> ```
> define void @caller() {
>     tail call void select (i1 icmp eq (i32* @a, i32* null), void ()* @f, void ()* @g)()
>     ret void
> }
> declare void @f()
> declare void @g()
> @a = extern_weak global i32
> ```
Good catch, Eli. In this case CalledValue is not NULL but it is SelectConstantExpr as far as I can tell.

@tejohnson, do you think it's better to return previous skipping code or to handle this case in some special way?

@efriedma, is it based on existing test case or just on your LLVM knowledge? Asking to decide where to put this test. If it is a variation of another test, I would prefer to keep them together.


Repository:
  rL LLVM

https://reviews.llvm.org/D39356





More information about the llvm-commits mailing list