Direct callees' that are cast to other function prototypes,
show up in the Call/Invoke instructions as ConstantExpr's.
Currently llvm::CallSite's getCalledFunction() fails
to return the callees in such expressions as direct calls.
Value profiling should avoid instrumenting such cases. Mostly NFC.
llvm-svn: 265330
if (CI->isInlineAsm())
return;
}
+ if (isa<Constant>(CS.getCalledValue()))
+ return;
IndirectCallInsts.push_back(I);
}
};
ret i32 0
}
+define i32 @f2() {
+entry:
+; CHECK: call void @llvm.instrprof.increment
+; CHECK-NOT: call void @llvm.instrprof.value.profile
+ call void (i32, ...) bitcast (void (...)* @foo to void (i32, ...)*)(i32 21)
+ ret i32 0
+}
+
+declare void @foo(...) #0
+
attributes #0 = { nounwind }