Displaying 3 results from an estimated 3 matches for "createbitorpointercast".
2015 Jan 05
3
[LLVMdev] should AlwaysInliner inline this case?
...etParamAttributes(i + 1), i + 1).
@@ -1551,7 +1551,7 @@ bool
InstCombiner::transformConstExprCastCall(CallSite CS) {
if ((*AI)->getType() == ParamTy) {
Args.push_back(*AI);
} else {
- Args.push_back(Builder->CreateBitCast(*AI, ParamTy));
+ Args.push_back(Builder->CreateBitOrPointerCast(*AI, ParamTy));
}
// Add any parameter attributes.
Running opt -instcombine -inline -instcombine with this patch results in:
define i32 @g(i32* %a) {
entry:
%0 = ptrtoint i32* %a to i64
%call = tail call i32 @f(i64 %0)
ret i32 %call
}
declare i32 @f(i64)
define i32 @h(i64 %a) {...
2015 Jan 05
3
[LLVMdev] should AlwaysInliner inline this case?
Philip,
I post here because I think AlwaysInliner should inline it. I want to
detect the indirect calls for Inliner, and I want to hear inputs.
let me define indirect call first in my idea. In one single expression, one
function may be subject to bitcast more than one time. we can detect this
situation and treat it as a regular call of last function, is that okay?
thanks,
--lx
On Mon, Jan 5,
2016 Apr 07
7
Implementing a proposed InstCombine optimization
I am not entirely sure this is safe. Transforming this to an fsub could change the value stored on platforms that implement negates using arithmetic instead of with bitmath (such as ours) and either canonicalize NaNs or don’t support denormals. This is actually important because this kind of bitmath on floats is very commonly used as part of algorithms for complex math functions that need to get