re PR tree-optimization/41016 (ICE in build_int_cst_wide with -O1)
2009-08-09 Richard Guenther <rguenther@suse.de> PR tree-optimization/41016 * tree-ssa-ifcombine.c (get_name_for_bit_test): Fix tuplification bug. (operand_precision): Remove. (integral_operand_p): Likewise. (recognize_single_bit_test): Adjust. * gcc.c-torture/compile/pr41016.c: New testcase. From-SVN: r150595
This commit is contained in:
parent
f517845606
commit
a64509053c
4 changed files with 37 additions and 25 deletions
|
@ -1,3 +1,12 @@
|
|||
2009-08-09 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR tree-optimization/41016
|
||||
* tree-ssa-ifcombine.c (get_name_for_bit_test): Fix tuplification
|
||||
bug.
|
||||
(operand_precision): Remove.
|
||||
(integral_operand_p): Likewise.
|
||||
(recognize_single_bit_test): Adjust.
|
||||
|
||||
2009-08-09 Richard Sandiford <rdsandiford@googlemail.com>
|
||||
|
||||
* c-common.c (c_fully_fold_internal): Issue a warning if a binary
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2009-08-09 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR tree-optimization/41016
|
||||
* gcc.c-torture/compile/pr41016.c: New testcase.
|
||||
|
||||
2009-08-09 Richard Sandiford <rdsandiford@googlemail.com>
|
||||
|
||||
* gcc.dg/overflow-warn-8.c: New test.
|
||||
|
|
17
gcc/testsuite/gcc.c-torture/compile/pr41016.c
Normal file
17
gcc/testsuite/gcc.c-torture/compile/pr41016.c
Normal file
|
@ -0,0 +1,17 @@
|
|||
typedef struct _IO_FILE FILE;
|
||||
void
|
||||
CompareRNAStructures (FILE * ofp, int start, int L, char *ss_true, char *ss)
|
||||
{
|
||||
int i;
|
||||
float agree = 0.;
|
||||
float pairs = 0.;
|
||||
float pairs_true = 0.;
|
||||
for (i = 0; i < L; i++)
|
||||
{
|
||||
pairs_true += 1.;
|
||||
agree += 1.;
|
||||
}
|
||||
if (((int) pairs % 2 != 0) || ((int) pairs_true % 2 != 0)
|
||||
|| ((int) agree % 2 != 0))
|
||||
Die ("Error in CompareRNAStrutures(); odd number of paired nucleotides\n");
|
||||
}
|
|
@ -151,7 +151,7 @@ get_name_for_bit_test (tree candidate)
|
|||
{
|
||||
gimple def_stmt = SSA_NAME_DEF_STMT (candidate);
|
||||
if (is_gimple_assign (def_stmt)
|
||||
&& gimple_assign_cast_p (def_stmt))
|
||||
&& CONVERT_EXPR_CODE_P (gimple_assign_rhs_code (def_stmt)))
|
||||
{
|
||||
if (TYPE_PRECISION (TREE_TYPE (candidate))
|
||||
<= TYPE_PRECISION (TREE_TYPE (gimple_assign_rhs1 (def_stmt))))
|
||||
|
@ -162,21 +162,6 @@ get_name_for_bit_test (tree candidate)
|
|||
return candidate;
|
||||
}
|
||||
|
||||
/* Helpers for recognize_single_bit_test defined mainly for source code
|
||||
formating. */
|
||||
|
||||
static int
|
||||
operand_precision (tree t)
|
||||
{
|
||||
return TYPE_PRECISION (TREE_TYPE (t));
|
||||
}
|
||||
|
||||
static bool
|
||||
integral_operand_p (tree t)
|
||||
{
|
||||
return INTEGRAL_TYPE_P (TREE_TYPE (t));
|
||||
}
|
||||
|
||||
/* Recognize a single bit test pattern in GIMPLE_COND and its defining
|
||||
statements. Store the name being tested in *NAME and the bit
|
||||
in *BIT. The GIMPLE_COND computes *NAME & (1 << *BIT).
|
||||
|
@ -212,15 +197,11 @@ recognize_single_bit_test (gimple cond, tree *name, tree *bit)
|
|||
stmt = SSA_NAME_DEF_STMT (orig_name);
|
||||
|
||||
while (is_gimple_assign (stmt)
|
||||
&& (gimple_assign_ssa_name_copy_p (stmt)
|
||||
|| (gimple_assign_cast_p (stmt)
|
||||
&& integral_operand_p (gimple_assign_lhs (stmt))
|
||||
&& integral_operand_p (gimple_assign_rhs1 (stmt))
|
||||
&& (operand_precision (gimple_assign_lhs (stmt))
|
||||
<= operand_precision (gimple_assign_rhs1 (stmt))))))
|
||||
{
|
||||
stmt = SSA_NAME_DEF_STMT (gimple_assign_rhs1 (stmt));
|
||||
}
|
||||
&& ((CONVERT_EXPR_CODE_P (gimple_assign_rhs_code (stmt))
|
||||
&& (TYPE_PRECISION (TREE_TYPE (gimple_assign_lhs (stmt)))
|
||||
<= TYPE_PRECISION (TREE_TYPE (gimple_assign_rhs1 (stmt)))))
|
||||
|| gimple_assign_ssa_name_copy_p (stmt)))
|
||||
stmt = SSA_NAME_DEF_STMT (gimple_assign_rhs1 (stmt));
|
||||
|
||||
/* If we found such, decompose it. */
|
||||
if (is_gimple_assign (stmt)
|
||||
|
|
Loading…
Add table
Reference in a new issue