Age | Commit message (Collapse) | Author |
|
git-svn-id: https://gcc.gnu.org/svn/gcc/branches/ibm/ltc-139777@236600 138bc75d-0d04-0410-961f-82ee72b054a4
|
|
insn to compare bytes.
git-svn-id: https://gcc.gnu.org/svn/gcc/branches/ibm/ltc-139777@236519 138bc75d-0d04-0410-961f-82ee72b054a4
|
|
vec_addec altivec builtins from the Power Architecture 64-Bit ELF V2 ABI
OpenPOWER ABI for Linux Supplement (16 July 2015 Version 1.1). There are
many of the builtins that are missing and this is part of a series
of patches to add them.
There aren't instructions for the int versions of vec_addec so the
output code is built from other built-ins that do have instructions
which in this case is the following.
vec_addec (va, vb, carryv) == vec_or (vec_addc (va, vb),
vec_addc(vec_add(va, vb),
vec_and (carryv, 0x1)))
The new test cases are executable tests which verify that the generated
code produces expected values. C macros were used so that the same
test case could be used for both the signed and unsigned versions. An
extra executable test case is also included to ensure that the modified
support for the __int128 versions of vec_addec is not broken. The same
test case could not be used for both int and __int128 because of some
differences in loading and storing the vectors.
Bootstrapped and tested on powerpc64le-unknown-linux-gnu and
powerpc64-unknown-linux-gnu with no regressions. Is this ok for trunk?
[gcc]
2016-05-20 Bill Seurer <seurer@linux.vnet.ibm.com>
* config/rs6000/rs6000-builtin.def (vec_addec): Change vec_addec to a
special case builtin.
* config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Add
support for ALTIVEC_BUILTIN_VEC_ADDEC.
* config/rs6000/rs6000.c (altivec_init_builtins): Add definition
for __builtin_vec_addec.
[gcc/testsuite]
2016-05-20 Bill Seurer <seurer@linux.vnet.ibm.com>
* gcc.target/powerpc/vec-addec.c: New test.
* gcc.target/powerpc/vec-addec-int128.c: New test.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@236515 138bc75d-0d04-0410-961f-82ee72b054a4
|
|
This patch implements support for marking CALL_EXPRs
as being mandatory for tail-call-optimization. expand_call
tries harder to perform the optimization on such CALL_EXPRs,
and issues an error if it fails.
Currently this flag isn't accessible from any frontend,
so the patch uses a plugin for testing the functionality.
gcc/ChangeLog:
* calls.c (maybe_complain_about_tail_call): New function.
(initialize_argument_information): Call
maybe_complain_about_tail_call when clearing *may_tailcall.
(can_implement_as_sibling_call_p): Call
maybe_complain_about_tail_call when returning false.
(expand_call): Read CALL_EXPR_MUST_TAIL_CALL and, if set,
ensure try_tail_call is set. Call maybe_complain_about_tail_call
if tail-call optimization fails.
* cfgexpand.c (expand_call_stmt): Initialize
CALL_EXPR_MUST_TAIL_CALL from gimple_call_must_tail_p.
* gimple-pretty-print.c (dump_gimple_call): Dump
gimple_call_must_tail_p.
* gimple.c (gimple_build_call_from_tree): Call
gimple_call_set_must_tail with the value of
CALL_EXPR_MUST_TAIL_CALL.
* gimple.h (enum gf_mask): Add GF_CALL_MUST_TAIL_CALL.
(gimple_call_set_must_tail): New function.
(gimple_call_must_tail_p): New function.
* print-tree.c (print_node): Update printing of TREE_STATIC
to reflect its use for CALL_EXPR_MUST_TAIL_CALL.
* tree-core.h (struct tree_base): Add MUST_TAIL_CALL to the
trailing comment listing applicable flags.
* tree.h (CALL_EXPR_MUST_TAIL_CALL): New macro.
gcc/testsuite/ChangeLog:
* gcc.dg/plugin/must-tail-call-1.c: New test case.
* gcc.dg/plugin/must-tail-call-2.c: New test case.
* gcc.dg/plugin/must_tail_call_plugin.c: New file.
* gcc.dg/plugin/plugin.exp (plugin_test_list): Add the above.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@236514 138bc75d-0d04-0410-961f-82ee72b054a4
|
|
gcc/ChangeLog:
* calls.c (expand_call): Move "Rest of purposes for tail call
optimizations to fail" to...
(can_implement_as_sibling_call_p): ...this new function, and
split into multiple "if" statements.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@236513 138bc75d-0d04-0410-961f-82ee72b054a4
|
|
expected_loop_iterations): Unconstify.
* cfgloopanal.c (expected_loop_iterations_unbounded): Sanity check the
profile with known upper bound; return 3 when profile is absent.
(expected_loop_iterations): Update.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@236511 138bc75d-0d04-0410-961f-82ee72b054a4
|
|
and get_max_loop_iterations_int.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@236509 138bc75d-0d04-0410-961f-82ee72b054a4
|
|
* tree-ssa-loop-niter.c (idx_infer_loop_bounds): We can not produce
realistic upper bounds here.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@236508 138bc75d-0d04-0410-961f-82ee72b054a4
|
|
PR libstdc++/71081
* testsuite/experimental/memory_resource/1.cc: Add required argument
to dg-require-atomic-builtins.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@236507 138bc75d-0d04-0410-961f-82ee72b054a4
|
|
* gimple-fold.c (gimple_fold_call): Do not remove lhs of noreturn
calls if the LHS is variable length or has addressable type.
If targets[0]->decl is a noreturn call with void return type and
zero arguments, adjust fntype and remove lhs in that case.
* g++.dg/opt/pr71210-1.C: New test.
* g++.dg/opt/pr71210-2.C: New test.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@236506 138bc75d-0d04-0410-961f-82ee72b054a4
|
|
gcc.dg/tree-ssa/vector-6.c: Add -Wno-psabi -w to dg-options.
Add -msse2 for x86 and -maltivec for powerpc. Use scan-tree-dump-times
only on selected targets where V4SImode vectors are known to be
supported.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@236505 138bc75d-0d04-0410-961f-82ee72b054a4
|
|
2016-05-20 Marc Glisse <marc.glisse@inria.fr>
PR tree-optimization/71079
PR tree-optimization/71206
gcc/
* match.pd ((X ^ Y) ^ (X ^ Z)): Convert the arguments.
gcc/testsuite/
* gcc.dg/tree-ssa/pr71206.c: New testcase.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@236504 138bc75d-0d04-0410-961f-82ee72b054a4
|
|
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@236503 138bc75d-0d04-0410-961f-82ee72b054a4
|
|
* tree-vectorizer.c (get_vec_alignment_for_decl): New static function.
(get_vec_alignment_for_array_decl): Likewise.
(get_vec_alignment_for_record_decl): Likewise.
(increase_alignment::execute): Move code to find alignment to
get_vec_alignment_for_array_decl and call get_vec_alignment_for_decl.
(type_align_map): New hash_map.
testsuite/
* gcc.dg/vect/section-anchors-vect-70.c: New test-case.
* gcc.dg/vect/section-anchors-vect-71.c: Likewise.
* gcc.dg/vect/section-anchors-vect-72.c: Likewise.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@236502 138bc75d-0d04-0410-961f-82ee72b054a4
|
|
PR tree-optimization/29756
* tree.def (BIT_INSERT_EXPR): New tcc_expression tree code.
* expr.c (expand_expr_real_2): Handle BIT_INSERT_EXPR.
* fold-const.c (operand_equal_p): Likewise.
(fold_ternary_loc): Add constant folding of BIT_INSERT_EXPR.
* gimplify.c (gimplify_expr): Handle BIT_INSERT_EXPR.
* tree-inline.c (estimate_operator_cost): Likewise.
* tree-pretty-print.c (dump_generic_node): Likewise.
* tree-ssa-operands.c (get_expr_operands): Likewise.
* cfgexpand.c (expand_debug_expr): Likewise.
* gimple-pretty-print.c (dump_ternary_rhs): Likewise.
* gimple.c (get_gimple_rhs_num_ops): Handle BIT_INSERT_EXPR.
* tree-cfg.c (verify_gimple_assign_ternary): Verify BIT_INSERT_EXPR.
* tree-ssa.c (non_rewritable_lvalue_p): We can rewrite
vector inserts using BIT_FIELD_REF or MEM_REF on the lhs.
(execute_update_addresses_taken): Do it.
* gcc.dg/tree-ssa/vector-6.c: New testcase.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@236501 138bc75d-0d04-0410-961f-82ee72b054a4
|
|
PR tree-optimization/71185
* tree-ssa-loop-prefetch.c (gather_memory_references): Drop
register operations.
* gcc.dg/tree-ssa/pr71185.c: New testcase.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@236499 138bc75d-0d04-0410-961f-82ee72b054a4
|
|
* tree-if-conv.c (add_bb_predicate_gimplified_stmts): Use
gimple_seq_add_seq_without_update.
(release_bb_predicate): Assert we have no operands to free.
(if_convertible_loop_p_1): Calculate post dominators later.
Do not free BB predicates here.
(combine_blocks): Do not recompute BB predicates.
(version_loop_for_if_conversion): Save BB predicates around
loop versioning.
* gcc.dg/tree-ssa/ifc-cd.c: Adjust.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@236498 138bc75d-0d04-0410-961f-82ee72b054a4
|
|
* config.in: Regenerated.
* configure: Likewise.
* configure.ac: Handle --enable-valgrind-annotations.
* lex.c (new_buff): Use ENABLE_VALGRIND_ANNOTATIONS instead
of ENABLE_VALGRIND_CHECKING.
(_cpp_free_buff): Likewise.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@236496 138bc75d-0d04-0410-961f-82ee72b054a4
|
|
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@236495 138bc75d-0d04-0410-961f-82ee72b054a4
|
|
This patch restructures how the prologues/epilogues are inserted. Sibcalls
that run without prologue are now handled in shrink-wrap.c; it communicates
what is already handled by setting the EDGE_IGNORE flag. The
try_shrink_wrapping function then doesn't need to be passed the bb_flags
anymore.
* function.c (make_epilogue_seq): Remove epilogue_end parameter.
(thread_prologue_and_epilogue_insns): Remove bb_flags. Restructure
code. Ignore sibcalls on EDGE_IGNORE edges.
* shrink-wrap.c (handle_simple_exit): New function. Set EDGE_IGNORE
on edges for sibcalls that run without prologue. The rest of the
function is combined from...
(fix_fake_fallthrough_edge): ... this, and ...
(try_shrink_wrapping): ... a part of this. Remove the bb_with
function argument, make it a local variable.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@236491 138bc75d-0d04-0410-961f-82ee72b054a4
|
|
gcc/
* config/i386/cygming.h (DWARF2_UNWIND_INFO): Allow
--disable-sjlj-exceptions for TARGET_BI_ARCH to select DWARF-2 EH
for 32-bit mode and SEH for 64-bit.
* config/i386/mingw32.h (SHARED_LIBGCC_UNDEFS_SPEC): Handle
TARGET_64BIT_DEFAULT.
libgcc/
* config.host [x86_64-*-cygwin*]: Handle tmake_eh_file for mixed
dw2/seh configuration.
[x86_64-*-mingw*]: Likewise.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@236490 138bc75d-0d04-0410-961f-82ee72b054a4
|
|
A common way for a c_expr to have an uninitialized src_range is in
error-handling, where the "value" field is set to error_mark_node
without touching the src_range, leading to complaints from valgrind.
This patch introduces a new method c_expr::set_error which sets
the value to error_mark_node whilst initializing the src_range to
UNKNOWN_LOCATION.
This fixes the valgrind issue seen in PR c/71171, along with various
other related issues seen when running the testsuite using the
checker patch I posted here:
https://gcc.gnu.org/ml/gcc-patches/2015-12/msg00887.html
(this checker still doesn't fully work yet, but it seems to be good
for easily detecting these issues without needing Valgrind).
gcc/c/ChangeLog:
PR c/71171
* c-parser.c (c_parser_generic_selection): Use c_expr::set_error
in error-handling.
(c_parser_postfix_expression): Likewise.
* c-tree.h (c_expr::set_error): New method.
* c-typeck.c (parser_build_binary_op): In error-handling, ensure
that result's range is initialized.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@236488 138bc75d-0d04-0410-961f-82ee72b054a4
|
|
* pt.c (unify_template_argument_mismatch): Use %qE instead of %qD.
* g++.dg/diagnostic/pr71075.C: New test.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@236487 138bc75d-0d04-0410-961f-82ee72b054a4
|
|
PR c++/10200
* pt.c (fn_type_unification): Add outer template args if needed.
(type_unification_real): Handle getting full args.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@236486 138bc75d-0d04-0410-961f-82ee72b054a4
|
|
The source-range handling for the array form of operator
new/delete erroneously assumed that the "]" was present,
leading to a dereference of NULL when it's absent.
Fix it thusly.
gcc/cp/ChangeLog:
PR c++/71184
* parser.c (cp_parser_operator): For array new/delete, check that
cp_parser_require returned a non-NULL token before dereferencing
it.
gcc/testsuite/ChangeLog:
PR c++/71184
* g++.dg/pr71184.C: New test case.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@236483 138bc75d-0d04-0410-961f-82ee72b054a4
|
|
* Makefile.in (GTFILES): Add cilk.h and cilk-common.c.
* gengtype.c (open_base_files): Add cilk.h to ifiles.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@236482 138bc75d-0d04-0410-961f-82ee72b054a4
|
|
force pending loads from memory.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@236481 138bc75d-0d04-0410-961f-82ee72b054a4
|
|
2016-05-19 Kelvin Nilsen <kelvin@gcc.gnu.org>
* gcc.target/powerpc/darn-0.c: New test.
* gcc.target/powerpc/darn-1.c: New test.
* gcc.target/powerpc/darn-2.c: New test.
gcc/ChangeLog:
2016-05-19 Kelvin Nilsen <kelvin@gcc.gnu.org>
* config/rs6000/altivec.md (UNSPEC_DARN): New unspec constant.
(UNSPEC_DARN_32): New unspec constant.
(UNSPEC_DARN_RAW): New unspec constant.
(darn_32): New instruction.
(darn_raw): New instruction.
(darn): New instruction.
* config/rs6000/rs6000-builtin.def (RS6000_BUILTIN_0): Add
support and documentation for this macro.
(BU_P9_MISC_1): New macro definition.
(BU_P9_64BIT_MISC_0): New macro definition.
(BU_P9_MISC_0): New macro definition.
(darn_32): New builtin definition.
(darn_raw): New builtin definition.
(darn): New builtin definition.
* config/rs6000/rs6000.c: Add #define RS6000_BUILTIN_0 and #undef
RS6000_BUILTIN_0 directives to surround each occurrence of
#include "rs6000-builtin.def".
(rs6000_builtin_mask_calculate): Add in the RS6000_BTM_MODULO and
RS6000_BTM_64BIT flags to the returned mask, depending on
configuration.
(def_builtin): Correct an error in the assignments made to the
debugging variable attr_string.
(rs6000_expand_builtin): Add support for no-operand built-in
functions.
(builtin_function_type): Remove fatal_error assertion that is no
longer valid.
(rs6000_common_init_builtins): Add support for no-operand built-in
functions.
* config/rs6000/rs6000.h (RS6000_BTM_MODULO): New macro
definition.
(RS6000_BTM_PURE): Enhance comment to clarify intent of this flag
definition.
(RS6000_BTM_64BIT): New macro definition.
* doc/extend.texi: Document __builtin_darn (void),
__builtin_darn_raw (void), and __builtin_darn_32 (void) built-in
functions.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@236480 138bc75d-0d04-0410-961f-82ee72b054a4
|
|
max_loop_iterations_int.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@236478 138bc75d-0d04-0410-961f-82ee72b054a4
|
|
* tree-vrp.c (extract_range_from_binary_expr_1): Turn assert into a
condition and adjust the code a bit.
* gcc.dg/tree-ssa/vrp100.c: New test.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@236477 138bc75d-0d04-0410-961f-82ee72b054a4
|
|
* tree-vect-stmts.c (vectorizable_simd_clone_call): Utilize
auto_vec instead of vec.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@236472 138bc75d-0d04-0410-961f-82ee72b054a4
|
|
* tree-parloops.c (oacc_entry_exit_ok): Release a vector.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@236471 138bc75d-0d04-0410-961f-82ee72b054a4
|
|
* tree-if-conv.c (ifcvt_repair_bool_pattern): Utilize auto_vecs.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@236470 138bc75d-0d04-0410-961f-82ee72b054a4
|
|
* ipa-pure-const.c (set_function_state): Remove an existing
funct_state.
(remove_node_data): Do not free it as it's released
in set_function_state.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@236469 138bc75d-0d04-0410-961f-82ee72b054a4
|
|
* tree-vect-slp.c (vect_attempt_slp_rearrange_stmts): Release
bitmap.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@236468 138bc75d-0d04-0410-961f-82ee72b054a4
|
|
* omp-simd-clone.c (simd_clone_adjust): Release vector.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@236467 138bc75d-0d04-0410-961f-82ee72b054a4
|
|
* tree-ssa-reassoc.c (eliminate_duplicate_pair): Truncate
an auto_vec instead of re-creating it.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@236466 138bc75d-0d04-0410-961f-82ee72b054a4
|
|
* tree-ssa-loop-prefetch.c (determine_loop_nest_reuse): Use
auto_vec instead of vec.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@236465 138bc75d-0d04-0410-961f-82ee72b054a4
|
|
* lto-section-in.c (lto_get_section_data): Call
lto_check_version with additional argument.
* lto-streamer.c (lto_check_version): Add new argument.
* lto-streamer.h (lto_check_version): Likewise.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@236464 138bc75d-0d04-0410-961f-82ee72b054a4
|
|
* config/arm/arm.c (arm_new_rtx_costs, SIGN_EXTEND case):
Don't add cost of inner memory when handling sign-extended
loads.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@236461 138bc75d-0d04-0410-961f-82ee72b054a4
|
|
* cse.c (cse_main): Free dominance info.
(rest_of_handle_cse): Don't free dominance info.
(rest_of_handle_cse2): Likewise.
(rest_of_handle_cse_after_global_opts): Likewise.
gcc/testsuite/
* gcc.dg/pr71148.c: New test.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@236460 138bc75d-0d04-0410-961f-82ee72b054a4
|
|
PR target/71056
* config/arm/arm-builtins.c (arm_builtin_vectorized_function): Return
NULL_TREE early if NEON is not available. Remove now redundant check
in ARM_CHECK_BUILTIN_MODE.
* gcc.target/arm/pr71056.c: New test.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@236459 138bc75d-0d04-0410-961f-82ee72b054a4
|
|
* decl.c (finish_enum_value_list): Use the specified mode.
testsuite:
2016-05-19 Bernd Edlinger <bernd.edlinger@hotmail.de>
* c-c++-common/pr69669.c: Check the used mode.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@236458 138bc75d-0d04-0410-961f-82ee72b054a4
|
|
PR sanitizer/64354
* cppbuiltin.c (define_builtin_macros_for_compilation_flags): Add new
builtin __SANITIZE_THREAD__ macros for fsanitize=thread switch.
* doc/cpp.texi: Document new macros.
* c-c++-common/tsan/sanitize-thread-macro.c: New test.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@236457 138bc75d-0d04-0410-961f-82ee72b054a4
|
|
PR other/61321
PR other/61233
* demangle.h (enum demangle_component_type)
<DEMANGLE_COMPONENT_CONVERSION>: New value.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@236449 138bc75d-0d04-0410-961f-82ee72b054a4
|
|
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@236448 138bc75d-0d04-0410-961f-82ee72b054a4
|
|
* tree-vect-loop.c (vectorizable_reduction): Don't factor
comparison expr out of VEC_COND_EXPR for COND_REDUCTION.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@236447 138bc75d-0d04-0410-961f-82ee72b054a4
|
|
* cp-demangle.c (d_expression_1): Formatting fix.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@236445 138bc75d-0d04-0410-961f-82ee72b054a4
|
|
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@236443 138bc75d-0d04-0410-961f-82ee72b054a4
|
|
It failed for targets that have an eh_return pattern with a splitter
gated by epilogue_done.
* function.c (thread_prologue_and_epilogue_insn): Move the
"goto epilogue_done" one block later.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@236441 138bc75d-0d04-0410-961f-82ee72b054a4
|