[LLVMbugs] [Bug 17818] variable-sized object check seems to be too restrictive
bugzilla-daemon at llvm.org
bugzilla-daemon at llvm.org
Tue Nov 5 18:19:26 PST 2013
http://llvm.org/bugs/show_bug.cgi?id=17818
Richard Smith <richard-llvm at metafoo.co.uk> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |RESOLVED
CC| |richard-llvm at metafoo.co.uk
Resolution|--- |INVALID
--- Comment #1 from Richard Smith <richard-llvm at metafoo.co.uk> ---
These are both VLAs. With a slightly different testcase:
C c1;
C *c2 = new C;
int a[c1.asize], b[c2->asize];
... and -pedantic-errors, we see:
<stdin>:9:9: error: variable length array folded to constant array as an
extension [-Werror,-Wgnu-folding-constant]
int a[c1.asize], b[c2->asize];
^~~~~~~~
<stdin>:9:21: error: variable length arrays are a C99 feature
[-Werror,-Wvla-extension]
int a[c1.asize], b[c2->asize];
^
Note that Clang is happy to fold the first case to a constant, and treat it as
not-a-VLA (and indeed, the first *is* a constant expression in C++11 onwards),
but is not happy to do the same for the second case. That's because 'c2->asize'
is defined to mean '(*c2).asize', and while we can evaluate the '.asize' part,
the '(*c2)' is non-constant, because it involves reading the value of 'c2'.
Finally, g++ allows a VLA to have an initializer, whereas Clang does not, so
Clang rejects the second example.
--
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20131106/074edcb0/attachment.html>
More information about the llvm-bugs
mailing list