if (operand_mode == BLKmode)
return 0;
- while (TREE_CODE (arg0) == NON_LVALUE_EXPR)
- arg0 = TREE_OPERAND (arg0, 0);
-
- while (TREE_CODE (arg1) == NON_LVALUE_EXPR)
- arg1 = TREE_OPERAND (arg1, 0);
+ STRIP_NOPS (arg0);
+ STRIP_NOPS (arg1);
/* Get the rtx comparison code to use. We know that EXP is a comparison
operation of some type. Some comparisons against 1 and -1 can be
integer_zerop (expr)
tree expr;
{
- while (TREE_CODE (expr) == NON_LVALUE_EXPR)
- expr = TREE_OPERAND (expr, 0);
+ STRIP_NOPS (expr);
return (TREE_CODE (expr) == INTEGER_CST
&& TREE_INT_CST_LOW (expr) == 0
integer_onep (expr)
tree expr;
{
- while (TREE_CODE (expr) == NON_LVALUE_EXPR)
- expr = TREE_OPERAND (expr, 0);
+ STRIP_NOPS (expr);
return (TREE_CODE (expr) == INTEGER_CST
&& TREE_INT_CST_LOW (expr) == 1
register int prec;
register int uns;
- while (TREE_CODE (expr) == NON_LVALUE_EXPR)
- expr = TREE_OPERAND (expr, 0);
+ STRIP_NOPS (expr);
if (TREE_CODE (expr) != INTEGER_CST)
return 0;
{
HOST_WIDE_INT high, low;
- while (TREE_CODE (expr) == NON_LVALUE_EXPR)
- expr = TREE_OPERAND (expr, 0);
+ STRIP_NOPS (expr);
if (TREE_CODE (expr) != INTEGER_CST)
return 0;
real_zerop (expr)
tree expr;
{
- while (TREE_CODE (expr) == NON_LVALUE_EXPR)
- expr = TREE_OPERAND (expr, 0);
+ STRIP_NOPS (expr);
return (TREE_CODE (expr) == REAL_CST
&& REAL_VALUES_EQUAL (TREE_REAL_CST (expr), dconst0));
real_onep (expr)
tree expr;
{
- while (TREE_CODE (expr) == NON_LVALUE_EXPR)
- expr = TREE_OPERAND (expr, 0);
+ STRIP_NOPS (expr);
return (TREE_CODE (expr) == REAL_CST
&& REAL_VALUES_EQUAL (TREE_REAL_CST (expr), dconst1));
real_twop (expr)
tree expr;
{
- while (TREE_CODE (expr) == NON_LVALUE_EXPR)
- expr = TREE_OPERAND (expr, 0);
+ STRIP_NOPS (expr);
return (TREE_CODE (expr) == REAL_CST
&& REAL_VALUES_EQUAL (TREE_REAL_CST (expr), dconst2));
really_constant_p (exp)
tree exp;
{
+ /* This is not quite the same as STRIP_NOPS. It does more. */
while (TREE_CODE (exp) == NOP_EXPR
|| TREE_CODE (exp) == CONVERT_EXPR
|| TREE_CODE (exp) == NON_LVALUE_EXPR)