[LLVMbugs] [Bug 23149] New: VLA extension - explicit typing fails.
bugzilla-daemon at llvm.org
bugzilla-daemon at llvm.org
Tue Apr 7 09:10:02 PDT 2015
https://llvm.org/bugs/show_bug.cgi?id=23149
Bug ID: 23149
Summary: VLA extension - explicit typing fails.
Product: clang
Version: trunk
Hardware: PC
OS: Linux
Status: NEW
Severity: normal
Priority: P
Component: -New Bugs
Assignee: unassignedclangbugs at nondot.org
Reporter: sasho648 at gmail.com
CC: llvmbugs at cs.uiuc.edu
Classification: Unclassified
The problem is that I can't assign VLA pointer or reference to a variable with
explicit type. Examples:
void func(std::size_t sz)
{
int arr[sz];
int (*pArr)[sz] = &arr;
int (&refArr)[sz] = arr;
}
It fails to compile with those strange error message:
error: cannot initialize a variable of type 'int (*)[sz]' with an rvalue of
type 'int (*)[sz]'
int (*pArr)[sz] = &arr;
error: non-const lvalue reference to type 'int [sz]' cannot bind to a value of
unrelated type 'int [sz]'
int (&refArr)[sz] = arr;
On the other hand this works fine:
void func(std::size_t sz)
{
int arr[sz];
auto *pArr = &arr;
auto &refArr = arr;
}
While reference to VLA arrays are not part of C99, pointers to them are
well-defined and should be supported if compatibility with this standard is
supported. However I hope reference will be kept too (as they are a cool
add-on).
Those constructs are well supported by GCC compiler too.
Life examples on online-compiler with Clang(3.7.0):
Non-working example:
http://melpon.org/wandbox/permlink/ZIUJrZqmvBmDzfkC
Working example, second one:
http://melpon.org/wandbox/permlink/gSXxvRXQRaCBzdwN
--
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/20150407/c47daf3e/attachment.html>
More information about the llvm-bugs
mailing list