On Mon, Sep 22, 2014 at 08:46:07AM +0300, Andriy Gapon wrote: > On 22/09/2014 05:20, Rui Paulo wrote: > > On Sep 21, 2014, at 18:48, Steve Kargl <[email protected]> > > wrote: > >> On Sun, Sep 21, 2014 at 06:38:48PM -0700, Rui Paulo wrote: > >>> On Sep 21, 2014, at 18:19, Steve Kargl > >>> <[email protected]> wrote: > >>>> > >>>> #include <stdio.h> > >>>> #include <stdint.h> > >>>> > >>>> int > >>>> main(void) > >>>> { > >>>> uint16_t i; > >>>> i = 0x3ffe+63; printf("%x\n", i); > >>>> return 0; > >>>> } > >>> > >>> Looks like it. Please file a bug report with LLVM. > >>> > >> > >> Unfortunately, llvm requires an account to report bugs. > > > > I think I know what's happening: "e" is being parsed as > > scientific notation. > > Interesting! One of the cases where the whitespace matters? >
In a discussion on a GCC list, I was pointed to the section of n1256.pdf where preprocessing numbers are discussed. 0x3ffe+63 is preprocessed as a single token. When the parser finally gets around to classifying this token, it is neither a valid integer constant nor floating point constant. It's just a weird feature (idiosyncrasy?) of the C language. -- Steve _______________________________________________ [email protected] mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-toolchain To unsubscribe, send any mail to "[email protected]"
