Author: rtrieu Date: Wed Mar 14 17:09:26 2018 New Revision: 327593 URL: http://llvm.org/viewvc/llvm-project?rev=327593&view=rev Log: [CFG] Allow CallExpr's to be looked up in CFG's
r327343 changed the handling for CallExpr in a CFG, which prevented lookups for CallExpr while other Stmt kinds still worked. This change carries over the necessary bits from Stmt function to CallExpr function. Added: cfe/trunk/test/SemaCXX/constant-conversion.cpp Modified: cfe/trunk/lib/Analysis/CFG.cpp Modified: cfe/trunk/lib/Analysis/CFG.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Analysis/CFG.cpp?rev=327593&r1=327592&r2=327593&view=diff ============================================================================== --- cfe/trunk/lib/Analysis/CFG.cpp (original) +++ cfe/trunk/lib/Analysis/CFG.cpp Wed Mar 14 17:09:26 2018 @@ -750,6 +750,9 @@ private: } void appendCall(CFGBlock *B, CallExpr *CE) { + if (alwaysAdd(CE) && cachedEntry) + cachedEntry->second = B; + if (BuildOpts.AddRichCXXConstructors) { if (CFGCXXRecordTypedCall::isCXXRecordTypedCall(CE, *Context)) { if (const ConstructionContextLayer *Layer = Added: cfe/trunk/test/SemaCXX/constant-conversion.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaCXX/constant-conversion.cpp?rev=327593&view=auto ============================================================================== --- cfe/trunk/test/SemaCXX/constant-conversion.cpp (added) +++ cfe/trunk/test/SemaCXX/constant-conversion.cpp Wed Mar 14 17:09:26 2018 @@ -0,0 +1,24 @@ +// RUN: %clang_cc1 -fsyntax-only -verify -triple x86_64-apple-darwin %s + +// This file tests -Wconstant-conversion, a subcategory of -Wconversion +// which is on by default. + +constexpr int nines() { return 99999; } + +void too_big_for_char(int param) { + char warn1 = false ? 0 : 99999; + // expected-warning@-1 {{implicit conversion from 'int' to 'char' changes value from 99999 to -97}} + char warn2 = false ? 0 : nines(); + // expected-warning@-1 {{implicit conversion from 'int' to 'char' changes value from 99999 to -97}} + + char warn3 = param > 0 ? 0 : 99999; + // expected-warning@-1 {{implicit conversion from 'int' to 'char' changes value from 99999 to -97}} + char warn4 = param > 0 ? 0 : nines(); + // expected-warning@-1 {{implicit conversion from 'int' to 'char' changes value from 99999 to -97}} + + char ok1 = true ? 0 : 99999; + char ok2 = true ? 0 : nines(); + + char ok3 = true ? 0 : 99999 + 1; + char ok4 = true ? 0 : nines() + 1; +} _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits