mirror of git://gcc.gnu.org/git/gcc.git
re PR tree-optimization/45059 (error: invalid operands in binary operation, leads to ICE: verify_stmts failed)
PR tree-optimization/45059
* tree-ssa-reassoc.c (eliminate_redundant_comparison): Strip useless
type conversions from newop{1,2}. Assert t is a comparison and
newop{1,2} after the stripping are gimple vals.
* gcc.c-torture/compile/pr45059.c: New test.
From-SVN: r163539
This commit is contained in:
parent
46b57af175
commit
ca046f7f4e
|
|
@ -1,3 +1,10 @@
|
|||
2010-08-25 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR tree-optimization/45059
|
||||
* tree-ssa-reassoc.c (eliminate_redundant_comparison): Strip useless
|
||||
type conversions from newop{1,2}. Assert t is a comparison and
|
||||
newop{1,2} after the stripping are gimple vals.
|
||||
|
||||
2010-08-25 Tejas Belagod <tejas.belagod@arm.com>
|
||||
|
||||
* config/arm/iterators.md (VU, SE, V_widen_l): New.
|
||||
|
|
|
|||
|
|
@ -1,3 +1,8 @@
|
|||
2010-08-25 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR tree-optimization/45059
|
||||
* gcc.c-torture/compile/pr45059.c: New test.
|
||||
|
||||
2010-08-25 Tejas Belagod <tejas.belagod@arm.com>
|
||||
|
||||
* lib/target-supports.exp (check_effective_target_vect_unpack):
|
||||
|
|
|
|||
|
|
@ -0,0 +1,23 @@
|
|||
/* PR tree-optimization/45059 */
|
||||
|
||||
typedef unsigned int T;
|
||||
extern void foo (signed char *, int);
|
||||
|
||||
static signed char a;
|
||||
static T b[1] = { -1 };
|
||||
static unsigned char c;
|
||||
|
||||
static inline short int
|
||||
bar (short v)
|
||||
{
|
||||
c |= a < b[0];
|
||||
return 0;
|
||||
}
|
||||
|
||||
int
|
||||
main ()
|
||||
{
|
||||
signed char *e = &a;
|
||||
foo (e, bar (bar (c)));
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -1314,9 +1314,14 @@ eliminate_redundant_comparison (enum tree_code opcode,
|
|||
enum tree_code subcode;
|
||||
tree newop1;
|
||||
tree newop2;
|
||||
gcc_assert (COMPARISON_CLASS_P (t));
|
||||
tmpvar = create_tmp_var (TREE_TYPE (t), NULL);
|
||||
add_referenced_var (tmpvar);
|
||||
extract_ops_from_tree (t, &subcode, &newop1, &newop2);
|
||||
STRIP_USELESS_TYPE_CONVERSION (newop1);
|
||||
STRIP_USELESS_TYPE_CONVERSION (newop2);
|
||||
gcc_checking_assert (is_gimple_val (newop1)
|
||||
&& is_gimple_val (newop2));
|
||||
sum = build_and_add_sum (tmpvar, newop1, newop2, subcode);
|
||||
curr->op = gimple_get_lhs (sum);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue