This is a major bug on VMS, it prevents gnatlib compilation. Please fix. Ubuntu Linux Desktop 8.04 LTS
Target: ia64-hp-openvms8_3 Configured with: ../gcc-head-src/configure --target=ia64-hp-openvms8_3 --prefix=/vmsbuild/gcc/gnatxx --with-local-prefix=/vmsbuild/gcc/gnatxx/local --with-gnu-as --enable-threads=posix --disable-shared --disable-nls --disable-multilib --disable-libssp --disable-libada --disable-decimal-float --disable-fixed-point --enable-checking=release --enable-languages=c --with-gmp-include=/usr/local/include --with-gmp-lib=/usr/local/lib --with-mpfr-include=/us/local/include --with-mpfr-lib=/usr/local/lib Thread model: posix gcc version 4.5.0 20091129 (experimental) (GCC) -------------- $ ./cc1 foo.c to_ptr32 to_int to_ptr32_ptr32 foo.c: In function 'to_ptr32_ptr32': foo.c:28:3: internal compiler error: in int_or_pointer_precision, at tree.c:10583 --------------> Reproducer: $ cat foo.c typedef char* __char_ptr32 __attribute__ (( mode (SI) )); typedef __char_ptr32 *__char_ptr_char_ptr32 __attribute__ ((mode (SI))); void to_ptr32 (int x) { __char_ptr32 ptr = (__char_ptr32) x; } void to_int (__char_ptr32 ptr) { int x = (int) ptr; } __char_ptr_char_ptr32 to_ptr32_ptr32 (char **ptr64) { int argc; __char_ptr_char_ptr32 short_argv; for (argc=0; ptr64[argc]; argc++); short_argv = (__char_ptr_char_ptr32) malloc32 (sizeof (__char_ptr32) * (argc + 1)); for (argc=0; ptr64[argc]; argc++) short_argv[argc] = (__char_ptr32) strdup32 (ptr64[argc]); short_argv[argc] = (__char_ptr32) 0; return short_argv; } -- Summary: 32bit pointers to 32bit pointers abort on 64bit VMS Product: gcc Version: 4.5.0 Status: UNCONFIRMED Severity: major Priority: P3 Component: c AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: rupp at gnat dot com GCC build triplet: x86_64-unknown-linux-gnu GCC host triplet: x86_64-unknown-linux-gnu GCC target triplet: ia64-hp-openvms8_3 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42224