re PR tree-optimization/32482 (ICE verify_ssa failed)
2007-07-04 Richard Guenther <rguenther@suse.de> PR tree-optimization/32482 * tree-ssa-ifcombine.c (recognize_single_bit_test): Use the original ssa name if we didn't find a shift expression. Fix shift constant for bit zero test. * gcc.c-torture/compile/pr32482.c: New testcase. From-SVN: r126314
This commit is contained in:
parent
6162fe83e1
commit
b0569227f5
@ -1,3 +1,10 @@
|
||||
2007-07-04 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR tree-optimization/32482
|
||||
* tree-ssa-ifcombine.c (recognize_single_bit_test): Use the
|
||||
original ssa name if we didn't find a shift expression.
|
||||
Fix shift constant for bit zero test.
|
||||
|
||||
2007-07-04 Richard Sandiford <richard@codesourcery.com>
|
||||
|
||||
* config/sh/lib1funcs.asm (ic_invalidate): Align constant pool.
|
||||
|
@ -1,3 +1,8 @@
|
||||
2007-07-04 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR tree-optimization/32482
|
||||
* gcc.c-torture/compile/pr32482.c: New testcase.
|
||||
|
||||
2007-07-04 Richard Sandiford <richard@codesourcery.com>
|
||||
|
||||
* gcc.c-torture/execute/ieee/compare-fp-4.x: Add an XFAIL for ARM
|
||||
|
23
gcc/testsuite/gcc.c-torture/compile/pr32482.c
Normal file
23
gcc/testsuite/gcc.c-torture/compile/pr32482.c
Normal file
@ -0,0 +1,23 @@
|
||||
typedef struct { unsigned long bits[((((1 << 0))+32 -1)/32)]; } nodemask_t;
|
||||
static inline __attribute__((always_inline))
|
||||
int bitmap_empty(const unsigned long *src, int nbits)
|
||||
{
|
||||
return ! (*src & ( ((nbits) % 32) ? (1UL<<((nbits) % 32))-1 : ~0UL ));
|
||||
}
|
||||
static inline __attribute__((always_inline))
|
||||
int __nodes_empty(const nodemask_t *srcp, int nbits)
|
||||
{
|
||||
return bitmap_empty(srcp->bits, nbits);
|
||||
}
|
||||
extern nodemask_t node_online_map;
|
||||
void drain_array(void);
|
||||
void drain_cpu_caches(void)
|
||||
{
|
||||
int node;
|
||||
if (!__nodes_empty(&(node_online_map), (1 << 0)))
|
||||
for (((node)) = 0; ((node)) < 1; ((node))++)
|
||||
{
|
||||
}
|
||||
if (!__nodes_empty(&(node_online_map), (1 << 0)))
|
||||
drain_array();
|
||||
}
|
@ -167,17 +167,22 @@ recognize_single_bit_test (tree cond_expr, tree *name, tree *bit)
|
||||
&& integer_onep (TREE_OPERAND (t, 1))
|
||||
&& TREE_CODE (TREE_OPERAND (t, 0)) == SSA_NAME)
|
||||
{
|
||||
t = TREE_OPERAND (t, 0);
|
||||
tree orig_name = TREE_OPERAND (t, 0);
|
||||
|
||||
/* Look through copies and conversions to eventually
|
||||
find the stmt that computes the shift. */
|
||||
t = orig_name;
|
||||
do {
|
||||
t = SSA_NAME_DEF_STMT (t);
|
||||
if (TREE_CODE (t) != GIMPLE_MODIFY_STMT)
|
||||
return false;
|
||||
break;
|
||||
t = GIMPLE_STMT_OPERAND (t, 1);
|
||||
if (TREE_CODE (t) == NOP_EXPR
|
||||
|| TREE_CODE (t) == CONVERT_EXPR)
|
||||
t = TREE_OPERAND (t, 0);
|
||||
} while (TREE_CODE (t) == SSA_NAME);
|
||||
|
||||
/* If we found such, decompose it. */
|
||||
if (TREE_CODE (t) == RSHIFT_EXPR)
|
||||
{
|
||||
/* op0 & (1 << op1) */
|
||||
@ -187,8 +192,8 @@ recognize_single_bit_test (tree cond_expr, tree *name, tree *bit)
|
||||
else
|
||||
{
|
||||
/* t & 1 */
|
||||
*bit = integer_one_node;
|
||||
*name = t;
|
||||
*bit = integer_zero_node;
|
||||
*name = orig_name;
|
||||
}
|
||||
|
||||
return true;
|
||||
|
Loading…
Reference in New Issue
Block a user