Author: Dávid Bolvanský Date: 2020-08-13T20:20:26+02:00 New Revision: 2f7adf5ee37934ee5769276644fcafbc9d4dcda3
URL: https://github.com/llvm/llvm-project/commit/2f7adf5ee37934ee5769276644fcafbc9d4dcda3 DIFF: https://github.com/llvm/llvm-project/commit/2f7adf5ee37934ee5769276644fcafbc9d4dcda3.diff LOG: [Diagnostics] Skip var decl of structs for -Wstring-concatenation Added: Modified: clang/lib/Sema/SemaDecl.cpp clang/test/Sema/string-concat.c Removed: ################################################################################ diff --git a/clang/lib/Sema/SemaDecl.cpp b/clang/lib/Sema/SemaDecl.cpp index fee748bf9f9d..ab1496337210 100644 --- a/clang/lib/Sema/SemaDecl.cpp +++ b/clang/lib/Sema/SemaDecl.cpp @@ -12886,7 +12886,8 @@ void Sema::CheckCompleteVariableDeclaration(VarDecl *var) { AttributeCommonInfo::AS_Pragma)); } - if (var->hasInit() && isa<InitListExpr>(var->getInit())) { + if (!var->getType()->isStructureType() && var->hasInit() && + isa<InitListExpr>(var->getInit())) { const auto *ILE = cast<InitListExpr>(var->getInit()); unsigned NumInits = ILE->getNumInits(); if (NumInits > 2) @@ -12927,7 +12928,7 @@ void Sema::CheckCompleteVariableDeclaration(VarDecl *var) { Diag(SL->getBeginLoc(), diag::note_concatenated_string_literal_silence); } - // Warn just once. + // In any case, stop now. break; } } diff --git a/clang/test/Sema/string-concat.c b/clang/test/Sema/string-concat.c index b6bae9c95b0b..63abf100c020 100644 --- a/clang/test/Sema/string-concat.c +++ b/clang/test/Sema/string-concat.c @@ -148,6 +148,12 @@ const A not_warn6 = A{"", ""}; #endif +static A not_warn7 = {"", + + "" + "", + ""}; + // Do not warn when all the elements in the initializer are concatenated together. const char *all_elems_in_init_concatenated[] = {"a" "b" "c"}; _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits