mirror of https://github.com/microsoft/clang.git
CodeGen: Strip qualifiers from qualified array types in catches
While we ran getUnqualifiedType over the catch type, it isn't enough for array types. Use getUnqualifiedArrayType instead. This fixes PR21252. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@219582 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
df527b05fd
commit
673b3960bb
|
@ -610,8 +610,9 @@ void CodeGenFunction::EnterCXXTryStmt(const CXXTryStmt &S, bool IsFnTryBlock) {
|
|||
// existing compilers do, and it's not clear that the standard
|
||||
// personality routine is capable of doing this right. See C++ DR 388:
|
||||
// http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_active.html#388
|
||||
QualType CaughtType = C->getCaughtType();
|
||||
CaughtType = CaughtType.getNonReferenceType().getUnqualifiedType();
|
||||
Qualifiers CaughtTypeQuals;
|
||||
QualType CaughtType = CGM.getContext().getUnqualifiedArrayType(
|
||||
C->getCaughtType().getNonReferenceType(), CaughtTypeQuals);
|
||||
|
||||
llvm::Constant *TypeInfo = nullptr;
|
||||
if (CaughtType->isObjCObjectPointerType())
|
||||
|
|
|
@ -11,3 +11,11 @@ void f() {
|
|||
} catch (const X x) {
|
||||
}
|
||||
}
|
||||
|
||||
void h() {
|
||||
try {
|
||||
throw "ABC";
|
||||
// CHECK: @_ZTIPKc to i8
|
||||
} catch (char const(&)[4]) {
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue