[Bug middle-end/55832] [4.8 Regression] ICE in fold_convert_loc, at fold-const.c:1967

2013-01-03 Thread glisse at gcc dot gnu.org


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55832



--- Comment #6 from Marc Glisse glisse at gcc dot gnu.org 2013-01-03 08:56:47 
UTC ---

(In reply to comment #5)

 I've slightly adjusted the testcase, so that it at least doesn't violate 
 strict

 aliasing, unfortunately without the uninitialized c it doesn't trigger.  And I

 couldn't find a way to create ABS_EXPR of vectors using vector types directly.



I would also like a way to generate ABS_EXPR and MAX_EXPR for vectors, but for

this specific bug, it is probably easier to stick to unsigned types:



typedef unsigned long vec __attribute__((vector_size(16)));



void f(vec* x){

  *x = (*x = 0) ? *x : 0;

}


[Bug middle-end/55832] [4.8 Regression] ICE in fold_convert_loc, at fold-const.c:1967

2013-01-03 Thread jakub at gcc dot gnu.org


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55832



--- Comment #7 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-03 
09:02:51 UTC ---

Author: jakub

Date: Thu Jan  3 09:02:41 2013

New Revision: 194836



URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=194836

Log:

PR tree-optimization/55832

* fold-const.c (fold_binary_loc): For ABS_EXPRx = 0 and

ABS_EXPRx  0 folding use constant_boolean_node instead of

integer_{one,zero}_node.



* gcc.c-torture/compile/pr55832.c: New test.



Added:

trunk/gcc/testsuite/gcc.c-torture/compile/pr55832.c

Modified:

trunk/gcc/ChangeLog

trunk/gcc/fold-const.c

trunk/gcc/testsuite/ChangeLog


[Bug middle-end/55832] [4.8 Regression] ICE in fold_convert_loc, at fold-const.c:1967

2013-01-03 Thread jakub at gcc dot gnu.org


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55832



Jakub Jelinek jakub at gcc dot gnu.org changed:



   What|Removed |Added



 Status|ASSIGNED|RESOLVED

 Resolution||FIXED



--- Comment #8 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-03 
09:09:58 UTC ---

Fixed.


[Bug middle-end/55832] [4.8 Regression] ICE in fold_convert_loc, at fold-const.c:1967

2013-01-02 Thread jakub at gcc dot gnu.org


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55832



Jakub Jelinek jakub at gcc dot gnu.org changed:



   What|Removed |Added



 Status|NEW |ASSIGNED

 AssignedTo|unassigned at gcc dot   |jakub at gcc dot gnu.org

   |gnu.org |



--- Comment #5 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-02 
09:07:06 UTC ---

Created attachment 29072

  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=29072

gcc48-pr55832.patch



Indeed, and omit_one_operand_loc can deal with converting integer_zero_node to

a zero vector, but can't cope with converting integer_one_node into a constant

boolean true vector.



I've slightly adjusted the testcase, so that it at least doesn't violate strict

aliasing, unfortunately without the uninitialized c it doesn't trigger.  And I

couldn't find a way to create ABS_EXPR of vectors using vector types directly.


[Bug middle-end/55832] [4.8 Regression] ICE in fold_convert_loc, at fold-const.c:1967

2012-12-31 Thread rguenth at gcc dot gnu.org


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55832



Richard Biener rguenth at gcc dot gnu.org changed:



   What|Removed |Added



 Status|UNCONFIRMED |NEW

   Last reconfirmed||2012-12-31

  Component|tree-optimization   |middle-end

  Known to work||4.6.3

   Target Milestone|--- |4.8.0

Summary|ICE in fold_convert_loc, at |[4.8 Regression] ICE in

   |fold-const.c:1967   |fold_convert_loc, at

   ||fold-const.c:1967

 Ever Confirmed|0   |1



--- Comment #1 from Richard Biener rguenth at gcc dot gnu.org 2012-12-31 
16:33:43 UTC ---

Confirmed.


[Bug middle-end/55832] [4.8 Regression] ICE in fold_convert_loc, at fold-const.c:1967

2012-12-31 Thread pinskia at gcc dot gnu.org


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55832



Andrew Pinski pinskia at gcc dot gnu.org changed:



   What|Removed |Added



   Keywords||ice-on-valid-code



--- Comment #2 from Andrew Pinski pinskia at gcc dot gnu.org 2012-12-31 
21:13:25 UTC ---

Here is the backtrace:

0x7129d4 fold_convert_loc(unsigned int, tree_node*, tree_node*)

../../gcc/fold-const.c:1967

0x712d17 omit_one_operand_loc(unsigned int, tree_node*, tree_node*, tree_node*)

../../gcc/fold-const.c:2943

0x6fa26f fold_binary_loc(unsigned int, tree_code, tree_node*, tree_node*,

tree_node*)

../../gcc/fold-const.c:13522

0x9b37b9 combine_cond_expr_cond

../../gcc/tree-ssa-forwprop.c:367

0x9b6124 forward_propagate_into_comparison_1

../../gcc/tree-ssa-forwprop.c:414

0x9bd8e3 forward_propagate_into_cond

../../gcc/tree-ssa-forwprop.c:562

0x9bd8e3 ssa_forward_propagate_and_combine

../../gcc/tree-ssa-forwprop.c:3013


[Bug middle-end/55832] [4.8 Regression] ICE in fold_convert_loc, at fold-const.c:1967

2012-12-31 Thread pinskia at gcc dot gnu.org


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55832



Andrew Pinski pinskia at gcc dot gnu.org changed:



   What|Removed |Added



 Target||x86_64-*-*



--- Comment #3 from Andrew Pinski pinskia at gcc dot gnu.org 2012-12-31 
21:14:43 UTC ---

Note the ICE is in the forwprop after vectorization.


[Bug middle-end/55832] [4.8 Regression] ICE in fold_convert_loc, at fold-const.c:1967

2012-12-31 Thread glisse at gcc dot gnu.org


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55832



--- Comment #4 from Marc Glisse glisse at gcc dot gnu.org 2013-01-01 03:15:46 
UTC ---

(In reply to comment #2)

 0x6fa26f fold_binary_loc(unsigned int, tree_code, tree_node*, tree_node*,

 tree_node*)

 ../../gcc/fold-const.c:13522



This line uses integer_one_node instead of calling constant_boolean_node.