David Coppa wrote: > On Tue, 24 May 2016, [email protected] wrote: > > > >Synopsis: Default OpenBSD 5.9 GCC 4.2.1 compiler segfaults when > > >compiling a sample file > > >Category: system amd64 > > >Environment: > > System : OpenBSD 5.9 > > Details : OpenBSD 5.9 (GENERIC) #1761: Fri Feb 26 01:15:04 MST > > 2016 > > > > [email protected]:/usr/src/sys/arch/amd64/compile/GENERIC > > > > Architecture: OpenBSD.amd64 > > Machine : amd64 > > >Description: > > Default OpenBSD 5.9 GCC compiler segfaults when compiling a sample > > file, included into the repository [1]. > > > > [1]: https://github.com/extensibl/openbsd-gcc-4.2.1-segfault > > > > >How-To-Repeat: > > Follow README instructions in [1]. C sources, header files and GCC > > -save-temps files are included. > > > > >Fix: > > Fix unknown. Workaround - use GCC 4.9.3 from packages. > > Hi, > > The gcc diff below fixes this ICE (already tested). > > I don't know if GPLv3 prevents us from merging this fix... As far > as I can see, it should be from before the license change.
Looks like these two files were switched over to GPLv3 already when this commit was made :-( https://github.com/gcc-mirror/gcc/blob/59d1149a45706f3009604aeec8848fcddba13010/gcc/tree-ssa-propagate.c https://github.com/gcc-mirror/gcc/blob/59d1149a45706f3009604aeec8848fcddba13010/gcc/tree-ssa-ccp.c > Here's the Bugzilla page: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=32694 > > And the ViewVC one: > https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=128766 > > Ciao! > David > > Index: gnu/gcc/gcc/tree-ssa-ccp.c > =================================================================== > RCS file: /cvs/src/gnu/gcc/gcc/tree-ssa-ccp.c,v > retrieving revision 1.2 > diff -u -p -u -p -r1.2 tree-ssa-ccp.c > --- gnu/gcc/gcc/tree-ssa-ccp.c 28 Dec 2013 02:27:08 -0000 1.2 > +++ gnu/gcc/gcc/tree-ssa-ccp.c 24 May 2016 12:46:53 -0000 > @@ -2063,12 +2063,13 @@ fold_stmt_r (tree *expr_p, int *walk_sub > tem = fold_binary (TREE_CODE (op0), TREE_TYPE (op0), > TREE_OPERAND (op0, 0), > TREE_OPERAND (op0, 1)); > - set = tem && is_gimple_condexpr (tem); > + set = tem && set_rhs (expr_p, tem); > fold_undefer_overflow_warnings (set, fold_stmt_r_data->stmt, 0); > if (set) > - TREE_OPERAND (expr, 0) = tem; > - t = expr; > - break; > + { > + t = *expr_p; > + break; > + } > } > > default: > Index: gnu/gcc/gcc/tree-ssa-propagate.c > =================================================================== > RCS file: /cvs/src/gnu/gcc/gcc/tree-ssa-propagate.c,v > retrieving revision 1.1.1.1 > diff -u -p -u -p -r1.1.1.1 tree-ssa-propagate.c > --- gnu/gcc/gcc/tree-ssa-propagate.c 15 Oct 2009 17:11:28 -0000 1.1.1.1 > +++ gnu/gcc/gcc/tree-ssa-propagate.c 24 May 2016 12:46:53 -0000 > @@ -571,7 +571,8 @@ set_rhs (tree *stmt_p, tree expr) > ssa_op_iter iter; > > /* Verify the constant folded result is valid gimple. */ > - if (TREE_CODE_CLASS (code) == tcc_binary) > + if (TREE_CODE_CLASS (code) == tcc_binary > + || TREE_CODE_CLASS (code) == tcc_comparison) > { > if (!is_gimple_val (TREE_OPERAND (expr, 0)) > || !is_gimple_val (TREE_OPERAND (expr, 1))) >
