[cfe-commits] r125640 - in /cfe/trunk: include/clang/Basic/DiagnosticSemaKinds.td include/clang/Sema/Sema.h lib/Sema/SemaChecking.cpp lib/Sema/SemaExpr.cpp test/Analysis/out-of-bounds.c test/Sema/array-bounds.c
Chris Lattner
clattner at apple.com
Thu Feb 17 09:25:41 PST 2011
On Feb 17, 2011, at 9:11 AM, Ted Kremenek wrote:
>> This breaks the Chrome build, where we have some code like this:
>>
>> template <bool extendArray>
>> void myFunc() {
>> int arr[3 + (extendArray ? 1 : 0)];
>>
>> if (extendArray)
>> arr[3] = 42;
>> }
>>
>> You can always explicitly specialize myFunc for true and false. I think it would make the resulting code strictly more clean. I'm kinda glad the warning fires on this type of construct.
>
> While I agree with that assessment, I'm not certain why we are getting a ConstantArrayType whose size is 3 if the only instantiation of myFunc is for extendArray = false. I'd like to know *why* the warning is firing here.
When extendArray is false, the instantiated code is:
>> template <bool extendArray>
>> void myFunc() {
>> int arr[3 ];
>>
>> if (false)
>> arr[3] = 42;
>> }
so it's the same as the other case. I thought we already had some infrastructure for disabling warnings in unreachable code?
-Chris
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20110217/83152124/attachment.html>
More information about the cfe-commits
mailing list