From 5fded08403ed0f138e057e78338d77dd321e59ee Mon Sep 17 00:00:00 2001 From: Jordan Rose Date: Wed, 17 Jul 2013 17:16:38 +0000 Subject: [analyzer] Handle C string default values for const char * arguments. Previously, SValBuilder knew how to evaluate StringLiterals, but couldn't handle an array-to-pointer decay for constant values. Additionally, RegionStore was being too strict about loading from an array, refusing to return a 'char' value from a 'const char' array. Both of these have been fixed. llvm-svn: 186520 --- clang/test/Analysis/inline.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'clang/test/Analysis/inline.cpp') diff --git a/clang/test/Analysis/inline.cpp b/clang/test/Analysis/inline.cpp index fad77b3bee4..ca126ddf7f3 100644 --- a/clang/test/Analysis/inline.cpp +++ b/clang/test/Analysis/inline.cpp @@ -290,6 +290,15 @@ namespace DefaultArgs { clang_analyzer_eval(defaultFloatReferenceZero(1) == -1); // expected-warning{{UNKNOWN}} clang_analyzer_eval(defaultFloatReferenceZero() == 0); // expected-warning{{UNKNOWN}} } + + char defaultString(const char *s = "abc") { + return s[1]; + } + + void testString() { + clang_analyzer_eval(defaultString("xyz") == 'y'); // expected-warning{{TRUE}} + clang_analyzer_eval(defaultString() == 'b'); // expected-warning{{TRUE}} + } } namespace OperatorNew { -- cgit v1.2.3