[PATCH] D23896: [InstCombine] Try to resubmit the combine of A->B->A BitCast and fix for pr27996
Guozhi Wei via llvm-commits
llvm-commits at lists.llvm.org
Tue Sep 27 16:06:18 PDT 2016
Carrot added inline comments.
================
Comment at: lib/Transforms/InstCombine/InstCombineCasts.cpp:1768
@@ +1767,3 @@
+ for (User *U : CI.users()) {
+ if (!isa<StoreInst>(U))
+ return false;
----------------
evstupac wrote:
> Ok.
> You are generating BitCast only for 1 store operand:
> SI->setOperand(0, Builder->CreateBitCast(NewPNodes[PN], SrcTy));
>
> Here you are exiting if BitCast goes to one of store operand (0 or 1). What is the reason?
Because the following case
bitcast oldval to val
store val, addr
can be handled by InstCombineLoadStoreAlloca.cpp, and transformed to
bitcast addr to addr_with_diff_type
store oldval, addr_with_diff_type
This is the form you have question. It can be further transformed to
store oldval, (bitcast addr to addr_with_diff_type)
This is an optimized result.
https://reviews.llvm.org/D23896
More information about the llvm-commits
mailing list