Building gcc 4.5.1:

gcc -c  -g -fkeep-inline-functions -DIN_GCC   -W -Wall -Wwrite-strings
-Wcast-qual -Wstrict-prototypes -Wmissing-prototypes -Wmissing-format-attribute
-pedantic -Wno-long-long -Wno-variadic-macros -Wno-overlength-strings
-Wold-style-definition -Wc++-compat -fno-common  -DHAVE_CONFIG_H -I. -I.
-I/home/jayk/src/gcc-4.5.1/gcc -I/home/jayk/src/gcc-4.5.1/gcc/.
-I/home/jayk/src/gcc-4.5.1/gcc/../include
-I/home/jayk/src/gcc-4.5.1/gcc/../libcpp/include -I/home/jayk/obj/gcc451/./gmp
-I/home/jayk/src/gcc-4.5.1/gmp -I/home/jayk/obj/gcc451/./mpfr
-I/home/jayk/src/gcc-4.5.1/mpfr -I/home/jayk/src/gcc-4.5.1/mpc/src 
-I/home/jayk/src/gcc-4.5.1/gcc/../libdecnumber
-I/home/jayk/src/gcc-4.5.1/gcc/../libdecnumber/dpd -I../libdecnumber    
/home/jayk/src/gcc-4.5.1/gcc/dfp.c -o dfp.o
IIn file included from ../libdecnumber/gstdint.h:7:0,
                 from
/home/jayk/src/gcc-4.5.1/gcc/../libdecnumber/decContext.h:54,
                 from
/home/jayk/src/gcc-4.5.1/gcc/../libdecnumber/decNumber.h:37,
                 from
/home/jayk/src/gcc-4.5.1/gcc/../libdecnumber/dpd/decimal128.h:58,
                 from /home/jayk/src/gcc-4.5.1/gcc/dfp.c:34:
/home/jayk/lib/gcc/alphaev67-dec-osf5.1/4.5.0/include/stdint.h:91:25: error:
'long long long' is too long for GCC
/home/jayk/lib/gcc/alphaev67-dec-osf5.1/4.5.0/include/stdint.h:91:25: error:
two or more data types in declaration specifiers
/home/jayk/lib/gcc/alphaev67-dec-osf5.1/4.5.0/include/stdint.h:92:26: error:
duplicate 'unsigned'
/home/jayk/lib/gcc/alphaev67-dec-osf5.1/4.5.0/include/stdint.h:92:26: error:
'long long long' is too long for GCC
/home/jayk/lib/gcc/alphaev67-dec-osf5.1/4.5.0/include/stdint.h:92:26: error:
two or more data types in declaration specifiers
make[3]: *** [dfp.o] Error 1
make[3]: Leaving directory `/home/jayk/obj/gcc451/gcc'
make[2]: *** [all-stage1-gcc] Error 2
make[2]: Leaving directory `/home/jayk/obj/gcc451'
make[1]: *** [stage1-bubble] Error 2
make[1]: Leaving directory `/home/jayk/obj/gcc451'
make: *** [all] Error 2


/home/jayk/lib/gcc/alphaev67-dec-osf5.1/4.5.0/include/stdint.h

/* 7.8.1.5 Greatest-width integer types */

typedef __INTMAX_TYPE__ intmax_t;
typedef __UINTMAX_TYPE__ uintmax_t;


I added:
#undef intmax_t
#undef uintmax_t

and then it gets further.

Not certain, but problem is probably from here:

bash-4.1$ grep intmax_t */*h
gcc/auto-host.h:/* Define to 1 if the system has the type `intmax_t'. */
gcc/auto-host.h:/* Define to 1 if the system has the type `uintmax_t'. */
gcc/auto-host.h:#define intmax_t long long int
gcc/auto-host.h:#define uintmax_t unsigned long long int


bash-4.1$ gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/home/jayk/libexec/gcc/alphaev67-dec-osf5.1/4.5.0/lto-wrapper
Target: alphaev67-dec-osf5.1
Configured with: /home/jayk/src/gcc-4.5.0/configure -disable-nls
-prefix=/home/jayk
Thread model: posix
gcc version 4.5.0 (GCC)


config.log:

  $ /home/jayk/src/gcc-4.5.1/configure -prefix=/home/jayk -disable-nls -verbose



Probably due to some form of autoconf compiling one way and compilation going a
different way (e.g.
different command line flags).
Imho this is a major problem in autoconf. I see this kind of thing repeatedly.
Maybe it is a misuse of autoconf, but it seemingly just too easy to fall into.


I also don't think this newfangled C9x stuff is worth the effort.
 Wastes too much time in autoconf'ing and misautoconf'ing it.
  See here gcc has problem using it with current gcc. (!)


Probably best to just use the first of whichever: long long, __int64, long
exist,
erroring of long doesn't exist.


 - Jay


-- 
           Summary: auto-host #defines intmax_t breaks dfp.c (4.5.1)‏
           Product: gcc
           Version: 4.5.1
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: middle-end
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: jay dot krell at cornell dot edu


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45287

Reply via email to