1. 18 Nov, 2014 40 commits
    • mt-ospace (CFLAGS_FOR_TARGET): Append -g -Os rather than overwriting. · 31f44312
      2014-11-17  Bob Dunlop  <bob.dunlop@xyzzy.org.uk>
      
              * mt-ospace (CFLAGS_FOR_TARGET): Append -g -Os rather than
              overwriting.
              (CXXFLAGS_FOR_TARGET): Similarly.
      
      From-SVN: r217739
      Bob Dunlop committed
    • re PR c++/63940 (C++ constexpr errors on AIX) · f899317e
      	PR c++/63940
      	* constexpr.c (cxx_eval_binary_expression): Don't assume the
      	expression was already folded.
      	(cxx_eval_unary_expression): Likewise.
      
      From-SVN: r217738
      Jason Merrill committed
    • ipa-cp.c (ipcp_cloning_candidate_p): Use opt_for_fn. · 2bf86c84
      
      	* ipa-cp.c (ipcp_cloning_candidate_p): Use opt_for_fn.
      	(ipa_value_from_jfunc, ipa_context_from_jfunc): Skip sanity check.
      	(ipa_get_indirect_edge_target_1): Use opt_for_fn.
      	(good_cloning_opportunity_p): Likewise.
      	(ipa-cp gate): Enable ipa-cp with LTO.
      	* ipa-profile.c (ipa_propagate_frequency): Use opt_for_fn.
      	* ipa.c (symbol_table::remove_unreachable_nodes): Always build type
      	inheritance.
      	* ipa-inline-transform.c (inline_transform): Check if there are inlines
      	to apply even at -O0.
      	* cgraphunit.c (cgraph_node::finalize_function): Use opt_for_fn.
      	(analyze_functions): Build type inheritance graph.
      	* ipa-inline.c (can_inline_edge_p): Use opt_for_fn.
      	(want_early_inline_function_p, want_inline_small_function_p):
      	Likewise.
      	(check_callers): Likewise.
      	(edge_badness): Likewise.
      	(inline_small_functions): Always be ready for indirect inlining
      	to happend.
      	(ipa_inline): Always use want_inline_function_to_all_callers_p.
      	(early_inline_small_functions): Use opt_for_fn.
      	* ipa-inline-analysis.c (estimate_function_body_sizes): use opt_for_fn.
      	(estimate_function_body_sizes): Likewise.
      	(compute_inline_parameters): Likewise.
      	(estimate_edge_devirt_benefit): Likewise.
      	(inline_analyze_function): Likewise.
      	* ipa-devirt.c (ipa_devirt): Likewise.
      	(gate): Use in_lto_p.
      	* ipa-prop.c (ipa_func_spec_opts_forbid_analysis_p): Use opt_for_fn.
      	(try_make_edge_direct_virtual_call): Likewise.
      	(update_indirect_edges_after_inlining): Likewise.
      	(ipa_free_all_structures_after_ipa_cp): Add in_lto_p check.
      	* common.opt (findirect-inlining): Turn into optimization.
      	* ipa-pure-const.c (add_new_function): Use opt_for_fn.
      	(pure_const_generate_summary): Likewise.
      	(gate_pure_const): Always enable with in_lto_p.
      
      From-SVN: r217737
      Jan Hubicka committed
    • re PR libstdc++/43622 (Incomplete C++ library support for __float128) · bb59f396
      2014-11-18  Marc Glisse  <marc.glisse@inria.fr>
      
      	PR libstdc++/43622
      gcc/cp/
      	* rtti.c (emit_support_tinfos): Handle __float128.
      libstdc++-v3/
      	* config/abi/pre/float128.ver: New file.
      	* configure.ac: Use float128.ver when relevant.
      	* configure: Regenerate.
      	* testsuite/util/testsuite_abi.cc (check_version): Accept new
      	CXXABI_FLOAT128 version.
      
      From-SVN: r217735
      Marc Glisse committed
    • re PR c++/63925 (ICE with C++14 constexpr when trying to constexprify std::min) · ac2f8d26
      	PR c++/63925
      	* constexpr.c (cxx_eval_increment_expression): Use POINTER_PLUS_EXPR.
      
      From-SVN: r217731
      Jason Merrill committed
    • compiler: Initialize variables in declaration order. · cafc9af2
      Fixes issue 8052.
      
      From-SVN: r217730
      Ian Lance Taylor committed
    • re PR c++/63934 ([C++] internal compiler error: in adjust_temp_type, at cp/constexpr.c:1020) · de614750
      	PR c++/63934
      	* constexpr.c (cxx_eval_call_expression): Check DECL_CONSTRUCTOR_P
      	rather than VOID_TYPE_P.
      
      From-SVN: r217729
      Jason Merrill committed
    • mips.md (compression): Add `micromips32' setting. · 5d2d755e
      	* config/mips/mips.md (compression): Add `micromips32' setting.
      	(enabled, length): Handle it.
      	(shift_compression): Replace `micromips' with `micromips32' in
      	the `compression' attribute.
      	(*add<mode>3, sub<mode>3): Likewise.
      
      From-SVN: r217728
      Maciej W. Rozycki committed
    • mips.md (*jump_absolute): Use a branch when in range, a jump otherwise. · 73af680e
      	* gcc/config/mips/mips.md (*jump_absolute): Use a branch when in
      	range, a jump otherwise.
      
      From-SVN: r217727
      Maciej W. Rozycki committed
    • c11-atomic-exec-5.c (dg-timeout-factor): New setting. · 699aa7d0
      	* gcc.dg/atomic/c11-atomic-exec-5.c (dg-timeout-factor): New
      	setting.
      
      From-SVN: r217726
      Maciej W. Rozycki committed
    • [ARM/AArch64] Improve modeled latency between FP operations and FP->GP register moves · 58bd290e
      	* config/arm/cortex-a15-neon.md (cortex_a15_vfp_to_from_gp):
      	Split into...
      	(cortex_a15_gp_to_vfp): ...This.
      	(cortex_a15_fp_to_gp): ...And this.
      	Define and comment bypass from vfp operations to fp->gp moves.
      
      From-SVN: r217725
      Kyrylo Tkachov committed
    • fibonacci_heap is used for var-tracking. · 7b69b603
      	* var-tracking.c (vt_find_locations): New fibonacci_node is used.
      
      From-SVN: r217724
      Martin Liska committed
    • bt-load is ported to fibonacci_heap. · b5bfe5bd
      	* bt-load.c (add_btr_def): New fibonacci_heap is used.
      	(migrate_btr_defs): Likewise.
      
      From-SVN: r217723
      Martin Liska committed
    • tracer ported to new fibonacci_heap data structure. · dd7bda5e
      	* tracer.c (tail_duplicate): New fibonacci_heap class is used.
      
      From-SVN: r217722
      Martin Liska committed
    • fibonacci_heap is used for bb-reoder purpose. · 8d261514
      	* bb-reorder.c (mark_bb_visited): New fibonacci_heap is used.
      	(find_traces): Likewise.
      	(find_traces_1_round): Likewise.
      
      From-SVN: r217721
      Martin Liska committed
    • New template fibonacci_heap class introduced. · 4a910049
      	* fibonacci_heap.h: New file.
      	(fibonacci_heap::insert): Created from fibheap_insert.
      	(fibonacci_heap::empty): Created from fibheap_empty.
      	(fibonacci_heap::nodes): Created from fibheap_nodes.
      	(fibonacci_heap::min_key): Created from fibheap_min_key.
      	(fibonacci_heap::decrease_key): Created from fibheap_replace_key.
      	(fibonacci_heap::replace_key_data): Created from fibheap_replace_key_data.
      	(fibonacci_heap::extract_min): Created from fibheap_extract_min.
      	(fibonacci_heap::min): Created from fibheap_min.
      	(fibonacci_heap::replace_data): Created from fibheap_replace_data.
      	(fibonacci_heap::delete_node): Created from fibheap_delete_node.
      	(fibonacci_heap::union_with): Created from fibheap_union.
      	* ipa-inline.c (update_edge_key): New heap API is used.
      	(update_caller_keys): Likewise.
      	(update_callee_keys): Likewise.
      	(lookup_recursive_calls): Likewise.
      	(recursive_inlining): Likewise.
      	(add_new_edges_to_heap): Likewise.
      	(heap_edge_removal_hook): Likewise.
      	(inline_small_functions): Likewise.
      
      From-SVN: r217720
      Martin Liska committed
    • re PR c++/55942 ([C++11] sorry, unimplemented: calling a member function of the… · 1b85e4b2
      re PR c++/55942 ([C++11] sorry, unimplemented: calling a member function of the object being constructed in a constant expression)
      
      2014-11-18  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	PR c++/55942
      	* g++.dg/cpp0x/constexpr-55942.C: New.
      
      From-SVN: r217719
      Paolo Carlini committed
    • re PR sanitizer/63866 (ICE in C++ printer with -fdump-ipa) · bebcdc67
      	PR sanitizer/63866
      	* asan.c (asan_global_struct): Create a TYPE_DECL for "__asan_global",
      	put it into TYPE_NAME and TYPE_STUB_DECL.
      	* ubsan.c (ubsan_type_descriptor_type): New variable.
      	Function renamed to ...
      	(ubsan_get_type_descriptor_type): ... this.  Cache
      	return value in ubsan_type_descriptor_type variable.
      	Create a TYPE_DECL for "__ubsan_type_descriptor", put it into
      	TYPE_NAME and TYPE_STUB_DECL.
      	(ubsan_get_source_location_type): Create a TYPE_DECL for
      	"__ubsan_source_location", put it into TYPE_NAME and TYPE_STUB_DECL.
      	(ubsan_type_descriptor, ubsan_create_data): Call
      	ubsan_get_type_descriptor_type instead of ubsan_type_descriptor_type.
      	Create a TYPE_DECL for name, put it into TYPE_NAME and TYPE_STUB_DECL.
      
      	* c-c++-common/ubsan/pr63866.c: New test.
      
      From-SVN: r217718
      Marek Polacek committed
    • aarch64.c (doloop_end): New pattern. · 594bdd53
             * config/aarch64/aarch64.c (doloop_end): New pattern.
             * config/aarch64/aarch64.md (TARGET_CAN_USE_DOLOOP_P): Implement.
      
      From-SVN: r217717
      Felix Yang committed
    • re PR c++/58102 (rejects valid initialization of constexpr object with mutable member) · 023d89c7
      	PR c++/58102
      	* typeck2.c (store_init_value): Set it.
      	* cp-tree.h (CONSTRUCTOR_MUTABLE_POISON): New.
      	* constexpr.c (cxx_eval_outermost_constant_expr): Check it.
      
      From-SVN: r217713
      Jason Merrill committed
    • re PR tree-optimization/63914 (ICE in set_lattice_value, at tree-ssa-ccp.c:517) · bee1d478
      2014-11-18  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/63914
      	* tree-ssa-ccp.c (canonicalize_value): Remove float value
      	canonicalization.
      	(valid_lattice_transition): Allow (partial) transition
      	from NaN to non-NaN if !HONOR_NANS.
      	(set_lattice_value): Check for valid lattice transitions
      	only when checking is enabled.
      
      	* gcc.dg/pr63914.c: New testcase.
      
      From-SVN: r217712
      Richard Biener committed
    • re PR c++/55443 (ICE for some placement new expressions inside noexcept operator) · 60dcf0e0
      2014-11-18  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	PR c++/55443
      	* g++.dg/cpp0x/noexcept26.C: New.
      	* g++.dg/cpp0x/noexcept27.C: Likewise.
      
      From-SVN: r217711
      Paolo Carlini committed
    • Fix header conflicts in nvptx. · 3a4d1cb1
      	* config/nvptx/nvptx.c: Include <sstream> directly after "config.h".
      
      From-SVN: r217710
      Bernd Schmidt committed
    • re PR c++/60245 (function with using defined parameter not accepted as constexpr parameter) · a6965b65
      2014-11-18  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	PR c++/60245
      	* g++.dg/cpp0x/constexpr-60245.C: New.
      
      From-SVN: r217709
      Paolo Carlini committed
    • re PR c++/60771 (static in-class constexpr const reference initialization) · 6e939407
      2014-11-18  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	PR c++/60771
      	* g++.dg/cpp0x/constexpr-ref6.C: New.
      
      From-SVN: r217708
      Paolo Carlini committed
    • neon-testgen.ml (emit_prologue): Handle new compile_test_optim argument. · c8196921
      2014-11-18  Christophe Lyon  <christophe.lyon@linaro.org>
      
      	gcc/
      	* config/arm/neon-testgen.ml (emit_prologue): Handle new
      	compile_test_optim argument.
      	(emit_automatics): Rename to emit_variables. Support variable
      	indentation of its output.
      	(compile_test_optim): New function.
      	(test_intrinsic): Call compile_test_optim.
      	* config/arm/neon.ml (features): Add Compiler_optim.
      	(ops): Add Compiler_optim feature to Vbic and Vorn.
      	(type_in_crypto_only): Replace 'or' by '||'.
      	(reinterp): Likewise.
      	(reinterpq): Likewise.
      
      	testsuite/
      	* gcc.target/arm/neon/vbicQs16.c: Regenerate.
      	* gcc.target/arm/neon/vbicQs32.c: Likewise.
      	* gcc.target/arm/neon/vbicQs64.c: Likewise.
      	* gcc.target/arm/neon/vbicQs8.c: Likewise.
      	* gcc.target/arm/neon/vbicQu16.c: Likewise.
      	* gcc.target/arm/neon/vbicQu32.c: Likewise.
      	* gcc.target/arm/neon/vbicQu64.c: Likewise.
      	* gcc.target/arm/neon/vbicQu8.c: Likewise.
      	* gcc.target/arm/neon/vbics16.c: Likewise.
      	* gcc.target/arm/neon/vbics32.c: Likewise.
      	* gcc.target/arm/neon/vbics64.c: Likewise.
      	* gcc.target/arm/neon/vbics8.c: Likewise.
      	* gcc.target/arm/neon/vbicu16.c: Likewise.
      	* gcc.target/arm/neon/vbicu32.c: Likewise.
      	* gcc.target/arm/neon/vbicu64.c: Likewise.
      	* gcc.target/arm/neon/vbicu8.c: Likewise.
      	* gcc.target/arm/neon/vornQs16.c: Likewise.
      	* gcc.target/arm/neon/vornQs32.c: Likewise.
      	* gcc.target/arm/neon/vornQs64.c: Likewise.
      	* gcc.target/arm/neon/vornQs8.c: Likewise.
      	* gcc.target/arm/neon/vornQu16.c: Likewise.
      	* gcc.target/arm/neon/vornQu32.c: Likewise.
      	* gcc.target/arm/neon/vornQu64.c: Likewise.
      	* gcc.target/arm/neon/vornQu8.c: Likewise.
      	* gcc.target/arm/neon/vorns16.c: Likewise.
      	* gcc.target/arm/neon/vorns32.c: Likewise.
      	* gcc.target/arm/neon/vorns64.c: Likewise.
      	* gcc.target/arm/neon/vorns8.c: Likewise.
      	* gcc.target/arm/neon/vornu16.c: Likewise.
      	* gcc.target/arm/neon/vornu32.c: Likewise.
      	* gcc.target/arm/neon/vornu64.c: Likewise.
      	* gcc.target/arm/neon/vornu8.c: Likewise.
      
      From-SVN: r217707
      Christophe Lyon committed
    • vcls.c: New test. · 58332aa0
      2014-11-18  Christophe Lyon  <christophe.lyon@linaro.org>
      
      	gcc/testsuite/
      	* gcc.target/aarch64/advsimd-intrinsics/vcls.c: New test.
      	* gcc.target/aarch64/advsimd-intrinsics/vcnt.c: New test.
      	* gcc.target/aarch64/advsimd-intrinsics/vcombine.c: New test.
      	* gcc.target/aarch64/advsimd-intrinsics/vcreate.c: New test.
      	* gcc.target/aarch64/advsimd-intrinsics/vcvt.c: New test.
      	* gcc.target/aarch64/advsimd-intrinsics/vdup_lane.c: New test.
      	* gcc.target/aarch64/advsimd-intrinsics/vext.c: New test.
      	* gcc.target/aarch64/advsimd-intrinsics/vget_high.c: New test.
      	* gcc.target/aarch64/advsimd-intrinsics/vget_low.c: New test.
      
      From-SVN: r217706
      Christophe Lyon committed
    • [AArch64]Replace temporary assembler for vld1_dup · fcfce895
              * config/aarch64/arm_neon.h (vld1_dup_f32, vld1_dup_f64, vld1_dup_p8,
              vld1_dup_p16, vld1_dup_s8, vld1_dup_s16, vld1_dup_s32, vld1_dup_s64,
              vld1_dup_u8, vld1_dup_u16, vld1_dup_u32, vld1_dup_u64, vld1q_dup_f32,
              vld1q_dup_f64, vld1q_dup_p8, vld1q_dup_p16, vld1q_dup_s8, vld1q_dup_s16,
              vld1q_dup_s32, vld1q_dup_s64, vld1q_dup_u8, vld1q_dup_u16,
              vld1q_dup_u32, vld1q_dup_u64): Replace inline asm with vdup_n_ and
              pointer dereference.
      
      From-SVN: r217705
      Alan Lawrence committed
    • safe-3.c: Add bind_pic_locally. · ff83f9c8
      gcc/testsuite
      	* c-c++-common/tm/safe-3.c: Add bind_pic_locally.
      	* g++.dg/ipa/devirt-15.C: Ditto.
      	* g++.dg/ipa/devirt-7.C: Ditto.
      	* g++.dg/ipa/pr60600.C: Ditto.
      	* g++.dg/opt/vt2.C: Ditto.
      	* g++.dg/opt/vt4.C: Ditto.
      	* g++.dg/pr48484.C: Ditto.
      	* g++.dg/tm/pr47746.C: Ditto.
      	* g++.dg/tree-ssa/pr57380.C: Ditto.
      	* gcc.dg/ipa/inline-4.c: Ditto.
      	* gcc.dg/ipa/inlinehint-1.c: Ditto.
      	* gcc.dg/ipa/inlinehint-2.c: Ditto.
      	* gcc.dg/ipa/inlinehint-3.c: Ditto.
      	* gcc.dg/pr47276.c: Ditto.
      	* gcc.dg/pure-2.c: Ditto.
      	* gcc.dg/tm/nested-2.c: Ditto.
      	* gcc.dg/tree-ssa/alias-29.c: Ditto.
      	* gcc.target/i386/3dnow-1.c: Ditto.
      	* gcc.target/i386/3dnow-2.c: Ditto.
      	* gcc.target/i386/3dnowA-1.c: Ditto.
      	* gcc.target/i386/3dnowA-2.c: Ditto.
      	* gcc.target/i386/avx-1.c: Ditto.
      	* gcc.target/i386/avx-2.c: Ditto.
      	* gcc.target/i386/memcpy-1.c: Ditto.
      	* gcc.target/i386/mmx-1.c: Ditto.
      	* gcc.target/i386/mmx-2.c: Ditto.
      	* gcc.target/i386/sse-14.c: Ditto.
      	* gcc.target/i386/sse-22.c: Ditto.
      	* gcc.target/i386/sse-22a.c: Ditto.
      	* gcc.target/i386/sse-23.c: Ditto.
      	* gcc.target/i386/sse-24.c: Ditto.
      	* gcc.target/i386/vect-double-1.c: Ditto.
      	* g++.dg/fstack-protector-strong.C: Add target nonpic.
      	* gcc.dg/fstack-protector-strong.c: Ditto.
      
      From-SVN: r217704
      Alexander Ivchenko committed
    • small-multiply-m0-1.c: Only apply when "-mcpu=cortex-m0/m1/m0plus.small-multiply". · f89e12f2
      2014-11-18  Hale Wang  <hale.wang@arm.com>
      
      	* gcc.target/arm/small-multiply-m0-1.c: Only apply when
      	"-mcpu=cortex-m0/m1/m0plus.small-multiply".
      	* gcc.target/arm/small-multiply-m0-2.c: Likewise.
      	* gcc.target/arm/small-multiply-m0-3.c: Likewise.
      	* gcc.target/arm/small-multiply-m0plus-1.c: Likewise.
      	* gcc.target/arm/small-multiply-m0plus-2.c: Likewise.
      	* gcc.target/arm/small-multiply-m0plus-3.c: Likewise.
      	* gcc.target/arm/small-multiply-m1-1.c: Likewise.
      	* gcc.target/arm/small-multiply-m1-2.c: Likewise.
      	* gcc.target/arm/small-multiply-m1-3.c: Likewise.
      
      From-SVN: r217703
      Hale Wang committed
    • tree.c (element_mode, [...]): New functions. · 09240451
      2014-11-18  Marc Glisse  <marc.glisse@inria.fr>
      
      	* tree.c (element_mode, integer_truep): New functions.
      	* tree.h (element_mode, integer_truep): Declare them.
      	* fold-const.c (negate_expr_p, fold_negate_expr, combine_comparisons,
      	fold_cond_expr_with_comparison, fold_real_zero_addition_p,
      	fold_comparison, fold_ternary_loc, tree_call_nonnegative_warnv_p,
      	fold_strip_sign_ops): Use element_mode.
      	(fold_binary_loc): Use element_mode and element_precision.
      	* match.pd: Use integer_truep, element_mode, element_precision,
      	VECTOR_TYPE_P and build_one_cst. Extend some transformations to
      	vectors. Simplify A/-A.
      
      From-SVN: r217702
      Marc Glisse committed
    • [ARM] Use std::swap instead of manually swapping · 9f37760a
      	* config/arm/arm.md (unaligned_loaddi): Use std::swap instead of
      	manual swapping implementation.
      	(movcond_addsi): Likewise.
      	* config/arm/arm.c (arm_canonicalize_comparison): Likewise.
      	(arm_select_dominance_cc_mode): Likewise.
      	(arm_reload_out_hi): Likewise.
      	(gen_operands_ldrd_strd): Likewise.
      	(output_move_double): Likewise.
      	(arm_print_operand_address): Likewise.
      	(thumb_output_move_mem_multiple): Likewise.
      	(SWAP_RTX): Delete.
      
      From-SVN: r217701
      Kyrylo Tkachov committed
    • [Patch ARM Refactor Builtins 8/8] Neaten up the ARM Neon builtin infrastructure · bd79363c
      gcc/
      
      	* config/arm/arm-builtins.c (CONVERT_QUALIFIERS): Delete.
      	(COPYSIGNF_QUALIFIERS): Likewise.
      	(CREATE_QUALIFIERS): Likewise.
      	(DUP_QUALIFIERS): Likewise.
      	(FLOAT_WIDEN_QUALIFIERS): Likewise.
      	(FLOAT_NARROW_QUALIFIERS): Likewise.
      	(REINTERP_QUALIFIERS): Likewise.
      	(RINT_QUALIFIERS): Likewise.
      	(SPLIT_QUALIFIERS): Likewise.
      	(FIXCONV_QUALIFIERS): Likewise.
      	(SCALARMUL_QUALIFIERS): Likewise.
      	(SCALARMULL_QUALIFIERS): Likewise.
      	(SCALARMULH_QUALIFIERS): Likewise.
      	(SELECT_QUALIFIERS): Likewise.
      	(VTBX_QUALIFIERS): Likewise.
      	(SHIFTIMM_QUALIFIERS): Likewise.
      	(SCALARMAC_QUALIFIERS): Likewise.
      	(LANEMUL_QUALIFIERS): Likewise.
      	(LANEMULH_QUALIFIERS): Likewise.
      	(LANEMULL_QUALIFIERS): Likewise.
      	(SHIFTACC_QUALIFIERS): Likewise.
      	(SHIFTINSERT_QUALIFIERS): Likewise.
      	(VTBL_QUALIFIERS): Likewise.
      	(LOADSTRUCT_QUALIFIERS): Likewise.
      	(LOADSTRUCTLANE_QUALIFIERS): Likewise.
      	(STORESTRUCT_QUALIFIERS): Likewise.
      	(STORESTRUCTLANE_QUALIFIERS): Likewise.
      	(neon_builtin_type_mode): Delete.
      	(v8qi_UP): Map to V8QImode.
      	(v8qi_UP): Map to V8QImode.
      	(v4hi_UP): Map to V4HImode.
      	(v4hf_UP): Map to V4HFmode.
      	(v2si_UP): Map to V2SImode.
      	(v2sf_UP): Map to V2SFmode.
      	(di_UP): Map to DImode.
      	(v16qi_UP): Map to V16QImode.
      	(v8hi_UP): Map to V8HImode.
      	(v4si_UP): Map to V4SImode.
      	(v4sf_UP): Map to V4SFmode.
      	(v2di_UP): Map to V2DImode.
      	(ti_UP): Map to TImode.
      	(ei_UP): Map to EImode.
      	(oi_UP): Map to OImode.
      	(neon_itype): Delete.
      	(neon_builtin_datum): Remove itype, make mode a machine_mode.
      	(VAR1): Update accordingly.
      	(arm_init_neon_builtins): Use machine_mode directly.
      	(neon_dereference_pointer): Likewise.
      	(arm_expand_neon_args): Use qualifiers to decide operand types.
      	(arm_expand_neon_builtin): Likewise.
      	* config/arm/arm_neon_builtins.def: Remap operation type for
      	many builtins.
      
      From-SVN: r217700
      James Greenhalgh committed
    • [Patch ARM Refactor Builtins 7/8] Use qualifiers arrays when initialising… · 6276b630
      [Patch ARM Refactor Builtins 7/8] Use qualifiers arrays when initialising builtins and fix type mangling
      
      gcc/
      
      	* config/arm/arm-builtins.c (arm_scalar_builtin_types): New.
      	(enum arm_simd_type): Likewise.
      	(struct arm_simd_type_info): Likewise
      	(arm_mangle_builtin_scalar_type): Likewise.
      	(arm_mangle_builtin_vector_type): Likewise.
      	(arm_mangle_builtin_type): Likewise.
      	(arm_simd_builtin_std_type): Likewise.
      	(arm_lookup_simd_builtin_type): Likewise.
      	(arm_simd_builtin_type): Likewise.
      	(arm_init_simd_builtin_types): Likewise.
      	(arm_init_simd_builtin_scalar_types): Likewise.
      	(arm_init_neon_builtins): Rewrite using qualifiers.
      	* config/arm/arm-protos.h (arm_mangle_builtin_type): New.
      	* config/arm/arm-simd-builtin-types.def: New file.
      	* config/arm/t-arm (arm-builtins.o): Depend on it.
      	* config/arm/arm.c (arm_mangle_type): Call arm_mangle_builtin_type.
      	* config/arm/arm_neon.h (int8x8_t): Use new internal type.
      	(int16x4_t): Likewise.
      	(int32x2_t): Likewise.
      	(float16x4_t): Likewise.
      	(float32x2_t): Likewise.
      	(poly8x8_t): Likewise.
      	(poly16x4_t): Likewise.
      	(uint8x8_t): Likewise.
      	(uint16x4_t): Likewise.
      	(uint32x2_t): Likewise.
      	(int8x16_t): Likewise.
      	(int16x8_t): Likewise.
      	(int32x4_t): Likewise.
      	(int64x2_t): Likewise.
      	(float32x4_t): Likewise.
      	(poly8x16_t): Likewise.
      	(poly16x8_t): Likewise.
      	(uint8x16_t): Likewise.
      	(uint16x8_t): Likewise.
      	(uint32x4_t): Likewise.
      	(uint64x2_t): Likewise.
      
      From-SVN: r217699
      James Greenhalgh committed
    • [Patch ARM Refactor Builtins 6/8] Add some tests for "poly" mangling · acb94767
      gcc/testsuite/
      
      	* g++.dg/abi/mangle-arm-crypto.C: New.
      	* g++.dg/abi/mangle-neon.C (f19): New.
      	(f20): Likewise.
      
      From-SVN: r217698
      James Greenhalgh committed
    • [Patch ARM Refactor Builtins 5/8] Start keeping track of qualifiers in ARM. · 638ba4aa
      gcc/
      
      	* gcc/config/arm/arm-builtins.c	(arm_type_qualifiers): New.
      	(neon_itype): Add new types corresponding to the types used in
      	qualifiers names.
      	(arm_unop_qualifiers): New.
      	(arm_bswap_qualifiers): Likewise.
      	(arm_binop_qualifiers): Likewise.
      	(arm_ternop_qualifiers): Likewise.
      	(arm_getlane_qualifiers): Likewise.
      	(arm_lanemac_qualifiers): Likewise.
      	(arm_setlane_qualifiers): Likewise.
      	(arm_combine_qualifiers): Likewise.
      	(arm_load1_qualifiers): Likewise.
      	(arm_load1_lane_qualifiers): Likewise.
      	(arm_store1_qualifiers): Likewise.
      	(arm_storestruct_lane_qualifiers): Likewise.
      	(UNOP_QUALIFIERS): Likewise.
      	(DUP_QUALIFIERS): Likewise.
      	(SPLIT_QUALIFIERS): Likewise.
      	(CONVERT_QUALIFIERS): Likewise.
      	(FLOAT_WIDEN_QUALIFIERS): Likewise.
      	(FLOAT_NARROW_QUALIFIERS): Likewise.
      	(RINT_QUALIFIERS): Likewise.
      	(COPYSIGNF_QUALIFIERS): Likewise.
      	(CREATE_QUALIFIERS): Likewise.
      	(REINTERP_QUALIFIERS): Likewise.
      	(BSWAP_QUALIFIERS): Likewise.
      	(BINOP_QUALIFIERS): Likewise.
      	(FIXCONV_QUALIFIERS): Likewise.
      	(SCALARMUL_QUALIFIERS): Likewise.
      	(SCALARMULL_QUALIFIERS): Likewise.
      	(SCALARMULH_QUALIFIERS): Likewise.
      	(TERNOP_QUALIFIERS): Likewise.
      	(SELECT_QUALIFIERS): Likewise.
      	(VTBX_QUALIFIERS): Likewise.
      	(GETLANE_QUALIFIERS): Likewise.
      	(SHIFTIMM_QUALIFIERS): Likewise.
      	(LANEMAC_QUALIFIERS): Likewise.
      	(SCALARMAC_QUALIFIERS): Likewise.
      	(SETLANE_QUALIFIERS): Likewise.
      	(SHIFTINSERT_QUALIFIERS): Likewise.
      	(SHIFTACC_QUALIFIERS): Likewise.
      	(LANEMUL_QUALIFIERS): Likewise.
      	(LANEMULL_QUALIFIERS): Likewise.
      	(LANEMULH_QUALIFIERS): Likewise.
      	(COMBINE_QUALIFIERS): Likewise.
      	(VTBL_QUALIFIERS): Likewise.
      	(LOAD1_QUALIFIERS): Likewise.
      	(LOADSTRUCT_QUALIFIERS): Likewise.
      	(LOAD1LANE_QUALIFIERS): Likewise.
      	(LOADSTRUCTLANE_QUALIFIERS): Likewise.
      	(STORE1_QUALIFIERS): Likewise.
      	(STORESTRUCT_QUALIFIERS): Likewise.
      	(STORE1LANE_QUALIFIERS): Likewise.
      	(STORESTRUCTLANE_QUALIFIERS): Likewise.
      	(neon_builtin_datum): Keep track of qualifiers.
      	(VAR1): Likewise.
      
      From-SVN: r217697
      James Greenhalgh committed
    • [Patch ARM Refactor Builtins 4/8] Refactor "VAR<n>" Macros · 1add35db
      gcc/
      
      	* config/arm/arm-builtins.c (VAR1): Add a comma.
      	(VAR2): Rewrite in terms of VAR1.
      	(VAR3-10): Likewise.
      	(arm_builtins): Remove leading comma before ARM_BUILTIN_MAX.
      	* config/arm/arm_neon_builtins.def: Remove trailing commas.
      
      From-SVN: r217696
      James Greenhalgh committed
    • [Patch ARM Refactor Builtins 3/8] Pull builtins code to its own file · 33857df2
      gcc/
      
      	* config.gcc (extra_objs): Add arm-builtins.o for arm*-*-*.
      	(target_gtfiles): Add config/arm/arm-builtins.c for arm*-*-*.
      	* config/arm/arm-builtins.c: New.
      	* config/arm/t-arm (arm_builtins.o): New.
      	* config/arm/arm-protos.h (arm_expand_builtin): New.
      	(arm_builtin_decl): Likewise.
      	(arm_init_builtins): Likewise.
      	(arm_atomic_assign_expand_fenv): Likewise.
      	* config/arm/arm.c (arm_atomic_assign_expand_fenv): Remove prototype.
      	(arm_init_builtins): Likewise.
      	(arm_init_iwmmxt_builtins): Likewise
      	(safe_vector_operand): Likewise
      	(arm_expand_binop_builtin): Likewise
      	(arm_expand_unop_builtin): Likewise
      	(arm_expand_builtin): Likewise
      	(arm_builtin_decl): Likewise
      	(insn_flags): Remove static.
      	(tune_flags): Likewise.
      	(enum arm_builtins): Move to config/arm/arm-builtins.c.
      	(arm_init_neon_builtins): Likewise.
      	(struct builtin_description): Likewise.
      	(arm_init_iwmmxt_builtins): Likewise.
      	(arm_init_fp16_builtins): Likewise.
      	(arm_init_crc32_builtins): Likewise.
      	(arm_init_builtins): Likewise.
      	(arm_builtin_decl): Likewise.
      	(safe_vector_operand): Likewise.
      	(arm_expand_ternop_builtin): Likewise.
      	(arm_expand_binop_builtin): Likewise.
      	(arm_expand_unop_builtin): Likewise.
      	(neon_dereference_pointer): Likewise.
      	(arm_expand_neon_args): Likewise.
      	(arm_expand_neon_builtin): Likewise.
      	(neon_split_vcombine): Likewise.
      	(arm_expand_builtin): Likewise.
      	(arm_builtin_vectorized_function): Likewise.
      	(arm_atomic_assign_expand_fenv): Likewise.
      
      From-SVN: r217695
      James Greenhalgh committed