Andrew Pinski [Mon, 2 Jun 2014 21:24:41 +0000 (21:24 +0000)]
aarch64-linux.h (GLIBC_DYNAMIC_LINKER): /lib/ld-linux32-aarch64.so.1 is used for ILP32.
2014-06-02 Andrew Pinski <apinski@cavium.com>
* config/aarch64/aarch64-linux.h (GLIBC_DYNAMIC_LINKER):
/lib/ld-linux32-aarch64.so.1 is used for ILP32.
(LINUX_TARGET_LINK_SPEC): Update linker script for ILP32.
file whose name depends on -mabi= and -mbig-endian.
* config/aarch64/t-aarch64-linux (MULTILIB_OSDIRNAMES):
Handle LP64 better and handle ilp32 too.
(MULTILIB_OPTIONS): Delete.
(MULTILIB_DIRNAMES): Delete.
Andrew MacLeod [Mon, 2 Jun 2014 20:13:44 +0000 (20:13 +0000)]
expr.h: Remove prototypes of functions defined in builtins.c.
* expr.h: Remove prototypes of functions defined in builtins.c.
* tree.h: (build_call_expr_*, build_string_literal): Add prototypes.
Remove prototypes of functions defined in builtins.c.
* builtins.h: Update prototype list to include all exported functions.
* builtins.c: (default_libc_has_function, gnu_libc_has_function,
no_c99_libc_has_function): Move to targhooks.c
(build_string_literal, build_call_expr_loc_array,
build_call_expr_loc_vec, build_call_expr_loc, build_call_expr): Move
to tree.c.
(expand_builtin_object_size, fold_builtin_object_size): Make static.
* targhooks.c (default_libc_has_function, gnu_libc_has_function,
no_c99_libc_has_function): Relocate from builtins.c.
* tree.c: Include builtins.h.
(build_call_expr_loc_array, build_call_expr_loc_vec,
build_call_expr_loc, build_call_expr, build_string_literal): Relocate
from builtins.c.
* fold-const.h (fold_fma): Move prototype to builtins.h.
* realmpfr.h (do_mpc_arg2): Move prototype to builtins.h.
* fortran/trans.c (trans_runtime_error_vararg): Call
fold_build_call_array_loc instead of fold_builtin_call_array.
Jonathan Wakely [Mon, 2 Jun 2014 19:36:14 +0000 (20:36 +0100)]
regex_compiler.h (__detail::_BracketMatcher): Reorder members to avoid wasted space when not using a cache.
* include/bits/regex_compiler.h (__detail::_BracketMatcher): Reorder
members to avoid wasted space when not using a cache.
(__detail::_BracketMatcher::_M_ready()): Sort and deduplicate set.
* include/bits/regex_compiler.tcc
(__detail::_BracketMatcher::_M_apply(_CharT, false_type)): Use binary
search on set.
* include/bits/regex_executor.h (__detail::_Executor::_Match_mode):
New enumeration type to indicate match mode.
(__detail::_Executor::_State_info): New type holding members only
needed in BFS-mode. Replace unique_ptr<vector<bool>> with
unique_ptr<bool[]>.
(__detail::_Executor::_M_rep_once_more, __detail::_Executor::_M_dfs):
Replace template parameter with run-time function parameter.
(__detail::_Executor::_M_main): Likewise. Dispatch to ...
(__detail::_Executor::_M_main_dispatch): New overloaded functions to
implement DFS and BFS mode.
* include/bits/regex_executor.tcc (__detail::_Executor::_M_main):
Split implementation into ...
(__detail::_Executor::_M_main_dispatch): New overloaded functions.
(__detail::_Executor::_M_lookahead): Create nested executor on stack.
(__detail::_Executor::_M_rep_once_more): Pass match mode as function
argument instead of template argument.
(__detail::_Executor::_M_dfs): Likewise.
* include/bits/regex_scanner.tcc: Fix typos in comments.
* testsuite/performance/28_regex/range.cc: New.
Jeff Law [Mon, 2 Jun 2014 19:12:08 +0000 (13:12 -0600)]
re PR rtl-optimization/61094 (-O3 insn Internal compiler error in copyprop_hardreg_forward_1, at regcprop.c:775)
PR rtl-optimization/61094
* ree.c (combine_reaching_defs): Do not reextend an insn if it
was marked as do_no_reextend. If a copy is needed to eliminate
an extension, then mark it as do_not_reextend.
PR rtl-optimization/61094
* g++.dg/pr61094: New test.
type_traits (__strictest_alignment): New helper struct.
2014-06-02 Rüdiger Sonderfeld <ruediger@c-plusplus.de>
Jonathan Wakely <jwakely@redhat.com>
* libstdc++-v3/include/std/type_traits (__strictest_alignment): New
helper struct.
(aligned_union): New struct (C++11).
(aligned_union_t): New type alias (C++14).
* doc/xml/manual/status_cxx2011.xml: Update.
* libstdc++-v3/testsuite/20_util/aligned_union/1.cc: New file.
* testsuite/20_util/declval/requirements/1_neg.cc: Adjust dg-error
line number.
Co-Authored-By: Jonathan Wakely <jwakely@redhat.com>
From-SVN: r211137
Uros Bizjak [Mon, 2 Jun 2014 13:22:34 +0000 (15:22 +0200)]
re PR target/61239 (ICE in decompose, at rtl.h when compiling vshuf-v16hi.c using -mavx2)
PR target/61239
* config/i386/i386.c (ix86_expand_vec_perm) [case V32QImode]: Use
GEN_INT (-128) instead of GEN_INT (128) to set MSB of QImode constant.
Paolo Carlini [Sat, 31 May 2014 08:51:20 +0000 (08:51 +0000)]
DR 1227 PR c++/57543
/cp
2014-05-31 Paolo Carlini <paolo.carlini@oracle.com>
DR 1227
PR c++/57543
* cp-tree.h (TYPE_HAS_LATE_RETURN_TYPE): Add.
* pt.c (tsubst_function_type): Inject the this parameter; do the
substitutions in the order mandated by the DR.
(copy_default_args_to_explicit_spec): Copy TYPE_HAS_LATE_RETURN_TYPE.
* decl.c (grokdeclarator): Maybe set TYPE_HAS_LATE_RETURN_TYPE.
(static_fn_type): Copy it.
* decl2.c (build_memfn_type, change_return_type,
cp_reconstruct_complex_type): Likewise.
* parser.c (cp_parser_lambda_declarator_opt): Likewise.
* tree.c (strip_typedefs): Likewise.
* typeck.c (merge_types): Likewise.
/testsuite
2014-05-31 Paolo Carlini <paolo.carlini@oracle.com>
Jakub Jelinek [Fri, 30 May 2014 18:37:59 +0000 (20:37 +0200)]
asan.c (report_error_func): Add SLOW_P argument, use BUILT_IN_ASAN_*_N if set.
* asan.c (report_error_func): Add SLOW_P argument, use
BUILT_IN_ASAN_*_N if set.
(build_check_stmt): Likewise.
(instrument_derefs): If T has insufficient alignment,
force same handling as for odd sizes.
* c-c++-common/asan/misalign-1.c: New test.
* c-c++-common/asan/misalign-2.c: New test.
* sanitizer.def (BUILT_IN_ASAN_REPORT_LOAD_N,
BUILT_IN_ASAN_REPORT_STORE_N): New.
* asan.c (struct asan_mem_ref): Change access_size type to
HOST_WIDE_INT.
(asan_mem_ref_init, asan_mem_ref_new, get_mem_refs_of_builtin_call,
update_mem_ref_hash_table): Likewise.
(asan_mem_ref_hasher::hash): Hash in a HWI.
(report_error_func): Change size_in_bytes argument to HWI.
Use *_N builtins if size_in_bytes is larger than 16 or not power of
two.
(build_shadow_mem_access): New function.
(build_check_stmt): Use it. Change size_in_bytes argument to HWI.
Handle size_in_bytes not power of two or larger than 16.
(instrument_derefs): Don't give up if size_in_bytes is not
power of two or is larger than 16.
Kai Tietz [Fri, 30 May 2014 18:00:11 +0000 (20:00 +0200)]
re PR target/60104 (load not folded into indirect branch on x86-64)
PR target/60104
* config/i386/i386.c (x86_output_mi_thunk): Add memory case
for sibling-tail-calls.
* config/i386/i386.md (sibcall_insn_operand): Add memory-constrain
to its use.
* config/i386/predicates.md (sibcall_memory_operand): New predicate.
(sibcall_insn_operand): Add check for sibcall_memory_operand.
PR target/60104
* gcc.target/i386/sibcall-1.c: New test.
* gcc.target/i386/sibcall-2.c: New test.
* gcc.target/i386/sibcall-3.c: New test.
* gcc.target/i386/sibcall-4.c: New test.
Jonathan Wakely [Fri, 30 May 2014 17:16:14 +0000 (18:16 +0100)]
re PR libstdc++/61011 (libstdc++-v3 should be target-libstdc++-v3 in top level configure)
PR libstdc++/61011
* configure.ac (--disable-libstdcxx): Set noconfigdirs correctly.
Disable libcilkrts, libitm, libsanitizer when not building libstdc++.
* configure: Regenerate.
Jason Merrill [Fri, 30 May 2014 15:09:40 +0000 (11:09 -0400)]
re PR c++/60992 (ICE in tsubst_copy, at cp/pt.c:12637)
PR c++/60992
* pt.c (tsubst_init): Split out from...
(tsubst_expr) [DECL_EXPR]: Here.
(tsubst_copy) [VAR_DECL]: Use it.
* semantics.c (finish_id_expression): Return the decl for static/const.
Tom de Vries [Fri, 30 May 2014 11:39:49 +0000 (11:39 +0000)]
-fuse-caller-save - Enable for i386
2014-05-30 Tom de Vries <tom@codesourcery.com>
* config/i386/i386.c (TARGET_CALL_FUSAGE_CONTAINS_NON_CALLEE_CLOBBERS):
Redefine as true.
* gcc.target/i386/fuse-caller-save.c: New test.
* gcc.dg/ira-shrinkwrap-prep-1.c: Run with -fno-use-caller-save.
* gcc.dg/ira-shrinkwrap-prep-2.c: Same.
Alan Lawrence [Fri, 30 May 2014 09:49:49 +0000 (09:49 +0000)]
Add execution tests of ARM REV intrinsics.
gcc.target/arm/simd/vrev16p8_1.c: New file.
gcc.target/arm/simd/vrev16qp8_1.c: New file.
gcc.target/arm/simd/vrev16qs8_1.c: New file.
gcc.target/arm/simd/vrev16qu8_1.c: New file.
gcc.target/arm/simd/vrev16s8_1.c: New file.
gcc.target/arm/simd/vrev16u8_1.c: New file.
gcc.target/arm/simd/vrev32p16_1.c: New file.
gcc.target/arm/simd/vrev32p8_1.c: New file.
gcc.target/arm/simd/vrev32qp16_1.c: New file.
gcc.target/arm/simd/vrev32qp8_1.c: New file.
gcc.target/arm/simd/vrev32qs16_1.c: New file.
gcc.target/arm/simd/vrev32qs8_1.c: New file.
gcc.target/arm/simd/vrev32qu16_1.c: New file.
gcc.target/arm/simd/vrev32qu8_1.c: New file.
gcc.target/arm/simd/vrev32s16_1.c: New file.
gcc.target/arm/simd/vrev32s8_1.c: New file.
gcc.target/arm/simd/vrev32u16_1.c: New file.
gcc.target/arm/simd/vrev32u8_1.c: New file.
gcc.target/arm/simd/vrev64f32_1.c: New file.
gcc.target/arm/simd/vrev64p16_1.c: New file.
gcc.target/arm/simd/vrev64p8_1.c: New file.
gcc.target/arm/simd/vrev64qf32_1.c: New file.
gcc.target/arm/simd/vrev64qp16_1.c: New file.
gcc.target/arm/simd/vrev64qp8_1.c: New file.
gcc.target/arm/simd/vrev64qs16_1.c: New file.
gcc.target/arm/simd/vrev64qs32_1.c: New file.
gcc.target/arm/simd/vrev64qs8_1.c: New file.
gcc.target/arm/simd/vrev64qu16_1.c: New file.
gcc.target/arm/simd/vrev64qu32_1.c: New file.
gcc.target/arm/simd/vrev64qu8_1.c: New file.
gcc.target/arm/simd/vrev64s16_1.c: New file.
gcc.target/arm/simd/vrev64s32_1.c: New file.
gcc.target/arm/simd/vrev64s8_1.c: New file.
gcc.target/arm/simd/vrev64u16_1.c: New file.
gcc.target/arm/simd/vrev64u32_1.c: New file.
gcc.target/arm/simd/vrev64u8_1.c: New file.
ira.c (ira_get_dup_out_num): Check for output operands at the start of the loop.
gcc/
* ira.c (ira_get_dup_out_num): Check for output operands at
the start of the loop. Handle cases where an included alternative
follows an excluded one.
Ian Lance Taylor [Thu, 29 May 2014 20:22:27 +0000 (20:22 +0000)]
runtime: add the --without-libatomic configure option
This adds the --without-libatomic configure option, which is useful for building libgo
with a non-gcc compiler.
It disables libgo's dependency on libatomic. This
is useful for platforms where it is known that the libatomic runtime
functions are not required, or where the compiler automatically
provides an implementation of them.
Alan Lawrence [Thu, 29 May 2014 17:24:34 +0000 (17:24 +0000)]
Add execution tests of ARM EXT intrinsics
gcc.target/arm/simd/vextQf32_1.c: New file.
gcc.target/arm/simd/vextQp16_1.c: New file.
gcc.target/arm/simd/vextQp8_1.c: New file.
gcc.target/arm/simd/vextQs16_1.c: New file.
gcc.target/arm/simd/vextQs32_1.c: New file.
gcc.target/arm/simd/vextQs64_1.c: New file.
gcc.target/arm/simd/vextQs8_1.c: New file.
gcc.target/arm/simd/vextQu16_1.c: New file.
gcc.target/arm/simd/vextQu32_1.c: New file.
gcc.target/arm/simd/vextQu64_1.c: New file.
gcc.target/arm/simd/vextQu8_1.c: New file.
gcc.target/arm/simd/vextQp64_1.c: New file.
gcc.target/arm/simd/vextf32_1.c: New file.
gcc.target/arm/simd/vextp16_1.c: New file.
gcc.target/arm/simd/vextp8_1.c: New file.
gcc.target/arm/simd/vexts16_1.c: New file.
gcc.target/arm/simd/vexts32_1.c: New file.
gcc.target/arm/simd/vexts64_1.c: New file.
gcc.target/arm/simd/vexts8_1.c: New file.
gcc.target/arm/simd/vextu16_1.c: New file.
gcc.target/arm/simd/vextu32_1.c: New file.
gcc.target/arm/simd/vextu64_1.c: New file.
gcc.target/arm/simd/vextu8_1.c: New file.
gcc.target/arm/simd/vextp64_1.c: New file.
Alan Lawrence [Thu, 29 May 2014 16:57:42 +0000 (16:57 +0000)]
Detect EXT patterns to vec_perm_const, use for EXT intrinsics
* config/aarch64/aarch64-builtins.c (aarch64_types_binopv_qualifiers,
TYPES_BINOPV): New static data.
* config/aarch64/aarch64-simd-builtins.def (im_lane_bound): New builtin.
* config/aarch64/aarch64-simd.md (aarch64_ext, aarch64_im_lane_boundsi):
New patterns.
* config/aarch64/aarch64.c (aarch64_expand_vec_perm_const_1): Match
patterns for EXT.
(aarch64_evpc_ext): New function.
* config/aarch64/iterators.md (UNSPEC_EXT): New enum element.
Ian Lance Taylor [Thu, 29 May 2014 00:03:30 +0000 (00:03 +0000)]
runtime: disable split stacks for runtime_printf function under Clang
LLVM's code generator does not currently support split stacks for vararg
functions, so we disable split stacks for the only function that uses this
feature under Clang. This appears to be OK as long as:
- this function only calls non-inlined, internal-linkage (hence no dynamic
loader) functions compiled with split stacks (i.e. go_vprintf), which can
allocate more stack space as required;
- this function itself does not occupy more than BACKOFF bytes of stack space
(see libgcc/config/i386/morestack.S).
These conditions are currently known to be satisfied by Clang on x86-32 and
x86-64. Note that signal handlers receive slightly less stack space than they
would normally do if they happen to be called while this function is being
run. If this turns out to be a problem we could consider increasing BACKOFF.
Ian Lance Taylor [Wed, 28 May 2014 23:10:47 +0000 (23:10 +0000)]
runtime: fix misc gcc-isms and undefined behavior
This includes the use of __complex and __builtin_ functions where
unprefixed entities would suffice, and the use of a union for
bit-casting between types.
Pedro Alves [Wed, 28 May 2014 21:55:41 +0000 (21:55 +0000)]
Fix demangler testsuite crashes with CP_DEMANGLE_DEBUG defined
Running the demangler's testsuite with CP_DEMANGLE_DEBUG defined
crashes, with:
Program received signal SIGSEGV, Segmentation fault.
0x000000000040a8c3 in d_dump (dc=0x1, indent=12) at ../../src/libiberty/cp-demangle.c:567
567 switch (dc->type)
(gdb) bt 3
#0 0x000000000040a8c3 in d_dump (dc=0x1, indent=12) at ../../src/libiberty/cp-demangle.c:567
#1 0x000000000040ae47 in d_dump (dc=0x7fffffffd098, indent=10) at ../../src/libiberty/cp-demangle.c:787
#2 0x000000000040ae47 in d_dump (dc=0x7fffffffd0c8, indent=8) at ../../src/libiberty/cp-demangle.c:787
Note dc=0x1, which is obviously a bogus pointer. This is the end of
d_dump recursing for a component type that that doesn't actually have
subtrees:
md.texi: Document that the % constraint character must be at the beginning of the string.
gcc/
* doc/md.texi: Document that the % constraint character must
be at the beginning of the string.
* genoutput.c (validate_insn_alternatives): Check that '=',
'+' and '%' only appear at the beginning of a constraint.
* ira.c (commutative_constraint_p): Delete.
(ira_get_dup_out_num): Expect the '%' commutativity marker to be
at the start of the string.
* config/alpha/alpha.md (*movmemdi_1, *clrmemdi_1): Remove
duplicate '='s.
* config/arm/neon.md (bicdi3_neon): Likewise.
* config/iq2000/iq2000.md (addsi3_internal, subsi3_internal, sgt_si)
(slt_si, sltu_si): Likewise.
* config/vax/vax.md (sbcdi3): Likewise.
* config/h8300/h8300.md (*cmpstz): Remove duplicate '+'.
* config/arc/arc.md (mulsi_600, mulsidi_600, umulsidi_600)
(mul64): Move '%' to beginning of constraint.
* config/arm/arm.md (*xordi3_insn): Likewise.
* config/nds32/nds32.md (add<mode>3, mulsi3, andsi3, iorsi3)
(xorsi3): Likewise.
Richard Biener [Wed, 28 May 2014 14:24:09 +0000 (14:24 +0000)]
tree-ssa-propagate.c (add_control_edge): Print less vertical space.
2014-05-28 Richard Biener <rguenther@suse.de>
* tree-ssa-propagate.c (add_control_edge): Print less vertical space.
* tree-vrp.c (extract_range_from_ssa_name): Also copy VR_UNDEFINED.
(vrp_visit_assignment_or_call): Print less vertical space.
(vrp_visit_stmt): Likewise.
(vrp_visit_phi_node): Likewise. For a PHI argument with
VR_VARYING range consider recording it as copy.
* expr.c (expand_assignment): Fold the bitpos in the to_rtx if
sufficiently aligned and an offset is used at the same time.
(expand_expr_real_1): Likewise.
Richard Biener [Wed, 28 May 2014 12:44:11 +0000 (12:44 +0000)]
re PR middle-end/61045 (Wrong constant folding)
2014-05-28 Richard Biener <rguenther@suse.de>
PR middle-end/61045
* fold-const.c (fold_comparison): When folding
X +- C1 CMP Y +- C2 to X CMP Y +- C2 +- C1 also ensure
the sign of the remaining constant operand stays the same.
Richard Biener [Wed, 28 May 2014 11:07:48 +0000 (11:07 +0000)]
hwint.h (*_HALF_WIDE_INT*): Move to ...
2014-05-28 Richard Biener <rguenther@suse.de>
* hwint.h (*_HALF_WIDE_INT*): Move to ...
* wide-int.cc (HOST_BITS_PER_HALF_WIDE_INT, HOST_HALF_WIDE_INT):
... here and remove the rest.
* hwint.h (HOST_WIDE_INT_PRINT_*): Define in terms of PRI*64.
-fuse-caller-save - Collect register usage information
2014-05-28 Radovan Obradovic <robradovic@mips.com>
Tom de Vries <tom@codesourcery.com>
* cgraph.h (struct cgraph_rtl_info): Add function_used_regs
and function_used_regs_valid fields.
* final.c: Move include of hard-reg-set.h to before rtl.h to declare
find_all_hard_reg_sets.
(collect_fn_hard_reg_usage, get_call_fndecl, get_call_cgraph_rtl_info)
(get_call_reg_set_usage): New function.
(rest_of_handle_final): Use collect_fn_hard_reg_usage.
* regs.h (get_call_reg_set_usage): Declare.
Co-Authored-By: Tom de Vries <tom@codesourcery.com>
From-SVN: r211006