aboutsummaryrefslogtreecommitdiff
path: root/gcc/fold-const.c
AgeCommit message (Collapse)AuthorFilesLines
2003-06-16decl.c, [...]: Don't use the PTR macro.Kaveh R. Ghazi1-2/+2
cp: * cp/decl.c, cp/pt.c, cp/search.c, cp/tree.c: Don't use the PTR macro. gcc: * bitmap.c, builtins.c, c-incpath.c, cgraph.c, config/frv/frv.c, config/mips/mips.c, cppfiles.c, cpphash.c, cppinit.c, cpplib.c, dwarf2out.c, dwarfout.c, except.c, expr.c, expr.h, fold-const.c, function.c, gcc.c, genoutput.c, gensupport.c, global.c, haifa-sched.c, hashtable.c, ifcvt.c, integrate.c, local-alloc.c, loop.c, mips-tdump.c, mips-tfile.c, mkdeps.c, protoize.c, read-rtl.c, recog.h, reload1.c, sbitmap.c, ssa-dce.c, stringpool.c, tlink.c, tree.c, varasm.c, varray.c: Don't use the PTR macro. From-SVN: r68043
2003-06-16fold-const.c (operand_equal_p): Consider two calls to "const" functions with ↵Roger Sayle1-2/+44
identical non-volatile arguments... * fold-const.c (operand_equal_p): Consider two calls to "const" functions with identical non-volatile arguments to be equal. Consider the FUNCTION_DECL for the "__builtin_foo" form of a built-in function to be equal to the "foo" form. Co-Authored-By: Jeff Law <law@redhat.com> From-SVN: r68011
2003-06-13builtins.c: Fix comment typos.Kazu Hirata1-2/+2
* builtins.c: Fix comment typos. * fold-const.c: Likewise. From-SVN: r67907
2003-06-13fold-const.c (tree_expr_nonnegative_p): Fix misspelling of "least".Matt Kraai1-1/+1
* fold-const.c (tree_expr_nonnegative_p): Fix misspelling of "least". From-SVN: r67877
2003-06-12re PR middle-end/168 (Spurious signed/unsigned comparison warning)Roger Sayle1-7/+78
PR middle-end/168 * fold-const.c (tree_expr_nonnegative_p): Handle addition and multiplication of zero extensions, floating point division, and integer<->fp, fp<->fp and zero extension conversions. The built-in ceil and floor functions preserve signedness. * gcc.dg/20030612-1.c: New test case. From-SVN: r67850
2003-06-12fold-const.c (tree_expr_nonnegative_p): Add support for floating point ↵Roger Sayle1-1/+21
constants, addition and multiplication. * fold-const.c (tree_expr_nonnegative_p): Add support for floating point constants, addition and multiplication. * gcc.dg/builtins-21.c: New test case. From-SVN: r67828
2003-06-10builtins.c (fold_builtin): Optimize cos(-x) as cos(x).Roger Sayle1-0/+119
* builtins.c (fold_builtin): Optimize cos(-x) as cos(x). * fold-const.c (fold <NEGATE_EXPR>): Convert -f(x) into f(-x) when x is easily negated and f is sin, tan or atan. (fold <MULT_EXPR>): Optimize tan(x)*cos(x) and cos(x)*tan(x) as sin(x) with flag_unsafe_math_optimizations. (fold <RDIV_EXPR>): With flag_unsafe_math_optimizations fold sin(x)/cos(x) as tan(x) and cos(x)/sin(x) as 1.0/tan(x). * gcc.dg/builtins-20.c: New test case. From-SVN: r67701
2003-06-10fold-const.c (fold <EQ_EXPR>): Don't fold x == x only if x is a floating ↵Roger Sayle1-3/+6
point type *and* we currently honor NaNs. * fold-const.c (fold <EQ_EXPR>): Don't fold x == x only if x is a floating point type *and* we currently honor NaNs. (fold <NE_EXPR>): Likewise. From-SVN: r67700
2003-06-09* fold-const.c (operand_equal_p): Handle ADDR_EXPR and TRUTH_NOT_EXPR.Jason Merrill1-3/+13
From-SVN: r67683
2003-06-09* fold-const.c (fold): Fix a comment typo.Kazu Hirata1-1/+1
From-SVN: r67664
2003-06-06fold-const.c (fold <ABS_EXPR>): Re-fold the result of folding fabs(-x) into ↵Roger Sayle1-16/+47
fabs(x). * fold-const.c (fold <ABS_EXPR>): Re-fold the result of folding fabs(-x) into fabs(x). Use tree_expr_nonnegative_p to determine when the ABS_EXPR (fabs or abs) is not required. (tree_expr_nonnegative_p): Move the logic that sqrt and exp are always nonnegative from fold to here. Additionally, cabs and fabs are always non-negative, and pow and atan are non-negative if their first argument is non-negative. * builtins.c (fold_builtin_cabs): New function to fold cabs{,f,l}. Evaluate cabs of a constant at compile-time. Convert cabs of a non-complex argument into fabs. Convert cabs(z) into sqrt(z.r*z.r + z.i*z.i) at the tree-level with -ffast-math or -funsafe-math-optimizations or -ffast-math. (fold_builtin): Convert BUILT_IN_FABS{,F,L} into an ABS_EXPR. Fold BUILT_IN_CABS{,F,L} using fold_builtin_cabs. * gcc.dg/builtins-2.c: Add some more tests. * gcc.dg/builtins-18.c: New test case. * gcc.dg/builtins-19.c: New test case. From-SVN: r67541
2003-05-31flags.h (flag_wrapv): New flag controlling overflow semantics.Roger Sayle1-1/+3
* flags.h (flag_wrapv): New flag controlling overflow semantics. * toplev.c (flag_wrapv): Declare the variable with default false. (lang_independent_options): New option "-fwrapv" to set the above. * fold-const.c (extract_muldiv_1): Disable optimization of (2*x)/2 as x, when signed arithmetic overflow wraps around. (fold): Optimize "-A - B" as "-B - A" if overflow wraps around. * loop.c (basic_induction_var): Ignore BIVs that rely on undefined overflow when flag_wrapv is true. * java/lang.c (java_init_options): Prescribe wrap-around two's complement arithmetic overflow by setting flag_wrapv. * doc/invoke.texi: Document new -fwrapv command line option. * doc/c-tree.texi: Mention that the overflow semantics of NEGATE_EXPR, PLUS_EXPR, MINUS_EXPR and MULT_EXPR is dependent upon both flag_wrapv and flag_trapv. * gcc.dg/fwrapv-1.c: New test case. * gcc.dg/fwrapv-2.c: New test case. * libjava.lang/Overflow.java: New test. * libjava.lang/Overflow.out: New file. From-SVN: r67270
2003-05-27tree.h (contains_placeholder_p): Now returns bool.Richard Kenner1-8/+9
* tree.h (contains_placeholder_p): Now returns bool. (CONTAINS_PLACEHOLDER_P): New macro. (type_contains_placeholder_p): New function. * tree.c (save_expr): Remove code avoiding folding COMPONENT_REF. (contains_placeholder_p): Now returns bool. Rework to use CONTAINS_PLACEHOLDER_P macro. (type_contains_placeholder_p): New function. * fold-const.c (fold, case COMPONENT_REF): Don't fold if type_contains_placeholder_p. (fold_range_test, fold_mathfn_compare, fold_inf_compare, fold): Use CONTAINS_PLACEHOLDER_P macro. * builtins.c (fold_builtin): Likewise. * calls.c (initialize_argument_information): Likewise. * emit-rtl.c (set_mem_attributes_minus_bitpos): Likewise. * explow.c (expr_size): Likewise. * expr.c (store_constructor, get_inner_reference): Likewise. * function.c (assign_parms): Likewise. * stor-layout.c (variable_size): Likewise. From-SVN: r67189
2003-05-23real.c (real_maxval): New function to return the largest finite value ↵Roger Sayle1-7/+33
representable in a given mode (i.e. * real.c (real_maxval): New function to return the largest finite value representable in a given mode (i.e. FLT_MAX and DBL_MAX). * real.h (real_maxval): Prototype here. * fold-const.c (fold_inf_compare): Transform comparisons against +-Infinity into comparisons against DBL_MAX (or equivalent). * gcc.c-torture/execute/ieee/inf-2.c: New test case. From-SVN: r67112
2003-04-22fold-const.c (fold_range_test): Use RANGE_TEST_NON_SHORT_CIRCUIT macro ↵David Edelsohn1-1/+5
defaulting to original BRANCH_COST heuristic. * fold-const.c (fold_range_test): Use RANGE_TEST_NON_SHORT_CIRCUIT macro defaulting to original BRANCH_COST heuristic. * doc/tm.texi (RANGE_TEST_NON_SHORT_CIRCUIT): Document. * config/rs6000/rs6000.h (RANGE_TEST_NON_SHORT_CIRCUIT): Define. From-SVN: r65942
2003-04-21fold-const.c (fold, [...]): Restore a number of conversions required for ↵Olivier Hainque1-7/+16
type consistency and previously... * fold-const.c (fold, case PLUS_EXPR and case MULT_EXPR): Restore a number of conversions required for type consistency and previously stripped off by STRIP_NOPS. From-SVN: r65913
2003-04-21Revert hunks not part of last patch.Richard Kenner1-16/+7
From-SVN: r65908
2003-04-21fold-const.c (extract_muldiv, [...]): Detect case when conversion overflows.Richard Kenner1-7/+16
* fold-const.c (extract_muldiv, case CONVERT_EXPR): Detect case when conversion overflows. From-SVN: r65900
2003-04-16tree.c (skip_simple_arithmetics_at, [...]): New functions.Olivier Hainque1-15/+13
* tree.c (skip_simple_arithmetics_at, saved_expr_p): New functions. (save_expr): Replace loop by call to skip_simple_arithmetics_at. * tree.h: Add prototypes for the two new functions. * fold-const.c (fold_binary_op_with_conditional_arg): Replace test updates introduced in the previous revision by call to saved_expr_p. * stor-layout.c (put_pending_size): Use skip_simple_arithmetics_at. From-SVN: r65702
2003-04-14* fold-const.c (fold): Reorder tests for conditional expressions.Olivier Hainque1-8/+8
From-SVN: r65590
2003-04-14fold-const.c (fold): Transform (c1 - x) cmp c2...Roger Sayle1-0/+13
* fold-const.c (fold): Transform (c1 - x) cmp c2, where cmp is a comparison operation and c1/c2 are floating point constants into x swap(cmp) (c1 - c2). * gcc.dg/20030414-2.c: New test case. From-SVN: r65584
2003-04-08fold-const.c (fold): Use "fold" following build in more places.Roger Sayle1-12/+70
* fold-const.c (fold): Use "fold" following build in more places. Optimize sqrt(x)*sqrt(x) as x, pow(x,y)*pow(z,y) as pow(x*z,y), pow(x,y)*pow(x,z) as pow(x,y+z) and x/pow(y,z) as x*pow(y,-z). * gcc.dg/builtins-11.c: New test case. From-SVN: r65387
2003-03-28fold-const.c (fold_inf_compare): New function to simplify FP comparisons ↵Roger Sayle1-14/+93
against +Infinity or -Infinity. * fold-const.c (fold_inf_compare): New function to simplify FP comparisons against +Infinity or -Infinity. (fold): Optimize floating point comparisons against Infs and NaNs. * gcc.c-torture/execute/ieee/fp-cmp-6.c: New test case. * gcc.c-torture/execute/ieee/fp-cmp-7.c: New test case. From-SVN: r64945
2003-03-23re PR c/8224 (Incorrect joining of signed and unsigned division)Mark Mitchell1-1/+6
PR c/8224 * fold-const.c (extract_muldiv_1): Don't pass through type conversions when signedness changes for division or modulus. PR c/8224 * gcc.dg/20030323-1.c: New test. From-SVN: r64760
2003-03-20fold-const.c (extract_muldiv_1): Revert changing order of operands in case ↵Richard Henderson1-8/+0
MULT_EXPR of 2003-02-16 patch. * fold-const.c (extract_muldiv_1): Revert changing order of operands in case MULT_EXPR of 2003-02-16 patch. From-SVN: r64632
2003-03-20fold-const.c (fold_mathfn_compare): New function to simplify comparisons ↵Roger Sayle1-0/+155
against built-in math functions. * fold-const.c (fold_mathfn_compare): New function to simplify comparisons against built-in math functions. Fold comparisons of sqrt against constants. (fold): Call fold_mathfn_compare when appropriate. * gcc.dg/builtins-6.c: New test case. From-SVN: r64619
2003-03-20* fold-const.c (fold): Fold A - (A & B) into ~B & A.Kazu Hirata1-0/+16
From-SVN: r64615
2003-02-22fold-const.c (omit_one_operand): No longer static.Roger Sayle1-2/+1
* fold-const.c (omit_one_operand): No longer static. * tree.h (omit_one_operand): Prototype here. (div_and_round_double): Keep fold-const.c prototypes together. * builtins.c (builtin_mathfn_code): Handle binary built-in funtions, such as "pow" and "atan2". (fold_builtin): Optimize both pow(x,0.0) and pow(1.0,y) to 1.0. Simplify optimizations using "type" the builtin's return type. * gcc.dg/builtins-5.c: New test case. From-SVN: r63273
2003-02-19fold-const.c (fold_real_zero_addition_p): Don't fold a zero addition in the ↵Roger Sayle1-0/+4
presence of signaling NaNs. * fold-const.c (fold_real_zero_addition_p): Don't fold a zero addition in the presence of signaling NaNs. From-SVN: r63133
2003-02-18fold-const.c (negate_expr_p): New function to determine whether an ↵Roger Sayle1-9/+60
expression can be negated cheaply. * fold-const.c (negate_expr_p): New function to determine whether an expression can be negated cheaply. (fold) [MINUS_EXPR]: Use it to determine whether to transform -A - B into -B - A for floating point types. From-SVN: r63059
2003-02-16fold-const.c (extract_muldiv_1): Rename from extract_muldiv; rearrange mult ↵Arend Bayer1-0/+34
arguments for less recursion. * fold-const.c (extract_muldiv_1): Rename from extract_muldiv; rearrange mult arguments for less recursion. (extract_muldiv): New. Prevent runaway recursion. Co-Authored-By: Richard Henderson <rth@redhat.com> From-SVN: r62963
2003-02-05defaults.h (CLZ_DEFINED_VALUE_AT_ZERO): New.Richard Henderson1-2/+8
* defaults.h (CLZ_DEFINED_VALUE_AT_ZERO): New. (CTZ_DEFINED_VALUE_AT_ZERO): New. * doc/rtl.texi, doc/tm.texi: Document them. * combine.c (nonzero_bits) [CLZ, CTZ]: Handle the definedness of the value at zero properly. * fold-const.c (tree_expr_nonnegative_p): Likewise. * simplify-rtx.c (simplify_unary_operation): Likewise. * config/alpha/alpha.h (CLZ_DEFINED_VALUE_AT_ZERO): New. (CTZ_DEFINED_VALUE_AT_ZERO): New. * config/arm/arm.c (TARGET_INIT_BUILTINS): Remove. (TARGET_EXPAND_BUILTIN): Remove. (def_builtin, arm_init_builtins, arm_expand_builtin): Remove. * config/arm/arm.h (CLZ_DEFINED_VALUE_AT_ZERO): New. (enum arm_builtins): Remove. * config/arm/arm.md (UNSPEC_CLZ): Remove. (clzsi2): Rename from clz; use clz instead of unspec. (ctzsi2): New. * config/arm/arm-protos.h: Update. From-SVN: r62453
2003-02-01[multiple changes]Richard Henderson1-0/+4
2003-02-01 Richard Henderson <rth@redhat.com> * optabs.c (expand_unop): Use word_mode for outmode of bit scaners. * libgcc2.c (__ffsdi2, __clzsi2, __clzdi2, __ctzsi2, __ctzdi2, __popcountsi2, __popcountdi2, __paritysi2 __paritydi2): Change return type to Wtype. * libgcc-std.ver (GCC_3.4): Fix inheritance. * config/i386/i386.md (ffssi2): Use nonimmediate_operand for expander input constraint. 2003-02-01 Falk Hueffner <falk.hueffner@student.uni-tuebingen.de> * optabs.h (optab_index): Add OTI_clz, OTI_ctz, OTI_popcount and OTI_parity. (clz_optab, ctz_optab, popcount_optab, parity_optab): New. * optabs.c (widen_clz, expand_parity): New. (expand_unop): Handle clz and parity. Hardcode SImode as outmode for libcalls to clz, ctz, popcount, and parity. (init_optabs): Init clz_optab, ctz_optab, popcount_optab and parity_optab, and set up libfunc handlers. * libgcc2.c (__clzsi2, __clzdi2, __ctzsi2, __ctzdi2, __popcountsi2, __popcountdi2, __paritysi2 __paritydi2, __popcount_tab): New. * libgcc2.h: Declare them. * libgcc-std.ver (GCC_3.4): Add new functions from libgcc2.c. * genopinit.c (optabs): Add clz_optab, ctz_optab, popcount_optab and parity_optab. * builtin-types.def (BT_FN_INT_LONG, BT_FN_INT_LONGLONG): New. * builtins.def (BUILT_IN_CLZ, BUILT_IN_CTZ, BUILT_IN_POPCOUNT, BUILT_IN_PARITY, BUILT_IN_FFSL, BUILT_IN_CLZL, BUILT_IN_CTZL, BUILT_IN_POPCOUNTL, BUILT_IN_PARITYL, BUILT_IN_FFSLL, BUILT_IN_CLZLL, BUILT_IN_CTZLL, BUILT_IN_POPCOUNTLL, BUILT_IN_PARITYLL): New. * builtins.c (expand_builtin_unop): Rename from expand_builtin_ffs and add optab argument. (expand_builtin): Expand BUILT_IN_{FFS,CLZ,POPCOUNT,PARITY}*. * tree.def (CLZ_EXPR, CTZ_EXPR, POPCOUNT_EXPR, PARITY_EXPR): New. * expr.c (expand_expr): Handle them. * fold-const.c (tree_expr_nonnegative_p): Likewise. * rtl.def (CLZ, CTZ, POPCOUNT, PARITY): New. * reload1.c (eliminate_regs): Handle them. (elimination_effects): Likewise. * function.c (instantiate_virtual_regs_1): Likewise * genattrtab.c (check_attr_value): Likewise. * simplify-rtx.c (simplify_unary_operation): Likewise. * c-common.c (c_common_truthvalue_conversion): Handle POPCOUNT_EXPR. * combine.c (combine_simplify_rtx): Handle POPCOUNT and PARITY. (nonzero_bits): Handle CLZ, CTZ, POPCOUNT and PARITY. * config/alpha/alpha.md (clzdi2, ctzdi2, popcountdi2): New. * config/arm/arm.c (arm_init_builtins): Rename __builtin_clz to __builtin_arm_clz. * Makefile.in (LIB2FUNCS_1, LIB2FUNCS_2): Move... * mklibgcc.in (lib2funcs): ...here and merge. Add new members. * doc/extend.texi (Other Builtins): Add new builtins. * doc/md.texi (Standard Names): Add new patterns. From-SVN: r62252
2003-01-15re PR rtl-optimization/9258 (ICE in compensate_edge, at reg-stack.c:2589)Jan Hubicka1-0/+18
PR f/9258 * global.c (struct allocno): Add no_stack_reg. (global_conflicts): Set no_stack_reg. (find_reg): Use it. * convert.c (convert_to_real): Fold - and abs only when profitable. * fold-const.c (fold): Fold truncates in - and abs. * gcc.c-torture/compile/20030115-1.c: New test. * gcc.dg/i386-fpcvt-1.c: New test. * gcc.dg/i386-fpcvt-2.c: New test. From-SVN: r61329
2003-01-14convert.c (strip_float_extensions): Look for narrowest type handling FP ↵Jan Hubicka1-0/+12
constants. * convert.c (strip_float_extensions): Look for narrowest type handling FP constants. * fold-const.c (fold): Fold (double)float1 CMP (double)float2 into float1 CMP float2. * convert.c (strip_float_extensions): Make global. * tree.h (strip_float_extensions): Declare. * gcc.dg/i386-fpcvt-1.c: New test. * gcc.dg/i386-fpcvt-2.c: New test. From-SVN: r61279
2003-01-10Merge from pch-branch.Geoffrey Keating1-1/+1
From-SVN: r61136
2003-01-03fold-const.c (fold): Avoid NOP_EXPRs better.Jason Merrill1-1/+5
* fold-const.c (fold) [COND_EXPR]: Avoid NOP_EXPRs better. * integrate.c (copy_decl_for_inlining): Don't clear the rtl for static/external decls. cp/ * call.c (build_conditional_expr): Stabilize lvalues properly. * cvt.c (ocp_convert): Don't build NOP_EXPRs of class type. * tree.c (lvalue_p_1): Don't allow sloppy NOP_EXPRs as lvalues. Don't allow CALL_EXPR or VA_ARG_EXPR, either. * call.c (convert_like_real): Call decl_constant_value for an IDENTITY_CONV even if there are no more conversions. * cvt.c (build_up_reference): Don't push unnamed temps. * decl2.c (do_namespace_alias): Namespace aliases are DECL_EXTERNAL. * dump.c (cp_dump_tree): Don't try to dump class-specific fields for a backend struct. * except.c (wrap_cleanups_r, build_throw): Make MUST_NOT_THROW_EXPRs void. * init.c (expand_default_init): Update to handle MUST_NOT_THROW_EXPR. * init.c (build_vec_delete_1): Pre-evaluate the base address. * init.c (get_temp_regvar): Simplify logic. * tree.c (cp_copy_res_decl_for_inlining): Only do debug tweaks if our replacement is a decl. From-SVN: r60851
2002-12-16Merge basic-improvements-branch to trunkZack Weinberg1-2/+78
From-SVN: r60174
2002-11-25re PR c/8639 (simple integer arithmetic expression broken)Christian Ehrhardt1-4/+4
PR c/8639 * fold-const.c (extract_muldiv): Don't propagate division unless both arguments are multiples of C. * gcc.c-torture/execute/20021119-1.c: New. From-SVN: r59466
2002-11-05fold-const.c (fold): Don't transform (a0 op compound(a1,a2)) to ↵Andrew Haley1-1/+3
(compound(a1,a0 op a2)) if... 2002-11-05 Andrew Haley <aph@redhat.com> * fold-const.c (fold): Don't transform (a0 op compound(a1,a2)) to (compound(a1,a0 op a2)) if a0 or a1 have side effects. From-SVN: r58822
2002-10-30fold-const.c (fold_binary_op_with_conditional_arg): Improve handling of ↵Roger Sayle1-9/+25
cases where one or both branches of the conditional have... * fold-const.c (fold_binary_op_with_conditional_arg): Improve handling of cases where one or both branches of the conditional have void type, i.e. throw an exception or don't return. (fold): Only apply (and undo) type conversion to the non-void branches of a COND_EXPR. * f/com.c (ffecom_subscript_check_): Cast the failure branch of the bounds check COND_EXPR to void, to indicate noreturn. (ffe_truthvalue_conversion): Only apply truth value conversion to the non-void branches of a COND_EXPR. From-SVN: r58661
2002-10-22re PR c++/7209 (Faulty array dereferencing)Nathan Sidwell1-7/+13
PR c++/7209 * fold_const.c (fold_binary_op_with_conditional_arg): Always build compound_expr if we used save_expr. testsuite: * g++.dg/expr/cond1.C: New test. From-SVN: r58405
2002-10-11decl.c (typename_hash): Use htab_hash_pointer.Kaveh R. Ghazi1-1/+1
cp: * decl.c (typename_hash): Use htab_hash_pointer. gcc: * fold-const.c (size_htab_hash): Use htab_hash_pointer. * function.c (insns_for_mem_hash): Likewise. * varasm.c (STRHASH): Likewise. java: * class.c (JAVA_TREEHASHHASH_H): Use htab_hash_pointer. From-SVN: r58036
2002-09-22dbxout.c: Follow spelling conventions.Kazu Hirata1-8/+8
* dbxout.c: Follow spelling conventions. * defaults.h: Likewise. * df.c: Likewise. * diagnostic.h: Likewise. * doloop.c: Likewise. * dwarf2out.c: Likewise. * dwarfout.c: Likewise. * emit-rtl.c: Likewise. * except.c: Likewise. * explow.c: Likewise. * expmed.c: Likewise. * expr.c: Likewise. * expr.h: Likewise. * flags.h: Likewise. * flow.c: Likewise. * fold-const.c: Likewise. * function.c: Likewise. * function.h: Likewise. * gcc.c: Likewise. * gcov-io.h: Likewise. * gcov.c: Likewise. * gcse.c: Likewise. * genattrtab.c: Likewise. * genconfig.c: Likewise. * genrecog.c: Likewise. * ggc-page.c: Likewise. * ggc.h: Likewise. * global.c: Likewise. * gthr-win32.h: Likewise. * integrate.c: Likewise. * jump.c: Likewise. * langhooks.c: Likewise. * langhooks.h: Likewise. * line-map.h: Likewise. * local-alloc.c: Likewise. * longlong.h: Likewise. * loop.c: Likewise. * loop.h: Likewise. From-SVN: r57406
2002-09-16real.c, real.h: Rewrite from scratch.Richard Henderson1-8/+3
gcc/ * real.c, real.h: Rewrite from scratch. * Makefile.in (simplify-rtx.o): Depend on TREE_H. (paranoia): New target. * builtins.c (fold_builtin_inf): Use new real.h interface. * c-common.c (builtin_define_with_hex_fp_value): Likewise. * c-lex.c (interpret_float): Likewise. * emit-rtl.c (gen_lowpart_common): Likewise. * optabs.c (expand_float): Use real_2expN. * config/ia64/ia64.md (divsi3, udivsi3): Likewise. * defaults.h (INTEL_EXTENDED_IEEE_FORMAT): New. (FLOAT_WORDS_BIG_ENDIAN): New. * cse.c (find_comparison_args): Don't pass FLOAT_STORE_FLAG_VALUE directly to REAL_VALUE_NEGATIVE. * loop.c (canonicalize_condition): Likewise. * simplify-rtx.c: Include tree.h. (simplify_unary_operation): Don't handle FIX and UNSIGNED_FIX with floating-point result modes. * toplev.c (backend_init): Call init_real_once. * fold-const.c (force_fit_type): Don't call CHECK_FLOAT_VALUE. * tree.c (build_real): Likewise. * config/alpha/alpha.c, config/vax/vax.c (float_strings, float_values, inited_float_values, check_float_value): Remove. * config/alpha/alpha.h, config/m68hc11/m68hc11.h, config/m88k/m88k.h, config/vax/vax.h (CHECK_FLOAT_VALUE): Remove. * doc/tm.texi (CHECK_FLOAT_VALUE): Remove. gcc/f/ * target.c (ffetarget_real1): Don't pass FFETARGET_ATOF_ directly to ffetarget_make_real1. (ffetarget_real2): Similarly. * target.h (ffetarget_cvt_r1_to_rv_, ffetarget_cvt_rv_to_r2_, ffetarget_cvt_r2_to_rv_): Use new real.h interface and simplify. gcc/java/ * jcf-parse.c (get_constant): Runtime check for IEEE format; use new real.h interface. * jcf-write.c (find_constant_index): Use new real.h interface. * lex.c (IS_ZERO): Use REAL_VALUES_EQUAL. contrib/ * paranoia.cc: New file. From-SVN: r57198
2002-09-11fold-const.c (make_range): Only narrow to signed range if the signed range ↵Hartmut Penner1-3/+4
is smaller than the unsigned range. * fold-const.c (make_range): Only narrow to signed range if the signed range is smaller than the unsigned range. * gcc.c-torture/execute/20020911-1.c: New. From-SVN: r57050
2002-08-22For PR java/6005 and PR java/7611:Tom Tromey1-2/+8
* fold-const.c (fold_truthop): Use can_use_bit_fields_p. (fold): Likewise. * langhooks.c (lhd_can_use_bit_fields_p): New function. * langhooks-def.h (lhd_can_use_bit_fields_p): Declare. (LANG_HOOKS_CAN_USE_BIT_FIELDS_P): New define. (LANG_HOOKS_INITIALIZER): Use it. * langhooks.h (struct lang_hooks) [can_use_bit_fields_p]: New field. From-SVN: r56498
2002-08-05fold-const.c (associate_trees): Only optimize NEGATE_EXPR in one of the ↵Jakub Jelinek1-8/+10
operands into MINUS_EXPR if... * fold-const.c (associate_trees): Only optimize NEGATE_EXPR in one of the operands into MINUS_EXPR if code is PLUS_EXPR. * gcc.c-torture/execute/20020805-1.c: New test. From-SVN: r56058
2002-07-30fold-const.c: Fix comment typos.Kazu Hirata1-1/+1
* fold-const.c: Fix comment typos. * gcse.c: Likewise. * reload1.c: Likewise. From-SVN: r55876
2002-07-28Makefile.in: rtlanal.o now depends upon real.h.Roger Sayle1-11/+8
* Makefile.in: rtlanal.o now depends upon real.h. * flags.h [flag_signaling_nans]: New flag. [HONOR_SNANS]: New macro. * toplev.c [flag_signaling_nans]: Initialize to false. (f_options): Add processing for "-fsignaling-nans". (set_fast_math_flags): Clear flag_signaling_nans with -ffast-math. (process_options): flag_signaling_nans implies flag_trapping_math. * c-common.c (cb_register_builtins): Define __SUPPORT_SNAN__ when -fsignaling-nans. First step to implementing WG14's N965. * fold-const.c (fold) [MULT_EXPR]: Conditionalize transforming 1.0 * x into x, and -1.0 * x into -x on !HONOR_SNANS. [RDIV_EXPR]: Conditionalize x/1.0 into x on !HONOR_SNANS. * simplify-rtx.c (simplify_relational_operation): Conditionalize transforming abs(x) < 0.0 into false on !HONOR_SNANS. * rtlanal.c: #include real.c for TARGET_FLOAT_FORMAT definitions required by HONOR_SNANS. (may_trap_p): Floating point DIV, MOD, UDIV, UMOD, GE, GT, LE, LT and COMPARE may always trap with -fsignaling_nans. EQ and NE only trap for flag_signaling_nans not flag_trapping_math (i.e. HONOR_SNANS but not HONOR_NANS). * doc/invoke.texi: Document new -fsignaling-nans compiler option. From-SVN: r55804