Alan Lawrence [Wed, 11 Nov 2015 13:31:46 +0000 (13:31 +0000)]
Fix whitespace+typo from "Share code from fold_array_ctor_reference with fold."
* fold-const.c (get_array_ctor_element_at_index): Fix whitespace, typo.
From-SVN: r230159
Jiong Wang [Wed, 11 Nov 2015 12:30:46 +0000 (12:30 +0000)]
[ARM] PR67305, tighten neon_vector_mem_operand on eliminable registers
2015-11-11 Jiong Wang <jiong.wang@arm.com>
Jim Wilson <wilson@gcc.gnu.org>
PR target/67305
* config/arm/arm.md (neon_vector_mem_operand): Return FALSE if strict
be true and eliminable registers mentioned.
Co-Authored-By: Jim Wilson <wilson@gcc.gnu.org>
From-SVN: r230158
Claudiu Zissulescu [Wed, 11 Nov 2015 12:28:37 +0000 (13:28 +0100)]
arc-common.c (arc_handle_option): Handle ARCv2 options.
2015-11-11 Claudiu Zissulescu <claziss@synopsys.com>
* common/config/arc/arc-common.c (arc_handle_option): Handle ARCv2
options.
* config/arc/arc-opts.h: Add ARCv2 CPUs.
* config/arc/arc-protos.h (arc_secondary_reload_conv): Prototype.
* config/arc/arc.c (arc_secondary_reload): Handle subreg (reg)
situation, and store instructions with large offsets.
(arc_secondary_reload_conv): New function.
(arc_init): Add ARCv2 options.
(arc_conditional_register_usage): Select the proper register usage
for ARCv2 processors.
(arc_handle_interrupt_attribute): ILINK2 is only valid for ARCv1
architecture.
(arc_compute_function_type): Likewise.
(arc_print_operand): Handle new ARCv2 punctuation characters.
(arc_return_in_memory): ARCv2 ABI returns in registers up to 16
bytes.
(workaround_arc_anomaly, arc_asm_insn_p, arc_loop_hazard): New
function.
(arc_reorg, arc_hazard): Use it.
* config/arc/arc.h (TARGET_CPU_CPP_BUILTINS): Define __HS__ and
__EM__.
(ASM_SPEC): Add ARCv2 options.
(TARGET_NORM): ARC HS has norm instructions by default.
(TARGET_OPTFPE): Use optimized floating point emulation for ARC
HS.
(TARGET_AT_DBR_CONDEXEC): Only for ARC600 family.
(TARGET_EM, TARGET_HS, TARGET_V2, TARGET_MPYW, TARGET_MULTI):
Define.
(SIGNED_INT16, TARGET_MPY, TARGET_ARC700_MPY, TARGET_ANY_MPY):
Likewise.
(TARGET_ARC600_FAMILY, TARGET_ARCOMPACT_FAMILY): Likewise.
(TARGET_LP_WR_INTERLOCK): Likewise.
* config/arc/arc.md
(commutative_binary_mult_comparison_result_used, movsicc_insn)
(mulsi3, mulsi3_600_lib, mulsidi3, mulsidi3_700, mulsi3_highpart)
(umulsi3_highpart_i, umulsi3_highpart_int, umulsi3_highpart)
(umulsidi3, umulsidi3_700, cstoresi4, simple_return, p_return_i):
Use it for ARCv2.
(mulhisi3, mulhisi3_imm, mulhisi3_reg, umulhisi3, umulhisi3_imm)
(umulhisi3_reg, umulhisi3_reg, mulsi3_v2, nopv, bswapsi2)
(prefetch, divsi3, udivsi3 modsi3, umodsi3, arcset, arcsetltu)
(arcsetgeu, arcsethi, arcsetls, reload_*_load, reload_*_store)
(extzvsi): New pattern.
* config/arc/arc.opt: New ARCv2 options.
* config/arc/arcEM.md: New file.
* config/arc/arcHS.md: Likewise.
* config/arc/constraints.md (C3p): New constraint, accepts 1 and 2
values.
(Cm2): A signed 9-bit integer constant constraint.
(C62): An unsigned 6-bit integer constant constraint.
(C16): A signed 16-bit integer constant constraint.
* config/arc/predicates.md (mult_operator): Add ARCv2 processort.
(short_const_int_operand): New predicate.
* config/arc/t-arc-newlib: Add ARCv2 multilib options.
* doc/invoke.texi: Add documentation for -mcpu=<archs/arcem>
-mcode-density and -mdiv-rem.
From-SVN: r230156
Julia Koval [Wed, 11 Nov 2015 11:47:00 +0000 (12:47 +0100)]
Fix typo.
gcc/
* config/i386/i386.c (m_SKYLAKE_AVX512): Fix typo.
From-SVN: r230155
Julia Koval [Wed, 11 Nov 2015 11:40:50 +0000 (12:40 +0100)]
Fix target arch attribute for Skylake.
gcc/
* config/i386/i386.c: Handle "skylake" and
"skylake-avx512".
gcc/testsuite/
* g++.dg/ext/mv16.C: New functions.
From-SVN: r230153
Martin Liska [Wed, 11 Nov 2015 11:21:44 +0000 (12:21 +0100)]
Fix various memory leaks
* gimple-ssa-strength-reduction.c (create_phi_basis):
Use auto_vec.
* passes.c (release_dump_file_name): New function.
(pass_init_dump_file): Used from this function.
(pass_fini_dump_file): Likewise.
* tree-sra.c (convert_callers_for_node): Use xstrdup_for_dump.
* var-tracking.c (vt_initialize): Use pool_allocator.
From-SVN: r230152
Claudiu Zissulescu [Wed, 11 Nov 2015 11:04:32 +0000 (12:04 +0100)]
dp-hack.h: Add support for ARCHS.
2015-11-11 Claudiu Zissulescu <claziss@synopsys.com>
* config/arc/dp-hack.h: Add support for ARCHS.
* config/arc/ieee-754/divdf3.S: Likewise.
* config/arc/ieee-754/divsf3-stdmul.S: Likewise.
* config/arc/ieee-754/muldf3.S: Likewise.
* config/arc/ieee-754/mulsf3.S: Likewise
* config/arc/lib1funcs.S: Likewise
* config/arc/gmon/dcache_linesz.S: Don't read the build register
for ARCv2 cores.
* config/arc/gmon/profil.S (__profil, __profil_irq): Don't profile
for ARCv2 cores.
* config/arc/ieee-754/arc-ieee-754.h (MPYHU, MPYH): Define.
* config/arc/t-arc700-uClibc: Remove hard selection for ARC 700
cores.
From-SVN: r230151
Richard Biener [Wed, 11 Nov 2015 10:51:31 +0000 (10:51 +0000)]
[Patch] PR tree-optimization/68234 Improve range info for loop Phi node
2015-11-11 Richard Biener <rguenth@gcc.gnu.org>
Jiong Wang <jiong.wang@arm.com>
gcc/
PR tree-optimization/68234
* tree-vrp.c (vrp_visit_phi_node): Extend SCEV check to those loop PHI
node which estimiated to be VR_VARYING initially.
gcc/testsuite/
* gcc.dg/tree-ssa/pr68234.c: New testcase.
Co-Authored-By: Jiong Wang <jiong.wang@arm.com>
From-SVN: r230150
Robert Suchanek [Wed, 11 Nov 2015 10:36:00 +0000 (10:36 +0000)]
Tighten up checks when tying chains.
gcc/
* regname.c (scan_rtx_reg): Check the matching number of consecutive
registers when tying chains.
(build_def_use): Move terminated_this_insn earlier in the function.
From-SVN: r230149
Dominique d'Humieres [Wed, 11 Nov 2015 10:30:25 +0000 (11:30 +0100)]
re PR fortran/67826 (gcc/fortran/openmp.c:1808: bad test ?)
2015-11-11 Dominique d'Humieres <dominiq@lps.ens.fr>
PR fortran/67826
* openmp.c (gfc_omp_udr_find): Fix typo.
From-SVN: r230148
Jonathan Wakely [Wed, 11 Nov 2015 10:08:23 +0000 (10:08 +0000)]
re PR libstdc++/64651 (std::rethrow_exception not found by ADL)
PR libstdc++/64651
* libsupc++/exception_ptr.h (rethrow_exception): Add using-declaration
to __exception_ptr namespace.
* testsuite/18_support/exception_ptr/rethrow_exception.cc: Test ADL.
Remove unnecessary test variables.
From-SVN: r230147
Mike Frysinger [Wed, 11 Nov 2015 08:06:03 +0000 (08:06 +0000)]
gcc: configure: fix test == bashisms
From-SVN: r230146
David Edelsohn [Wed, 11 Nov 2015 04:01:30 +0000 (04:01 +0000)]
aix.h (TARGET_OS_AIX_CPP_BUILTINS): Add cpu and machine asserts.
* config/rs6000/aix.h (TARGET_OS_AIX_CPP_BUILTINS): Add cpu and
machine asserts. Update defines for 64 bit.
From-SVN: r230145
Charles Baylis [Wed, 11 Nov 2015 01:11:20 +0000 (01:11 +0000)]
[ARM] PR63870 Remove error for invalid lane numbers
2015-11-11 Charles Baylis <charles.baylis@linaro.org>
PR target/63870
* config/arm/neon.md (neon_vld1_lane<mode>): Remove error for invalid
lane number.
(neon_vst1_lane<mode>): Likewise.
(neon_vld2_lane<mode>): Likewise.
(neon_vst2_lane<mode>): Likewise.
(neon_vld3_lane<mode>): Likewise.
(neon_vst3_lane<mode>): Likewise.
(neon_vld4_lane<mode>): Likewise.
(neon_vst4_lane<mode>): Likewise.
From-SVN: r230144
Charles Baylis [Wed, 11 Nov 2015 01:08:43 +0000 (01:08 +0000)]
[ARM] PR63870 Mark lane indices of vldN/vstN with appropriate qualifier
2015-11-11 Charles Baylis <charles.baylis@linaro.org>
PR target/63870
* config/arm/arm-builtins.c: (arm_load1_qualifiers) Use
qualifier_struct_load_store_lane_index.
(arm_storestruct_lane_qualifiers) Likewise.
* config/arm/neon.md: (neon_vld1_lane<mode>) Reverse lane numbers for
big-endian.
(neon_vst1_lane<mode>) Likewise.
(neon_vld2_lane<mode>) Likewise.
(neon_vst2_lane<mode>) Likewise.
(neon_vld3_lane<mode>) Likewise.
(neon_vst3_lane<mode>) Likewise.
(neon_vld4_lane<mode>) Likewise.
(neon_vst4_lane<mode>) Likewise.
From-SVN: r230143
Charles Baylis [Wed, 11 Nov 2015 01:05:16 +0000 (01:05 +0000)]
[ARM] PR63870 Add qualifiers for NEON builtins
2015-11-11 Charles Baylis <charles.baylis@linaro.org>
PR target/63870
* config/arm/arm-builtins.c (enum arm_type_qualifiers): New enumerator
qualifier_struct_load_store_lane_index.
(builtin_arg): New enumerator NEON_ARG_STRUCT_LOAD_STORE_LANE_INDEX.
(arm_expand_neon_args): New parameter. Remove ellipsis. Handle NEON
argument qualifiers.
(arm_expand_neon_builtin): Handle new NEON argument qualifier.
* config/arm/arm.h (NEON_ENDIAN_LANE_N): New macro.
From-SVN: r230142
GCC Administrator [Wed, 11 Nov 2015 00:16:16 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r230141
Nathan Sidwell [Tue, 10 Nov 2015 22:29:20 +0000 (22:29 +0000)]
nvptx.opt (moptimize): New flag.
* config/nvptx/nvptx.opt (moptimize): New flag.
* config/nvptx/nvptx.c (nvptx_option_override): Set nvptx_optimize
default.
(nvptx_optimize_inner): New.
(nvptx_process_pars): Call it when optimizing.
* doc/invoke.texi (Nvidia PTX Options): Document -moptimize.
From-SVN: r230137
Bill Schmidt [Tue, 10 Nov 2015 21:52:50 +0000 (21:52 +0000)]
rs6000.c (rs6000_secondary_reload_direct_move): Remove redundant code.
2015-11-10 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
* config/rs6000/rs6000.c (rs6000_secondary_reload_direct_move):
Remove redundant code.
From-SVN: r230136
Ian Lance Taylor [Tue, 10 Nov 2015 21:38:30 +0000 (21:38 +0000)]
libgo: use Solaris sendfile lib, fix Solaris _in6_addr_t fields
Before Solaris 12 the sendfile function is found in -lsendfile, so look
for it there.
Solaris 12 adds some more types that use _in6_addr_t, that need to be
edited in mksysinfo.
Patch by Rainer Orth.
Reviewed-on: https://go-review.googlesource.com/16779
From-SVN: r230132
Jeff Law [Tue, 10 Nov 2015 21:11:07 +0000 (14:11 -0700)]
[PATCH] Fix minor fallout from operand_address changes
2015-11-10 Jeff Law <law@redhat.com>
* config/ft32/ft32.c (ft32_print_operand): Supply mode to
call to output_address.
* config/moxie/moxie.c (moxie_print_operand_address): Similarly.
Add unnamed machine_mode argument.
From-SVN: r230130
Michael Meissner [Tue, 10 Nov 2015 20:50:39 +0000 (20:50 +0000)]
config.gcc (powerpc*-*-*, [...]): Add power9 to hosts that default to 64-bit.
2015-11-10 Michael Meissner <meissner@linux.vnet.ibm.com>
* config.gcc (powerpc*-*-*, rs6000*-*-*): Add power9 to hosts that
default to 64-bit.
Co-Authored-By: Peter Bergner <bergner@vnet.ibm.com>
From-SVN: r230123
Ian Lance Taylor [Tue, 10 Nov 2015 20:31:11 +0000 (20:31 +0000)]
re PR go/68255 (cgo-generated constructor not being called)
PR go/68255
cmd/go: always use --whole-archive for gccgo packages
This is a backport of https://golang.org/cl/16775.
This is, in effect, what the gc toolchain does. It fixes cases where Go
code refers to a C global variable; without this, if the global variable
was the only thing visible in the C code, the generated cgo file might
not get pulled in from the archive, leaving the Go variable
uninitialized.
This was reported against gccgo as https://gcc.gnu.org/PR68255 .
Reviewed-on: https://go-review.googlesource.com/16778
From-SVN: r230120
Uros Bizjak [Tue, 10 Nov 2015 19:26:08 +0000 (20:26 +0100)]
i386.md (*movabs<mode>_1): Add explicit size directives for -masm=intel.
* config/i386/i386.md (*movabs<mode>_1): Add explicit
size directives for -masm=intel.
(*movabs<mode>_2): Ditto.
From-SVN: r230119
Uros Bizjak [Tue, 10 Nov 2015 17:48:31 +0000 (18:48 +0100)]
i386.c (ix86_print_operand): Remove dead code that tried to avoid (%rip) for call operands.
* config/i386/i386.c (ix86_print_operand): Remove dead code that
tried to avoid (%rip) for call operands.
* config/i386/i386.c (ix86_print_operand_address_as): Add no_rip
argument. Do not use RIP relative addressing when no_rip is set.
(ix86_print_operand): Update call to ix86_print_operand_address_as.
(ix86_print_operand_address): Ditto.
* config/i386/i386.md (*movabs<mode>_1): Use %P modifier for
absolute movabs operand 0. Add square braces for -masm=intel.
(*movabs<mode>_2): Ditto for operand 1.
From-SVN: r230117
Kyrylo Tkachov [Tue, 10 Nov 2015 17:29:46 +0000 (17:29 +0000)]
[ARM] Fix costing of vmul+vcvt combine pattern
* config/arm/arm.c (arm_new_rtx_costs, FIX case): Handle
combine_vcvtf2i pattern.
From-SVN: r230116
Kyrylo Tkachov [Tue, 10 Nov 2015 17:27:42 +0000 (17:27 +0000)]
[ARM][cleanup] Remove uses of CONST_DOUBLE_HIGH/LOW
* config/arm/arm.c (neon_valid_immediate): Remove integer
CONST_DOUBLE handling. It should never occur.
From-SVN: r230115
Matthew Wahab [Tue, 10 Nov 2015 15:59:37 +0000 (15:59 +0000)]
[AArch64] Move iterators from atomics.md to iterators.md
* config/aarch64/atomics.md (unspecv): Move to iterators.md.
(ATOMIC_LDOP): Likewise.
(atomic_ldop): Likewise.
* config/aarch64/iterators.md (unspecv): Moved from atomics.md.
(ATOMIC_LDOP): Likewise.
(atomic_ldop): Likewise.
From-SVN: r230114
Jonathan Wakely [Tue, 10 Nov 2015 15:12:24 +0000 (15:12 +0000)]
Fix return type of heterogeneous find for sets
PR libstdc++/68190
* include/bits/stl_multiset.h (multiset::find): Fix return types.
* include/bits/stl_set.h (set::find): Likewise.
* testsuite/23_containers/map/operations/2.cc: Test find return types.
* testsuite/23_containers/multimap/operations/2.cc: Likewise.
* testsuite/23_containers/multiset/operations/2.cc: Likewise.
* testsuite/23_containers/set/operations/2.cc: Likewise.
From-SVN: r230113
Jonathan Wakely [Tue, 10 Nov 2015 14:05:01 +0000 (14:05 +0000)]
Update C++17 library implementation status
* doc/xml/manual/status_cxx2017.xml: Update.
* doc/html/*: Regenerate.
From-SVN: r230108
Nathan Sidwell [Tue, 10 Nov 2015 13:51:09 +0000 (13:51 +0000)]
firstprivate-1.c: Remove inadvertent commit.
* testsuite/libgomp.oacc-c-c++-common/firstprivate-1.c: Remove
inadvertent commit.
From-SVN: r230107
Martin Liska [Tue, 10 Nov 2015 12:27:33 +0000 (13:27 +0100)]
Enhance pool allocator
* alloc-pool.h (allocate_raw): New function.
(operator new (size_t, object_allocator<T> &a)): Use the
function instead of object_allocator::allocate).
From-SVN: r230105
Ilya Enkovich [Tue, 10 Nov 2015 12:19:42 +0000 (12:19 +0000)]
sse.md (HALFMASKMODE): New attribute.
gcc/
* config/i386/sse.md (HALFMASKMODE): New attribute.
(DOUBLEMASKMODE): New attribute.
(vec_pack_trunc_qi): New.
(vec_pack_trunc_<mode>): New.
(vec_unpacks_lo_hi): New.
(vec_unpacks_lo_si): New.
(vec_unpacks_lo_di): New.
(vec_unpacks_hi_hi): New.
(vec_unpacks_hi_<mode>): New.
gcc/testsuite/
* gcc.target/i386/mask-pack.c: New test.
* gcc.target/i386/mask-unpack.c: New test.
From-SVN: r230104
Ilya Enkovich [Tue, 10 Nov 2015 12:17:30 +0000 (12:17 +0000)]
optabs.c (expand_binop_directly): Allow scalar mode for vec_pack_trunc_optab.
gcc/
* optabs.c (expand_binop_directly): Allow scalar mode for
vec_pack_trunc_optab.
* tree-vect-loop.c (vect_determine_vectorization_factor): Skip
boolean vector producers from pattern sequence when computing VF.
* tree-vect-patterns.c (vect_vect_recog_func_ptrs) Add
vect_recog_mask_conversion_pattern.
(search_type_for_mask): Choose the smallest
type if different size types are mixed.
(build_mask_conversion): New.
(vect_recog_mask_conversion_pattern): New.
(vect_pattern_recog_1): Allow scalar mode for boolean vectype.
* tree-vect-stmts.c (vectorizable_mask_load_store): Support masked
load with pattern.
(vectorizable_conversion): Support boolean vectors.
(free_stmt_vec_info): Allow patterns for statements with no lhs.
* tree-vectorizer.h (NUM_PATTERNS): Increase to 14.
From-SVN: r230103
Ilya Enkovich [Tue, 10 Nov 2015 12:15:42 +0000 (12:15 +0000)]
i386-protos.h (ix86_expand_sse_movcc): New.
gcc/
2015-11-10 Ilya Enkovich <enkovich.gnu@gmail.com>
* config/i386/i386-protos.h (ix86_expand_sse_movcc): New.
* config/i386/i386.c (ix86_expand_sse_movcc): Make public.
Cast mask to FP mode if required.
* config/i386/sse.md (vcond_mask_<mode><avx512fmaskmodelower>): New.
(vcond_mask_<mode><avx512fmaskmodelower>): New.
(vcond_mask_<mode><sseintvecmodelower>): New.
(vcond_mask_<mode><sseintvecmodelower>): New.
(vcond_mask_v2div2di): New.
(vcond_mask_<mode><sseintvecmodelower>): New.
(vcond_mask_<mode><sseintvecmodelower>): New.
From-SVN: r230102
Ilya Enkovich [Tue, 10 Nov 2015 12:14:19 +0000 (12:14 +0000)]
optabs-query.h (get_vcond_mask_icode): New.
gcc/
2015-11-10 Ilya Enkovich <enkovich.gnu@gmail.com>
* optabs-query.h (get_vcond_mask_icode): New.
* optabs-tree.c (expand_vec_cond_expr_p): Use
get_vcond_mask_icode for VEC_COND_EXPR with mask.
* optabs.c (expand_vec_cond_mask_expr): New.
(expand_vec_cond_expr): Use get_vcond_mask_icode
when possible.
* optabs.def (vcond_mask_optab): New.
* tree-vect-patterns.c (vect_recog_bool_pattern): Don't
generate redundant comparison for COND_EXPR.
* tree-vect-stmts.c (vect_is_simple_cond): Allow SSA_NAME
as a condition.
(vectorizable_condition): Likewise.
* tree-vect-slp.c (vect_get_and_check_slp_defs): Allow
cond_exp with no embedded comparison.
(vect_build_slp_tree_1): Likewise.
From-SVN: r230101
Ilya Enkovich [Tue, 10 Nov 2015 12:08:02 +0000 (12:08 +0000)]
sse.md (maskload<mode>): Rename to ...
2015-11-10 Ilya Enkovich <enkovich.gnu@gmail.com>
* config/i386/sse.md (maskload<mode>): Rename to ...
(maskload<mode><sseintvecmodelower>): ... this.
(maskstore<mode>): Rename to ...
(maskstore<mode><sseintvecmodelower>): ... this.
(maskload<mode><avx512fmaskmodelower>): New.
(maskstore<mode><avx512fmaskmodelower>): New.
From-SVN: r230100
Ilya Enkovich [Tue, 10 Nov 2015 12:06:05 +0000 (12:06 +0000)]
internal-fn.c (expand_MASK_LOAD): Adjust to maskload optab changes.
gcc/
* internal-fn.c (expand_MASK_LOAD): Adjust to maskload optab changes.
(expand_MASK_STORE): Adjust to maskstore optab changes.
* optabs-query.c (can_vec_mask_load_store_p): Add MASK_MODE arg.
Adjust to maskload, maskstore optab changes.
* optabs-query.h (can_vec_mask_load_store_p): Add MASK_MODE arg.
* optabs.def (maskload_optab): Transform into convert optab.
(maskstore_optab): Likewise.
* tree-if-conv.c (ifcvt_can_use_mask_load_store): Adjust to
can_vec_mask_load_store_p signature change.
(predicate_mem_writes): Use boolean mask.
* tree-vect-stmts.c (vectorizable_mask_load_store): Adjust to
can_vec_mask_load_store_p signature change. Allow invariant masks.
(vectorizable_operation): Ignore type precision for boolean vectors.
gcc/testsuite/
* gcc.target/i386/avx2-vec-mask-bit-not.c: New test.
From-SVN: r230099
Ilya Enkovich [Tue, 10 Nov 2015 11:57:34 +0000 (11:57 +0000)]
expr.c (do_store_flag): Use expand_vec_cmp_expr for mask results.
gcc/
* expr.c (do_store_flag): Use expand_vec_cmp_expr for mask results.
(const_vector_mask_from_tree): New.
(const_vector_from_tree): Use const_vector_mask_from_tree
for boolean vectors.
* optabs-query.h (get_vec_cmp_icode): New.
* optabs-tree.c (expand_vec_cmp_expr_p): New.
* optabs-tree.h (expand_vec_cmp_expr_p): New.
* optabs.c (vector_compare_rtx): Add OPNO arg.
(expand_vec_cond_expr): Adjust to vector_compare_rtx change.
(expand_vec_cmp_expr): New.
* optabs.def (vec_cmp_optab): New.
(vec_cmpu_optab): New.
* optabs.h (expand_vec_cmp_expr): New.
* tree-vect-generic.c (expand_vector_comparison): Add vector
comparison optabs check.
* tree-vect-loop.c (vect_determine_vectorization_factor): Ignore mask
operations for VF. Add mask type computation.
* tree-vect-stmts.c (get_mask_type_for_scalar_type): New.
(vectorizable_comparison): New.
(vect_analyze_stmt): Add vectorizable_comparison.
(vect_transform_stmt): Likewise.
(vect_init_vector): Support boolean vector invariants.
(vect_get_vec_def_for_operand): Add VECTYPE arg.
(vectorizable_condition): Directly provide vectype for invariants
used in comparison.
* tree-vectorizer.h (get_mask_type_for_scalar_type): New.
(enum vect_var_kind): Add vect_mask_var.
(enum stmt_vec_info_type): Add comparison_vec_info_type.
(vectorizable_comparison): New.
(vect_get_vec_def_for_operand): Add VECTYPE arg.
* tree-vect-data-refs.c (vect_get_new_vect_var): Support vect_mask_var.
(vect_create_destination_var): Likewise.
* tree-vect-patterns.c (check_bool_pattern): Check fails
if we can vectorize comparison directly.
(search_type_for_mask): New.
(vect_recog_bool_pattern): Support cases when bool pattern
check fails.
* tree-vect-slp.c (vect_build_slp_tree_1): Allow
comparison statements.
(vect_get_constant_vectors): Support boolean vector
constants.
* config/i386/i386-protos.h (ix86_expand_mask_vec_cmp): New.
(ix86_expand_int_vec_cmp): New.
(ix86_expand_fp_vec_cmp): New.
* config/i386/i386.c (ix86_expand_sse_cmp): Allow NULL for
op_true and op_false.
(ix86_int_cmp_code_to_pcmp_immediate): New.
(ix86_fp_cmp_code_to_pcmp_immediate): New.
(ix86_cmp_code_to_pcmp_immediate): New.
(ix86_expand_mask_vec_cmp): New.
(ix86_expand_fp_vec_cmp): New.
(ix86_expand_int_sse_cmp): New.
(ix86_expand_int_vcond): Use ix86_expand_int_sse_cmp.
(ix86_expand_int_vec_cmp): New.
(ix86_get_mask_mode): New.
(TARGET_VECTORIZE_GET_MASK_MODE): New.
* config/i386/sse.md (avx512fmaskmodelower): New.
(vec_cmp<mode><avx512fmaskmodelower>): New.
(vec_cmp<mode><sseintvecmodelower>): New.
(vec_cmpv2div2di): New.
(vec_cmpu<mode><avx512fmaskmodelower>): New.
(vec_cmpu<mode><sseintvecmodelower>): New.
(vec_cmpuv2div2di): New.
gcc/testsuite/
* gcc.dg/vect/slp-cond-5.c: New test.
From-SVN: r230098
Jonathan Wakely [Tue, 10 Nov 2015 11:12:33 +0000 (11:12 +0000)]
* include/bits/functional_hash.h: Fix grammar in comment.
From-SVN: r230097
Richard Biener [Tue, 10 Nov 2015 10:14:02 +0000 (10:14 +0000)]
re PR tree-optimization/68240 (compilation hangs on valid code at -O1 and above on x86_64-linux-gnu)
2015-11-10 Richard Biener <rguenther@suse.de>
PR tree-optimization/68240
* tree-ssa-sccvn.c (cond_stmts_equal_p): Handle commutative compares
properly.
(visit_phi): For PHIs with just a single executable edge
take its value directly.
(expressions_equal_p): Handle VN_TOP properly.
* gcc.dg/torture/pr68240.c: New testcase.
From-SVN: r230095
Richard Biener [Tue, 10 Nov 2015 10:12:13 +0000 (10:12 +0000)]
tree-vect-data-refs.c (vect_slp_analyze_node_dependences): Handle memory using/clobbering stmts without a STMT_VINFO_DATA_REF conservatively.
2015-11-10 Richard Biener <rguenther@suse.de>
* tree-vect-data-refs.c (vect_slp_analyze_node_dependences):
Handle memory using/clobbering stmts without a STMT_VINFO_DATA_REF
conservatively.
From-SVN: r230094
Richard Biener [Tue, 10 Nov 2015 09:43:54 +0000 (09:43 +0000)]
re PR tree-optimization/56118 (Piecewise vector / complex initialization from constants not combined)
2015-11-10 Richard Biener <rguenther@suse.de>
PR tree-optimization/56118
* tree-vect-slp.c (vect_bb_vectorization_profitable_p): Make equal
cost favor vectorized version.
* gcc.target/i386/pr56118.c: New testcase.
From-SVN: r230091
Kyrylo Tkachov [Tue, 10 Nov 2015 09:37:51 +0000 (09:37 +0000)]
[AArch64][2/3] Implement negcc, notcc optabs
* config/aarch64/aarch64.md (<neg_not_op><mode>cc): New define_expand.
* config/aarch64/iterators.md (NEG_NOT): New code iterator.
(neg_not_op): New code attribute.
* gcc.target/aarch64/cond_op_imm_1.c: New test.
From-SVN: r230090
Kyrylo Tkachov [Tue, 10 Nov 2015 09:35:11 +0000 (09:35 +0000)]
[optabs][ifcvt][1/3] Define negcc, notcc optabs
* ifcvt.c (noce_try_inverse_constants): New function.
(noce_process_if_block): Call it.
* optabs.h (emit_conditional_neg_or_complement): Declare prototype.
* optabs.def (negcc_optab, notcc_optab): Declare.
* optabs.c (emit_conditional_neg_or_complement): New function.
* doc/tm.texi (Standard Names): Document negcc, notcc names.
From-SVN: r230089
Kyrylo Tkachov [Tue, 10 Nov 2015 09:22:58 +0000 (09:22 +0000)]
[haifa-sched] PR rtl-optimization/68236: Exit early from autoprefetcher lookahead if not in haifa sched
PR rtl-optimization/68236
* haifa-sched.c (autopref_multipass_dfa_lookahead_guard): Return 0
if insn_queue doesn't exist.
(haifa_sched_finish): Reset insn_queue to NULL.
From-SVN: r230088
Robert Suchanek [Tue, 10 Nov 2015 09:12:52 +0000 (09:12 +0000)]
Tie chains for move instructions.
gcc/
* regrename.c (create_new_chain): Initialize renamed and tied_chain.
(build_def_use): Initialize terminated_this_insn.
(find_best_rename_reg): Pick and check register from the tied chain.
(regrename_do_replace): Mark head as renamed.
(struct du_head *terminated_this_insn). New static variable.
(scan_rtx_reg): Tie chains in move insns. Set terminated_this_insn.
* regrename.h (struct du_head): Add tied_chain, renamed members.
From-SVN: r230087
Eric Botcazou [Tue, 10 Nov 2015 09:01:58 +0000 (09:01 +0000)]
* gfortran.dg/pr68251.f90: New test.
From-SVN: r230086
Ramana Radhakrishnan [Tue, 10 Nov 2015 08:35:21 +0000 (08:35 +0000)]
Workaround PR68256 on AArch64
> This is causing a bootstrap comparison failure in gcc/go/gogo.o.
I've had a look at this and the trigger is the
aarch64_use_constant_blocks_p change which appears to be causing a
bootstrap comparison failure because of differences to offsets when
built with debug and without debug. I don't think the problem is
specifically in the backend but this needs some careful
investigation. For now, in the interest of go bootstraps continuing on
trunk - I'm proposing a patch that partially rolls back the change in
aarch64_use_constant_blocks_p and am still looking into the issue but
it will take me some more time to get to the bottom of the issue.
Bootstrapped on aarch64-none-linux-gnu including (c,c++ and go) -
testing finished ok.
2015-11-10 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
PR bootstrap/68256
* config/aarch64/aarch64.c (aarch64_use_constant_blocks_p):
Return false.
From-SVN: r230085
Cesar Philippidis [Tue, 10 Nov 2015 05:23:04 +0000 (21:23 -0800)]
parser.c (cp_finalize_oacc_routine): New boolean first argument.
gcc/cp/
* parser.c (cp_finalize_oacc_routine): New boolean first argument.
(cp_ensure_no_oacc_routine): Update call to cp_finalize_oacc_routine.
(cp_parser_simple_declaration): Maintain a boolean first to keep track
of each new declarator. Propagate it to cp_parser_init_declarator.
(cp_parser_init_declarator): New boolean first argument. Propagate it
to cp_parser_save_member_function_body and cp_finalize_oacc_routine.
(cp_parser_member_declaration): Likewise.
(cp_parser_single_declaration): Update call to
cp_parser_init_declarator.
(cp_parser_save_member_function_body): New boolean first_decl argument.
Propagate it to cp_finalize_oacc_routine.
(cp_parser_finish_oacc_routine): New boolean first argument. Use it to
determine if multiple declarators follow a routine construct.
(cp_parser_oacc_routine): Update call to cp_parser_finish_oacc_routine.
gcc/testsuite/
* c-c++-common/goacc/routine-5.c: Enable c++ tests.
From-SVN: r230082
Martin Sebor [Tue, 10 Nov 2015 02:23:34 +0000 (02:23 +0000)]
PR c++/67913 - new expression with negative size not diagnosed
PR c++/67913 - new expression with negative size not diagnosed
PR c++/67927 - array new expression with excessive number of elements
not diagnosed
gcc/cp/
* call.c (build_operator_new_call): Do not assume size_check
is non-null, analogously to the top half of the function.
* init.c (build_new_1): Detect and diagnose array sizes in
excess of the maximum of roughly SIZE_MAX / 2.
Insert a runtime check only for arrays with a non-constant size.
(build_new): Detect and diagnose negative array sizes.
gcc/testsuite/
* init/new45.C: New test to verify that operator new is invoked
with or without overhead for a cookie.
* init/new44.C: New test for placement new expressions for arrays
with excessive number of elements.
* init/new43.C: New test for placement new expressions for arrays
with negative number of elements.
* other/new-size-type.C: Expect array new expression with
an excessive number of elements to be rejected.
From-SVN: r230081
Nathan Sidwell [Tue, 10 Nov 2015 01:01:15 +0000 (01:01 +0000)]
routine-1.c: New.
gcc/testsuite/
* c-c++-common/goacc/routine-1.c: New.
* c-c++-common/goacc/routine-2.c: New.
* c-c++-common/goacc/routine-3.c: New.
* c-c++-common/goacc/routine-4.c: New.
* c-c++-common/goacc/routine-5.c: New.
libgomp/
* testsuite/libgomp.oacc-c-c++-common/firstprivate-1.c: New.
* testsuite/libgomp.oacc-c-c++-common/routine-g-1.c: New.
* testsuite/libgomp.oacc-c-c++-common/routine-gwv-1.c: New.
* testsuite/libgomp.oacc-c-c++-common/routine-v-1.c: New.
* testsuite/libgomp.oacc-c-c++-common/routine-w-1.c: New.
* testsuite/libgomp.oacc-c-c++-common/routine-wv-1.c: New.
From-SVN: r230080
Eric Botcazou [Tue, 10 Nov 2015 00:45:03 +0000 (00:45 +0000)]
re PR target/57845 (ICE with -freg-struct-return on SPARC)
PR target/57845
* config/sparc/sparc.c (sparc_function_value_1): In 32-bit mode, do
not promote the mode for aggregate types.
From-SVN: r230074
Nathan Sidwell [Tue, 10 Nov 2015 00:27:26 +0000 (00:27 +0000)]
omp-low.h (replace_oacc_fn_attrib, [...]): Declare.
* omp-low.h (replace_oacc_fn_attrib, build_oacc_routine_dims): Declare.
* omp-low.c (build_oacc_routine_dims): New.
c/
* c-parser.c (c_parser_declaration_or_fndef): Add OpenACC
routine arg.
(c_parser_declaration_or_fndef): Call c_finish_oacc_routine.
(c_parser_pragma): Parse 'acc routine'.
(OACC_ROUTINE_CLAUSE_MARK): Define.
(c_parser_oacc_routine, (c_finish_oacc_routine): New.
c-family/
* c-pragma.c (oacc_pragmas): Add "routine".
* c-pragma.h (pragma_kind): Add PRAGMA_OACC_ROUTINE.
cp/
* parser.h (struct cp_parser): Add oacc_routine field.
* parser.c (cp_ensure_no_oacc_routine): New.
(cp_parser_new): Initialize oacc_routine field.
(cp_parser_linkage_specification): Call cp_ensure_no_oacc_routine.
(cp_parser_namespace_definition,
cp_parser_class_specifier_1): Likewise.
(cp_parser_init_declarator): Call cp_finalize_oacc_routine.
(cp_parser_function_definition,
cp_parser_save_member_function_body): Likewise.
(OACC_ROUTINE_CLAUSE_MASK): New.
(cp_parser_finish_oacc_routine, cp_parser_oacc_routine,
cp_finalize_oacc_routine): New.
(cp_parser_pragma): Adjust omp_declare_simd checking. Call
cp_ensure_no_oacc_routine.
(cp_parser_pragma): Add OpenACC routine handling.
From-SVN: r230072
GCC Administrator [Tue, 10 Nov 2015 00:16:12 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r230069
Michael Meissner [Tue, 10 Nov 2015 00:04:03 +0000 (00:04 +0000)]
constraints.md (wF constraint): New constraints for power9/toc fusion.
[gcc]
2015-11-08 Michael Meissner <meissner@linux.vnet.ibm.com>
* config/rs6000/constraints.md (wF constraint): New constraints
for power9/toc fusion.
(wG constraint): Likewise.
* config/rs6000/predicates.md (u6bit_cint_operand): New
predicate, recognize 0..63.
(upper16_cint_operand): New predicate for power9 and toc fusion.
(fpr_reg_operand): Likewise.
(toc_fusion_or_p9_reg_operand): Likewise.
(toc_fusion_mem_raw): Likewise.
(toc_fusion_mem_wrapped): Likewise.
(fusion_gpr_addis): If power9 fusion, allow fusion for a larger
address range.
(fusion_gpr_mem_combo): Delete, use fusion_addis_mem_combo_load
instead.
(fusion_addis_mem_combo_load): Add support for power9 fusion of
floating point loads, floating point stores, and gpr stores.
(fusion_addis_mem_combo_store): Likewise.
(fusion_offsettable_mem_operand): Likewise.
* config/rs6000/rs6000-protos.h (emit_fusion_addis): Add
declarations.
(emit_fusion_load_store): Likewise.
(fusion_p9_p): Likewise.
(expand_fusion_p9_load): Likewise.
(expand_fusion_p9_store): Likewise.
(emit_fusion_p9_load): Likewise.
(emit_fusion_p9_store): Likewise.
(fusion_wrap_memory_address): Likewise.
* config/rs6000/rs6000.c (struct rs6000_reg_addr): Add new
elements for power9 fusion.
(rs6000_debug_print_mode): Rework debug information to print more
information about fusion.
(rs6000_init_hard_regno_mode_ok): Setup for power9 fusion
support.
(rs6000_legitimate_address_p): Recognize toc fusion as a valid
offsettable memory address.
(rs6000_rtx_costs): Update costs for new ISA 3.0 instructions.
(emit_fusion_gpr_load): Move most of the code from
emit_fusion_gpr_load into emit_fusion-addis that handles both
power8 and power9 fusion.
(emit_fusion_addis): Likewise.
(emit_fusion_load_store): Likewise.
(fusion_wrap_memory_address): Add support for TOC fusion.
(fusion_split_address): Likewise.
(fusion_p9_p): Add support for power9 fusion.
(expand_fusion_p9_load): Likewise.
(expand_fusion_p9_store): Likewise.
(emit_fusion_p9_load): Likewise.
(emit_fusion_p9_store): Likewise.
* config/rs6000/rs6000.h (TARGET_EXTSWSLI): Macros for support for
new instructions in ISA 3.0.
(TARGET_CTZ): Likewise.
(TARGET_TOC_FUSION_INT): Macros for power9 fusion support.
(TARGET_TOC_FUSION_FP): Likewise.
* config/rs6000/rs6000.md (UNSPEC_FUSION_P9): New power9/toc
fusion unspecs.
(UNSPEC_FUSION_ADDIS): Likewise.
(QHSI mode iterator): New iterator for power9 fusion.
(GPR_FUSION): Likewise.
(FPR_FUSION): Likewise.
(mod<mode>3): Add support for ISA 3.0
modulus instructions.
(umod<mode>3): Likewise.
(divmod peephole): Likewise.
(udivmod peephole): Likewise.
(ctz<mode>2): Add support for ISA 3.0 count trailing zeros scalar
instructions.
(ctz<mode>2_h): Likewise.
(ashdi3_extswsli): Add support for ISA 3.0 EXTSWSLI instruction.
(ashdi3_extswsli_dot): Likewise.
(ashdi3_extswsli_dot2): Likewise.
(power9 fusion splitter): New power9/toc fusion support.
(toc_fusionload_<mode>): Likewise.
(toc_fusionload_di): Likewise.
(fusion_gpr_load_<mode>): Update predicate function.
(power9 fusion peephole2s): New power9/toc fusion support.
(fusion_gpr_<P:mode>_<GPR_FUSION:mode>_load): Likewise.
(fusion_gpr_<P:mode>_<GPR_FUSION:mode>_store): Likewise.
(fusion_fpr_<P:mode>_<FPR_FUSION:mode>_load): Likewise.
(fusion_fpr_<P:mode>_<FPR_FUSION:mode>_store): Likewise.
(fusion_p9_<mode>_constant): Likewise.
[gcc/testsuite]
2015-11-08 Michael Meissner <meissner@linux.vnet.ibm.com>
* lib/target-supports.exp (check_p8vector_hw_available): Split
long line.
(check_vsx_hw_available): Likewise.
(check_p9vector_hw_available): Add new checks for ISA 3.0 hardware
support and for PowerPC float128 support.
(check_p9modulo_hw_available): Likewise.
(check_ppc_float128_sw_available): Likewise.
(check_ppc_float128_hw_available): Likewise.
(check_effective_target_powerpc_p9vector_ok): Likewise.
(check_effective_target_powerpc_p9modulo_ok): Likewise.
(check_effective_target_powerpc_float128_sw_ok): Likewise.
(check_effective_target_powerpc_float128_hw_ok): Likewise.
(is-effective-target): Add new PowerPc targets.
(is-effective-target-keyword): Likewise.
(check_vect_support_and_set_flags): If we have ISA 3.0 vector
instructions, use it.
* gcc.target/powerpc/mod-1.c: New test for ISA 3.0 instructions.
* gcc.target/powerpc/mod-2.c: Likewise.
* gcc.target/powerpc/ctz-1.c: Likewise.
* gcc.target/powerpc/ctz-2.c: Likewise.
* gcc.target/powerpc/extswsli-1.c: Likewise.
* gcc.target/powerpc/extswsli-2.c: Likewise.
* gcc.target/powerpc/extswsli-3.c: Likewise.
* gcc.target/powerpc/fusion.c (fusion_vector): Move to fusion2.c
and allow the test on PowerPC LE.
* gcc.target/powerpc/fusion2.c (fusion_vector): Likewise.
* gcc.target/powerpc/fusion3.c: New file, test power9 fusion.
* gcc.target/powerpc/float128-call.c: Use powerpc_float128_sw_ok
check instead of powerpc_vsx_ok.
* gcc.target/powerpc/float128-mix.c: Likewise.
From-SVN: r230066
Steve Ellcey [Mon, 9 Nov 2015 23:56:33 +0000 (23:56 +0000)]
optabs.c (prepare_libcall_arg): New function.
2015-11-09 Steve Ellcey <sellcey@imgtec.com>
* optabs.c (prepare_libcall_arg): New function.
(expand_fixed_convert): Add call to prepare_libcall_arg.
From-SVN: r230065
Eric Botcazou [Mon, 9 Nov 2015 23:32:48 +0000 (23:32 +0000)]
* gcc.dg/sso/*.c: Robustify dg-output directives.
From-SVN: r230063
Nikolai Bozhenov [Mon, 9 Nov 2015 23:29:36 +0000 (23:29 +0000)]
[sched] Dump dependency graph to a dot file
* sched-int.h (dump_rgn_dependencies_dot): Declare
* sched-rgn.c (dump_rgn_dependencies_dot): New function
* print-rtl.h (print_insn): Add prototype
From-SVN: r230062
Nikolai Bozhenov [Mon, 9 Nov 2015 23:26:15 +0000 (23:26 +0000)]
Change behavior of -fsched-verbose option
* haifa-sched.c (setup_sched_dump): Don't redirect output to stderr.
* common.opt (-fsched-verbose): Set default value to 1.
* invoke.texi (-fsched-verbose): Update the option's description.
From-SVN: r230061
Eric Botcazou [Mon, 9 Nov 2015 22:53:31 +0000 (22:53 +0000)]
visium.h (PRINT_OPERAND): Delete.
* config/visium/visium.h (PRINT_OPERAND): Delete.
(PRINT_OPERAND_PUNCT_VALID_P): Likewise.
(PRINT_OPERAND_ADDRESS): Likewise.
* config/visium/visium.c (TARGET_PRINT_OPERAND_PUNCT_VALID_P): Define
to...
(visium_print_operand_punct_valid_p): ...this. New function.
(TARGET_PRINT_OPERAND): Define to...
(print_operand): Rename to...
(visium_print_operand): ...this.
(TARGET_PRINT_OPERAND_ADDRESS): Define to...
(visium_output_address): Rename to...
(visium_print_operand_address): ...this.
(print_operand_address): Delete.
From-SVN: r230060
Eric Botcazou [Mon, 9 Nov 2015 22:40:44 +0000 (22:40 +0000)]
re PR middle-end/68259 ([sso] tree checking failure in reverse_storage_order_for_component_p, at tree.h:4392)
PR middle-end/68259
* tree.h (reverse_storage_order_for_component_p) <COMPONENT_REF>:
Check that the type of the first operand is an aggregate type.
From-SVN: r230056
Nathan Sidwell [Mon, 9 Nov 2015 21:56:42 +0000 (21:56 +0000)]
omp-low.c: Fix some OpenACC comment typos.
* omp-low.c: Fix some OpenACC comment typos.
(lower_reduction_clauses): Remove BUILT_IN_GOACC_GET_THREAD_NUM call.
* omp-builtins.def (BUILT_IN_GOACC_GET_THREAD_NUM,
BUILT_IN_GOACC_GET_NUM_THREADS): Delete.
From-SVN: r230054
François Dumont [Mon, 9 Nov 2015 21:10:18 +0000 (21:10 +0000)]
2015-11-09 François Dumont <fdumont@gcc.gnu.org>
* include/bits/stl_algo.h
(partial_sort_copy): Instantiate std::iterator_traits only if concept
checks.
(lower_bound): Likewise.
(upper_bound): Likewise.
(equal_range): Likewise.
(binary_search): Likewise.
* include/bits/stl_heap.h (pop_heap): Likewise.
From-SVN: r230052
Uros Bizjak [Mon, 9 Nov 2015 20:06:57 +0000 (21:06 +0100)]
i386.md (*strmovqi_1): Fix insn enable condition.
* config/i386/i386.md (*strmovqi_1): Fix insn enable condition.
From-SVN: r230050
Jeff Law [Mon, 9 Nov 2015 19:56:57 +0000 (12:56 -0700)]
Re: [PATCH] Minor refactoring in tree-ssanames.c & freelists verifier
* tree-ssanames.c (verify_ssaname_freelists): Simplify check for
being in gimple/ssa form. Remove redundant check for SSA_NAME.
Fix comment typo.
From-SVN: r230049
Uros Bizjak [Mon, 9 Nov 2015 19:49:44 +0000 (20:49 +0100)]
pr66326.cc: Do not include cilk.h.
* g++.dg/cilk-plus/CK/pr66326.cc: Do not include cilk.h.
(main): Use _Cilk_spawn instead of cilk_spawn.
From-SVN: r230048
Thomas Schwinge [Mon, 9 Nov 2015 17:53:02 +0000 (18:53 +0100)]
Resolve DejaGnu hard stop
gcc/testsuite/
* gcc.target/i386/addr-space-3.c: Fix quoting in dg-final
scan-assembler directive.
From-SVN: r230038
Torvald Riegel [Mon, 9 Nov 2015 17:30:24 +0000 (17:30 +0000)]
Support sized delete.
This adds transactional clones of the sized version of operator delete.
From-SVN: r230036
Michael Meissner [Mon, 9 Nov 2015 16:56:22 +0000 (16:56 +0000)]
rs6000.opt (-mpower9-fusion): Add new switches for ISA 3.0 (power9).
2015-11-09 Michael Meissner <meissner@linux.vnet.ibm.com>
* config/rs6000/rs6000.opt (-mpower9-fusion): Add new switches for
ISA 3.0 (power9).
(-mpower9-vector): Likewise.
(-mpower9-dform): Likewise.
(-mpower9-minmax): Likewise.
(-mtoc-fusion): Likewise.
(-mmodulo): Likewise.
(-mfloat128-hardware): Likewise.
* config/rs6000/rs6000-cpus.def (ISA_3_0_MASKS_SERVER): Add option
mask for ISA 3.0 (power9).
(POWERPC_MASKS): Add new ISA 3.0 switches.
(power9 cpu): Add power9 cpu.
* config/rs6000/rs6000.h (ASM_CPU_POWER9_SPEC): Add support for
power9.
(ASM_CPU_SPEC): Likewise.
(EXTRA_SPECS): Likewise.
* config/rs6000/rs6000-opts.h (enum processor_type): Add
PROCESSOR_POWER9.
* config/rs6000/rs6000.c (power9_cost): Initial cost setup for
power9.
(rs6000_debug_reg_global): Add support for power9 fusion.
(rs6000_setup_reg_addr_masks): Cache mode size.
(rs6000_option_override_internal): Until real power9 tuning is
added, use -mtune=power8 for -mcpu=power9.
(rs6000_setup_reg_addr_masks): Do not allow pre-increment,
pre-decrement, or pre-modify on SFmode/DFmode if we allow the use
of Altivec registers.
(rs6000_option_override_internal): Add support for ISA 3.0
switches.
(rs6000_loop_align): Add support for power9 cpu.
(rs6000_file_start): Likewise.
(rs6000_adjust_cost): Likewise.
(rs6000_issue_rate): Likewise.
(insn_must_be_first_in_group): Likewise.
(insn_must_be_last_in_group): Likewise.
(force_new_group): Likewise.
(rs6000_register_move_cost): Likewise.
(rs6000_opt_masks): Likewise.
* config/rs6000/rs6000.md (cpu attribute): Add power9.
* config/rs6000/rs6000-tables.opt: Regenerate.
* config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Define
_ARCH_PWR9 if power9 support is available.
* config/rs6000/aix61.h (ASM_CPU_SPEC): Add power9.
* config/rs6000/aix53.h (ASM_CPU_SPEC): Likewise.
* configure.ac: Determine if the assembler supports the ISA 3.0
instructions.
* config.in (HAVE_AS_POWER9): Likewise.
* configure: Regenerate.
* doc/invoke.texi (RS/6000 and PowerPC Options): Document ISA 3.0
switches.
From-SVN: r230031
Kyrylo Tkachov [Mon, 9 Nov 2015 15:55:56 +0000 (15:55 +0000)]
[AArch64][cleanup] Remove uses of CONST_DOUBLE_HIGH, CONST_DOUBLE_LOW
* config/aarch64/aarch64.c (aarch64_simd_valid_immediate):
Remove integer CONST_DOUBLE handling. It should never occur.
From-SVN: r230030
Kyrylo Tkachov [Mon, 9 Nov 2015 15:53:26 +0000 (15:53 +0000)]
[AArch64] PR target/68129: Define TARGET_SUPPORTS_WIDE_INT
PR target/68129
* config/aarch64/aarch64.h (TARGET_SUPPORTS_WIDE_INT): Define to 1.
* config/aarch64/aarch64.c (aarch64_print_operand, CONST_DOUBLE):
Delete VOIDmode case. Assert that mode is not VOIDmode.
* config/aarch64/predicates.md (const0_operand): Remove const_double
match.
* gcc.dg/pr68129_1.c: New test.
From-SVN: r230029
Martin Liska [Mon, 9 Nov 2015 15:47:01 +0000 (16:47 +0100)]
Fix memory leaks in IPA.
* ipa-inline-analysis.c (estimate_function_body_sizes): Call
body_info release function.
* ipa-prop.c (ipa_release_body_info): New function.
(ipa_analyze_node): Call the function.
(ipa_node_params::~ipa_node_params): Release known_csts.
* ipa-prop.h (ipa_release_body_info): Declare.
From-SVN: r230028
Martin Liska [Mon, 9 Nov 2015 15:45:59 +0000 (16:45 +0100)]
Fix memory leaks and use a pool_allocator
* gcc.c (record_temp_file): Release name string.
* ifcvt.c (noce_convert_multiple_sets): Use auto_vec instead
of vec.
* lra-lives.c (free_live_range_list): Utilize
lra_live_range_pool for allocation and deallocation.
(create_live_range): Likewise.
(copy_live_range): Likewise.
(lra_merge_live_ranges): Likewise.
(remove_some_program_points_and_update_live_ranges): Likewise.
(lra_create_live_ranges_1): Release point_freq_vec that can
be not freed from previous iteration of the function.
* tree-eh.c (lower_try_finally_switch): Use auto_vec instead of
vec.
* tree-sra.c (sra_deinitialize): Release all vectors in
base_access_vec.
* tree-ssa-dom.c (free_dom_edge_info): Make the function extern.
* tree-ssa-threadupdate.c (remove_ctrl_stmt_and_useless_edges):
Release edge_info for a removed edge.
(thread_through_all_blocks): Free region vector.
* tree-ssa.h (free_dom_edge_info): Declare function extern.
From-SVN: r230027
Andreas Arnez [Mon, 9 Nov 2015 15:35:10 +0000 (15:35 +0000)]
[PR debug/67192] Further fix C loops' back-jump location
gcc/c/ChangeLog:
PR debug/67192
* c-typeck.c (c_finish_loop): For unconditional loops, set the
location of the backward-goto to the start of the loop body.
gcc/testsuite/ChangeLog:
PR debug/67192
* gcc.dg/guality/pr67192.c (f3, f4): New functions.
(main): Invoke them.
From-SVN: r230024
Andreas Arnez [Mon, 9 Nov 2015 15:31:32 +0000 (15:31 +0000)]
[PR debug/67192] Fix C loops' back-jump location
gcc/c/ChangeLog:
PR debug/67192
* c-parser.c (c_parser_while_statement): Finish the loop before
parsing ahead for misleading indentation.
(c_parser_for_statement): Likewise.
gcc/testsuite/ChangeLog:
PR debug/67192
* gcc.dg/guality/pr67192.c: New test.
From-SVN: r230023
Ilya Enkovich [Mon, 9 Nov 2015 15:11:02 +0000 (15:11 +0000)]
optabs.c (expand_vec_cond_expr): Always get sign from type.
gcc/
* optabs.c (expand_vec_cond_expr): Always get sign from type.
* tree.c (wide_int_to_tree): Support negative values for boolean.
(build_nonstandard_boolean_type): Use signed type for booleans.
From-SVN: r230022
Richard Biener [Mon, 9 Nov 2015 14:47:09 +0000 (14:47 +0000)]
re PR tree-optimization/68248 (ICE on valid code at -O3 on x86_64-linux-gnu in uniform_vector_p, at tree.c:10807)
2015-11-09 Richard Biener <rguenther@suse.de>
PR tree-optimization/68248
* tree-vect-generic.c (expand_vector_operations_1): Handle
scalar rhs2.
* gcc.dg/torture/pr68248.c: New testcase.
From-SVN: r230021
Richard Biener [Mon, 9 Nov 2015 12:59:17 +0000 (12:59 +0000)]
re PR tree-optimization/56118 (Piecewise vector / complex initialization from constants not combined)
2015-11-09 Richard Biener <rguenther@suse.de>
PR tree-optimization/56118
* tree-vectorizer.h (vect_find_last_scalar_stmt_in_slp): Declare.
* tree-vect-slp.c (vect_find_last_scalar_stmt_in_slp): Export.
* tree-vect-data-refs.c (vect_slp_analyze_node_dependences): New
function.
(vect_slp_analyze_data_ref_dependences): Instead of computing
all dependences of the region DRs just analyze the code motions
SLP vectorization will perform. Remove SLP instances that
cannot have their store/load motions applied.
(vect_analyze_data_refs): Allow DRs without a vectype
in BB vectorization.
* gcc.dg/vect/no-tree-sra-bb-slp-pr50730.c: Adjust.
From-SVN: r230020
Julian Brown [Mon, 9 Nov 2015 12:16:55 +0000 (12:16 +0000)]
Machine modes for address printing.
* final.c (output_asm_insn): Pass VOIDmode to output_address.
(output_address): Add MODE argument. Pass to print_operand_address
hook.
* targhooks.c (default_print_operand_address): Add MODE argument.
* targhooks.h (default_print_operand_address): Update prototype.
* output.h (output_address): Update prototype.
* target.def (print_operand_address): Add MODE argument.
* config/vax/vax.c (print_operand_address): Pass VOIDmode to
output_address.
(print_operand): Pass access mode to output_address.
* config/mcore/mcore.c (mcore_print_operand_address): Add MODE
argument.
(mcore_print_operand): Update calls to mcore_print_operand_address.
* config/fr30/fr30.c (fr30_print_operand): Pass VOIDmode to
output_address.
* config/lm32/lm32.c (lm32_print_operand): Pass mode in calls to
output_address.
* config/tilegx/tilegx.c (output_memory_reference_mode): Remove
global.
(tilegx_print_operand): Don't set above global. Update calls to
output_address.
(tilegx_print_operand_address): Add MODE argument. Use instead of
output_memory_reference_mode global.
* config/frv/frv.c (frv_print_operand_address): Add MODE argument.
(frv_print_operand): Pass mode to frv_print_operand_address calls.
* config/mn10300/mn10300.c (mn10300_print_operand): Pass mode to
output_address.
* config/cris/cris.c (cris_print_operand_address): Add MODE
argument.
(cris_print_operand): Pass mode to output_address calls.
* config/spu/spu.c (print_operand): Pass mode to output_address
calls.
* config/aarch64/aarch64.h (aarch64_print_operand)
(aarch64_print_operand_address): Remove prototypes.
* config/aarch64/aarch64.c (aarch64_memory_reference_mode): Delete
global.
(aarch64_print_operand): Make static. Update calls to
output_address.
(aarch64_print_operand_address): Add MODE argument. Use instead of
aarch64_memory_reference_mode global.
(TARGET_PRINT_OPERAND, TARGET_PRINT_OPERAND_ADDRESS): Define target
hooks.
* config/aarch64/aarch64.h (PRINT_OPERAND, PRINT_OPERAND_ADDRESS):
Delete macro definitions.
* config/pa/pa.c (pa_print_operand): Pass mode in output_address
calls.
* config/xtensa/xtensa.c (print_operand): Pass mode in
output_address calls.
* config/h8300/h8300.c (h8300_print_operand_address): Add MODE
argument.
(h83000_print_operand): Update calls to h8300_print_operand_address
and output_address.
* config/ia64/ia64.c (ia64_print_operand_address): Add MODE
argument.
* config/tilepro/tilepro.c (output_memory_reference_mode): Delete
global.
(tilepro_print_operand): Pass mode to output_address.
(tilepro_print_operand_address): Add MODE argument. Use instead of
output_memory_reference_mode.
* config/nvptx/nvptx.c (output_decl_chunk, nvptx_assemble_integer)
(nvptx_output_call_insn, nvptx_print_address_operand): Pass VOIDmode
to output_address calls.
(nvptx_print_operand_address): Add MODE argument.
* config/alpha/alpha.c (print_operand): Pass mode argument in
output_address calls.
* config/m68k/m68k.c (print_operand): Pass mode argument in
output_address call.
* config/avr/avr.c (avr_print_operand_address): Add MODE argument.
(avr_print_operand): Update calls to avr_print_operand_address.
* config/sparc/sparc.c (sparc_print_operand_address): Add MODE
argument. Update calls to output_address.
(sparc_print_operand): Pass mode to output_address.
* config/iq2000/iq2000.c (iq2000_print_operand_address): Add MODE
argument.
(iq2000_print_operand): Pass mode in output_address calls.
* config/stormy16/stormy16.c (xstormy16_print_operand_address): Add
MODE argument.
(xstormy16_print_operand): Pass mode to
xstormy16_print_operand_address calls.
* config/mips/mips.c (mips_print_operand): Update calls to
output_address.
(mips_print_operand_address): Add MODE argument.
* config/epiphany/epiphany.c (epiphany_print_operand): Update calls
to output_address.
(epiphany_print_operand_address): Add MODE argument. Add FIXME note.
* config/pdp11/pdp11.c (pdp11_asm_print_operand): Update call to
output_address.
* config/rx/rx.c (rx_print_operand_address): Add MODE argument.
(rx_print_operand): Update calls to output_address,
rx_print_operand_address.
* config/nds32/nds32.c (nds32_print_operand): Update calls to
output_address.
(nds32_print_operand_address): Add MODE argument.
* config/rs6000/rs6000.c (print_operand): Pass mem mode to
output_address calls.
* config/c6x/c6x.c (print_address_offset): Pass mem mode to
output_address call.
(c6x_print_address_operand): Update calls to output_address.
(c6x_print_operand_address): Pass mode to above.
* config/v850/v850.c (v850_print_operand_address): Add MODE
argument.
(v850_print_operand): Pass mode to v850_print_operand_address,
output_address.
* config/mmix/mmix.c (mmix_print_operand_address): Add MODE
argument.
(mmix_print_operand): Pass mode in output_address calls.
* config/sh/sh.c (sh_print_operand_address): Add MODE argument.
(sh_print_operand): Pass mem mode to output_address,
sh_print_operand_address.
* config/cr16/cr16.c (cr16_print_operand_address): Add MODE
argument.
(cr16_print_operand): Pass mode to output_address,
cr16_print_operand_address.
* config/bfin/bfin.c (print_address_operand): Pass VOIDmode to
output_address.
* config/microblaze/microblaze.c (print_operand): Pass mode to
output_address.
* config/nios2/nios2.c (nios2_print_operand): Pass VOIDmode to
output_address.
(nios2_print_operand_address): Add MODE argument. Update call to
nios2_print_operand_address.
* config/s390/s390.c (print_operand): Pass mode to output_address.
* config/m32c/m32c.c (m32c_print_operand_address): Add MODE
argument.
* config/arc/arc.c (arc_print_operand): Pass VOIDmode to
output_address.
* config/arm/arm.c (arm_print_operand_address): Add MODE argument.
Use instead of output_memory_reference_mode.
(output_memory_reference_mode): Delete global.
(arm_print_operand): Pass mem mode to output_address.
* config/m32r/m32r.c (m32r_print_operand_address): Add MODE
argument.
(m32r_print_operand): Pass mode to output_address.
* config/msp430/msp430.c (msp430_print_operand_addr): Add MODE
argument.
(msp430_print_operand): Pass mode to msp430_print_operand_addr.
* config/i386/i386.c (ix86_print_operand): Pass mode to
output_address calls.
(ix86_print_operand_address): Add MODE argument.
From-SVN: r230016
Eric Botcazou [Mon, 9 Nov 2015 12:14:07 +0000 (12:14 +0000)]
re PR middle-end/68251 (sorry, unimplemented: reverse storage order for BLKmode)
PR middle-end/68251
* tree-core.h (REF_REVERSE_STORAGE_ORDER): Move around.
* tree.h (REF_REVERSE_STORAGE_ORDER): Change to default_def_flag.
* tree-streamer-in.c (unpack_ts_base_value_fields): Adjust.
* tree-streamer-out.c (pack_ts_base_value_fields): Likewise.
From-SVN: r230015
Kyrylo Tkachov [Mon, 9 Nov 2015 11:40:17 +0000 (11:40 +0000)]
[RTL-ifcvt] PR rtl-optimization/67749: Do not emit separate SET insn in IF-ELSE case
PR rtl-optimization/67749
* ifcvt.c (noce_try_cmove_arith): Do not emit move in IF-ELSE
case before emitting the two blocks. Instead modify the register
in the corresponding final insn of the basic block.
From-SVN: r230014
Rainer Orth [Mon, 9 Nov 2015 11:33:30 +0000 (11:33 +0000)]
Support init priority on Solaris
libgcc:
* config/ia64/crtbegin.S: Check HAVE_INITFINI_ARRAY_SUPPORT
value.
* config/ia64/crtend.S: Likewise.
gcc:
* acinclude.m4 (gcc_AC_INITFINI_ARRAY): Allow for differences in
assembler syntax.
Support Solaris ld.
Define HAVE_INITFINI_ARRAY_SUPPORT as 0/1.
* config/sol2.h (SUPPORTS_INIT_PRIORITY): Define to
HAVE_INITFINI_ARRAY_SUPPORT.
* config/initfini-array.h: Check HAVE_INITFINI_ARRAY_SUPPORT
value.
* configure.ac (gcc_cv_as_sparc_nobits): Remove.
* config/sparc/sparc.c (sparc_solaris_elf_asm_named_section):
Don't check HAVE_AS_SPARC_NOBITS.
Heed SECTION_NOTYPE.
* configure: Regenerate.
* config.in: Regenerate.
From-SVN: r230013
Eric Botcazou [Mon, 9 Nov 2015 10:45:00 +0000 (10:45 +0000)]
re PR middle-end/68253 (conditional jump or move depends on uninitialized value in fold-const.c:5587)
PR middle-end/68253
* fold-const.c (fold_truth_andor_1): Initialize new variables to 0.
From-SVN: r230011
Thomas Preud'homme [Mon, 9 Nov 2015 10:29:06 +0000 (10:29 +0000)]
thumb2-slow-flash-data.c: Add missing typespec for labelref and check use of constant pool by looking for...
2015-11-09 Thomas Preud'homme <thomas.preudhomme@arm.com>
gcc/
* gcc.target/arm/thumb2-slow-flash-data.c: Add missing typespec for
labelref and check use of constant pool by looking for .word and
similar directives.
From-SVN: r230010
Igor Zamyatin [Mon, 9 Nov 2015 10:12:34 +0000 (10:12 +0000)]
re PR target/66326 (Floating point exception with -mfpmath=387 and -fcilkplus.)
libcilkrts/
2015-11-09 Igor Zamyatin <igor.zamyatin@intel.com>
PR target/66326
* runtime/config/x86/os-unix-sysdep.c (sysdep_save_fp_ctrl_state):
Use fnstcw instead fnstsw.
gcc/testsuite
2015-11-09 Igor Zamyatin <igor.zamyatin@intel.com>
PR target/66326
* g++.dg/cilk-plus/CK/pr66326.cc: New test.
From-SVN: r230008
Richard Henderson [Mon, 9 Nov 2015 09:20:21 +0000 (01:20 -0800)]
i386: Add address spaces for fs/gs segments and tls
* config/i386/i386-c.c (ix86_target_macros): Define __SEG_FS,
__SEG_GS, __SEG_TLS.
(ix86_register_pragmas): Register address spaces __seg_fs,
__seg_gs, __seg_tls.
* config/i386/i386-protos.h (enum ix86_address_seg): Remove.
(ADDR_SPACE_SEG_FS, ADDR_SPACE_SEG_GS, ADDR_SPACE_SEG_TLS): New.
(struct ix86_address): Use addr_space_t instead of ix86_address_seg.
* config/i386/i386.c (ix86_decompose_address): Likewise.
(ix86_legitimate_address_p): Likewise.
(memory_address_length): Likewise. Check mem address space too.
(ix86_print_operand): Use ix86_print_operand_address_as.
(ix86_print_operand_address_as): Rename from
ix86_print_operand_address, add new addr_space_t parameter.
Validate that either the parameter or the ix86_address segment
is default address space. Handle ADDR_SPACE_SEG_TLS.
(ix86_print_operand_address): New.
(ix86_addr_space_subset_p, TARGET_ADDR_SPACE_SUBSET_P): New.
(ix86_addr_space_convert, TARGET_ADDR_SPACE_CONVERT): New.
(ix86_addr_space_debug, TARGET_ADDR_SPACE_DEBUG): New.
(ix86_addr_space_zero_address_valid): New.
(TARGET_ADDR_SPACE_ZERO_ADDRESS_VALID): New.
* config/i386/i386.h (DEFAULT_TLS_SEG_REG): Use addr_space_t constants.
* config/i386/rdos.h (DEFAULT_TLS_SEG_REG): Likewise.
* config/i386/predicates.md (address_no_seg_operand): Likewise.
(vsib_address_operand): Likewise.
(address_mpx_no_base_operand): Likewise.
(address_mpx_no_index_operand): Likewise.
* doc/extend.texi (x86 Named Address Spaces): New section.
* gcc.target/i386/addr-space-1.c: New test.
* gcc.target/i386/addr-space-2.c: New test.
* gcc.target/i386/addr-space-3.c: New test.
From-SVN: r230003
Richard Henderson [Mon, 9 Nov 2015 09:19:59 +0000 (01:19 -0800)]
i386: Disallow address spaces with string insns
While cmps and movs allow a segment override of the ds:esi
source, the es:edi source/destination cannot be overriden.
Simplify things in the backend for now by disallowing
segments for string insns entirely.
* config/i386/i386.c (ix86_check_no_addr_space): New.
(decide_alg): Add have_as parameter.
(alg_usable_p): Likewise; disable rep algorithms if set.
(ix86_expand_set_or_movmem): Notice if either MEM has a
non-default address space.
(ix86_expand_strlen): Likewise.
* config/i386/i386.md (strmov, strset): Likewise.
(*strmovdi_rex_1): Use ix86_check_no_addr_space.
(*strmovsi_1, *strmovqi_1, *rep_movdi_rex64, *rep_movsi, *rep_movqi,
*strsetdi_rex_1, *strsetsi_1, *strsethi_1, *strsetqi_1,
*rep_stosdi_rex64, *rep_stossi, *rep_stosqi, *cmpstrnqi_nz_1,
*cmpstrnqi_1, *strlenqi_1): Likewise.
From-SVN: r230002
Richard Henderson [Mon, 9 Nov 2015 09:19:40 +0000 (01:19 -0800)]
i386: Handle address spaces in movabs patterns
* config/i386/i386.md (*movabs<mode>_1): Print the full memory rtx.
(*movabs<mode>_2): Likewise.
From-SVN: r230001
Richard Henderson [Mon, 9 Nov 2015 09:19:19 +0000 (01:19 -0800)]
Add hook for modifying debug info for address spaces
* dwarf2out.c (modified_type_die): Pass the address space number
through TARGET_ADDR_SPACE_DEBUG to produce the dwarf address class.
* target.def (TARGET_ADDR_SPACE_DEBUG): New.
* targhooks.c (default_addr_space_debug): New.
* targhooks.h (default_addr_space_debug): Declare.
* doc/tm.texi.in (TARGET_ADDR_SPACE_DEBUG): Mark it.
* doc/tm.texi: Rebuild.
From-SVN: r230000
Richard Henderson [Mon, 9 Nov 2015 09:18:59 +0000 (01:18 -0800)]
Add TARGET_ADDR_SPACE_ZERO_ADDRESS_VALID
* gimple.c (check_loadstore): Return false when 0 is a valid address.
* fold-const.c (const_unop) [ADDR_SPACE_CONVERT_EXPR]: Do not fold
null when 0 is valid in the source address space.
* target.def (TARGET_ADDR_SPACE_ZERO_ADDRESS_VALID): New.
* targhooks.c (default_addr_space_zero_address_valid): New.
* targhooks.h (default_addr_space_zero_address_valid): Declare.
* doc/tm.texi.in (TARGET_ADDR_SPACE_ZERO_ADDRESS_VALID): Mark it.
* doc/tm.texi: Rebuild.
From-SVN: r229999
Richard Henderson [Mon, 9 Nov 2015 09:18:35 +0000 (01:18 -0800)]
Avoid CSE of MEMs in different address spaces
* cselib.c (add_mem_for_addr): Compare address spaces when
matching memories.
(cselib_lookup_mem): Likewise.
* fold-const.c (operand_equal_p): Check address spaces of
pointer types before checking integer constants.
From-SVN: r229998
Richard Henderson [Mon, 9 Nov 2015 09:18:16 +0000 (01:18 -0800)]
re PR tree-optimization/66768 (address space gets lost on literal pointer)
PR tree-opt/66768
* tree-ssa-address.c (create_mem_ref_raw): Use a pointer of
the correct type for the base.
From-SVN: r229997
Jeff Law [Mon, 9 Nov 2015 09:02:27 +0000 (02:02 -0700)]
[PATCH] Minor refactoring in tree-ssanames.c & freelists verifier
[PATCH] Minor refactoring in tree-ssanames.c & freelists verifier
* tree-into-ssa.c (names_to_release): No longer static.
* tree-into-ssa.h (names_to_release): Declare.
* tree-ssanames.c (verify_ssaname_freelists): New debug function.
(release_free_names_and_compact_live_names): New function extracted
from pass_release_ssa_names::execute.
(pass_release_ssa_names::execute): Use it.
Co-Authored-By: Nathan Sidwell <nathan@acm.org>
From-SVN: r229995
Steven G. Kargl [Mon, 9 Nov 2015 05:50:24 +0000 (05:50 +0000)]
re PR fortran/68053 (lower bound of implied shape array restricted too much)
2015-11-08 Steven g. Kargl <kargl@gcc.gnu.org>
PR fortran/68053
* decl.c (add_init_expr_to_sym): Try to reduce initialization expression
before testing for a constant value.
2015-11-08 Steven g. Kargl <kargl@gcc.gnu.org>
PR fortran/68053
* gfortran.dg/pr68053.f90: New test.
From-SVN: r229992
Alan Modra [Mon, 9 Nov 2015 04:54:15 +0000 (15:24 +1030)]
Configury changes for obstack optimization
Missed from last patch
* config.in: Regenerate.
From-SVN: r229991
Alan Modra [Mon, 9 Nov 2015 04:32:08 +0000 (15:02 +1030)]
Configury changes for obstack optimization
* configure.ac: Check size of size_t.
* configure: Regenerate.
From-SVN: r229990
Alan Modra [Mon, 9 Nov 2015 04:30:26 +0000 (15:00 +1030)]
Silence obstack.c -Wc++compat warning
* obstack.c (_obstack_newchunk): Silence -Wc++compat warning.
(_obstack_begin_worker): Likewise. Move assignment to h->chunk
after alloc failure check.
From-SVN: r229989
Alan Modra [Mon, 9 Nov 2015 04:28:21 +0000 (14:58 +1030)]
Modify obstack.[hc] to avoid having to include other gnulib files
Using the standard gnulib obstack source requires importing quite a
lot of other files from gnulib, and requires build changes.
include/
* obstack.h (__attribute_pure__): Expand _GL_ATTRIBUTE_PURE.
libiberty/
* obstack.c (__alignof__): Expand alignof_type from alignof.h.
(obstack_exit_failure): Don't use exitfail.h.
(_): Include libintl.h when HAVE_LIBINTL_H and nls enabled.
Provide default. Don't include gettext.h.
(_Noreturn): Define.
* obstacks.texi: Adjust node references to external libc info files.
From-SVN: r229988
Alan Modra [Mon, 9 Nov 2015 04:26:32 +0000 (14:56 +1030)]
Copy gnulib obstack files
This copies obstack.[ch] from gnulib, and updates the docs. The next
patch should be applied if someone repeats the import at a later date.
include/
* obstack.h: Import current gnulib file.
libiberty/
* obstack.c: Import current gnulib file.
* obstacks.texi: Updated doc, from glibc's manual/memory.texi.
From-SVN: r229987