- 17 Nov, 2015 40 commits
-
-
2015-11-17 Tom de Vries <tom@codesourcery.com> * tree-scalar-evolution.c (scev_const_prop): Dump details if replacing uses of ssa_name with constant. From-SVN: r230504
Tom de Vries committed -
2015-11-17 Tom de Vries <tom@codesourcery.com> * tree-ssa-ccp.c (do_ssa_ccp): Clear LOOP_CLOSED_SSA in loops state if something changed. From-SVN: r230503
Tom de Vries committed -
2015-11-17 Tom de Vries <tom@codesourcery.com> * cfgloop.h (struct loop): Add in_oacc_kernels_region field. * omp-low.c (mark_loops_in_oacc_kernels_region): New function. (expand_omp_target): Call mark_loops_in_oacc_kernels_region. From-SVN: r230502
Tom de Vries committed -
* regrename.c (regrename_find_superclass): New function, code moved from ... (rename_chains): ... here. Call it. * regrename.h (regrename_find_superclass): Declare. From-SVN: r230501
Bernd Schmidt committed -
* regrename.c (record_out_operands): Terminate earlyclobbered operands here. From-SVN: r230500
Bernd Schmidt committed -
PR target/66785 * regrename.c (record_operand_use): Keep track of failed operands and stop appending if we see any. * regrename.h (struct operand_rr_info): Add a failed field and shrink n_chains to short. From-SVN: r230499
Bernd Schmidt committed -
2015-11-17 Sandra Loosemore <sandra@codesourcery.com> PR 48568 * doc/extend.texi (Common Function Attributes) [visibility]: Add cross-references to matching variable and type attributes. (Common Variable Attributes) [visibility]: Add missing entry. From-SVN: r230498
Sandra Loosemore committed -
gcc/c/ChangeLog: * c-parser.c (set_c_expr_source_range): Bulletproof both overloaded implementations against NULL expr->value. (c_parser_braced_init): Set src_range for "ret" to a sane pair of values. (c_parser_unary_expression): Likewise when handling addresses of labels. (c_parser_postfix_expression): Likewise for statement expressions, for __FUNCTION__, __PRETTY_FUNCTION_ and __func__ keywords, for __builtin_va_arg, and for __builtin_offset_of. (c_parser_postfix_expression_after_paren_type): Initialize expr's src_range using the range of the braced initializer. (c_parser_transaction_expression): Set src_range for "ret" to a sane pair of values. gcc/testsuite/ChangeLog: * gcc.dg/plugin/diagnostic-test-expressions-1.c (vector): New macro. (test_braced_init): New function. (test_statement_expression): New function. (test_address_of_label): New function. (test_transaction_expressions): New function. (test_keywords): New function. (test_builtin_va_arg): New function. (test_builtin_offsetof): New function. * lib/multiline.exp (_build_multiline_regex): Escape braces. From-SVN: r230497
David Malcolm committed -
PR libstdc++/66059 * include/std/utility (_Build_index_tuple): Optimise. From-SVN: r230496
Jonathan Wakely committed -
2015-11-17 Steven G. Kargl <kargl@gcc.gnu.org> * primary.c (gfc_match_structure_constructor): Fix whitespace. From-SVN: r230495
Steven G. Kargl committed -
After the previous patches it's no longer necessary for TARGET_BUILTIN_VECTORIZED_FUNCTION to return functions that map to the vector optab of the original operation. We'll use a vector form of the internal function instead. Tested on powerpc64-linux-gnu. gcc/ * config/rs6000/rs6000.c (rs6000_builtin_vectorized_function): Remove entries that map directly to optabs. From-SVN: r230494
Richard Sandiford committed -
After the previous patches it's no longer necessary for TARGET_BUILTIN_VECTORIZED_FUNCTION to return functions that map to the vector optab of the original operation. We'll use a vector form of the internal function instead. Tested on x86_64-linux-gnu. gcc/ * config/i386/i386.c (ix86_builtin_vectorized_function): Remove entries that map directly to optabs. From-SVN: r230493
Richard Sandiford committed -
This patch tries to vectorize built-in and internal functions as internal functions first, falling back on the current built-in target hooks otherwise. This means that we'll automatically pick up vector versions of optabs without the target having to implement any special hooks. E.g. we'll use V4SF sqrt if the target defines a "sqrtv4sf2" optab. As well as being simpler, it means that the target-independent code has more idea what the vectorized function does. Tested on x86_64-linux-gnu, aarch64-linux-gnu, arm-linux-gnu and powerpc64-linux-gnu. gcc/ * internal-fn.h (direct_internal_fn_info): Add vectorizable flag. * internal-fn.c (direct_internal_fn_array): Update accordingly. * tree-vectorizer.h (vectorizable_function): Delete. * tree-vect-stmts.c: Include internal-fn.h. (vectorizable_internal_function): New function. (vectorizable_function): Inline into... (vectorizable_call): ...here. Explicitly reject calls that read from or write to memory. Try using an internal function before falling back on the old vectorizable_function behavior. From-SVN: r230492
Richard Sandiford committed -
This patch replaces the fndecl argument to builtin_vectorized_function with a combined_fn and gets the vectoriser to call it for internal functions too. The patch also moves vectorisation of machine-specific built-ins to a new hook, builtin_md_vectorized_function. Tested on x86_64-linux-gnu, aarch64-linux-gnu, arm-linux-gnu and powerpc64-linux-gnu. gcc/ * target.def (builtin_vectorized_function): Take a combined_fn (in the form of an unsigned int) rather than a function decl. (builtin_md_vectorized_function): New. * targhooks.h (default_builtin_vectorized_function): Replace the fndecl argument with an unsigned int. (default_builtin_md_vectorized_function): Declare. * targhooks.c (default_builtin_vectorized_function): Replace the fndecl argument with an unsigned int. (default_builtin_md_vectorized_function): New function. * doc/tm.texi.in (TARGET_VECTORIZE_BUILTIN_MD_VECTORIZED_FUNCTION): New hook. * doc/tm.texi: Regenerate. * tree-vect-stmts.c (vectorizable_function): Update call to builtin_vectorized_function, also passing internal functions. Call builtin_md_vectorized_function for target-specific builtins. * config/aarch64/aarch64-protos.h (aarch64_builtin_vectorized_function): Replace fndecl argument with an unsigned int. * config/aarch64/aarch64-builtins.c: Include case-cfn-macros.h. (aarch64_builtin_vectorized_function): Update after above changes. Use CASE_CFN_*. * config/arm/arm-protos.h (arm_builtin_vectorized_function): Replace fndecl argument with an unsigned int. * config/arm/arm-builtins.c: Include case-cfn-macros.h (arm_builtin_vectorized_function): Update after above changes. Use CASE_CFN_*. * config/i386/i386.c: Include case-cfn-macros.h (ix86_veclib_handler): Take a combined_fn rather than a built_in_function. (ix86_veclibabi_svml, ix86_veclibabi_acml): Likewise. Use mathfn_built_in rather than calling builtin_decl_implicit directly. (ix86_builtin_vectorized_function) Update after above changes. Use CASE_CFN_*. * config/rs6000/rs6000.c: Include case-cfn-macros.h (rs6000_builtin_vectorized_libmass): Replace fndecl argument with a combined_fn. Use CASE_CFN_*. Use mathfn_built_in rather than calling builtin_decl_implicit directly. (rs6000_builtin_vectorized_function): Update after above changes. Use CASE_CFN_*. Move BUILT_IN_MD to... (rs6000_builtin_md_vectorized_function): ...this new function. (TARGET_VECTORIZE_BUILTIN_MD_VECTORIZED_FUNCTION): Define. From-SVN: r230491
Richard Sandiford committed -
In practice all targets that can vectorise sqrt define the appropriate sqrt<mode>2 optab. The only case where this isn't immediately obvious is the libmass support in rs6000.c, but Mike Meissner said that it shouldn't be exercised for sqrt. This patch therefore uses the internal function interface instead of going via the target hook. Tested on x86_64-linux-gnu, aarch64-linux-gnu, arm-linux-gnueabi and powerpc64-linux-gnu. gcc/ * tree-vect-patterns.c: Include internal-fn.h. (vect_recog_pow_pattern): Use IFN_SQRT instead of BUILT_IN_SQRT*. From-SVN: r230490
Richard Sandiford committed -
Nothing uses these macros and removing them makes it more likely that future code will use CASE_CFN_* instead. Tested on x86_64-linux-gnu, aarch64-linux-gnu and arm-linux-gnueabi. gcc/ * tree.h (BUILTIN_EXP10_P, BUILTIN_EXPONENT_P, BUILTIN_SQRT_P) (BUILTIN_CBRT_P, BUILTIN_ROOT_P): Delete. From-SVN: r230489
Richard Sandiford committed -
For -fmath-errno, builtins.c currently expands calls to sqrt to: y = sqrt_optab (x); if (y != y) [ sqrt (x); or errno = EDOM; ] The drawbacks of this are: - the call to sqrt is protected by the result of the optab rather than the input. It would be better to check __builtin_isless (x, 0), like tree-call-cdce.c does. - the branch isn't exposed at the gimple level and so gets little high-level optimisation. - we do this for log too, but for log a zero input produces -inf rather than a NaN, and sets errno to ERANGE rather than EDOM. This patch moves the code to tree-call-cdce.c instead, with the optab operation being represented as an internal function. This means that we can use the existing argument-based range checks rather than the result-based checks and that we get more gimple optimisation of the branch. Previously the pass was only enabled by default at -O2 or above, but the old builtins.c code was enabled at -O. The patch therefore enables the pass at -O as well. The previous patch to cfgexpand.c handled cases where functions don't (or are assumed not to) set errno, so this patch makes the builtins.c code dead. Tested on x86_64-linux-gnu, aarch64-linux-gnu, arm-linux-gnueabi and visium-elf (for the EDOM stuff). gcc/ * builtins.c (expand_errno_check, expand_builtin_mathfn) (expand_builtin_mathfn_2): Delete. (expand_builtin): Remove handling of functions with internal function equivalents. * internal-fn.def (SET_EDOM): New internal function. * internal-fn.h (set_edom_supported_p): Declare. * internal-fn.c (expand_SET_EDOM): New function. (set_edom_supported_p): Likewise. * tree-call-cdce.c: Include builtins.h and internal-fn.h. Rewrite comment at head of file. (is_call_dce_candidate): Rename to... (can_test_argument_range): ...this. Don't check gimple_call_lhs or gimple_call_builtin_p here. (edom_only_function): New function. (shrink_wrap_one_built_in_call_with_conds): New function, split out from... (shrink_wrap_one_built_in_call): ...here. (can_use_internal_fn, use_internal_fn): New functions. (shrink_wrap_conditional_dead_built_in_calls): Call use_internal_fn for calls that have an lhs. (pass_call_cdce::gate): Remove optimize_function_for_speed_p check. (pass_call_cdce::execute): Skip blocks that are optimized for size. Check gimple_call_builtin_p here. Use can_use_internal_fn for calls with an lhs. * opts.c (default_options_table): Enable -ftree-builtin-call-cdce at -O and above. From-SVN: r230488
Richard Sandiford committed -
This patch short-circuits the builtins.c expansion code for a particular gimple call if: - the function has an associated internal function - the target implements that internal function - the call has no side effects This allows a later patch to remove the builtins.c code, once calls with side effects have been handled. Tested on x86_64-linux-gnu, aarch64-linux-gnu and arm-linux-gnueabi. gcc/ * builtins.h (called_as_built_in): Declare. * builtins.c (called_as_built_in): Make external. * internal-fn.h (expand_internal_call): Define a variant that specifies the internal function explicitly. * internal-fn.c (expand_load_lanes_optab_fn) (expand_store_lanes_optab_fn, expand_ANNOTATE, expand_GOMP_SIMD_LANE) (expand_GOMP_SIMD_VF, expand_GOMP_SIMD_LAST_LANE) (expand_GOMP_SIMD_ORDERED_START, expand_GOMP_SIMD_ORDERED_END) (expand_UBSAN_NULL, expand_UBSAN_BOUNDS, expand_UBSAN_VPTR) (expand_UBSAN_OBJECT_SIZE, expand_ASAN_CHECK, expand_TSAN_FUNC_EXIT) (expand_UBSAN_CHECK_ADD, expand_UBSAN_CHECK_SUB) (expand_UBSAN_CHECK_MUL, expand_ADD_OVERFLOW, expand_SUB_OVERFLOW) (expand_MUL_OVERFLOW, expand_LOOP_VECTORIZED) (expand_mask_load_optab_fn, expand_mask_store_optab_fn) (expand_ABNORMAL_DISPATCHER, expand_BUILTIN_EXPECT, expand_VA_ARG) (expand_UNIQUE, expand_GOACC_DIM_SIZE, expand_GOACC_DIM_POS) (expand_GOACC_LOOP, expand_GOACC_REDUCTION, expand_direct_optab_fn) (expand_unary_optab_fn, expand_binary_optab_fn): Add an internal_fn argument. (internal_fn_expanders): Update prototype. (expand_internal_call): Define a variant that specifies the internal function explicitly. Use it to implement the previous interface. * cfgexpand.c (expand_call_stmt): Try to expand calls to built-in functions as calls to internal functions. From-SVN: r230487
Richard Sandiford committed -
This patch autogenerates the operator lists for maths functions like SQRT, adding an additional entry for internal functions. E.g.: (define_operator_list SQRT BUILT_IN_SQRTF BUILT_IN_SQRT BUILT_IN_SQRTL IFN_SQRT) and: (define_operator_list CABS BUILT_IN_CABSF BUILT_IN_CABS BUILT_IN_CABSL null) (since there's no internal function for CABS). Tested on x86_64-linux-gnu, aarch64-linux-gnu and arm-linux-gnueabi. gcc/ * Makefile.in (MOSTLYCLEANFILES): Add cfn-operators.pd. (generated_files): Likewise. (s-cfn-operators, cfn-operators.pd): New rules. (s-match): Depend on cfn-operators.pd. * gencfn-macros.c: Expand comment to describe -o behavior. (print_define_operator_list): New function. (main): Accept -o. Call print_define_operator_list. * genmatch.c (main): Add the current directory to the include path. * match.pd (DEFINE_MATH_FN): Delete. Include cfn-operators.pd instead. From-SVN: r230486
Richard Sandiford committed -
This patch adds a null identifier that can never match anything and can never be generated. It is only valid in operator lists and fors. Later patches will add uses of it. The idea is to allow operator lists for maths functions that have four entries: - float built-in - double built-in - long double built-in - internal function Not all maths functions have an associated internal function, and for those the final operator will be "null". Any simplification that tries to use a null substitution will be skipped. Tested on x86_64-linux-gnu, aarch64-linux-gnu and arm-linux-gnueabi. gcc/ * doc/match-and-simplify.texi: Document the "null" identifier. * genmatch.c (id_base::NULL_ID): New kind. (null_id): New variable. (get_operator): Add a parameter that says whether null identifiers are allowed. (contains_id): New function. (lower_for): Skip substitutions that would have a null_id in either the match or the result. (parser::parse_for): Allow the null identifier to be used. (parser::parse_operator_list): Likewise. (main): Initialize null_id. From-SVN: r230485
Richard Sandiford committed -
This patch makes genmatch match calls based on combined_fn rather than built_in_function and extends the matching to internal functions. It also uses fold_const_call to fold the calls to a constant, rather than going through fold_builtin_n. In order to slightly simplify the code and remove potential ambiguity, the patch enforces lower case for tree codes (foo->FOO_EXPR), caps for functions (no built_in_hypot->BUILT_IN_HYPOT) and requires an exact match for user-defined identifiers. The first two were already met in practice but there were a couple of cases where operator lists were defined in one case and used in another. Tested on x86_64-linux-gnu, aarch64-linux-gnu and arm-linux-gnueabi. gcc/ * match.pd: Use HYPOT and COS rather than hypot and cos. Use CASE_CFN_* macros. Guard log/exp folds with SCALAR_FLOAT_TYPE_P. * genmatch.c (internal_fn): New enum. (fn_id::fn): Change to an unsigned int. (fn_id::fn_id): Accept internal_fn too. (add_builtin): Rename to... (add_function): ...this and turn into a template. (get_operator): Only try one variation if the original name fails. Only add _EXPR if the original name was all lower case. Try converting internal and built-in function names to their CFN equivalents. (expr::gen_transform): Use maybe_build_call_expr_loc for generic. (dt_simplify::gen_1): Likewise. (dt_node::gen_kids_1): Use gimple_call_combined_fn for gimple and get_call_combined_fn for generic. (dt_simplify::gen): Use combined_fn as the type of fn_ids. (decision_tree::gen): Likewise. (main): Use lower case in the strings for {VIEW_,}CONVERT[012]. Use add_function rather than add_builtin. Register internal functions too. * generic-match-head.c: Include case-cfn-macros.h. * gimple-fold.c (replace_stmt_with_simplification): Use gimple_call_combined_fn to test whether we can keep an existing call. * gimple-match.h (code_helper): Replace built_in_function with combined_fn. * gimple-match-head.c: Include fold-const-call.h, internal-fn.h and case-fn-macros.h. (gimple_resimplify1): Use fold_const_call. (gimple_resimplify2, gimple_resimplify3): Likewise. (build_call_internal, build_call): New functions. (maybe_push_res_to_seq): Use them. (gimple_simplify): Use fold_const_call. Set *rcode to a combined_fn rather than a built-in function. * tree.h (build_call_expr_internal_loc): Declare. (maybe_build_call_expr_loc): Likewise. * tree.c (build_call_expr_internal_loc_array): New function. (maybe_build_call_expr_loc): Likewise. From-SVN: r230484
Richard Sandiford committed -
This patch extends mathfn_built_in to handle combined_fn, but keeps the old built_in_function interface around since it's a common case. Tested on x86_64-linux-gnu, aarch64-linux-gnu and arm-linux-gnueabi. gcc/ * builtins.h (mathfn_built_in): Add a variant that takes a combined_fn. * builtins.c: Include case-cfn-macros.h. (CASE_MATHFN): Use CASE_CFN_*. (CASE_MATHFN_REENT): Use CFN_ codes. (mathfn_built_in_2, mathfn_built_in_1): Replace built_in_function argument with a combined_fn. (mathfn_built_in): Add a variant that takes a combined_fn. (expand_builtin_int_roundingfn_2): Update callers accordingly. (fold_builtin_sincos, fold_builtin_classify): Likewise. From-SVN: r230483
Richard Sandiford committed -
Another patch to extend uses of built_in_function to combined_fn, this time in tree-vect-patterns.c. The old code didn't handle the long double pow variants, but I think that's because noone had a target that would benefit rather than because the code would mishandle them. Tested on x86_64-linux-gnu, aarch64-linux-gnu and arm-linux-gnueabi. gcc/ * tree-vect-patterns.c: Include case-cfn-macros.h. (vect_recog_pow_pattern): Use combined_fn instead of built-in codes. From-SVN: r230482
Richard Sandiford committed -
Another patch to extend uses of built_in_function to combined_fn, this time in tree-ssa-math-opts.c. Tested on x86_64-linux-gnu, aarch64-linux-gnu and arm-linux-gnueabi. gcc/ * tree-ssa-math-opts.c: Include case-cfn-macros.h. (execute_cse_sincos_1): Use combined_fn instead of built-in codes. (pass_cse_sincos::execute): Likewise. From-SVN: r230481
Richard Sandiford committed -
Another patch to extend uses of built_in_function to combined_fn, this time in tree-ssa-reassoc.c. Tested on x86_64-linux-gnu, aarch64-linux-gnu and arm-linux-gnueabi. gcc/ * tree-ssa-reassoc.c: Include case-cfn-macros.h. (stmt_is_power_of_op): Use combined_fn instead of built-in codes. (decrement_power, acceptable_pow_call): Likewise. (attempt_builtin_copysign): Likewise. From-SVN: r230480
Richard Sandiford committed -
Another patch to extend uses of built_in_function to combined_fn, this time in tree-vrp.c. Tested on x86_64-linux-gnu, aarch64-linux-gnu and arm-linux-gnueabi. gcc/ * tree-vrp.c: Include case-cfn-macros.h. (extract_range_basic): Switch on combined_fn rather than handling built-in functions and internal functions separately. From-SVN: r230479
Richard Sandiford committed -
This patch generalises fold-const.[hc] routines to use combined_fn instead of built_in_function. It also updates gimple-ssa-backprop,c since the update is simple and it avoids churn on the call to negate_mathfn_p. Tested on x86_64-linux-gnu, aarch64-linux-gnu and arm-linux-gnueabi. gcc/ * fold-const.h (negate_mathfn_p): Take a combined_fn rather than a built_in_function. (tree_call_nonnegative_warnv_p): Take a combined_fn rather than a function decl. (integer_valued_real_call_p): Likewise. * fold-const.c: Include case-cfn-macros.h (negate_mathfn_p): Take a combined_fn rather than a built_in_function. (negate_expr_p): Update accordingly. (tree_call_nonnegative_warnv_p): Take a combined_fn rather than a function decl. (integer_valued_real_call_p): Likewise. (tree_invalid_nonnegative_warnv_p): Update accordingly. (integer_valued_real_p): Likewise. * gimple-fold.c (gimple_call_nonnegative_warnv_p): Update call to tree_call_nonnegative_warnv_p. (gimple_call_integer_valued_real_p): Likewise integer_valued_real_call_p. * gimple-ssa-backprop.c: Include case-cfn-macros.h. (backprop::process_builtin_call_use): Extend to combined_fn. (strip_sign_op_1): Likewise. (backprop::process_use): Don't check for built-in calls here. (backprop::execute): Likewise. (backprop::optimize_builtin_call): Update call to negate_mathfn_p. From-SVN: r230478
Richard Sandiford committed -
This patch extends fold_const_call so that it can handle internal as well as built-in functions. Tested on x86_64-linux-gnu, aarch64-linux-gnu and arm-linux-gnueabi. gcc/ * fold-const-call.h (fold_const_call): Replace built_in_function arguments with combined_fn arguments. * fold-const-call.c: Include case-cfn-macros.h. (fold_const_call_ss, fold_const_call_cs, fold_const_call_sc) (fold_const_call_cc, fold_const_call_sss, fold_const_call_ccc) (fold_const_call_ssss, fold_const_call_1, fold_const_call): Replace built_in_function arguments with combined_fn arguments. * builtins.c (fold_builtin_sincos, fold_builtin_1, fold_builtin_2) (fold_builtin_3): Update calls to fold_const_call. From-SVN: r230477
Richard Sandiford committed -
This patch automatically generates case macros such as: CASE_CFN_SQRT for each {F,,L} floating-point built-in function and each {,L,LL,IMAX} integer built-in function. The macros match the same built-in functions as CASE_FLT_FN and CASE_INT_FN but in addition include the associated internal function, if any. The idea is to make sure that users of combined_fn don't need to know which built-in functions have internal-function equivalents. If we add a new function to internal-fn.def, all combined_fn users should pick it up automatically. The generator wants to use "hash_set <nofree_string_hash>", so the patch follows hash_map in using the types given by the traits as the key. This is a no-op for current users of hash_set. Tested on x86_64-linux-gnu, aarch64-linux-gnu and arm-linux-gnueabi. gcc/ * Makefile.in (HASH_TABLE_H): Add GGC_H. (MOSTLYCLEANFILES, generated_files): Add case-fn-macros.h. (s-case-cfn-macros, case-cfn-macros.h, build/gencfn-macros.o) (build/gencfn-macros$(build_exeext): New rules. (genprogerr): Add cfn-macros. * hash-set.h (hash_set): Use the traits value_type as the key. * gencfn-macros.c: New file. From-SVN: r230476
Richard Sandiford committed -
This patch adds internal function equivalents of all the INT_FN functions. Unlike the math functions, these functions never set errno and the internal functions should be exactly equivalent to the built-in ones. The reason for defining the internal functions is so that we can extend the functionality to other modes, in particular vector modes. Tested on x86_64-linux-gnu, aarch64-linux-gnu and arm-linux-gnueabi. gcc/ * internal-fn.def (DEF_INTERNAL_INT_FN): New macro. (CLRSB, CLZ, CTZ, FFS, PARITY, POPCOUNT): New functions. * builtins.c (associated_internal_fn): Handle them. From-SVN: r230475
Richard Sandiford committed -
This patch adds internal functions for simple FLT_FN built-in functions, in cases where an associated optab already exists. Unlike some of the built-in functions, these internal functions never set errno. LDEXP is an odd-one out in that its second operand is an integer. All the others operate on uniform types. The patch also adds a function to query the internal function associated with a built-in function (if any), and another to test whether a given gcall could be replaced by a call to an internal function on the current target (as long as the caller deals with errno appropriately). Tested on x86_64-linux-gnu, aarch64-linux-gnu and arm-linux-gnueabi. gcc/ * builtins.h (associated_internal_fn): Declare. (replacement_internal_fn): Likewise. * builtins.c: Include internal-fn.h (associated_internal_fn, replacement_internal_fn): New functions. * internal-fn.def (DEF_INTERNAL_FLT_FN): New macro. (ACOS, ASIN, ATAN, COS, EXP, EXP10, EXP2, EXPM1, LOG, LOG10, LOG1P) (LOG2, LOGB, SIGNIFICAND, SIN, SQRT, TAN, CEIL, FLOOR, NEARBYINT) (RINT, ROUND, TRUNC, ATAN2, COPYSIGN, FMOD, POW, REMAINDER, SCALB) (LDEXP): New functions. * internal-fn.c: Include recog.h. (unary_direct, binary_direct): New macros. (expand_direct_optab_fn): New function. (expand_unary_optab_fn): New macro. (expand_binary_optab_fn): Likewise. (direct_unary_optab_supported_p): Likewise. (direct_binary_optab_supported_p): Likewise. From-SVN: r230474
Richard Sandiford committed -
This patch adds a concept of internal functions that map directly to an optab (here called "direct internal functions"). The function can only be used if the associated optab can be used. We currently have four functions like that: - LOAD_LANES - STORE_LANES - MASK_LOAD - MASK_STORE so the patch converts them to the new infrastructure. These four all need different types of optabs, but future patches will add regular unary and binary ones. In general we need one or two modes to decide whether an optab is supported, depending on whether it's a convert_optab or not. This in turn means that we need up to two types to decide whether an internal function is supported. The patch records which types are needed for each internal function, using -1 if the return type should be used and N>=0 if the type of argument N should be used. (LOAD_LANES and STORE_LANES are unusual in that both optab modes come from the same array type.) Tested on x86_64-linux-gnu, aarch64-linux-gnu and arm-linux-gnueabi. gcc/ * coretypes.h (tree_pair): New type. * internal-fn.def (DEF_INTERNAL_OPTAB_FN): New macro. Use it for MASK_LOAD, LOAD_LANES, MASK_STORE and STORE_LANES. * internal-fn.h (direct_internal_fn_info): New structure. (direct_internal_fn_array): Declare. (direct_internal_fn_p, direct_internal_fn): New functions. (direct_internal_fn_types, direct_internal_fn_supported_p): Declare. * internal-fn.c (not_direct, mask_load_direct, load_lanes_direct) (mask_store_direct, store_lanes_direct): New macros. (direct_internal_fn_array) New array. (get_multi_vector_move): Return the optab handler without asserting that it is available. (expand_LOAD_LANES): Rename to... (expand_load_lanes_optab_fn): ...this and add an optab argument. (expand_STORE_LANES): Rename to... (expand_store_lanes_optab_fn): ...this and add an optab argument. (expand_MASK_LOAD): Rename to... (expand_mask_load_optab_fn): ...this and add an optab argument. (expand_MASK_STORE): Rename to... (expand_mask_store_optab_fn): ...this and add an optab argument. (direct_internal_fn_types, direct_optab_supported_p) (multi_vector_optab_supported_p, direct_internal_fn_supported_p) (direct_internal_fn_supported_p): New functions. (direct_mask_load_optab_supported_p): New macro. (direct_load_lanes_optab_supported_p): Likewise. (direct_mask_store_optab_supported_p): Likewise. (direct_store_lanes_optab_supported_p): Likewise. From-SVN: r230473
Richard Sandiford committed -
I'm working on a patch series that needs to be able to treat built-in functions and internal functions in a similar way. This patch adds a new enum, combined_fn, that combines the two together. It also adds utility functions for seeing which combined_fn (if any) is called by a given CALL_EXPR or gcall. Tested on x86_64-linux-gnu, aarch64-linux-gnu and arm-linux-gnueabi. gcc/ * tree-core.h (internal_fn): Move immediately after the definition of built_in_function. (combined_fn): New enum. * tree.h (as_combined_fn, builtin_fn_p, as_builtin_fn) (internal_fn_p, as_internal_fn): New functions. (get_call_combined_fn, combined_fn_name): Declare. * tree.c (get_call_combined_fn): New function. (combined_fn_name): Likewise. * gimple.h (gimple_call_combined_fn): Declare. * gimple.c (gimple_call_combined_fn): New function. From-SVN: r230472
Richard Sandiford committed -
PR bootstrap/68346 * c-common.c (warn_tautological_cmp): Fold before checking for constants. From-SVN: r230471
Jason Merrill committed -
PR bootstrap/68361 * cvt.c (cp_convert_and_check): Use warning_sentinel to suppress -Wparentheses. From-SVN: r230470
Jason Merrill committed -
From-SVN: r230469
Sandra Loosemore committed -
have var_decl in decompose, at tree.h:5105 gcc/ * cp/init.c (build_new_1): Check for expression constness the right way. testsuite/ * g++.dg/init/new46.C: New test. From-SVN: r230468
Martin Sebor committed -
2015-11-17 Sandra Loosemore <sandra@codesourcery.com> PR target/56036 * doc/invoke.texi (Option Summary): Add -mms-bitfields to x86 option list. (x86 Options): Add -mms-bitfields and -mno-ms-bitfields. Move discussion of the Microsoft structure layout details here from its former home in extend.texi. * doc/extend.texi (x86 Variable Attributes): Replace detailed discussion with pointer to its new location. Add cross-reference to corresponding type attributes. (x86 Type Attributes): Add cross-references to command-line options and variable attributes. From-SVN: r230467
Sandra Loosemore committed -
libgomp/ * config/nvptx/priority_queue.c: New file. From-SVN: r230466
Cesar Philippidis committed -
2015-11-17 Dominique d'Humieres <dominiq@lps.ens.fr> PR fortran/65751 * expr.c (gfc_check_pointer_assign): Fix error message. * gfortran.dg/unlimited_polymorphic_2.f03: Update test. From-SVN: r230465
Dominique d'Humieres committed
-