public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c/46028] New: Regression from GCC 4.4: "storage size of 'test_array' isn't constant"
@ 2010-10-14 23:20 marti at juffo dot org
2010-10-14 23:22 ` [Bug c/46028] " pinskia at gcc dot gnu.org
` (3 more replies)
0 siblings, 4 replies; 5+ messages in thread
From: marti at juffo dot org @ 2010-10-14 23:20 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46028
Summary: Regression from GCC 4.4: "storage size of 'test_array'
isn't constant"
Product: gcc
Version: 4.5.1
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c
AssignedTo: unassigned@gcc.gnu.org
ReportedBy: marti@juffo.org
Created attachment 22046
--> http://gcc.gnu.org/bugzilla/attachment.cgi?id=22046
_configtest.i
When building the Python NumPy library for Python 3.x, it does the following
test compilation test:
typedef struct {float __x; float __y;} npy_check_sizeof_type;
int main ()
{
static int test_array [1 - 2 * !(((long) (sizeof (npy_check_sizeof_type)))
<= 16.0)];
test_array [0] = 0
...
This code compiles fine with GCC 4.4.5 on Ubuntu, but fails with GCC 4.5.1 on
Arch Linux x86_64:
% gcc _configtest.c
_configtest.c: In function 'main':
_configtest.c:5:16: error: storage size of 'test_array' isn't constant
% gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-unknown-linux-gnu/4.5.1/lto-wrapper
Target: x86_64-unknown-linux-gnu
Configured with: ../configure --prefix=/usr
--enable-languages=c,c++,fortran,objc,obj-c++,ada --enable-shared
--enable-threads=posix --enable-__cxa_atexit --enable-clocale=gnu
--enable-gnu-unique-object --enable-lto --enable-plugin --disable-multilib
--disable-libstdcxx-pch --with-system-zlib --with-ppl --with-cloog
--libdir=/usr/lib --libexecdir=/usr/lib --mandir=/usr/share/man
--infodir=/usr/share/info
Thread model: posix
gcc version 4.5.1 (GCC)
^ permalink raw reply [flat|nested] 5+ messages in thread
* [Bug c/46028] Regression from GCC 4.4: "storage size of 'test_array' isn't constant"
2010-10-14 23:20 [Bug c/46028] New: Regression from GCC 4.4: "storage size of 'test_array' isn't constant" marti at juffo dot org
@ 2010-10-14 23:22 ` pinskia at gcc dot gnu.org
2010-10-14 23:23 ` pinskia at gcc dot gnu.org
` (2 subsequent siblings)
3 siblings, 0 replies; 5+ messages in thread
From: pinskia at gcc dot gnu.org @ 2010-10-14 23:22 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46028
--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> 2010-10-14 23:21:53 UTC ---
16.0 is a floating point number which I think is causing the issue.
^ permalink raw reply [flat|nested] 5+ messages in thread
* [Bug c/46028] Regression from GCC 4.4: "storage size of 'test_array' isn't constant"
2010-10-14 23:20 [Bug c/46028] New: Regression from GCC 4.4: "storage size of 'test_array' isn't constant" marti at juffo dot org
2010-10-14 23:22 ` [Bug c/46028] " pinskia at gcc dot gnu.org
@ 2010-10-14 23:23 ` pinskia at gcc dot gnu.org
2010-10-15 1:01 ` joseph at codesourcery dot com
2011-03-14 10:37 ` philipp at marek dot priv.at
3 siblings, 0 replies; 5+ messages in thread
From: pinskia at gcc dot gnu.org @ 2010-10-14 23:23 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46028
--- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> 2010-10-14 23:23:10 UTC ---
Comeau C/C++ gives the following error message for the above testcase:
"ComeauTest.c", line 5: error: expression must have integral type
<= 16.0)];
^ permalink raw reply [flat|nested] 5+ messages in thread
* [Bug c/46028] Regression from GCC 4.4: "storage size of 'test_array' isn't constant"
2010-10-14 23:20 [Bug c/46028] New: Regression from GCC 4.4: "storage size of 'test_array' isn't constant" marti at juffo dot org
2010-10-14 23:22 ` [Bug c/46028] " pinskia at gcc dot gnu.org
2010-10-14 23:23 ` pinskia at gcc dot gnu.org
@ 2010-10-15 1:01 ` joseph at codesourcery dot com
2011-03-14 10:37 ` philipp at marek dot priv.at
3 siblings, 0 replies; 5+ messages in thread
From: joseph at codesourcery dot com @ 2010-10-15 1:01 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46028
--- Comment #3 from joseph at codesourcery dot com <joseph at codesourcery dot com> 2010-10-15 01:01:13 UTC ---
Note that you can't trivially extend the laxity in
/* Handle a size folded to an integer constant but
not an integer constant expression. */
if (!size_int_const)
{
/* If this is a file scope declaration of an
ordinary identifier, this is invalid code;
diagnosing it here and not subsequently
treating the type as variable-length avoids
more confusing diagnostics later. */
if ((decl_context == NORMAL || decl_context == FIELD)
&& current_scope == file_scope)
pedwarn (input_location, 0,
"variably modified %qE at file scope",
name);
else
this_size_varies = size_varies = true;
warn_variable_length_array (name, size);
}
(that does a pedwarn rather than an error if this occurs at file scope) to
the present case of a static array inside a function, because it's valid
to have a block scope static *pointer* to VLA (which is however different
from a pointer to non-VLA), so you'd need to be lax only if it's a static
array rather than a pointer to such.
^ permalink raw reply [flat|nested] 5+ messages in thread
* [Bug c/46028] Regression from GCC 4.4: "storage size of 'test_array' isn't constant"
2010-10-14 23:20 [Bug c/46028] New: Regression from GCC 4.4: "storage size of 'test_array' isn't constant" marti at juffo dot org
` (2 preceding siblings ...)
2010-10-15 1:01 ` joseph at codesourcery dot com
@ 2011-03-14 10:37 ` philipp at marek dot priv.at
3 siblings, 0 replies; 5+ messages in thread
From: philipp at marek dot priv.at @ 2011-03-14 10:37 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46028
philipp at marek dot priv.at changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |philipp at marek dot
| |priv.at
--- Comment #4 from philipp at marek dot priv.at 2011-03-14 10:37:15 UTC ---
This fails, too: "error: storage size of ‘sv’ isn’t constant"
int main(void)
{
const int len = 20;
static char sv[len];
}
Similarly, gcc 4.4 accepted
#define CONST_STRING "aaa"
static char x[strlen(CONST_STRING)];
but gcc-4.5 does not.
(Of course, I could overload "strlen" ... but whether that's enough reason to
reject that?)
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2011-03-14 10:37 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-10-14 23:20 [Bug c/46028] New: Regression from GCC 4.4: "storage size of 'test_array' isn't constant" marti at juffo dot org
2010-10-14 23:22 ` [Bug c/46028] " pinskia at gcc dot gnu.org
2010-10-14 23:23 ` pinskia at gcc dot gnu.org
2010-10-15 1:01 ` joseph at codesourcery dot com
2011-03-14 10:37 ` philipp at marek dot priv.at
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).