This revision was automatically updated to reflect the committed changes. ArcsinX marked an inline comment as done. Closed by commit rG3ce7d256f2d7: [clang][RecoveryExpr] Don't perform alignment check if parameter type is… (authored by ArcsinX).
Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D133886/new/ https://reviews.llvm.org/D133886 Files: clang/lib/Sema/SemaChecking.cpp clang/test/SemaCXX/recovery-expr-type.cpp Index: clang/test/SemaCXX/recovery-expr-type.cpp =================================================================== --- clang/test/SemaCXX/recovery-expr-type.cpp +++ clang/test/SemaCXX/recovery-expr-type.cpp @@ -162,3 +162,12 @@ b = __builtin_object_size(c, 0); // crash2 } } + +namespace test15 { +void f() { + struct { + void m(int (&)[undefined()]) {} // expected-error {{undeclared identifier}} + } S; + S.m(1); // no crash +} +} Index: clang/lib/Sema/SemaChecking.cpp =================================================================== --- clang/lib/Sema/SemaChecking.cpp +++ clang/lib/Sema/SemaChecking.cpp @@ -5690,9 +5690,9 @@ // Find expected alignment, and the actual alignment of the passed object. // getTypeAlignInChars requires complete types - if (ArgTy.isNull() || ParamTy->isIncompleteType() || - ArgTy->isIncompleteType() || ParamTy->isUndeducedType() || - ArgTy->isUndeducedType()) + if (ArgTy.isNull() || ParamTy->isDependentType() || + ParamTy->isIncompleteType() || ArgTy->isIncompleteType() || + ParamTy->isUndeducedType() || ArgTy->isUndeducedType()) return; CharUnits ParamAlign = Context.getTypeAlignInChars(ParamTy);
Index: clang/test/SemaCXX/recovery-expr-type.cpp =================================================================== --- clang/test/SemaCXX/recovery-expr-type.cpp +++ clang/test/SemaCXX/recovery-expr-type.cpp @@ -162,3 +162,12 @@ b = __builtin_object_size(c, 0); // crash2 } } + +namespace test15 { +void f() { + struct { + void m(int (&)[undefined()]) {} // expected-error {{undeclared identifier}} + } S; + S.m(1); // no crash +} +} Index: clang/lib/Sema/SemaChecking.cpp =================================================================== --- clang/lib/Sema/SemaChecking.cpp +++ clang/lib/Sema/SemaChecking.cpp @@ -5690,9 +5690,9 @@ // Find expected alignment, and the actual alignment of the passed object. // getTypeAlignInChars requires complete types - if (ArgTy.isNull() || ParamTy->isIncompleteType() || - ArgTy->isIncompleteType() || ParamTy->isUndeducedType() || - ArgTy->isUndeducedType()) + if (ArgTy.isNull() || ParamTy->isDependentType() || + ParamTy->isIncompleteType() || ArgTy->isIncompleteType() || + ParamTy->isUndeducedType() || ArgTy->isUndeducedType()) return; CharUnits ParamAlign = Context.getTypeAlignInChars(ParamTy);
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits