Age | Commit message (Collapse) | Author | Files | Lines |
|
case...
* builtins.c (expand_builtin_setjmp): Use emit_jump to jump around
the != 0 case, which ensures pending stack adjustments are flushed.
From-SVN: r70958
|
|
(fold_builtin_constant_p) ...
* builtins.c (expand_builtin_constant_p): Check cse_not_expected here,
(fold_builtin_constant_p) ... not here.
From-SVN: r70926
|
|
From-SVN: r70913
|
|
restore it if returning NULL.
* builtins.c (expand_builtin_expect_jump): Save pending_stack_adjust
and restore it if returning NULL.
* gcc.dg/20030826-2.c: New test.
From-SVN: r70844
|
|
ffs...
* builtins.c (fold_builtin_bitop): New function to perform constant
folding of ffs, clz, ctz, popcount and parity builtin functions
and their long and long long variants (such as ffsl and ffsll).
(fold_builtin): fold_builtin_bitop when appropriate.
* simplify-rtx.c (simplify_unary_operation): Honor both
CLZ_DEFINED_VALUE_AT_ZERO and CTZ_DEFINED_VALUE_AT_ZERO when
evaluating clz and ctz at compile-time, for operands wider
than HOST_WIDE_INT.
From-SVN: r70806
|
|
* builtins.c (build_function_call_expr): Don't set
TREE_SIDE_EFFECTS here.
* expr.c (emit_block_move_via_libcall): Likewise.
(clear_storage_via_libcall): Likewise.
* tree.c (build): Set TREE_SIDE_EFFECTS for non-const, non-pure
CALL_EXPRs.
cp:
* call.c (build_call): Don't set TREE_SIDE_EFFECTS here.
(build_new_method_call): Add goto finish.
* semantics.c (simplify_aggr_init_exprs_r): Don't set
TREE_SIDE_EFFECTS on a call.
testsuite:
* c++.dg/warn/noeffect3.C: New test.
From-SVN: r70802
|
|
invalid argument types.
* builtins.c (expand_builtin_mathfn): Rearrange so that we only
return 0 for invalid argument types. Instead drop through to a
call of expand_call at the bottom of function. If op is SQRT,
try attaching a SQRT rtx as the REQ_EQUAL note of the libcall.
From-SVN: r70792
|
|
* builtins.c (expand_builtin_mathfn): Use get_callee_fndecl.
(expand_builtin_mathfn2, expand_builtin, builtin_mathfn_code,
fold_trunc_transparent_mathfn, fold_builtin): Likewise.
* dojump.c (do_jump): Likewise.
* fold-const.c (operand_equal_p, fold): Likewise.
(tree_expr_nonnegative_p): Likewise.
From-SVN: r70611
|
|
* builtins.c: Fix comment typos.
* c-common.c: Likewise.
* c-decl.c: Likewise.
* c-pretty-print.c: Likewise.
* cfgbuild.c: Likewise.
* cfglayout.c: Likewise.
* cfgloopanal.c: Likewise.
* cgraphunit.c: Likewise.
* cppfiles.c: Likewise.
* dwarfout.c: Likewise.
* expr.c: Likewise.
* fold-const.c: Likewise.
* gcse.c: Likewise.
* ggc-page.c: Likewise.
* haifa-sched.c: Likewise.
* pretty-print.c: Likewise.
* tree.c: Likewise.
* tree.h: Likewise.
* value-prof.c: Likewise.
From-SVN: r70583
|
|
* builtins.c (CASE_MATHFN): New helper macro.
(mathfn_built_in): Simplify and sort.
From-SVN: r70436
|
|
* builtins.c (expand_builtin_strcat): Optimize constant strings.
testsuite:
* gcc.c-torture/execute/string-opt-9.c: Add more strcat cases.
From-SVN: r70317
|
|
* builtins.c (expand_builtin): When not optimizing, call the library
function for all builtins that have library functions (except alloca).
From-SVN: r70195
|
|
pow(x,c+1) for constant values c.
* fold-const.c (fold <MULT_EXPR>): Optimize both x*pow(x,c) and
pow(x,c)*x as pow(x,c+1) for constant values c. Optimize x*x
as pow(x,2.0) when the latter will be expanded back into x*x.
(fold <RDIV_EXPR>): Optimize pow(x,c)/x as pow(x,c-1).
* builtins.c (expand_builtin_pow): Ignore flag_errno_math as
pow can never set errno when used with an integer exponent.
Always use expand_powi when exponent is -1, 0, 1 or 2.
(fold_builtin): Don't rewrite pow(x,2.0) as x*x nor pow(x,-2.0)
as 1.0/(x*x). This avoids unbounded recursion as we now prefer
the pow forms of these expressions.
* gcc.dg/builtins-27.c: New test case.
From-SVN: r70030
|
|
normal builtins, using DEF_LIB_BUILTIN.
* builtins.def (BUILT_IN_PRINTF, BUILT_IN_FPRINTF): Changed from
front-end builtins to normal builtins, using DEF_LIB_BUILTIN.
(BUILT_IN_PRINTF_UNLOCKED, BUILT_IN_FPRINTF_UNLOCKED): Changed
from front-end to normal builtins, using DEF_EXT_LIB_BUILTIN.
(DEF_FRONT_END_LIB_BUILTIN): Delete.
(DEF_EXT_FRONT_END_LIB_BUILTIN): Delete.
(BUILT_IN_FWRITE_UNLOCKED): Wrap long line.
* builtins.c (build_string_literal): New function to construct
a char* pointer to a string literal.
(expand_builtin_fputs): Change 2nd argument from "int ignore" to
"rtx target" to be consistent with other expand_builtin_* functions.
Change 3rd argument from "int unlocked" to "bool unlocked".
(expand_builtin_printf): Rewrite of c_expand_builtin_printf from
c-common.c to avoid front-end dependencies. Optimize printf("")
as a no-op when the result isn't required. Handle embedded NULs
in format string.
(expand_builtin_fprintf): A rewrite of c_expand_builtin_fprintf
from c-common.c to avoid front-end dependencies. Likewise, optimize
fprintf(fp,"") as a no-op when the result isn't required, evaluating
fp for side-effects. Handle embedded NULs in format string.
(expand_builtin_sprintf): Fix typo.
(expand_builtin): Don't expand BUILT_IN_FPRINT{,_UNLOCKED} when not
optimizing. Adjust calls of expand_builtin_fputs to match the API
change. Expand BUILT_IN_PRINTF and BUILT_IN_PRINTF_UNLOCKED using
expand_builtin_printf. Likewise, expand BUILT_IN_FPRINTF_UNLOCKED
and BUILT_IN_FPRINTF using expand_builtin_fprintf.
* c-common.c (is_valid_printf_arglist): Delete.
(c_expand_builtin): Delete.
(c_expand_builtin_printf): Moved to builtins.c. Delete.
(c_expand_builtin_fprintf): Moved to builtins.c. Delete.
(c_expand_expr): No longer treat CALL_EXPRs specially.
(CALLED_AS_BUILT_IN): Delete.
From-SVN: r69760
|
|
* alias.c alloc-pool.c bitmap.c bitmap.h bt-load.c builtins.c
c-common.c c-decl.c c-incpath.c c-lex.c c-opts.c c-parse.in
c-pragma.c c-typeck.c calls.c cfg.c cfganal.c cfgloop.c cfgrtl.c
collect2.c combine.c conflict.c coverage.c cppexp.c cppfiles.c
cpphash.c cppinit.c cpplex.c cpplib.c cppmacro.c cppspec.c
cpptrad.c cse.c cselib.c dbxout.c defaults.h df.c dominance.c
dwarf2out.c dwarfout.c emit-rtl.c except.c expmed.c expr.c final.c
fix-header.c flow.c fold-const.c function.c gcc.c gccspec.c gcov.c
gcse.c genattr.c genattrtab.c genautomata.c genconditions.c
genemit.c genextract.c genoutput.c genrecog.c gensupport.c
ggc-page.c ggc-simple.c global.c graph.c haifa-sched.c hashtable.c
integrate.c jump.c langhooks.c lcm.c line-map.c local-alloc.c
loop.c mips-tdump.c mips-tfile.c mkdeps.c optabs.c params.c
postreload.c prefix.c print-tree.c protoize.c ra-build.c
ra-colorize.c ra-rewrite.c ra.c recog.c reg-stack.c regclass.c
regmove.c regrename.c reload.c reload1.c reorg.c resource.c
sbitmap.c sched-deps.c sched-rgn.c sched-vis.c sdbout.c
simplify-rtx.c ssa-ccp.c ssa.c stmt.c stor-layout.c timevar.c
tlink.c toplev.c tree-dump.c tree.c unroll.c unwind-dw2-fde.c
varasm.c varray.c vmsdbgout.c xcoffout.c: Remove unnecessary
casts.
From-SVN: r69587
|
|
to cmpstrM.
* optabs.c (prepare_cmp_insn): Try cmpmemM first if it exists,
then fall back to cmpstrM.
* builtins.c (expand_builtin_memcmp): Likewise.
* config/s390/s390-protos.h (s390_expand_cmpstr): Rename to...
(s390_expand_cmpmem): ... this.
* config/s390/s390.md (cmpmemdi, cmpmemsi, cmpmem_short_64,
cmpmem_short_31, cmpmem_long_64, cmpmem_long_31): Renamed
from cmpstr* patterns. Rename call to s390_expand_cmpstr
to s390_expand_cmpmem.
* config/s390/s390.c (s390_expand_cmpstr): Rename to...
(s390_expand_cmpstr): ... this. Rename cmpstr* instructions
to cmpmem*.
* config/i370/i370.md (cmpmemsi, cmpmemsi_1): Renamed from
cmpstr* patterns.
* doc/md.texi (cmpstrM): Describe as String compare insn, not
Block compare insn.
(cmpmemM): Add.
* gcc.dg/20030711-1.c: New test.
From-SVN: r69243
|
|
respectively.
* real.c (real_trunc, real_floor, real_ceil): New functions
to implement trunc, floor and ceil respectively.
* real.h (real_trunc, real_floor, real_ceil): Prototype here.
* builtins.c (integer_valued_real_p): New function to test if
a floating point expression has an integer valued result.
(fold_trunc_transparent_mathfn): Optimize foo(foo(x)) as
foo(x) where foo is an integer rounding function. Similarly,
optimize foo(bar(x)) as bar(x), and foo((double)(int)x) as
(double)(int)x when both foo and bar are integer rounding
functions and we don't need to honor errno.
(fold_builtin_trunc, fold_builtin_floor, fold_builtin_ceil):
New functions to fold trunc, floor and ceil.
(fold_builtin): Use fold_builtin_trunc to fold BUILT_IN_TRUNC*,
fold_builtin_floor to fold BUILT_IN_FLOOR* and fold_builtin_ceil
to fold BUILT_IN_CEIL*.
* fold-const.c (tree_expr_nonnegative_p): Handle FLOAT_EXPR and
the remaining integer rounding functions.
* gcc.dg/builtins-25.c: New testcase.
* gcc.dg/builtins-26.c: New testcase.
From-SVN: r68903
|
|
not supported by the backend.
* builtins.c (expand_builtin_mathfn, expand_builtin_mathfn_2): Avoid
busy work when builtin is not supported by the backend.
From-SVN: r68681
|
|
* alloc-pool.c: Fix comment formatting.
* bitmap.c: Likewise.
* bitmap.h: Likewise.
* bt-load.c: Likewise.
* builtins.c: Likewise.
* caller-save.c: Likewise.
* cfganal.c: Likewise.
* cfgrtl.c: Likewise.
* collect2.c: Likewise.
* cse.c: Likewise.
* df.c: Likewise.
* diagnostic.c: Likewise.
* dwarf2out.c: Likewise.
* dwarfout.c: Likewise.
* expmed.c: Likewise.
* final.c: Likewise.
* flags.h: Likewise.
* fold-const.c: Likewise.
* gcc.c: Likewise.
* gcov-io.h: Likewise.
* gcov.c: Likewise.
* genattrtab.c: Likewise.
* genautomata.c: Likewise.
* libgcov.c: Likewise.
* mips-tfile.c: Likewise.
* optabs.c: Likewise.
* prefix.c: Likewise.
* rtlanal.c: Likewise.
* stmt.c: Likewise.
* stor-layout.c: Likewise.
* toplev.c: Likewise.
* varasm.c: Likewise.
* vmsdbgout.c: Likewise.
From-SVN: r68672
|
|
* builtins.c: Follow spelling conventions.
* cgraph.c: Likewise.
* cpplex.c: Likewise.
* config/arm/arm.c: Likewise.
* config/arm/iwmmxt.md: Likewise.
* config/c4x/c4x-modes.def: Likewise.
* config/c4x/c4x.c: Likewise.
* config/c4x/c4x.h: Likewise.
* config/c4x/c4x.md: Likewise.
* config/i386/i386-interix.h: Likewise.
* config/mips/mips.h: Likewise.
From-SVN: r68648
|
|
From-SVN: r68635
|
|
* builtins.c (c_strlen): Add only_value argument.
Handle COND_EXPR and COMPOUND_EXPR.
(expand_builtin_strlen): Optimize also strlen (i++ ? "foo" : "bar").
Adjust c_strlen callers.
(expand_builtin_strcpy, expand_builtin_strncpy,
expand_builtin_strcmp, expand_builtin_strncmp,
expand_builtin_fputs, expand_builtin_sprintf,
fold_builtin): Adjust c_strlen callers.
* gcc.c-torture/execute/builtins/string-8.c: New test.
* gcc.c-torture/execute/builtins/string-8-lib.c: New.
* gcc.c-torture/execute/stdio-opt-1.c (main): Add new tests.
* gcc.c-torture/execute/string-opt-7.c (main): Add new test.
From-SVN: r68634
|
|
* rtl.h (emit_note): Remove FILE parameter.
* emit-rtl.c (emit_line_note): Adjust emit_note call.
(emit_note): Remove FILE parameter. Adjust.
* builtins.c (expand_builtin_expect): Adjust emit_note call.
* c-semantics.c (genrtl_scope_stmt): Likewise.
(expand_stmt): Likewise.
* cfglayout.c (reemit_insn_block_notes): Likewise.
(duplicate_insn_chain): Likewise.
* except.c (expand_eh_region_start, expand_eh_region_end,
sjlj_emit_function_enter): Likewise.
* explow.c (probe_stack_range): Likewise.
* expr.c (emit_block_move_via_loop): Likewise.
* function.c (init_function_start, expand_function_start,
expand_function_end, thread_prologue_and_epilogue_insns): Likewise.
* integrate.c (expand_inline_function, copy_insn_list): Likewise.
* reg-stack.c (compensate_edge): Likewise.
* reload1.c (reload): Likewise.
* rtlanal.c (hoist_insn_to_edge): Likewise.
* stmt.c (expand_fixup, expand_start_loop, expand_start_null_loop,
expand_loop_continue_here, expand_end_loop, expand_continue_loop,
expand_exit_loop_top_cond, expand_value_return,
expand_start_bindings_and_block, expand_end_bindings,
expand_decl_cleanup, expand_start_case): Likewise.
* unroll.c (copy_loop_body
* config/alpha/alpha.c (alpha_output_mi_thunk_osf): Likewise.
* config/ia64/ia64.c (ia64_output_mi_thunk): Likewise.
* config/rs6000/rs6000.c (rs6000_emit_eh_toc_restore,
rs6000_emit_allocate_stack, rs6000_output_function_prologue,
rs6000_output_function_epilogue, rs6000_output_mi_thunk): Likewise.
* config/sh/sh.c (sh_output_mi_thunk): Likewise.
* config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
* ada/misc.c (record_code_position): Likewise.
From-SVN: r68561
|
|
format string instead of using...
* builtins.c (expand_builtin_sprintf): Use c_getstr and strlen to
obtain the format string instead of using TREE_STRING_POINTER and
TREE_STRING_LENGTH. Only optimize sprintf(dst,"%s",src) when the
return value is unused or the length of src is a known constant.
* gcc.c-torture/execute/string-opt-16.c: Remove test for disabled
sprintf(dst,"%s",src) optimization.
* gcc.c-torture/execute/20030626-1.c: New test case.
* gcc.c-torture/execute/20030626-2.c: New test case.
Co-Authored-By: Jakub Jelinek <jakub@redhat.com>
From-SVN: r68555
|
|
against re-evaluation.
* builtins.c (expand_builtin_mathfn): Always stabilize the argument
list against re-evaluation. If expand_unop fails, call expand_call
with the stabilized argument list rather than return NULL_RTX.
(expand_builtin_mathfn2): Likewise, always stabilize the argument
list, and call expand_call ourselves if expand_binop fails.
Co-Authored-By: Richard Henderson <rth@redhat.com>
From-SVN: r68526
|
|
PR optimization/11311
* builtins.c (powi_cost): Fix typo. The number of multiplications
required is the number to reduce the argument, result, plus the
cost of calculating the residual, val [not n, the original value].
* gcc.c-torture/compile/20030624-1.c: New test case.
From-SVN: r68452
|
|
* builtins.c (expand_builtin_strcpy): Don't evaluate side-effects in
src twice.
* gcc.c-torture/execute/string-opt-17.c: New test.
From-SVN: r68431
|
|
* builtins.c (expand_builtin): Use expand_builtin_pow to expand
calls for pow, powf, powl and their __builtin_ variants.
(expand_builtin_pow): If the second argument is a constant
integer and compiling with -ffast-math, use expand_powi to
generate RTL if powi_cost is less than POWI_MAX_MULTS.
(powi_cost): New function to return the number of multiplications
necessary to evaluate an Nth power, for integer constant N.
(expand_powi): New function to expand the RTL for evaluating
the Nth power of a floating point value, for integer constant N.
* doc/tm.texi (POWI_MAX_MULTS): Document new target macro.
* gcc.dg/builtins-24.c: New test case.
From-SVN: r68401
|
|
* basic-block.h: Fix comment formatting.
* bt-load.c: Likewise.
* builtins.c: Likewise.
* c-common.c: Likewise.
* c-common.h: Likewise.
* c-format.c: Likewise.
* coverage.c: Likewise.
* cpplib.h: Likewise.
* cpppch.c: Likewise.
* dbxout.c: Likewise.
* diagnostic.c: Likewise.
* dwarf2out.c: Likewise.
* expr.c: Likewise.
* fold-const.c: Likewise.
* function.c: Likewise.
* gcc.c: Likewise.
* gcov-io.c: Likewise.
* gcov-io.h: Likewise.
* gcov.c: Likewise.
* profile.c: Likewise.
* real.h: Likewise.
* sched-deps.c: Likewise.
From-SVN: r68369
|
|
stabilized argument list, not build_tree_list.
* builtins.c (expand_builtin_mathfn_2): Use tree_cons to build
up the stabilized argument list, not build_tree_list.
(expand_builtin_strcpy): Construct new argument list manually
instead of using chainon to modify the original argument list.
(expand_builtin_stpcpy): Construct new argument list manually
instead of using copy_list and chainon.
(expand_builtin_sprintf): New function. Optimize calls to
sprintf when the format is "%s" or doesn't contain a '%'.
(expand_builtin): Expand BUILT_IN_SPRINTF using the new function
expand_builtin_sprintf.
* gcc.c-torture/execute/string-opt-16.c: New test case.
From-SVN: r68355
|
|
have been tested before calling here.
* builtins.c (expand_errno_check): Assume that flag_errno_math
and HONOR_NANS have been tested before calling here. Only try
to set errno ourselves if the decl can't throw an exception.
(expand_builtin_mathfn): Move the code to stabilize the arg
after the main switch, so that that its only done when needed.
BUILT_IN_SQRT{,F,L} doesn't set errno if its arg is nonnegative.
Don't modify the original expr when stabilizing the argument.
(expand_builtin_mathfn_2): Likewise, move the code to stabilize
the args after the main switch, and don't modify the orginal exp.
From-SVN: r68217
|
|
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
|
|
ISO C.
* builtin-attrs.def, builtin-attrs.def, builtins.c, cpplex.c,
cpplib.c, gencheck.c, gengenrtl.c, machmode.def, protoize.c: Don't
use macros from "symcat.h", instead rely on ISO C.
* system.h: Don't include "symcat.h".
* configure.in (AC_C_STRINGIZE): Delete.
* config.in, configure: Regenerate.
From-SVN: r68035
|
|
* optabs.h (enum optab_index): Add new OTI_tan and OTI_atan.
(tan_optab, atan_optab): Define corresponding macros.
* optabs.c (init_optabs): Initialize tan_optab and atan_optab.
* genopinit.c (optabs): Implement tan_optab and atan_optab
using tan?f2 and atan?f2 patterns.
* builtins.c (expand_builtin_mathfn): Handle BUILT_IN_TAN{,F,L}
using tan_optab, and BUILT_IN_ATAN{,F,L} using atan_optab.
Change the default value of errno_set to false.
(expand_builtin): Expand BUILT_IN_TAN{,F,L} and BUILT_IN_ATAN{,F,L}
using expand_builtin_mathfn.
* config/i386/i386.md (atansf2, atandf2, atanxf2, atantf2): New
expander patterns implemented using existing atan2?f3 patterns.
* gcc.dg/i386-387-5.c: New test case.
* gcc.dg/i386-387-6.c: New test case.
* gcc.dg/builtins-23.c: New test case.
From-SVN: r68013
|
|
* alloc-pool.c: Convert to ISO C90 prototypes.
* alloc-pool.h: Likewise.
* alias.c: Likewise.
* attribs.c: Likewise.
* bb-reorder.c: Likewise.
* bitmap.h: Likewise.
* bitmap.c: Likewise.
* builtins.c: Likewise.
* tree.h: Convert prototypes of attribs.c to ISO C90.
* basic-block.h: Convert prototypes of bb-reorder.c to ISO C90.
* rtl.h: Convert prototypes of alias.c and builtins.c to ISO C90.
* expr.h: Convert prototypes of builtins.c to ISO C90.
From-SVN: r67975
|
|
also in any_condjump_p().
* builtins.c (expand_builtin_expect_jump): Remove redundant
tests that are also in any_condjump_p().
From-SVN: r67966
|
|
* builtins.c: Fix comment typos.
* fold-const.c: Likewise.
From-SVN: r67907
|
|
* 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
|
|
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
|
|
* builtins.c (dconstpi, dconste): New mathematical constants.
(init_builtin_dconsts): New function to initialize dconstpi
and dconste.
(fold_builtin): Optimize exp(1.0) = e. Evaluate exp(x) at
compile time with -ffast-math when x is an integer constant.
Optimize tan(0.0) = 0.0. Optimize atan(0.0) = 0.0,
atan(1.0) = pi/4 and tan(atan(x)) = x with -ffast-math.
* gcc.dg/builtins-2.c: Add tests for tan(atan(x)).
* gcc.dg/builtins-3.c: Add tests for tan(0.0) and atan(0.0).
* gcc.dg/builtins-7.c: Add tests for tan(atan(x)) == x.
* gcc.dg/builtins-17.c: New test case.
* gcc.dg/i386-387-4.c: New test case.
* gcc.c-torture/execute/ieee/mzero4.c: New test case.
From-SVN: r67438
|
|
cabs, cabsf and cabsl.
* builtins.def (BUILT_IN_CABS, BUILT_IN_CABSF, BUILT_IN_CABSL):
New builtins representing ISO C99's cabs, cabsf and cabsl.
* builtins.c (expand_builtin_fabs): New function.
(expand_builtin_cabs): New function.
(expand_builtin): Expand BUILT_IN_FABS{,F,L} and BUILT_IN_CABS{,F,L}
using expand_builtin_fabs and expand_builtin_cabs respectively.
* doc/extend.texi: Document new cabs, cabsf and cabsl builtins.
* gcc.dg/builtins-16.c: New test case.
From-SVN: r67368
|
|
* builtins.c (expand_builtin_memcpy): Remove endp argument and endp
!= 0 handling. Pass 0 to store_by_pieces.
(expand_builtin_mempcpy): Add endp argument. Don't call
expand_builtin_memcpy, call store_by_pieces resp. move_by_pieces
directly. If ignoring result, only do expand_call.
(expand_builtin_stpcpy): Likewise. Call expand_builtin_mempcpy
otherwise.
(expand_builtin_strncpy, expand_builtin_memset): Adjust
store_by_pices callers.
(expand_builtin): Adjust expand_builtin_memcpy and
expand_builtin_mempcpy callers.
* expr.c (can_move_by_pieces): New function.
(move_by_pieces): Add endp argument, return to resp. memory at end
or one byte earlier depending on endp.
(store_by_pieces): Likewise.
(emit_block_move): Adjust call to move_by_pieces.
(emit_push_insn): Adjust move_by_pieces caller.
* expr.h (can_move_by_pieces): New prototype.
(store_by_pieces): Adjust prototypes.
* rtl.h (move_by_pieces): Adjust prototype.
* config/mips/mips.c (expand_block_move): Adjust move_by_pieces
caller.
* gcc.c-torture/execute/builtins/string-4.c (main_test): Remove
mempcpy test with post-increments.
* gcc.c-torture/execute/string-opt-3.c: New test.
* gcc.dg/string-opt-1.c: New test.
From-SVN: r67358
|
|
* 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
|
|
computation.
* builtins.c (expand_builtin_memcpy): Use mode of dest_addr for
intermediate computation.
From-SVN: r67154
|
|
* builtins.def: Defome atan, atanf, atanl, tan, tanf and tanl
builtin functions (and their __builtin_* variants).
* builtins.c (mathfn_built_in): Handle tan{,f,l} and atan{,f,l}.
(expand_builtin): Don't expand tan{,f,l} or atan{,f,l} when not
optimizing.
* doc/extend.texi: Document new tan and atan builtins, and
their float and long double variants.
* gcc.dg/builtins-1.c: Add tests for tan and atan.
* gcc.dg/builtins-4.c: Add test for fmod.
From-SVN: r67137
|
|
PR middle-end/10472
* builtins.c (expand_builtin_memcpy): Call force_operand on
expressions and use simplify_gen_binary to create the addition.
* gcc.c-torture/compile/20030518-1.c: New test case.
Co-Authored-By: Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
Co-Authored-By: Zack Weinberg <zack@codesourcery.com>
From-SVN: r66941
|
|
stdarg.
gcc:
* builtins.c (validate_arglist): Eliminate libiberty VA_ macros,
always use stdarg.
* c-errors.c (pedwarn_c99): Likewise.
* c-format.c (status_warning): Likewise.
* c-semantics.c (build_stmt): Likewise.
* calls.c (emit_library_call, emit_library_call_value): Likewise.
* collect2.c (notice, fatal_perror, fatal, error): Likewise.
* cpperror.c (cpp_error, cpp_error_with_line): Likewise.
* diagnostic.c (build_message_string, output_printf,
output_verbatim, verbatim, inform, warning, pedwarn, error, sorry,
fatal_error, internal_error, warning_with_decl, pedwarn_with_decl,
error_with_decl, fnotice): Likewise.
* dwarf2asm.c (dw2_asm_output_data, dw2_asm_output_delta,
dw2_asm_output_offset, dw2_asm_output_pcrel, dw2_asm_output_addr,
dw2_asm_output_addr_rtx, dw2_asm_output_nstring,
dw2_asm_output_data_uleb128, dw2_asm_output_data_sleb128,
dw2_asm_output_delta_uleb128, dw2_asm_output_delta_sleb128,
dw2_asm_output_encoded_addr_rtx): Likewise.
* emit-rtl.c (gen_rtx, gen_rtvec): Likewise.
* errors.c (warning, error, fatal, internal_error): Likewise.
* final.c (output_operand_lossage, asm_fprintf): Likewise.
* fix-header.c (fatal): Likewise.
* gcc.c (fatal, error, notice): Likewise.
* gcov.c (fnotice): Likewise.
* genattrtab.c (attr_rtx, attr_printf): Likewise.
* gengtype.c (error_at_line, xasprintf, oprintf): Likewise.
* gensupport.c (message_with_line): Likewise.
* mips-tfile.c (fatal, error): Likewise.
* protoize.c (notice): Likewise.
* ra-debug.c (ra_debug_msg): Likewise.
* read-rtl.c (fatal_with_file_and_line): Likewise.
* rtl-error.c (error_for_asm, warning_for_asm): Likewise.
* tree.c (build, build_nt, build_function_type_list): Likewise.
cp:
* error.c (cp_error_at, cp_warning_at, cp_pedwarn_at): Eliminate
libiberty VA_ macros, always use stdarg.
* rtti.c (create_pseudo_type_info): Likewise.
* tree.c (build_min_nt, build_min): Likewise.
From-SVN: r66919
|
|
gcc:
* builtins.c (readonly_data_expr): New function.
(expand_builtin_memmove): Optimize any rodata source, not just
strings.
testsuite
gcc.c-torture/execute/string-opt-19.c: Add general rodata tests.
(bcopy): Call memmove.
From-SVN: r66597
|
|
an integer power, i.e.
* real.c (real_powi): New function to calculate the value of
a real raised to an integer power, i.e. pow(x,n) for int n.
(real_sqrt): Convert to using the faster do_add, do_multiply
and do_divide API for consistency with the rest of real.c.
* real.h (real_powi): Prototype here.
* builtins.c (fold_builtin): Avoid local variable mode when
evaluating sqrt at compile time. Attempt to evaluate pow at
compile-time, by checking for an integral exponent.
* gcc.dg/builtins-14.c: New test case.
From-SVN: r66515
|
|
source string can be evaluated at compile-time.
* builtins.c (expand_builtin_stpcpy): Only expand when the length
of the source string can be evaluated at compile-time.
From-SVN: r66503
|