Deleted Added
full compact
fold-const.c (174532) fold-const.c (220150)
1/* Fold a constant sub-tree into a single node for C-compiler
2 Copyright (C) 1987, 1988, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
3 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
4 Free Software Foundation, Inc.
5
6This file is part of GCC.
7
8GCC is free software; you can redistribute it and/or modify it under

--- 9373 unchanged lines hidden (view full) ---

9382 return omit_one_operand (type, arg1, arg0);
9383 if (integer_zerop (arg1))
9384 return non_lvalue (fold_convert (type, arg0));
9385 if (operand_equal_p (arg0, arg1, 0))
9386 return non_lvalue (fold_convert (type, arg0));
9387
9388 /* ~X | X is -1. */
9389 if (TREE_CODE (arg0) == BIT_NOT_EXPR
1/* Fold a constant sub-tree into a single node for C-compiler
2 Copyright (C) 1987, 1988, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
3 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
4 Free Software Foundation, Inc.
5
6This file is part of GCC.
7
8GCC is free software; you can redistribute it and/or modify it under

--- 9373 unchanged lines hidden (view full) ---

9382 return omit_one_operand (type, arg1, arg0);
9383 if (integer_zerop (arg1))
9384 return non_lvalue (fold_convert (type, arg0));
9385 if (operand_equal_p (arg0, arg1, 0))
9386 return non_lvalue (fold_convert (type, arg0));
9387
9388 /* ~X | X is -1. */
9389 if (TREE_CODE (arg0) == BIT_NOT_EXPR
9390 && INTEGRAL_TYPE_P (TREE_TYPE (arg1))
9390 && operand_equal_p (TREE_OPERAND (arg0, 0), arg1, 0))
9391 {
9392 t1 = build_int_cst (type, -1);
9393 t1 = force_fit_type (t1, 0, false, false);
9394 return omit_one_operand (type, t1, arg1);
9395 }
9396
9397 /* X | ~X is -1. */
9398 if (TREE_CODE (arg1) == BIT_NOT_EXPR
9391 && operand_equal_p (TREE_OPERAND (arg0, 0), arg1, 0))
9392 {
9393 t1 = build_int_cst (type, -1);
9394 t1 = force_fit_type (t1, 0, false, false);
9395 return omit_one_operand (type, t1, arg1);
9396 }
9397
9398 /* X | ~X is -1. */
9399 if (TREE_CODE (arg1) == BIT_NOT_EXPR
9400 && INTEGRAL_TYPE_P (TREE_TYPE (arg0))
9399 && operand_equal_p (arg0, TREE_OPERAND (arg1, 0), 0))
9400 {
9401 t1 = build_int_cst (type, -1);
9402 t1 = force_fit_type (t1, 0, false, false);
9403 return omit_one_operand (type, t1, arg0);
9404 }
9405
9406 /* Canonicalize (X & C1) | C2. */

--- 91 unchanged lines hidden (view full) ---

9498 return non_lvalue (fold_convert (type, arg0));
9499 if (integer_all_onesp (arg1))
9500 return fold_build1 (BIT_NOT_EXPR, type, arg0);
9501 if (operand_equal_p (arg0, arg1, 0))
9502 return omit_one_operand (type, integer_zero_node, arg0);
9503
9504 /* ~X ^ X is -1. */
9505 if (TREE_CODE (arg0) == BIT_NOT_EXPR
9401 && operand_equal_p (arg0, TREE_OPERAND (arg1, 0), 0))
9402 {
9403 t1 = build_int_cst (type, -1);
9404 t1 = force_fit_type (t1, 0, false, false);
9405 return omit_one_operand (type, t1, arg0);
9406 }
9407
9408 /* Canonicalize (X & C1) | C2. */

--- 91 unchanged lines hidden (view full) ---

9500 return non_lvalue (fold_convert (type, arg0));
9501 if (integer_all_onesp (arg1))
9502 return fold_build1 (BIT_NOT_EXPR, type, arg0);
9503 if (operand_equal_p (arg0, arg1, 0))
9504 return omit_one_operand (type, integer_zero_node, arg0);
9505
9506 /* ~X ^ X is -1. */
9507 if (TREE_CODE (arg0) == BIT_NOT_EXPR
9508 && INTEGRAL_TYPE_P (TREE_TYPE (arg1))
9506 && operand_equal_p (TREE_OPERAND (arg0, 0), arg1, 0))
9507 {
9508 t1 = build_int_cst (type, -1);
9509 t1 = force_fit_type (t1, 0, false, false);
9510 return omit_one_operand (type, t1, arg1);
9511 }
9512
9513 /* X ^ ~X is -1. */
9514 if (TREE_CODE (arg1) == BIT_NOT_EXPR
9509 && operand_equal_p (TREE_OPERAND (arg0, 0), arg1, 0))
9510 {
9511 t1 = build_int_cst (type, -1);
9512 t1 = force_fit_type (t1, 0, false, false);
9513 return omit_one_operand (type, t1, arg1);
9514 }
9515
9516 /* X ^ ~X is -1. */
9517 if (TREE_CODE (arg1) == BIT_NOT_EXPR
9518 && INTEGRAL_TYPE_P (TREE_TYPE (arg0))
9515 && operand_equal_p (arg0, TREE_OPERAND (arg1, 0), 0))
9516 {
9517 t1 = build_int_cst (type, -1);
9518 t1 = force_fit_type (t1, 0, false, false);
9519 return omit_one_operand (type, t1, arg0);
9520 }
9521
9522 /* If we are XORing two BIT_AND_EXPR's, both of which are and'ing

--- 4099 unchanged lines hidden ---
9519 && operand_equal_p (arg0, TREE_OPERAND (arg1, 0), 0))
9520 {
9521 t1 = build_int_cst (type, -1);
9522 t1 = force_fit_type (t1, 0, false, false);
9523 return omit_one_operand (type, t1, arg0);
9524 }
9525
9526 /* If we are XORing two BIT_AND_EXPR's, both of which are and'ing

--- 4099 unchanged lines hidden ---