http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60515
Bug ID: 60515 Summary: Compiler crash with -g and -mpoke-function-name option combined Product: gcc Version: 4.9.0 Status: UNCONFIRMED Severity: major Priority: P3 Component: c Assignee: unassigned at gcc dot gnu.org Reporter: eblot.ml at gmail dot com When building XZ 5.0 decoder, GCC pre-4.9.0 crashes with two distinct files (out of a project with hundreds of files compiled with the very same command line option). The error is: $ /usr/local/opt/arm-eabi-gcc49/bin/arm-eabi-gcc-4.9.0 -mcpu=arm7tdmi-s -g -mpoke-function-name -o demo.o -c demo.c demo.c: In function ‘xz_dec_end’: demo.c:19:1: internal compiler error: in dwarf2out_frame_debug_adjust_cfa, at dwarf2cfi.c:1090 } ^ demo.c:19:1: internal compiler error: Abort trap: 6 arm-eabi-gcc-4.9.0: internal compiler error: Abort trap: 6 (program cc1) Abort trap: 6 GCC version: $ arm-eabi-gcc-4.9.0 --version arm-eabi-gcc-4.9.0 (SDK2-Legolas) 4.9.0 20140309 (experimental) Copyright (C) 2014 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Note: It is an EABI target, not the GNUEABI version. It has been built an executed on OS X 10.9.2, with GCC 4.8 [gcc-4.8 (GCC) 4.8.2] with newlib 2.0.0 as the target libraries (./newlib and ./libgloss) and binutils 2.24 for the target binutils. Configure command line: ../configure --prefix=${prefix} --target=arm-eabi --disable-shared --with-gnu-as --with-gnu-ld --with-newlib --enable-softfloat --disable-bigendian --disable-fpu --disable-underscore --enable-multilibs --with-float=soft --enable-interwork --enable-lto --with-multilib --with-abi=aapcs --enable-languages=c,c++ --with-gmp=${gmp_prefix} --with-mpfr=${mpfr_prefix} --with-mpc=${libmpc_prefix} --with-cloog=${cloog_prefix} --enable-cloog-backend=isl --with-isl=${isl_prefix} --with-libelf=${libelf_prefix} --with-gxx-include-dir=${prefix}/arm-eabi/include --disable-debug --disable-__cxa_atexit I've shrunk the content of the source file that triggers the bug to the minimal possible size. I also removed all the command line options to the simplest possible options. demo.c: struct xz_dec_lzma2; struct xz_dec_bcj; struct xz_dec { struct xz_dec_lzma2 *lzma2; struct xz_dec_bcj *bcj; }; void xz_dec_end(struct xz_dec *s); void xz_dec_lzma2_end(struct xz_dec_lzma2 *s); void free(void * p); void xz_dec_end(struct xz_dec *s) { xz_dec_lzma2_end(s->lzma2); free(s->bcj); } command line triggering the crash: arm-eabi-gcc-4.9.0 -mcpu=arm7tdmi-s -g -mpoke-function-name -o demo.o -c demo.c removing "-g" OR "-mpoke-function-name" builds the output file Ok, no crash. Let me know if you need any other piece of information.