public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c++/64852] New: C++ accepts invalid(?) constants only at -O0
@ 2015-01-29  2:35 bernd.edlinger at hotmail dot de
  2015-01-29  2:45 ` [Bug c++/64852] " pinskia at gcc dot gnu.org
  0 siblings, 1 reply; 2+ messages in thread
From: bernd.edlinger at hotmail dot de @ 2015-01-29  2:35 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64852

            Bug ID: 64852
           Summary: C++ accepts invalid(?) constants only at -O0
           Product: gcc
           Version: 5.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: bernd.edlinger at hotmail dot de

This program should probably be rejected, but actually it compiles correctly
and
without warning, the resulting code "works".
Same behaviour with current trunk and 4.6.2



cat test.C
#include <arpa/inet.h>
#include <stdio.h>

const short test = htons(10);

int
main()
{
   printf("%x\n", test); 
}


g++ -O0 test.C && ./a.out 
a00

g++ -O1 test.C
In file included from /usr/include/x86_64-linux-gnu/bits/byteswap.h:35:0,
                 from /usr/include/endian.h:60,
                 from /usr/include/x86_64-linux-gnu/sys/types.h:216,
                 from /usr/include/x86_64-linux-gnu/sys/uio.h:23,
                 from /usr/include/x86_64-linux-gnu/sys/socket.h:26,
                 from /usr/include/netinet/in.h:23,
                 from /usr/include/arpa/inet.h:22,
                 from test.C:1:
test.C:4:20: error: statement-expressions are not allowed outside functions nor
in template-argument lists
 const short test = htons(10);



the same program is correctly rejected if compiled in C mode,
but interestingly with a completely different message on -O0 and -O1


^ permalink raw reply	[flat|nested] 2+ messages in thread

* [Bug c++/64852] C++ accepts invalid(?) constants only at -O0
  2015-01-29  2:35 [Bug c++/64852] New: C++ accepts invalid(?) constants only at -O0 bernd.edlinger at hotmail dot de
@ 2015-01-29  2:45 ` pinskia at gcc dot gnu.org
  0 siblings, 0 replies; 2+ messages in thread
From: pinskia at gcc dot gnu.org @ 2015-01-29  2:45 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64852

Andrew Pinski <pinskia at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |RESOLVED
         Resolution|---                         |INVALID

--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
C++ has runtime initializers for global variables.
The reason why you get an error message for -O1 is due to a glibc header
changing the definition of htons between -O1 and -O0.

Not a bug.


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2015-01-29  2:45 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-01-29  2:35 [Bug c++/64852] New: C++ accepts invalid(?) constants only at -O0 bernd.edlinger at hotmail dot de
2015-01-29  2:45 ` [Bug c++/64852] " pinskia at gcc dot gnu.org

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).