public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug tree-optimization/46805] New: ICE: SIGSEGV in optab_for_tree_code (optabs.c:407) with -O -fno-tree-scev-cprop -ftree-vectorize
@ 2010-12-05 0:14 zsojka at seznam dot cz
2010-12-05 11:07 ` [Bug tree-optimization/46805] " rguenth at gcc dot gnu.org
` (3 more replies)
0 siblings, 4 replies; 5+ messages in thread
From: zsojka at seznam dot cz @ 2010-12-05 0:14 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46805
Summary: ICE: SIGSEGV in optab_for_tree_code (optabs.c:407)
with -O -fno-tree-scev-cprop -ftree-vectorize
Product: gcc
Version: 4.6.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: tree-optimization
AssignedTo: unassigned@gcc.gnu.org
ReportedBy: zsojka@seznam.cz
Created attachment 22635
--> http://gcc.gnu.org/bugzilla/attachment.cgi?id=22635
reduced testcase
valgrind output:
$ gcc -O -fno-tree-scev-cprop -ftree-vectorize pr46805.go
==28234== Conditional jump or move depends on uninitialised value(s)
==28234== at 0x595C61: Lex::require_line() (lex.cc:501)
==28234== by 0x597E1A: Lex::next_token() (lex.cc:544)
==28234== by 0x598532: Parse::peek_token() (parse.cc:64)
==28234== by 0x59A08A: Parse::package_clause() (parse.cc:4544)
==28234== by 0x5A6F7D: Parse::program() (parse.cc:4624)
==28234== by 0x5717AC: go_parse_input_files (go.cc:82)
==28234== by 0x91B4F7: toplev_main (toplev.c:579)
==28234== by 0x65EABBC: (below main) (in /lib64/libc-2.11.2.so)
==28234== Uninitialised value was created by a stack allocation
==28234== at 0x56E720: go_langhook_parse_file (go-lang.c:222)
==28234==
==28234== Invalid read of size 2
==28234== at 0x8153C0: optab_for_tree_code (optabs.c:407)
==28234== by 0xA56359: supportable_widening_operation
(tree-vect-stmts.c:5521)
==28234== by 0xA56B45: vectorizable_type_promotion (tree-vect-stmts.c:3177)
==28234== by 0xA596E3: vect_analyze_stmt (tree-vect-stmts.c:4697)
==28234== by 0xA6522E: vect_analyze_loop (tree-vect-loop.c:1249)
==28234== by 0xA71968: vectorize_loops (tree-vectorizer.c:199)
==28234== by 0x8316FE: execute_one_pass (passes.c:1553)
==28234== by 0x8319C4: execute_pass_list (passes.c:1608)
==28234== by 0x8319D6: execute_pass_list (passes.c:1609)
==28234== by 0x8319D6: execute_pass_list (passes.c:1609)
==28234== by 0x971B45: tree_rest_of_compilation (tree-optimize.c:422)
==28234== by 0xB374E1: cgraph_expand_function (cgraphunit.c:1508)
==28234== by 0xB39AB9: cgraph_optimize (cgraphunit.c:1567)
==28234== by 0xB3A039: cgraph_finalize_compilation_unit (cgraphunit.c:1031)
==28234== by 0x57B97B: Gogo::write_globals() (gogo-tree.cc:825)
==28234== by 0x91B535: toplev_main (toplev.c:591)
==28234== by 0x65EABBC: (below main) (in /lib64/libc-2.11.2.so)
==28234== Address 0x0 is not stack'd, malloc'd or (recently) free'd
==28234==
pr46805.go: In function 'main.main':
pr46805.go:3:1: internal compiler error: Segmentation fault
Please submit a full bug report,
with preprocessed source if appropriate.
See <http://gcc.gnu.org/bugs.html> for instructions.
The first failure is most likely unrelated, similiar problems can be seen for
other frontends as well.
Tested revisions:
r167453 - crash
^ permalink raw reply [flat|nested] 5+ messages in thread
* [Bug tree-optimization/46805] ICE: SIGSEGV in optab_for_tree_code (optabs.c:407) with -O -fno-tree-scev-cprop -ftree-vectorize
2010-12-05 0:14 [Bug tree-optimization/46805] New: ICE: SIGSEGV in optab_for_tree_code (optabs.c:407) with -O -fno-tree-scev-cprop -ftree-vectorize zsojka at seznam dot cz
@ 2010-12-05 11:07 ` rguenth at gcc dot gnu.org
2010-12-05 11:19 ` zsojka at seznam dot cz
` (2 subsequent siblings)
3 siblings, 0 replies; 5+ messages in thread
From: rguenth at gcc dot gnu.org @ 2010-12-05 11:07 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46805
Richard Guenther <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |NEW
Last reconfirmed| |2010.12.05 11:07:21
Ever Confirmed|0 |1
--- Comment #1 from Richard Guenther <rguenth at gcc dot gnu.org> 2010-12-05 11:07:21 UTC ---
A non-Go testcase would be nice ...
#1 0x0000000100b3ce41 in supportable_widening_operation (code=NOP_EXPR,
stmt=0x141d3d0a0, vectype_out=0x141d3cdc8, vectype_in=0x141d3cf18,
decl1=0x7fff5fbff1d0, decl2=0x7fff5fbff1c8, code1=0x7fff5fbff238,
code2=0x7fff5fbff234, multi_step_cvt=0x7fff5fbff218,
interm_types=0x7fff5fbff170) at ../../src/trunk/gcc/tree-vect-stmts.c:5521
5521 optab3 = optab_for_tree_code (c1, intermediate_type,
optab_default);
(gdb) p intermediate_type
$1 = (tree) 0x0
for (i = 0; i < 3; i++)
{
intermediate_mode = insn_data[icode1].operand[0].mode;
intermediate_type = lang_hooks.types.type_for_mode
(intermediate_mode,
TYPE_UNSIGNED
(prev_type));
optab3 = optab_for_tree_code (c1, intermediate_type, optab_default);
lang_hooks.types.type_for_mode can return NULL, there is no suitable hook
that will a) return non-NULL always, b) always returns a type for the requested
mode(!)
I doubt a non-Go testcase exists.
Ideally we'd never use lang_hooks.types.type_for_mode (or _for_size) in the
middle-end but had a pure middle-end based implementation. A manual
middle-end substitute would be
build_nonstandard_integer_type (GET_MODE_PRECISION (intermediate_mode),
TYPE_UNSIGNED (prev_type));
More uses of type_for_mode exist.
With the vectorizer bits fixed we fall into tree-vect-generic.c which does
577 else
578 /* There is no operation in hardware, so fall back to scalars. */
579 compute_type = TREE_TYPE (type);
where type is already a TImode integer (and TREE_TYPE of it is NULL).
This is because appearantly Go has a DImode integer type but not a SImode
one. Huh. So we have
V2DI = VEC_UNPACK_LO_EXPR <TI>
where the TImode rhs is really V4SI.
The generic vector lowering code is confused by this.
Go -> low priority.
The following vectorizer patch leads to the above failure:
Index: tree-vect-stmts.c
===================================================================
--- tree-vect-stmts.c (revision 167471)
+++ tree-vect-stmts.c (working copy)
@@ -5516,7 +5516,7 @@
for (i = 0; i < 3; i++)
{
intermediate_mode = insn_data[icode1].operand[0].mode;
- intermediate_type = lang_hooks.types.type_for_mode
(intermediate_mode,
+ intermediate_type = build_nonstandard_integer_type
(GET_MODE_PRECISION (intermediate_mode),
TYPE_UNSIGNED
(prev_type));
optab3 = optab_for_tree_code (c1, intermediate_type, optab_default);
optab4 = optab_for_tree_code (c2, intermediate_type, optab_default);
@@ -5637,7 +5637,7 @@
for (i = 0; i < 3; i++)
{
intermediate_mode = insn_data[icode1].operand[0].mode;
- intermediate_type = lang_hooks.types.type_for_mode
(intermediate_mode,
+ intermediate_type = build_nonstandard_integer_type
(GET_MODE_PRECISION (intermediate_mode),
TYPE_UNSIGNED
(prev_type));
interm_optab = optab_for_tree_code (c1, intermediate_type,
optab_default);
another fix would be to catch intermediate_type == NULL here and fail
vectorization (but using the langhook is wrong here anyways).
Confirmed at least.
^ permalink raw reply [flat|nested] 5+ messages in thread
* [Bug tree-optimization/46805] ICE: SIGSEGV in optab_for_tree_code (optabs.c:407) with -O -fno-tree-scev-cprop -ftree-vectorize
2010-12-05 0:14 [Bug tree-optimization/46805] New: ICE: SIGSEGV in optab_for_tree_code (optabs.c:407) with -O -fno-tree-scev-cprop -ftree-vectorize zsojka at seznam dot cz
2010-12-05 11:07 ` [Bug tree-optimization/46805] " rguenth at gcc dot gnu.org
@ 2010-12-05 11:19 ` zsojka at seznam dot cz
2010-12-07 19:29 ` ian at gcc dot gnu.org
2010-12-07 19:32 ` ian at airs dot com
3 siblings, 0 replies; 5+ messages in thread
From: zsojka at seznam dot cz @ 2010-12-05 11:19 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46805
--- Comment #2 from Zdenek Sojka <zsojka at seznam dot cz> 2010-12-05 11:19:08 UTC ---
Created attachment 22641
--> http://gcc.gnu.org/bugzilla/attachment.cgi?id=22641
C-ified, but doesn't crash
Actually I tried to C-ify the testcase, but it no longer crashes. Maybe I
overlooked something...
^ permalink raw reply [flat|nested] 5+ messages in thread
* [Bug tree-optimization/46805] ICE: SIGSEGV in optab_for_tree_code (optabs.c:407) with -O -fno-tree-scev-cprop -ftree-vectorize
2010-12-05 0:14 [Bug tree-optimization/46805] New: ICE: SIGSEGV in optab_for_tree_code (optabs.c:407) with -O -fno-tree-scev-cprop -ftree-vectorize zsojka at seznam dot cz
2010-12-05 11:07 ` [Bug tree-optimization/46805] " rguenth at gcc dot gnu.org
2010-12-05 11:19 ` zsojka at seznam dot cz
@ 2010-12-07 19:29 ` ian at gcc dot gnu.org
2010-12-07 19:32 ` ian at airs dot com
3 siblings, 0 replies; 5+ messages in thread
From: ian at gcc dot gnu.org @ 2010-12-07 19:29 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46805
--- Comment #3 from ian at gcc dot gnu.org <ian at gcc dot gnu.org> 2010-12-07 19:28:49 UTC ---
Author: ian
Date: Tue Dec 7 19:28:44 2010
New Revision: 167563
URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=167563
Log:
PR tree-optimization/46805
PR tree-optimization/46833
* go-lang.c (go_langhook_type_for_mode): Handle vector modes.
Modified:
trunk/gcc/go/ChangeLog
trunk/gcc/go/go-lang.c
^ permalink raw reply [flat|nested] 5+ messages in thread
* [Bug tree-optimization/46805] ICE: SIGSEGV in optab_for_tree_code (optabs.c:407) with -O -fno-tree-scev-cprop -ftree-vectorize
2010-12-05 0:14 [Bug tree-optimization/46805] New: ICE: SIGSEGV in optab_for_tree_code (optabs.c:407) with -O -fno-tree-scev-cprop -ftree-vectorize zsojka at seznam dot cz
` (2 preceding siblings ...)
2010-12-07 19:29 ` ian at gcc dot gnu.org
@ 2010-12-07 19:32 ` ian at airs dot com
3 siblings, 0 replies; 5+ messages in thread
From: ian at airs dot com @ 2010-12-07 19:32 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46805
Ian Lance Taylor <ian at airs dot com> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |RESOLVED
CC| |ian at airs dot com
Resolution| |FIXED
--- Comment #4 from Ian Lance Taylor <ian at airs dot com> 2010-12-07 19:32:31 UTC ---
This should work now.
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2010-12-07 19:32 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-12-05 0:14 [Bug tree-optimization/46805] New: ICE: SIGSEGV in optab_for_tree_code (optabs.c:407) with -O -fno-tree-scev-cprop -ftree-vectorize zsojka at seznam dot cz
2010-12-05 11:07 ` [Bug tree-optimization/46805] " rguenth at gcc dot gnu.org
2010-12-05 11:19 ` zsojka at seznam dot cz
2010-12-07 19:29 ` ian at gcc dot gnu.org
2010-12-07 19:32 ` ian at airs dot com
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).