Bug 32839 - internal compiler error: Segmentation fault (templates)
Summary: internal compiler error: Segmentation fault (templates)
Status: RESOLVED FIXED
Alias: None
Product: gcc
Classification: Unclassified
Component: c++ (show other bugs)
Version: 4.2.1
: P3 normal
Target Milestone: 4.3.0
Assignee: Nathan Sidwell
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2007-07-20 12:40 UTC by Danny Boelens
Modified: 2007-08-06 21:50 UTC (History)
2 users (show)

See Also:
Host: i686-pc-linux-gnu
Target: i686-pc-linux-gnu
Build: i686-pc-linux-gnu
Known to work:
Known to fail:
Last reconfirmed: 2007-07-22 17:08:33


Attachments
Test case that triggers the ICE (386 bytes, text/plain)
2007-07-20 12:41 UTC, Danny Boelens
Details
Reduced testcase (164 bytes, application/octet-stream)
2007-07-22 16:49 UTC, Nathan Sidwell
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Danny Boelens 2007-07-20 12:40:25 UTC
Yesterday, one of my collegues ran into an internal compiler error when playing with some template code.

Although she ran into the ICE on Mac OS X with an Apple gcc 4.01 build, it was easy enough to reproduce it on a linux box with a GNU gcc build. I'm logging this against 4.2.1, but it seems every 4.x version segfaults; I tested with 4.02, 4.1-20060113 (yep, some old build laying around), 4.2.1 and even with the latest 4.3-20070713.

I created a small test case (see attachment) and this is the output I get with 4.2.1:

dannyb@linux:~/bugs/ice> ~/opt/gcc-4.2.1/bin/g++ -v -o test test.cpp
Using built-in specs.
Target: i686-pc-linux-gnu
Configured with: ../gcc-4.2.1/configure --prefix=/home/dannyb/opt/gcc-4.2.1 --enable-languages=c,c++
Thread model: posix
gcc version 4.2.1
 /home/dannyb/opt/gcc-4.2.1/libexec/gcc/i686-pc-linux-gnu/4.2.1/cc1plus -quiet -v -D_GNU_SOURCE test.cpp -quiet -dumpbase test.cpp -mtune=generic -auxbase test -version -o /tmp/ccyPKN6k.s
ignoring nonexistent directory "/home/dannyb/opt/gcc-4.2.1/lib/gcc/i686-pc-linux-gnu/4.2.1/../../../../i686-pc-linux-gnu/include"
#include "..." search starts here:
#include <...> search starts here:
 /home/dannyb/opt/gcc-4.2.1/lib/gcc/i686-pc-linux-gnu/4.2.1/../../../../include/c++/4.2.1
 /home/dannyb/opt/gcc-4.2.1/lib/gcc/i686-pc-linux-gnu/4.2.1/../../../../include/c++/4.2.1/i686-pc-linux-gnu
 /home/dannyb/opt/gcc-4.2.1/lib/gcc/i686-pc-linux-gnu/4.2.1/../../../../include/c++/4.2.1/backward
 /usr/local/include
 /home/dannyb/opt/gcc-4.2.1/include
 /home/dannyb/opt/gcc-4.2.1/lib/gcc/i686-pc-linux-gnu/4.2.1/include
 /usr/include
End of search list.
GNU C++ version 4.2.1 (i686-pc-linux-gnu)
	compiled by GNU C version 4.2.1.
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
Compiler executable checksum: cfede80d80c2b8e19355e4026d77f0b9
test.cpp: In member function ‘void ScopeImpl<F>::Execute() [with F = void (*)(int)]’:
test.cpp:31:   instantiated from ‘static void ScopeImplBase::SafeExecute(J&) [with J = ScopeImpl<void (*)(int)>]’
test.cpp:50:   instantiated from ‘ScopeImpl<F>::~ScopeImpl() [with F = void (*)(int)]’
test.cpp:46:   instantiated from ‘static void ScopeImpl<F>::MakeGuard(F) [with F = void (*)(int)]’
test.cpp:68:   instantiated from ‘void DoAtExit(F) [with F = void (*)(int)]’
test.cpp:74:   instantiated from here
test.cpp:54: internal compiler error: Segmentation fault
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://gcc.gnu.org/bugs.html> for instructions.
Comment 1 Danny Boelens 2007-07-20 12:41:51 UTC
Created attachment 13944 [details]
Test case that triggers the ICE
Comment 2 Nathan Sidwell 2007-07-22 16:49:59 UTC
Created attachment 13949 [details]
Reduced testcase
Comment 3 Nathan Sidwell 2007-07-22 17:48:36 UTC

2007-07-22  Nathan Sidwell  <nathan@codesourcery.com>

	cp/
	PR c++/32839
	* typeck.c (convert_arguments): Only use default args if we have
	a function decl.

	testsuite/
	PR c++/32839
	* g++.dg/expr/call4.C: New.
	* g++.dg/expr/call5.C: New.
Comment 4 Nathan Sidwell 2007-07-22 18:47:01 UTC
Subject: Bug 32839

Author: nathan
Date: Sun Jul 22 18:46:51 2007
New Revision: 126829

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=126829
Log:
cp/
	PR c++/32839
	* typeck.c (convert_arguments): Only use default args if we have
	a function decl.

testsuite/
	PR c++/32839
	* g++.dg/expr/call4.C: New.
	* g++.dg/expr/call5.C: New.

Added:
    trunk/gcc/testsuite/g++.dg/expr/call4.C
    trunk/gcc/testsuite/g++.dg/expr/call5.C
Modified:
    trunk/gcc/cp/ChangeLog
    trunk/gcc/cp/typeck.c
    trunk/gcc/testsuite/ChangeLog