[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