[llvm] 792f80e - [CoroSplit] Use freeze instead of bitcast for dummy instructions

Nikita Popov via llvm-commits llvm-commits at lists.llvm.org
Fri Apr 1 04:07:35 PDT 2022


Author: Nikita Popov
Date: 2022-04-01T13:07:25+02:00
New Revision: 792f80e1662d83b3aaa916c14a7ef73a37f57afb

URL: https://github.com/llvm/llvm-project/commit/792f80e1662d83b3aaa916c14a7ef73a37f57afb
DIFF: https://github.com/llvm/llvm-project/commit/792f80e1662d83b3aaa916c14a7ef73a37f57afb.diff

LOG: [CoroSplit] Use freeze instead of bitcast for dummy instructions

Not all types that can appear in arguments can be bitcasts -- in
particular, bitcasts do not support struct types.

Added: 
    

Modified: 
    llvm/lib/Transforms/Coroutines/CoroSplit.cpp
    llvm/test/Transforms/Coroutines/coro-retcon-alloca-opaque-ptr.ll

Removed: 
    


################################################################################
diff  --git a/llvm/lib/Transforms/Coroutines/CoroSplit.cpp b/llvm/lib/Transforms/Coroutines/CoroSplit.cpp
index f111abf888b74..9ac2569490632 100644
--- a/llvm/lib/Transforms/Coroutines/CoroSplit.cpp
+++ b/llvm/lib/Transforms/Coroutines/CoroSplit.cpp
@@ -878,8 +878,7 @@ void CoroCloner::create() {
   // frame.
   SmallVector<Instruction *> DummyArgs;
   for (Argument &A : OrigF.args()) {
-    DummyArgs.push_back(
-        new BitCastInst(UndefValue::get(A.getType()), A.getType()));
+    DummyArgs.push_back(new FreezeInst(UndefValue::get(A.getType())));
     VMap[&A] = DummyArgs.back();
   }
 

diff  --git a/llvm/test/Transforms/Coroutines/coro-retcon-alloca-opaque-ptr.ll b/llvm/test/Transforms/Coroutines/coro-retcon-alloca-opaque-ptr.ll
index 499cddb561d57..53a04264c788a 100644
--- a/llvm/test/Transforms/Coroutines/coro-retcon-alloca-opaque-ptr.ll
+++ b/llvm/test/Transforms/Coroutines/coro-retcon-alloca-opaque-ptr.ll
@@ -5,7 +5,7 @@
 target datalayout = "p:64:64:64"
 
 declare {i8*, i8*, i32} @prototype_f(i8*, i1)
-define {i8*, i8*, i32} @f(i8* %buffer, i32 %n) {
+define {i8*, i8*, i32} @f(i8* %buffer, i32 %n, { i32 } %dummy) {
 ; CHECK-LABEL: @f(
 ; CHECK-NEXT:  coro.return:
 ; CHECK-NEXT:    [[N_VAL_SPILL_ADDR:%.*]] = getelementptr inbounds [[F_FRAME:%.*]], ptr [[BUFFER:%.*]], i64 0, i32 1


        


More information about the llvm-commits mailing list