Skip to content

Commit 34fd318

Browse files
author
git apple-llvm automerger
committed
Merge commit '82888b78d47e' from llvm.org/master into apple/master
2 parents a13e70e + 82888b7 commit 34fd318

File tree

2 files changed

+15
-1
lines changed

2 files changed

+15
-1
lines changed

clang/lib/Sema/SemaOverload.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5370,7 +5370,10 @@ Sema::PerformObjectArgumentInitialization(Expr *From,
53705370

53715371
if (!Context.hasSameType(From->getType(), DestType)) {
53725372
CastKind CK;
5373-
if (FromRecordType.getAddressSpace() != DestType.getAddressSpace())
5373+
QualType PteeTy = DestType->getPointeeType();
5374+
LangAS DestAS =
5375+
PteeTy.isNull() ? DestType.getAddressSpace() : PteeTy.getAddressSpace();
5376+
if (FromRecordType.getAddressSpace() != DestAS)
53745377
CK = CK_AddressSpaceConversion;
53755378
else
53765379
CK = CK_NoOp;

clang/test/CodeGenOpenCLCXX/addrspace-of-this.cl

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -203,3 +203,14 @@ TEST(__private)
203203
// IMPL: [[C2GENVOID:%[0-9]+]] = bitcast %class.C addrspace(4)* [[C2GEN]] to i8 addrspace(4)*
204204
// IMPL: [[C1GENVOID:%[0-9]+]] = bitcast %class.C addrspace(4)* [[C1GEN]] to i8 addrspace(4)*
205205
// IMPL: call void @llvm.memcpy.p4i8.p4i8.i32(i8 addrspace(4)* {{.*}}[[C2GENVOID]], i8 addrspace(4)* {{.*}}[[C1GENVOID]]
206+
207+
// Test that calling a const method from a non-const method does not crash Clang.
208+
class ConstAndNonConstMethod {
209+
public:
210+
void DoConst() const {
211+
}
212+
213+
void DoNonConst() {
214+
DoConst();
215+
}
216+
};

0 commit comments

Comments
 (0)