[Bug c++/69318] New: [6 regression] ICE in symtab_node::verify with -fabi-version=7 -Wabi=8 -m32
msebor at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Sat Jan 16 19:30:00 GMT 2016
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69318
Bug ID: 69318
Summary: [6 regression] ICE in symtab_node::verify with
-fabi-version=7 -Wabi=8 -m32
Product: gcc
Version: 6.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: msebor at gcc dot gnu.org
Target Milestone: ---
While testing the -fabi-version= and -Wabi options for a patch for bug 69277 I
came across the following ICE. 5.1.0 compiles the code successfully so I'm
marking this a regression.
For reference, the since resolved bug 65531 reported against 5.0 points out
another problem triggered by the function but for a different test case and
with slightly different symptoms and stack trace.
$ (f=/home/msebor/scm/fsf/gcc-svn/gcc/testsuite/g++.dg/abi/mangle-regparm.C;
cat $f && /home/msebor/build/gcc-trunk-svn/gcc/xg++
-B/home/msebor/build/gcc-trunk-svn/gcc -S -Wall -fabi-version=7 -Wabi=8 -m32 -o
/dev/null -xc++ $f)
// { dg-do run { target { { i?86-*-* x86_64-*-* } && ia32 } } }
// { dg-options "-Wabi=8 -save-temps" }
// { dg-final { scan-assembler
"_Z18IndirectExternCallIPU7stdcallU7regparmILi3EEFviiEiEvT_T0_S3_" } }
typedef __SIZE_TYPE__ size_t;
template <typename F, typename T>
void IndirectExternCall(F f, T t1, T t2) { // { dg-warning "mangled name" }
typedef F (*WrapF)(F);
f (t1, t2);
}
__attribute__((regparm(3), stdcall))
void regparm_func (int i, int j)
{
if (i != 24 || j != 42)
__builtin_abort();
}
void normal_func (int i, int j)
{
if (i != 24 || j != 42)
__builtin_abort();
}
int main()
{
IndirectExternCall (regparm_func, 24, 42);
IndirectExternCall (normal_func, 24, 42);
}
/home/msebor/scm/fsf/gcc-svn/gcc/testsuite/g++.dg/abi/mangle-regparm.C: In
function ‘void IndirectExternCall(F, T, T)’:
/home/msebor/scm/fsf/gcc-svn/gcc/testsuite/g++.dg/abi/mangle-regparm.C:9:15:
warning: typedef ‘WrapF’ locally defined but not used [-Wunused-local-typedef]
typedef F (*WrapF)(F);
^~~~~
/home/msebor/scm/fsf/gcc-svn/gcc/testsuite/g++.dg/abi/mangle-regparm.C: At
global scope:
/home/msebor/scm/fsf/gcc-svn/gcc/testsuite/g++.dg/abi/mangle-regparm.C:30:1:
error: Two symbols with same comdat_group are not linked by the
same_comdat_group list.
}
^
_Z18IndirectExternCallIPFviiEiEvT_T0_S3_/4 (void IndirectExternCall(F, T, T)
[with F = void (*)(int, int); T = int]) @0x7f0eb93585c0
Type: function definition analyzed
Visibility: public weak comdat
comdat_group:_Z18IndirectExternCallIPFviiEiEvT_T0_S3_ one_only
previous sharing asm name: 3
References:
Referring:
First run: 0
Function flags: body
Called by: main/2 (1.00 per call) (can throw external)
Calls:
Indirect call(1.00 per call) (can throw external)
_Z18IndirectExternCallIPFviiEiEvT_T0_S3_/3 (void IndirectExternCall(F, T, T)
[with F = void (__attribute__((stdcall, regparm(3))) *)(int, int); T = int])
@0x7f0eb9358450
Type: function definition analyzed
Visibility: public weak comdat
comdat_group:_Z18IndirectExternCallIPFviiEiEvT_T0_S3_ one_only
next sharing asm name: 4
References:
Referring:
First run: 0
Function flags: body
Called by: main/2 (1.00 per call) (can throw external)
Calls:
Indirect call(1.00 per call) (can throw external)
/home/msebor/scm/fsf/gcc-svn/gcc/testsuite/g++.dg/abi/mangle-regparm.C:30:1:
internal compiler error: symtab_node::verify failed
0xb5e535 symtab_node::verify_symtab_nodes()
/home/msebor/scm/fsf/gcc-svn/gcc/symtab.c:1212
0xb7c4a0 symtab_node::checking_verify_symtab_nodes()
/home/msebor/scm/fsf/gcc-svn/gcc/cgraph.h:602
0xb7bb4e symbol_table::compile()
/home/msebor/scm/fsf/gcc-svn/gcc/cgraphunit.c:2371
0xb7bfb1 symbol_table::finalize_compilation_unit()
/home/msebor/scm/fsf/gcc-svn/gcc/cgraphunit.c:2553
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See <http://gcc.gnu.org/bugs.html> for instructions.
More information about the Gcc-bugs
mailing list