aboutsummaryrefslogtreecommitdiff
path: root/gcc/fold-const.c
AgeCommit message (Collapse)AuthorFilesLines
1994-07-30Fix typo.Richard Kenner1-2/+2
From-SVN: r7840
1994-07-30(fold_truthop): Apply masks to constants.Richard Kenner1-0/+2
From-SVN: r7839
1994-07-21(fold): Don't fold X-X to 0 if X is floating pointJim Wilson1-2/+2
and !flag_fast_math. From-SVN: r7786
1994-07-13(decode_field_reference): Merge operand of a BIT_AND_EXPR with theRichard Kenner1-17/+21
mask made from the description of the field. From-SVN: r7766
1994-07-13Remove last change.Richard Kenner1-18/+0
From-SVN: r7764
1994-07-12(fold, case MULT_EXPR): If arg is an unsigned CEIL_DIV_EXPR, convertRichard Kenner1-0/+18
to TRUNC_DIV_EXPR of a PLUS_EXPR in some cases. From-SVN: r7744
1994-06-29(div_and_round_double): Make it globally accessible.Torbjorn Granlund1-2/+2
From-SVN: r7594
1994-06-15Revert last patch: (fold, case *_DIV_EXPR): Optimize (x / C << y)...Torbjorn Granlund1-47/+0
From-SVN: r7475
1994-06-15(encode, decode): Use 4 HOST_WIDE_INTs for encoded value with ↵Torbjorn Granlund1-338/+192
HOST_BITS_PER_WIDE_INT/2 bits in each. (encode, decode): Use 4 HOST_WIDE_INTs for encoded value with HOST_BITS_PER_WIDE_INT/2 bits in each. (LOWPART, HIGHPART): New macros. (BASE): Move definition outside of div_and_round_double. (add_double, mul_double, lshift_double, rshift_double): Rewrite. (lrotate_double): Use LOWPART, HIGHPART, and BASE. (rrotate_double): Likewise. (div_and_round_double): Major changes to code for general case. Now it actually produces non-garbage results for large operands. (div_and_round_double): Simplify condition for special code used when divisor < BASE. (const_binop): Delete special cases for multiplying by 0, 1, 2, 4, 8. (fold, case *_DIV_EXPR): Don't try to optimize for overflow. From-SVN: r7473
1994-06-14Cast pointer operands to bzero, bcopy, and bcmp to (char *).Richard Kenner1-5/+6
From-SVN: r7472
1994-04-25(fold-convert): Use assignment, instead of initializing, aggregateRichard Kenner1-4/+9
local variable REAL_VALUE_TYPE. From-SVN: r7146
1994-04-18(const_binop): If arg is NaN, just return itRichard Kenner1-18/+27
(const_binop): If arg is NaN, just return it (fold_convert): Handle NaN in real->int and real->real cases. From-SVN: r7072
1994-04-09(fold): Avoid exponential work when simplifying conditionalRichard Kenner1-1/+2
expressions; don't recurse twice if ARG1 is constant. From-SVN: r7010
1994-04-08Fix typo in comment of last change.Richard Kenner1-1/+1
From-SVN: r7000
1994-04-08(fold, case GT_EXPR): Simplify X < (1 << Y) into X >> Y == 0.Richard Kenner1-0/+24
From-SVN: r6999
1994-03-30(strip_compound_expr): New function.Richard Kenner1-6/+50
(fold): Call it; avoid exponential work when simplifying binary op over a COND_EXPR. From-SVN: r6921
1994-03-25(fold, case *_DIV_EXPR): Correct result when product of constantsRichard Kenner1-15/+29
overflows. From-SVN: r6900
1994-03-19(const_binop): Avoid initialized aggregate local variables, forRichard Kenner1-2/+4
antique compilers. From-SVN: r6821
1994-03-14(fold, associate): If -ffast-math, associate FP mults.Richard Kenner1-11/+70
(fold, case RDIV_EXPR): Split case; ignore division by 1. If -ffast-math, convert to multply by reciprocal. (fold, case *_DIV_EXPR): Simplify A/C1/C2. From-SVN: r6780
1994-03-14(fold): Call tree_int_cst_sgn.Richard Kenner1-7/+7
(fold, case *_DIV_EXPR): Add missing conversion. From-SVN: r6779
1994-03-13(force_fit_value): Operate on REAL_CST as well.Richard Kenner1-37/+53
(real_value_truncate): Don't use its own handler. (const_binop): Set overflow on FP error and call force_fit_type. (fold_convert): Likewise. From-SVN: r6768
1994-03-09(fold, case MULT_EXPR): Simplify MULT_EXPR of an EXACT_DIV_EXPR withRichard Kenner1-0/+8
the same divisor as our multiplicand. From-SVN: r6734
1994-02-02(const_binop, COMPLEX_TYPE, case RDIV_EXPR): If complex integer, useRichard Kenner1-12/+20
TRUNC_DIV_EXPR for inner division. From-SVN: r6468
1994-01-31(operand_equal_for_comparison_p): Declare correct_width as unsigned.Richard Kenner1-1/+1
From-SVN: r6447
1994-01-11(fold, truth_andor): Don't apply distributive law when it would change ↵Richard Kenner1-42/+50
evaluation order. (fold, truth_andor): Don't apply distributive law when it would change evaluation order. Clean up code a bit to improve flow. From-SVN: r6381
1994-01-03(truth_value_p): New function.Richard Kenner1-8/+51
(fold): Use it to see when we should make a TRUTH_{AND,OR}_EXPR. (fold, case TRUTH_{AND,OR,ANDIF,ORIF}_EXPR): Use distributive law on expressions such as (A && B) || (A && C). From-SVN: r6352
1993-12-29(fold, case PLUS_EXPR): Add a missing test of flag_fast_math.Richard Kenner1-1/+2
From-SVN: r6341
1993-12-27(fold): Simplify more FP ops if -ffast-math.Richard Kenner1-11/+17
From-SVN: r6335
1993-12-25(fold...Richard Kenner1-0/+22
(fold, case EQ_EXPR, NE_EXPR): If COMPLEX_TYPE and at least one arg is a COMPLEX_EXPR, split into a logical operation on the real and imaginary parts. From-SVN: r6313
1993-12-08(fold, case *_{DIV,MOD}_EXPR): When using distributive law, take careRichard Kenner1-5/+13
when C2 is negative. From-SVN: r6194
1993-11-15(twoval_comparison_p): Do nothing for SAVE_EXPR, at least for now.Richard Stallman1-0/+6
From-SVN: r6090
1993-10-19(invert_truthvalue): Handle SAVE_EXPR.Richard Stallman1-1/+3
From-SVN: r5797
1993-10-13(optimize_bit_field_compare, decode_field_reference): Don't doRichard Kenner1-3/+3
anything if get_inner_reference returned its argument. From-SVN: r5773
1993-09-30(fold, case PLUS_EXPR, MINUS_EXPR): Properly handle case when ARG1Richard Kenner1-5/+8
splits and VARSIGN is -1. From-SVN: r5537
1993-09-17(invert_truthvalue): Allow arbitrary BOOLEAN_TYPE arguments.Per Bothner1-4/+6
From-SVN: r5351
1993-09-07(fold): Don't try to process an RTL_EXPR.Richard Kenner1-0/+4
From-SVN: r5274
1993-08-23(twoval_comparison_p): Add new arg, SAVE_P; all callers changed.Richard Kenner1-14/+32
(fold, case EQ_EXPR): If SAVE_P is true after call to twoval_comparison_p call save_expr on the expression we make. From-SVN: r5194
1993-08-19(fold): Handle EQ_EXPR and NE_EXPR where both args are comparisons orRichard Kenner1-4/+15
BIT_AND_EXPR with constant 1. From-SVN: r5186
1993-08-16(fold...Richard Kenner1-8/+4
(fold, case EQ_EXPR): Re-enable converting signed MOD operations to unsigned when inside comparisons against zero, but only when the second operand of the MOD is an integral power of two. From-SVN: r5166
1993-07-30(fold...Richard Kenner1-0/+16
(fold, case NOP_EXPR): Delete a pair of conversions back to the original type when intermediate type is at least as wide. From-SVN: r5046
1993-07-27(optimize_bit_field_compare): Preserve volatility of bitfield.Richard Kenner1-0/+5
From-SVN: r5005
1993-07-26(fold, case EQ_EXPR): Remove code that converts mod to unsigned mod;Richard Kenner1-0/+5
it isn't correct for negative operands. From-SVN: r4995
1993-07-18(fold): Handle CONJ_EXPR.Richard Stallman1-0/+24
From-SVN: r4938
1993-07-06(fold, COND_EXPR case): All simplified results must go through ↵Jim Wilson1-19/+44
pedantic_non_lvalue. (fold, COND_EXPR case): All simplified results must go through pedantic_non_lvalue. (pedantic_non_lvalue): New function. From-SVN: r4867
1993-07-06(invert_truthvalue): Check for ERROR_MARK input.Jim Wilson1-0/+3
From-SVN: r4864
1993-07-05(fold, case EQ_EXPR, LE_EXPR): If comparing results of signed MOD withRichard Kenner1-0/+19
zero, use an unsigned MOD. From-SVN: r4852
1993-07-02(const_binop, fold_convert, fold):Paul Eggert1-15/+27
Set TREE_OVERFLOW in addition to TREE_CONSTANT_OVERFLOW. From-SVN: r4828
1993-07-01(fold, case GE_EXPR, LT_EXPR): Don't assume result of comparison isRichard Kenner1-4/+6
integer_type_node. From-SVN: r4813
1993-06-27(fold, case TRUTH_XOR_EXPR): End with `return', not `break'.Richard Kenner1-1/+1
From-SVN: r4770
1993-06-26(fold, case PLUS_EXPR, MINUS_EXPR): Apply distributive law to multiplication.Richard Kenner1-36/+122
(fold, case *_DIV_EXPR): Replace code to handle (A*C1)/C2 with more general code to handle addition as well. (fold, case *_MOD_EXPR): Add simplified version of above code. From-SVN: r4757