[clang] b72fd1a - [CGCall] Check store type in findDominatingStoreToReturnValue()
Nikita Popov via cfe-commits
cfe-commits at lists.llvm.org
Mon Apr 11 03:08:39 PDT 2022
Author: Nikita Popov
Date: 2022-04-11T12:08:29+02:00
New Revision: b72fd1a84d33e19f9f7fa6b7fdcaea57dc51aee4
URL: https://github.com/llvm/llvm-project/commit/b72fd1a84d33e19f9f7fa6b7fdcaea57dc51aee4
DIFF: https://github.com/llvm/llvm-project/commit/b72fd1a84d33e19f9f7fa6b7fdcaea57dc51aee4.diff
LOG: [CGCall] Check store type in findDominatingStoreToReturnValue()
We need to make sure that the stored type matches the return type.
Added:
Modified:
clang/lib/CodeGen/CGCall.cpp
clang/test/CodeGenObjC/section-name.m
Removed:
################################################################################
diff --git a/clang/lib/CodeGen/CGCall.cpp b/clang/lib/CodeGen/CGCall.cpp
index c4d342e3d2aaa..e6a5fd1f4f985 100644
--- a/clang/lib/CodeGen/CGCall.cpp
+++ b/clang/lib/CodeGen/CGCall.cpp
@@ -3228,7 +3228,8 @@ static llvm::StoreInst *findDominatingStoreToReturnValue(CodeGenFunction &CGF) {
// ReturnValue to some other location.
auto GetStoreIfValid = [&CGF](llvm::User *U) -> llvm::StoreInst * {
auto *SI = dyn_cast<llvm::StoreInst>(U);
- if (!SI || SI->getPointerOperand() != CGF.ReturnValue.getPointer())
+ if (!SI || SI->getPointerOperand() != CGF.ReturnValue.getPointer() ||
+ SI->getValueOperand()->getType() != CGF.ReturnValue.getElementType())
return nullptr;
// These aren't actually possible for non-coerced returns, and we
// only care about non-coerced returns on this code path.
diff --git a/clang/test/CodeGenObjC/section-name.m b/clang/test/CodeGenObjC/section-name.m
index b6b9fa4a59f19..63fad82af4e6e 100644
--- a/clang/test/CodeGenObjC/section-name.m
+++ b/clang/test/CodeGenObjC/section-name.m
@@ -1,4 +1,4 @@
-// RUN: %clang_cc1 -no-opaque-pointers -triple thumbv7--windows-itanium -fdeclspec -fobjc-runtime=ios -emit-llvm -o - %s -Wno-objc-root-class | FileCheck %s
+// RUN: %clang_cc1 -triple thumbv7--windows-itanium -fdeclspec -fobjc-runtime=ios -emit-llvm -o - %s -Wno-objc-root-class | FileCheck %s
@protocol Protocol
- (void) protocol_method;
More information about the cfe-commits
mailing list