- 01 Aug, 2016 24 commits
-
-
This patch optimizes the prolog and epilog code to reduce the number of instructions and avoid multiple writes to SP. This patch optimizes the prolog and epilog code to reduce the number of instructions and avoid multiple writes to SP. The key idea is that epilogs are almost exact reverses of prologs, and thus all the decisions only need to be taken once. The frame layout is decided in aarch64_layout_frame() and decisions recorded in the new aarch64_frame fields initial_adjust, callee_adjust, callee_offset and final_adjust. A generic frame setup consists of 5 basic steps: 1. sub sp, sp, initial_adjust 2. stp reg1, reg2, [sp, -callee_adjust]! (push if callee_adjust != 0) 3. add fp, sp, callee_offset (if frame_pointer_needed) 4. stp reg3, reg4, [sp, callee_offset + N*16] (store remaining callee-saves) 5. sub sp, sp, final_adjust The epilog reverses this, and may omit step 3 if alloca wasn't used. gcc/ * config/aarch64/aarch64.h (aarch64_frame): Remove padding0 and hardfp_offset. Add locals_offset, initial_adjust, callee_adjust, callee_offset and final_adjust. * config/aarch64/aarch64.c (aarch64_layout_frame): Remove unused padding0 and hardfp_offset initializations. Choose frame layout and set frame variables accordingly. Use INVALID_REGNUM instead of FIRST_PSEUDO_REGISTER. (aarch64_push_regs): Use INVALID_REGNUM, not FIRST_PSEUDO_REGISTER. (aarch64_pop_regs): Likewise. (aarch64_expand_prologue): Remove all decision code, just emit prolog according to frame variables. (aarch64_expand_epilogue): Remove all decision code, just emit epilog according to frame variables. (aarch64_initial_elimination_offset): Use offset to local/arg area. testsuite/ * gcc.target/aarch64/test_frame_10.c: Fix test to check for a single stack adjustment, no writeback. * gcc.target/aarch64/test_frame_12.c: Likewise. * gcc.target/aarch64/test_frame_13.c: Likewise. * gcc.target/aarch64/test_frame_15.c: Likewise. * gcc.target/aarch64/test_frame_6.c: Likewise. * gcc.target/aarch64/test_frame_7.c: Likewise. * gcc.target/aarch64/test_frame_8.c: Likewise. * gcc.target/aarch64/test_frame_16.c: New test. From-SVN: r238960
Wilco Dijkstra committed -
* include/bits/basic_string.tcc: Disable explicit instantiation declarations for C++17. From-SVN: r238959
Jonathan Wakely committed -
* constexpr.c (cxx_eval_pointer_plus_expression): Check constancy of nelts. * cp-gimplify.c (cp_fully_fold): Only maybe_constant_value in C++11 and up. From-SVN: r238957
Jason Merrill committed -
TImode register referenced in debug insn can be converted to V1TImode by scalar to vector optimization. When converting a TImode store to V1TImode, we need to check all debug insns on its use chain to convert the V1TImode register to SUBREG TImode if source register is undefined. gcc/ PR target/72748 * config/i386/i386.c (timode_scalar_chain::convert_insn): Call fix_debug_reg_uses after changing source register mode to V1TImode if source register is undefined. gcc/testsuite/ PR target/72748 * gcc.target/i386/pr72748.c: New test. From-SVN: r238956
H.J. Lu committed -
2016-08-01 Alan Hayward <alan.hayward@arm.com> gcc/ PR tree-optimization/71818 * tree-vect-loop-manip.c (vect_can_advance_ivs_p): Don't advance IVs with non invariant evolutions testsuite/ PR tree-optimization/71818 * gcc.dg/vect/pr71818.c: New From-SVN: r238955
Alan Hayward committed -
* testsuite/23_containers/unordered_map/requirements/53339.cc: Remove ignored "xfail" from { dg-do compile { xfail selector } } directive. * testsuite/23_containers/unordered_multimap/requirements/53339.cc: Likewise. * testsuite/26_numerics/headers/cmath/ c99_classification_macros_c++11.cc: Likewise. * testsuite/26_numerics/headers/cmath/ c99_classification_macros_c++98.cc: Likewise. * testsuite/26_numerics/headers/cmath/ c99_classification_macros_c.cc: Likewise. From-SVN: r238954
Jonathan Wakely committed -
PR tree-optimization/71857 * gcc.dg/tree-ssa/ivopt_mult_4.c: Change expectation. From-SVN: r238953
Martin Liska committed -
* testsuite/backward/hash_set/check_construct_destroy.cc: Account for different construct/destroy counts in C++98 mode. From-SVN: r238952
Jonathan Wakely committed -
From-SVN: r238951
Andreas Schwab committed -
PR target/72767 * config/avr/avr.md (length) [branch]: Correct insn length attribute for forward branches. From-SVN: r238948
Georg-Johann Lay committed -
* doc/extend.texi (AVR Built-in Functions): Document __builtin_avr_nops. * config/avr/builtins.def (NOPS): New. * config/avr/avr.c (avr_expand_nops): New static function. (avr_expand_builtin): Use it to handle AVR_BUILTIN_NOPS. From-SVN: r238947
Georg-Johann Lay committed -
* testsuite/17_intro/freestanding.cc: Remove "-x c" from dg-options. From-SVN: r238946
Jonathan Wakely committed -
* testsuite/20_util/tuple/cons/66338.cc: Limit test to C++11 and later. * testsuite/20_util/tuple/cons/element_accepts_anything_byval.cc: Likewise. From-SVN: r238945
Jonathan Wakely committed -
* testsuite/25_algorithms/lower_bound/debug/irreflexive.cc: Use C++98-compatible initialization for array. From-SVN: r238944
Jonathan Wakely committed -
* testsuite/20_util/shared_ptr/assign/auto_ptr_rvalue.cc: Remove unused header and variable from compile-only test. * testsuite/20_util/shared_ptr/assign/unique_ptr_rvalue.cc: Likewise. * testsuite/28_regex/basic_regex/assign/char/cstring.cc: Likewise. * testsuite/28_regex/basic_regex/ctors/string_wchar_t.cc: Likewise. * testsuite/experimental/memory/shared_ptr/cons/copy_ctor_neg.cc: Likewise. From-SVN: r238943
Jonathan Wakely committed -
* testsuite/experimental/string_view/operations/rfind/char/2.cc: Remove duplicate dg-options directive. From-SVN: r238942
Jonathan Wakely committed -
* testsuite/20_util/specialized_algorithms/uninitialized_copy/ 808590.cc: Use -std=gnu++98 instead of -std=gnu++03. From-SVN: r238941
Jonathan Wakely committed -
* testsuite/20_util/make_signed/requirements/typedefs-2.cc: Remove linker options from compile-only tests. * testsuite/20_util/make_unsigned/requirements/typedefs-2.cc: Likewise. From-SVN: r238940
Jonathan Wakely committed -
* testsuite/27_io/ios_base/types/fmtflags/case_label.cc: Make test supported for C++11 and later. * testsuite/27_io/ios_base/types/iostate/case_label.cc: Likewise. * testsuite/27_io/ios_base/types/openmode/case_label.cc: Likewise. From-SVN: r238939
Jonathan Wakely committed -
* config/aarch64/aarch64.c (aarch64_classify_address): Use DImode when performing aarch64_offset_7bit_signed_scaled_p check for TImode LDP/STP addresses. * gcc.target/aarch64/ldp_stp_unaligned_1.c: New test. From-SVN: r238938
Kyrylo Tkachov committed -
2016-08-01 Virendra Pathak <virendra.pathak@broadcom.com> * config/aarch64/aarch64.c (vulcan_tunings): Update vulcan L1 cache_line_size. From-SVN: r238937
Virendra Pathak committed -
gcc/c/ 2016-08-01 Jan Beulich <jbeulich@suse.com> * c-fold.c (c_fully_fold_internal): Also emit shift count warnings for vector types. * c-typeck.c (build_binary_op): Likewise. gcc/testsuite/ 2016-08-01 Jan Beulich <jbeulich@suse.com> * gcc.dg/vshift-6.c, gcc.dg/vshift-7.c: New. From-SVN: r238936
Jan Beulich committed -
* config/abi/post/alpha-linux-gnu/baseline_symbols.txt: Update. From-SVN: r238934
Uros Bizjak committed -
From-SVN: r238933
GCC Administrator committed
-
- 31 Jul, 2016 16 commits
-
-
* testsuite/20_util/conditional/requirements/typedefs.cc: Change to compile-only test. From-SVN: r238930
Jonathan Wakely committed -
* testsuite/29_atomics/atomic_flag/test_and_set/explicit-hle.cc: Ensure test is compiled with optimization. From-SVN: r238929
Jonathan Wakely committed -
* testsuite/23_containers/list/requirements/dr438/insert_neg.cc: Adjust dg-prune-output pattern for error in C++98 mode. From-SVN: r238928
Jonathan Wakely committed -
* testsuite/28_regex/basic_regex/ctors/basic/raw_string.cc: Only run for C++11 or later. From-SVN: r238927
Jonathan Wakely committed -
* testsuite/28_regex/basic_regex/ctors/basic/raw_string.cc: Fix test to not rely on GNU extension (escaped normal characters in POSIX BRE). Enable tests for other strings which are now supported. From-SVN: r238926
Jonathan Wakely committed -
* testsuite/20_util/pair/astuple/get_neg.cc: Use effective-target c++11 instead of setting -std=gnu++14. From-SVN: r238925
Jonathan Wakely committed -
PR libstdc++/72745 * include/std/array (get): Use positive message for static assertions. * include/std/functional (_Safe_tuple_element_t): Fix indentation. * include/std/tuple (tuple_element<I, tuple<>>): Add partial specialization for invalid indices, with static assertion. * testsuite/20_util/tuple/element_access/get_neg.cc: New test. From-SVN: r238924
Jonathan Wakely committed -
* testsuite/20_util/duration/requirements/typedefs_neg3.cc: Move dg-error to relevant line. * testsuite/20_util/headers/type_traits/types_std_c++0x_neg.cc: Likewise. * testsuite/23_containers/forward_list/requirements/dr438/ assign_neg.cc: Likewise. * testsuite/23_containers/forward_list/requirements/dr438/ constructor_1_neg.cc: Likewise. * testsuite/23_containers/forward_list/requirements/dr438/ constructor_2_neg.cc: Likewise. * testsuite/23_containers/forward_list/requirements/dr438/ insert_neg.cc: Likewise. * testsuite/26_numerics/headers/cmath/types_std_c++0x_neg.cc: Likewise. * testsuite/26_numerics/random/linear_congruential_engine/ requirements/non_uint_neg.cc: Likewise. * testsuite/29_atomics/headers/atomic/types_std_c++0x_neg.cc: Likewise. Also test for std::atomic_address. From-SVN: r238923
Jonathan Wakely committed -
From-SVN: r238922
William Schmidt committed -
* include/bits/uses_allocator.h (uses_allocator_v): New. * include/std/functional (is_bind_expression_v, is_placeholder_v): Likewise. * testsuite/20_util/bind/is_placeholder_v.cc: Likewise. * testsuite/20_util/declval/requirements/1_neg.cc: Adjust. * testsuite/20_util/duration/literals/range.cc: Likewise. * testsuite/20_util/duration/requirements/typedefs_neg1.cc: Likewise. * testsuite/20_util/duration/requirements/typedefs_neg2.cc: Likewise. * testsuite/20_util/duration/requirements/typedefs_neg3.cc: Likewise. * testsuite/20_util/make_signed/requirements/typedefs_neg.cc: Likewise. * testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc: Likewise. * testsuite/20_util/ratio/operations/ops_overflow_neg.cc: Likewise. * testsuite/20_util/uses_allocator/requirements/uses_allocator_v.cc: New. From-SVN: r238921
Ville Voutilainen committed -
2016-07-31 Bill Schmidt <wschmidt@linux.vnet.ibm.com> * gcc.target/powerpc/divkc3-1.c: Require POWER8 hardware. * gcc.target/powerpc/mulkc3-1.c: Likewise. From-SVN: r238919
William Schmidt committed -
* testsuite/18_support/numeric_limits/40856.cc [__STRICT_ANSI__]: Do not test 128-bit types. * testsuite/20_util/is_floating_point/value.cc: Likewise. * testsuite/20_util/is_integral/value.cc: Likewise. * testsuite/20_util/is_signed/value.cc: Likewise. * testsuite/20_util/is_unsigned/value.cc: Likewise. * testsuite/20_util/make_signed/requirements/typedefs-1.cc: Likewise. * testsuite/20_util/make_signed/requirements/typedefs-2.cc: Likewise. * testsuite/20_util/make_unsigned/requirements/typedefs-1.cc: Likewise. * testsuite/20_util/make_unsigned/requirements/typedefs-2.cc: Likewise. From-SVN: r238918
Jonathan Wakely committed -
* testsuite/26_numerics/headers/cstdlib/54686.c: Rename to 54686.cc. From-SVN: r238917
Jonathan Wakely committed -
* lib/target-supports.exp (check_effective_target_c): Fix indentation. (check_effective_target_c++): Likewise. Also match for libstdc++. From-SVN: r238916
Jonathan Wakely committed -
re PR fortran/41922 (Diagnostic: No location shown for overlappingly initialized EQUIVALENCEd character vars) 2016-07-30 Steven G. Kargl <kargl@gcc.gnu.org> PR fortran/41922 * target-memory.c (expr_to_char): Pass in locus and use it in error messages. (gfc_merge_initializers): Ditto. * target-memory.h: Update prototype for gfc_merge_initializers (). * trans-common.c (get_init_field): Use the correct locus. 2016-07-30 Steven G. Kargl <kargl@gcc.gnu.org> PR fortran/41922 * gfortran.dg/equiv_constraint_5.f90: Adjust the error message. * gfortran.dg/equiv_constraint_7.f90: Ditto. * gfortran.dg/pr41922.f90: New test. From-SVN: r238915
Steven G. Kargl committed -
From-SVN: r238914
GCC Administrator committed
-