]> git.ipfire.org Git - thirdparty/gcc.git/log
thirdparty/gcc.git
6 years ago[PATCH][GCC] Make DR_TARGET_ALIGNMENT compile time variable
avieira [Tue, 13 Nov 2018 14:11:46 +0000 (14:11 +0000)] 
[PATCH][GCC] Make DR_TARGET_ALIGNMENT compile time variable

This patch enables targets to describe DR_TARGET_ALIGNMENT as a compile-time
variable.  It does so by turning the variable into a 'poly_uint64'.

gcc/ChangeLog:
2018-11-13  Andre Vieira  <andre.simoesdiasvieira@arm.com>

* config/aarch64/aarch64.c
(aarch64_vectorize_preferred_vector_alignment): Change return type to
poly_uint64.
(aarch64_simd_vector_alignment_reachable): Adapt to preferred vector
alignment being a poly int.
* doc/tm.texi (TARGET_VECTORIZE_PREFERRED_VECTOR_ALIGNMENT): Change
return type to poly_uint64.
* target.def (default_preferred_vector_alignment): Likewise.
* targhooks.c (default_preferred_vector_alignment): Likewise.
* targhooks.h (default_preferred_vector_alignment): Likewise.
* tree-vect-data-refs.c (vect_calculate_target_alignment): Likewise.
(vect_compute_data_ref_alignment): Adapt to vector alignment being a
poly int.
(vect_update_misalignment_for_peel): Likewise.
(vect_enhance_data_refs_alignment): Likewise.
(vect_find_same_alignment_drs): Likewise.
(vect_duplicate_ssa_name_ptr_info): Likewise.
(vect_setup_realignment): Likewise.
(vect_can_force_dr_alignment_p): Change alignment parameter type to
poly_uint64.
* tree-vect-loop-manip.c (get_misalign_in_elems): Learn to construct a
mask with a compile time variable vector alignment.
(vect_gen_prolog_loop_niters): Adapt to vector alignment being a poly
int.
(vect_do_peeling): Exit early if vector alignment is not constant.
* tree-vect-stmts.c (ensure_base_align): Adapt to vector alignment being
a poly int.
(vectorizable_store): Likewise.
(vectorizable_load): Likweise.
* tree-vectorizer.h (struct dr_vec_info): Make target_alignment field a
poly_uint64.
(vect_known_alignment_in_bytes): Adapt to vector alignment being a
poly int.
(vect_can_force_dr_alignment_p): Change alignment parameter type to
poly_uint64.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@266072 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2018-11-13 Richard Biener <rguenther@suse.de>
rguenth [Tue, 13 Nov 2018 13:51:34 +0000 (13:51 +0000)] 
2018-11-13  Richard Biener  <rguenther@suse.de>

PR tree-optimization/87962
* tree-vect-loop.c (vect_is_simple_reduction): More reliably
detect outer reduction for disqualifying in-loop uses.

* gcc.dg/pr87962.c: New testcase.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@266071 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2018-11-13 Richard Biener <rguenther@suse.de>
rguenth [Tue, 13 Nov 2018 13:50:18 +0000 (13:50 +0000)] 
2018-11-13  Richard Biener  <rguenther@suse.de>

PR tree-optimization/87967
* tree-vect-loop.c (vect_transform_loop): Also copy PHIs
for constants for the scalar loop.

* g++.dg/opt/pr87967.C: New testcase.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@266070 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[RS6000] Don't put large integer constants in TOC for -mcmodel=medium
amodra [Tue, 13 Nov 2018 13:01:36 +0000 (13:01 +0000)] 
[RS6000] Don't put large integer constants in TOC for -mcmodel=medium

For -mcmodel=medium we can use toc-relative addressing to access
constants placed in read-only data, which is better since they can be
merged when in .rodata.cst8.

* config/rs6000/linux64.h (ASM_OUTPUT_SPECIAL_POOL_ENTRY_P): Exclude
integer constants when -mcmodel=medium.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@266069 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[ARC] Add support for profiling in glibc.
claziss [Tue, 13 Nov 2018 12:51:41 +0000 (12:51 +0000)] 
[ARC] Add support for profiling in glibc.

Use PROFILE_HOOK to add mcount library calls in each toolchain.

gcc/
xxxx-xx-xx  Claudiu Zissulescu  <claziss@synopsys.com>

* config/arc/arc.h (FUNCTION_PROFILER): Redefine to empty.
* config/arc/elf.h (PROFILE_HOOK): Define.
* config/arc/linux.h (PROFILE_HOOK): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@266068 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[ARC] Do not emit ZOL in the presence of text jump tables.
claziss [Tue, 13 Nov 2018 12:51:30 +0000 (12:51 +0000)] 
[ARC] Do not emit ZOL in the presence of text jump tables.

Avoid emitting lp instruction when in its ZOL body we find a jump
table data in text section. One of the reason is the jump tables size
can be changed latter on, hence the total ZOL length may be wrongly
computed.

gcc/
xxxx-xx-xx  Claudiu Zissulescu  <claziss@synopsys.com>

* config/arc/arc.c (hwloop_optimize): Bailout when detecting a
jump table data in the text section.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@266067 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[ARC] Update EH code.
claziss [Tue, 13 Nov 2018 12:51:19 +0000 (12:51 +0000)] 
[ARC] Update EH code.

Our ABI says the blink is pushed first on stack followed by an unknown
number of register saves, and finally by fp.  Hence we cannot use the
EH_RETURN_ADDRESS macro as the stack is not finalized at that moment.
The alternative is to use the eh_return pattern and to initialize all
the bits after register allocation when the stack layout is finalized.

gcc/
xxxx-xx-xx  Claudiu Zissulescu  <claziss@synopsys.com>

* config/arc/arc.c (arc_eh_return_address_location): Repurpose it
to fit the eh_return pattern.
* config/arc/arc.md (eh_return): Define.
(VUNSPEC_ARC_EH_RETURN): Likewise.
* config/arc/arc-protos.h (arc_eh_return_address_location): Match
new implementation.
* config/arc/arc.h (EH_RETURN_HANDLER_RTX): Remove it.

testsuite/
xxxx-xx-xx  Claudiu Zissulescu  <claziss@synopsys.com>

* gcc.target/arc/builtin_eh.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@266066 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[ARC] Refurbish and improve prologue/epilogue functions.
claziss [Tue, 13 Nov 2018 12:07:12 +0000 (12:07 +0000)] 
[ARC] Refurbish and improve prologue/epilogue functions.

Reimplement how prologue and epilogue is emitted to accomodate
enter/leave instructions, as well as improving the size of the
existing techinques.

The following modifications are added:

- millicode thunk calls can be now selected regardless of the
  optimization level. However they are enabled for size optimizations
  by default.  Also, the millicode optimization is turned off when we
  compile for long jumps.

- the compiler is able to use enter/leave instructions for prologue
  and epilogue. As these instructions are not ABI compatible we gurad
  them under a switch (i.e., -mcode-density-frame). When this option
  is on, the compiler will try emitting enter/leave instructions, if
  not, then millicode thunk calls (if enabled), and latter the regular
  push/pop instructions.

- The prologue/epilogue is now optimized to use pointer walks, hence
  improving the chance to have push_s/pop_s instructions emitted. It
  also tries to combine the stack adjustments with load/store
  operations.

gcc/
xxxxx-xx-xx  Claudiu Zissulescu  <claziss@synopsys.com>

        * common/config/arc/arc-common.c (arc_option_optimization_table):
        Millicode optimization is default on for size optimizations.
        * config/arc/arc-protos.h (arc_check_multi): New function.
        * config/arc/arc.c (RTX_OK_FOR_OFFSET_P): Rearange.
        (ENTER_LEAVE_START_REG): Define.
        (ENTER_LEAVE_END_REG): Likewise.
        (arc_override_options): Disable millicode when long calls option
        is on.
        (arc_frame_info): Change it from int to bool.
        (arc_compute_frame_size): Clean up.
        (arc_save_restore): Remove.
        (frame_save_reg): New function.
        (frame_restore_reg): Likewise.
        (arc_enter_leave_p): Likewise.
        (arc_save_callee_saves): Likewise.
        (arc_restore_callee_saves): Likewise.
        (arc_save_callee_enter): Likewise.
        (arc_restore_callee_leave): Likewise.
        (arc_save_callee_milli): Likewise.
        (arc_restore_callee_milli): Likewise.
        (arc_expand_prologue): Reimplement to emit enter/leave
        instructions.
        (arc_expand_epilogue): Likewise.
        (arc_check_multi): New function.
        * config/arc/arc.md (push_multi_fp): New pattern.
        (push_multi_fp_blink): Likewise.
        (pop_multi_fp): Likewise.
        (pop_multi_fp_blink): Likewise.
        (pop_multi_fp_ret): Likewise.
        (pop_multi_fp_blink_ret): Likewise.
        * config/arc/arc.opt (mmillicode): Update option.
        (mcode-density-frame): New option.
        * config/arc/predicates.md (push_multi_operand): New predicate.
        (pop_multi_operand): Likewise.
        * doc/invoke.texi (ARC): Update ARC options information.

gcc/testsuite
xxxxx-xx-xx  Claudiu Zissulescu  <claziss@synopsys.com>

        * gcc.target/arc/firq-1.c: Update test.
        * gcc.target/arc/firq-3.c: Likewise.
        * gcc.target/arc/firq-4.c: Likewise.
        * gcc.target/arc/interrupt-6.c: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@266065 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[ARC] Add peephole rules to combine store/loads into double store/loads
claziss [Tue, 13 Nov 2018 12:06:58 +0000 (12:06 +0000)] 
[ARC] Add peephole rules to combine store/loads into double store/loads

Simple peephole rules which combines multiple ld/st instructions into
64-bit load/store instructions. It only works for architectures which
are having double load/store option on.

gcc/
Claudiu Zissulescu  <claziss@synopsys.com>

* config/arc/arc-protos.h (gen_operands_ldd_std): Add.
* config/arc/arc.c (operands_ok_ldd_std): New function.
(mem_ok_for_ldd_std): Likewise.
(gen_operands_ldd_std): Likewise.
* config/arc/arc.md: Add peephole2 rules for std/ldd.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@266064 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago * toplev.c (output_stack_usage): Turn test on flag_stack_usage into
ebotcazou [Tue, 13 Nov 2018 09:56:46 +0000 (09:56 +0000)] 
* toplev.c (output_stack_usage): Turn test on flag_stack_usage into
test on stack_usage_file.
(lang_dependent_init): Do not open the .su file if generating LTO.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@266063 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago PR rtl-optimization/87918
jakub [Tue, 13 Nov 2018 09:45:50 +0000 (09:45 +0000)] 
PR rtl-optimization/87918
* simplify-rtx.c (simplify_merge_mask): For COMPARISON_P, use
simplify_gen_relational rather than simplify_gen_binary.

* gcc.target/i386/pr87918.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@266062 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2018-11-13 Richard Biener <rguenther@suse.de>
rguenth [Tue, 13 Nov 2018 09:30:49 +0000 (09:30 +0000)] 
2018-11-13  Richard Biener  <rguenther@suse.de>

* tree-ssanames.h (set_range_info): Use value_range_base.
(get_range_info): Likewise.
* tree-ssanames.c (set_range_info): Likewise.
(get_range_info): Likewise.
* tree-vrp.c (value_range_base::union_helper): Split
out common parts of value_range[_base]::union_.
(value_range_base::union_): Update.
(value_range::union_): Likewise.
(determine_value_range_1): Use value_range_base.
(determine_value_range): Likewise.
* tree-vrp.h (value_range_base::union_helper): Move ...
(value_range::union_helper): ... from here.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@266061 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2018-11-13 Xianmiao Qu <xianmiao_qu@c-sky.com>
xianmiao [Tue, 13 Nov 2018 09:12:36 +0000 (09:12 +0000)] 
2018-11-13  Xianmiao Qu  <xianmiao_qu@c-sky.com>

libgcc/
* config/csky/linux-unwind.h (_sig_ucontext_t): Remove.
(csky_fallback_frame_state): Modify the check of the
instructions to adapt to changes in the kernel

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@266060 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago * gcc-interface/misc.c (gnat_init_gcc_eh): Set -fnon-call-exceptions
ebotcazou [Tue, 13 Nov 2018 09:02:33 +0000 (09:02 +0000)] 
* gcc-interface/misc.c (gnat_init_gcc_eh): Set -fnon-call-exceptions
for the runtime on platforms where System.Machine_Overflow is true.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@266057 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago Implement P0315R4, Lambdas in unevaluated contexts.
jason [Tue, 13 Nov 2018 04:49:09 +0000 (04:49 +0000)] 
Implement P0315R4, Lambdas in unevaluated contexts.

When lambdas were added in C++11 they were banned from unevaluated contexts
as a way to avoid needing to deal with them in mangling or SFINAE.  This
proposal avoids that with a more narrow proposal: lambdas never compare as
equivalent (so we don't need to mangle them), and substitution failures
within a lambda are hard errors.  Lambdas appearing in places that types
couldn't previously have been declared introduces various complications; in
particular, it seems likely to mean types with no linkage being used more
broadly, risking ODR violations.  I want to follow up this patch with some
related diagnostics.

* decl2.c (min_vis_expr_r): Handle LAMBDA_EXPR.
* mangle.c (write_expression): Handle LAMBDA_EXPR.
* parser.c (cp_parser_lambda_expression): Allow lambdas in
unevaluated context.  Start the tentative firewall sooner.
(cp_parser_lambda_body): Use cp_evaluated.
* pt.c (iterative_hash_template_arg): Handle LAMBDA_EXPR.
(tsubst_function_decl): Substitute a lambda even if it isn't
dependent.
(tsubst_lambda_expr): Use cp_evaluated.  Always complain.
(tsubst_copy_and_build) [LAMBDA_EXPR]: Do nothing if tf_partial.
* semantics.c (begin_class_definition): Allow in template parm list.
* tree.c (strip_typedefs_expr): Pass through LAMBDA_EXPR.
(cp_tree_equal): Handle LAMBDA_EXPR.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@266056 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoAvoid double substitution with complete explicit template arguments.
jason [Tue, 13 Nov 2018 04:47:20 +0000 (04:47 +0000)] 
Avoid double substitution with complete explicit template arguments.

Previously, when we got a function template with explicit arguments for all
of the template parameters, we still did "deduction", which of course
couldn't deduce anything, but did other deduction-time checking of
non-dependent conversions and such.  This broke down with the unevaluated
lambdas patch (to follow): substituting into the lambda multiple times, once
to get the function type for deduction and then again to generate the actual
decl, doesn't work, since different substitutions of a lambda produce
different types.  I believe that skipping the initial substitution when we
have all the arguments is still conformant, and produces better diagnostics
for some testcases.

* pt.c (fn_type_unification): If we have a full set of explicit
arguments, go straight to substitution.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@266055 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago * decl2.c (min_vis_expr_r, expr_visibility): New.
jason [Tue, 13 Nov 2018 04:46:20 +0000 (04:46 +0000)] 
* decl2.c (min_vis_expr_r, expr_visibility): New.

We weren't properly constraining visibility based on names that appear in
the mangled representation of expressions.  This was made more obvious
by the upcoming unevaluated lambdas patch.

(min_vis_r): Call expr_visibility.
(constrain_visibility_for_template): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@266054 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago Implement P0722R3, destroying operator delete.
jason [Tue, 13 Nov 2018 04:40:01 +0000 (04:40 +0000)] 
Implement P0722R3, destroying operator delete.

A destroying operator delete takes responsibility for calling the destructor
for the object it is deleting; this is intended to be useful for sized
delete of a class allocated with a trailing buffer, where the compiler can't
know the size of the allocation, and so would pass the wrong size to the
non-destroying sized operator delete.

gcc/c-family/
* c-cppbuiltin.c (c_cpp_builtins): Define
__cpp_impl_destroying_delete.
gcc/cp/
* call.c (std_destroying_delete_t_p, destroying_delete_p): New.
(aligned_deallocation_fn_p, usual_deallocation_fn_p): Use
destroying_delete_p.
(build_op_delete_call): Handle destroying delete.
* decl2.c (coerce_delete_type): Handle destroying delete.
* init.c (build_delete): Don't call dtor with destroying delete.
* optimize.c (build_delete_destructor_body): Likewise.
libstdc++-v3/
* libsupc++/new (std::destroying_delete_t): New.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@266053 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago Implement P0780R2, pack expansion in lambda init-capture.
jason [Tue, 13 Nov 2018 04:34:59 +0000 (04:34 +0000)] 
Implement P0780R2, pack expansion in lambda init-capture.

Mostly this was straightforward; the tricky bit was finding, in the
instantiation, the set of capture proxies built when instantiating the
init-capture.  The comment in lookup_init_capture_pack goes into detail.

* parser.c (cp_parser_lambda_introducer): Parse pack init-capture.
* pt.c (tsubst_pack_expansion): Handle init-capture packs.
(lookup_init_capture_pack): New.
(tsubst_expr) [DECL_EXPR]: Use it.
(tsubst_lambda_expr): Remember field pack expansions for
init-captures.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@266052 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago * cp-tree.h (struct cp_evaluated): New.
jason [Tue, 13 Nov 2018 04:33:57 +0000 (04:33 +0000)] 
* cp-tree.h (struct cp_evaluated): New.

This patch simplifies the saving/clearing/restoring of
cp_unevaluated_operand and c_inhibit_evaluation_warnings in the presence of
mid-block returns.

* init.c (get_nsdmi): Use it.
* parser.c (cp_parser_enclosed_template_argument_list): Use it.
* pt.c (coerce_template_parms, tsubst_aggr_type): Use it.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@266051 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoChange __cpp_explicit_bool to __cpp_conditional_explicit.
jason [Tue, 13 Nov 2018 04:32:25 +0000 (04:32 +0000)] 
Change __cpp_explicit_bool to __cpp_conditional_explicit.

People objected to the old macro name as unclear, so it was changed.

* c-cppbuiltin.c (c_cpp_builtins): Change __cpp_explicit_bool to
__cpp_conditional_explicit.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@266050 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[RS6000] secondary_reload and find_replacement
amodra [Tue, 13 Nov 2018 03:55:30 +0000 (03:55 +0000)] 
[RS6000] secondary_reload and find_replacement

This patch removes a call only necessary when using reload.  It also
corrects a PRE_DEC address offset.

* config/rs6000/rs6000.c (rs6000_secondary_reload_inner): Negate
offset for PRE_DEC.
(rs6000_secondary_reload_gpr): Don't call find_replacement.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@266049 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2018-11-13 Sandra Loosemore <sandra@codesourcery.com>
sandra [Tue, 13 Nov 2018 03:40:53 +0000 (03:40 +0000)] 
2018-11-13  Sandra Loosemore  <sandra@codesourcery.com>

PR middle-end/59634

gcc/
* doc/invoke.texi (Optimize Options): Clarify that the
l1-cache-line-size, l1-cache-size, and l2-cache-size parameters
apply to data cache size.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@266048 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[RS6000] Comment fixes
amodra [Tue, 13 Nov 2018 03:26:40 +0000 (03:26 +0000)] 
[RS6000] Comment fixes

* config/rs6000/rs6000.c (rs6000_emit_prologue): Comment fix.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@266047 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[RS6000] Rotate testcase
amodra [Tue, 13 Nov 2018 03:20:22 +0000 (03:20 +0000)] 
[RS6000] Rotate testcase

The testcase exercises one of the rotate patterns.

gcc/
* config/rs6000/predicates.md (logical_const_operand),
(logical_operand): Correct comment.
gcc/testsuite/
* gcc.target/powerpc/rotmask.c: New.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@266046 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[RS6000] Hide insn not needing to be public
amodra [Tue, 13 Nov 2018 03:12:45 +0000 (03:12 +0000)] 
[RS6000] Hide insn not needing to be public

* config/rs6000/rs6000.md (addsi3_high): Prefix with '*'.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@266045 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[RS6000] Ignore "c", "l" and "h" for register preference
amodra [Tue, 13 Nov 2018 03:03:10 +0000 (03:03 +0000)] 
[RS6000] Ignore "c", "l" and "h" for register preference

This catches a few places where move insn patterns don't slightly
disparage CTR, LR and VRSAVE regs.  Also fixes the doc for the rs6000
h constraint, and removes an r->cl alternative covered by r->h.

* gcc/doc/md.texi (Machine Constraints): Correct rs6000 h constraint
description.
* config/rs6000/rs6000.md (movsi_internal1): Delete MT%0 case
covered by alternative.
(movcc_internal1): Ignore h for register preference.
(mov<mode>_hardfloat64): Likewise.
(mov<mode>_softfloat): Ignore c, l, h for register preference.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@266044 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2018-11-12 Sandra Loosemore <sandra@codesourcery.com>
sandra [Tue, 13 Nov 2018 02:06:30 +0000 (02:06 +0000)] 
2018-11-12  Sandra Loosemore  <sandra@codesourcery.com>

PR preprocessor/47823

gcc/
* doc/cpp.texi (Alternatives to Wrapper #ifndef): Move #pragma once
documentation to...
(Pragmas): ...here.
* doc/extend.texi (Pragmas): Note additional pragmas documented
in the CPP manual.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@266043 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoDaily bump.
gccadmin [Tue, 13 Nov 2018 00:16:30 +0000 (00:16 +0000)] 
Daily bump.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@266042 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agogcc/ChangeLog:
kugan [Mon, 12 Nov 2018 23:43:56 +0000 (23:43 +0000)] 
gcc/ChangeLog:

2018-11-13  Kugan Vivekanandarajah  <kuganv@linaro.org>

PR middle-end/86677
PR middle-end/87528
* tree-scalar-evolution.c (expression_expensive_p): Make BUILTIN POPCOUNT
as expensive when backend does not define it.

gcc/testsuite/ChangeLog:

2018-11-13  Kugan Vivekanandarajah  <kuganv@linaro.org>

PR middle-end/86677
PR middle-end/87528
* g++.dg/tree-ssa/pr86544.C: Run only for target supporting popcount
pattern.
* gcc.dg/tree-ssa/popcount.c: Likewise.
* gcc.dg/tree-ssa/popcount2.c: Likewise.
* gcc.dg/tree-ssa/popcount3.c: Likewise.
* gcc.target/aarch64/popcount4.c: New test.
* lib/target-supports.exp (check_effective_target_popcountl): New.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@266039 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoMIPS: Default to --with-llsc for the R5900 Linux target as well
macro [Mon, 12 Nov 2018 23:16:40 +0000 (23:16 +0000)] 
MIPS: Default to --with-llsc for the R5900 Linux target as well

The Linux kernel requires and emulates LL and SC for the R5900 too.  The
special --without-llsc default for the R5900 is therefore not applicable
in that case.

Reviewed-by: Maciej W. Rozycki <macro@linux-mips.org>
2018-11-12  Fredrik Noring  <noring@nocrew.org>

gcc/
* config.gcc: Update with-llsc defaults for MIPS r5900.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@266038 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoInstrument only selected files (PR gcov-profile/87442).
marxin [Mon, 12 Nov 2018 21:01:38 +0000 (21:01 +0000)] 
Instrument only selected files (PR gcov-profile/87442).

2018-11-12  Martin Liska  <mliska@suse.cz>

PR gcov-profile/87442
* common.opt: Add -fprofile-filter-files and -fprofile-exclude-files
options.
* doc/invoke.texi: Document them.
* tree-profile.c (parse_profile_filter): New.
(parse_profile_file_filtering): Likewise.
(release_profile_file_filtering): Likewise.
(include_source_file_for_profile): Likewise.
(tree_profiling): Filter source files based on the
newly added options.
2018-11-12  Martin Liska  <mliska@suse.cz>

PR gcov-profile/87442
* gcc.dg/profile-filtering-1.c: New test.
* gcc.dg/profile-filtering-2.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@266037 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoFix documentation of __builtin_cpu_is and __builtin_cpu_supports for x86.
marxin [Mon, 12 Nov 2018 20:58:02 +0000 (20:58 +0000)] 
Fix documentation of __builtin_cpu_is and __builtin_cpu_supports for x86.

2018-11-12  Martin Liska  <mliska@suse.cz>

PR target/87903
* doc/extend.texi: Add missing values for __builtin_cpu_is and
__builtin_cpu_supports for x86 target.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@266036 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2018-11-12 Sandra Loosemore <sandra@codesourcery.com>
sandra [Mon, 12 Nov 2018 19:08:37 +0000 (19:08 +0000)] 
2018-11-12  Sandra Loosemore  <sandra@codesourcery.com>

PR middle-end/21110

gcc/
* doc/rtl.texi (Constants): Clarify that mode of "high" doesn't
have to be Pmode.
(Arithmetic): Likewise for "lo_sum".

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@266035 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoPR c/81824 - Warn for missing attributes with function aliases
msebor [Mon, 12 Nov 2018 18:02:41 +0000 (18:02 +0000)] 
PR c/81824 - Warn for missing attributes with function aliases

gcc/testsuite/ChangeLog:
* gcc.dg/Wattribute-alias.c: Require ifunc support.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@266034 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[PR87815]Don't generate shift sequence for load replacement in DSE when the mode...
renlin [Mon, 12 Nov 2018 16:47:24 +0000 (16:47 +0000)] 
[PR87815]Don't generate shift sequence for load replacement in DSE when the mode size is not compile-time constant

The patch adds a check if the gap is compile-time constant.

This happens when dse decides to replace the load with previous store value.
The problem is that, shift sequence could not accept compile-time non-constant
mode operand.

gcc/

2018-11-12  Renlin Li  <renlin.li@arm.com>

PR target/87815
* dse.c (get_stored_val): Add check for compile-time
constantness of gap.

gcc/testsuite/

2018-11-12  Renlin Li  <renlin.li@arm.com>

PR target/87815
* gcc.target/aarch64/sve/pr87815.c: New.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@266033 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoPR libstdc++/87963 fix build for 64-bit mingw
redi [Mon, 12 Nov 2018 15:25:40 +0000 (15:25 +0000)] 
PR libstdc++/87963 fix build for 64-bit mingw

PR libstdc++/87963
* src/c++17/memory_resource.cc (chunk::_M_bytes): Change type from
unsigned to uint32_t.
(chunk): Fix static assertion for 64-bit targets that aren't LP64.
(bigblock::all_ones): Fix undefined shift.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@266032 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[GCC, ARM] Enable armv8.5-a and add +sb and +predres for previous ARMv8-a in ARM
sudi [Mon, 12 Nov 2018 14:58:39 +0000 (14:58 +0000)] 
[GCC, ARM] Enable armv8.5-a and add +sb and +predres for previous ARMv8-a in ARM

This patch adds -march=armv8.5-a to the Arm backend.
Armv8.5-A also adds two new security features:
- Speculation Barrier instruction
- Execution and Data Prediction Restriction Instructions
These are made optional to all older Armv8-A versions. Thus we are adding two
new options "+sb" and "+predres" to all older Armv8-A. These are passed on to
the assembler and have no code generation effects and have already gone in the
trunk of binutils.

*** gcc/ChangeLog ***

2018-11-12  Sudakshina Das  <sudi.das@arm.com>

* config/arm/arm-cpus.in (armv8_5, sb, predres): New features.
(ARMv8_5a): New fgroup.
(armv8.5-a): New arch.
(armv8-a, armv8.1-a, armv8.2-a, armv8.3-a, armv8.4-a): New options
sb and predres.
* config/arm/arm-tables.opt: Regenerate.
* config/arm/t-aprofile: Add matching rules for -march=armv8.5-a
* config/arm/t-arm-elf (all_v8_archs): Add armv8.5-a.
* config/arm/t-multilib (v8_5_a_simd_variants): New variable.
Add matching rules for -march=armv8.5-a and extensions.
* doc/invoke.texi (ARM options): Document -march=armv8.5-a.
Add sb and predres to all armv8-a except armv8.5-a.

*** gcc/testsuite/ChangeLog ***

2018-11-12  Sudakshina Das  <sudi.das@arm.com>

* gcc.target/arm/multilib.exp: Add some -march=armv8.5-a
combination tests.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@266031 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2018-11=12 Richard Biener <rguenther@suse.de>
rguenth [Mon, 12 Nov 2018 14:53:36 +0000 (14:53 +0000)] 
2018-11=12  Richard Biener  <rguenther@suse.de>

* tree-vrp.h (value_range[_base]::set): Make public.  Provide
overload for single value.
(value_range[_base]::set_nonnull): New.
(value_range[_base]::set_null): Likewise.
(value_range): Document bitmap copying behavior, mark
copy constructor and assignment operator deleted.
(value_range::move): New.
(value_range::set_and_canonicalize): Default bitmap to zero.
(set_value_range_to_nonnull): Remove.
(set_value_range_to_null): Likewise.
(set_value_range): Likewise.
(set_value_range_to_value): Likewise.
(extract_range_from_unary_expr): Work on value_range_base.
(extract_range_from_binary_expr_1): Likewise.  Rename to...
(extract_range_from_binary_expr): ... this.
* tree-vrp.c (value_range::update): Clear equiv bitmap
if required.
(value_range::move): New, move equiv bitmap.
(value_range_base::set_undefined): Avoid assignment.
(value_range::set_undefined): Likewise.
(value_range_base::set_varying): Likewise.
(value_range::set_varying): Likewise.
(set_value_range): Remove.
(value_range_base::set): New overload for value.
(value_range::set): Likewise.
(set_value_range_to_nonnull): Remove.
(value_range_base::set_nonnull): New.
(value_range::set_nonnull): Likewise.
(set_value_range_to_null): Remove.
(value_range_base::set_null): New.
(value_range::set_null): Likewise.
(range_is_null): Work on value_range_base.
(range_is_nonnull): Likewise.
(ranges_from_anti_range): Likewise.
(extract_range_into_wide_ints): Likewise.
(extract_range_from_multiplicative_op): Likewise.
(extract_range_from_binary_expr): Likewise.  Update for API changes.
(extract_range_from_unary_expr): Likewise.  Remove OBJ_TYPE_REF
handling.
(value_range::intersect_helper): Avoid copy and assignment.
(value_range::union_helper): Likewise.
(determine_value_range_1): Adjust.
* gimple-ssa-evrp-analyze.c (evrp_range_analyzer::try_find_new_range):
Avoid assignment by using move.
(evrp_range_analyzer::record_ranges_from_stmt): Avoid assignment.
* tree-ssa-threadedge.c (record_temporary_equivalences_from_phis):
Likewise.
* tree-ssanames.c (get_range_info): Likewise.
* vr-values.h (vr_values::get_vr_for_comparison): Adjust API.
* vr-values.c (vr_values::get_value_range): Adjust.
(vr_values::update_value_range): Likewise.
(symbolic_range_based_on_p): Work on value_range_base.
(vr_values::extract_range_from_binary_expr): Use value_range_base.
(vr_values::extract_range_from_unary_expr): Likewise.
(vr_values::extract_range_from_cond_expr): Avoid assignment.
(vr_values::extract_range_from_comparison): Adjust.
(vr_values::check_for_binary_op_overflow): Use value_range_base.
(vr_values::extract_range_basic): Adjust.
(vr_values::adjust_range_with_scev): Likewise.
(vr_values::vrp_visit_assignment_or_call): Likewise.
(vr_values::get_vr_for_comparison): Change API to avoid
assignment and copy construction.
(vr_values::compare_name_with_value): Adjust accordingly.
(vr_values::compare_names): Likewise.
(vr_values::extract_range_from_phi_node): Avoid assignment and
bogus in-place modify of equiv bitmap.
(vr_values::simplify_bit_ops_using_ranges): Use value_range_base.
* ipa-prop.c (ipa_compute_jump_functions_for_edge): Adjust
for extract_range_from_unary_expr API change.
* ipa-cp.c (ipa_vr_operation_and_type_effects): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@266030 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago * config/mcore/mcore.h (WORD_REGISTER_OPERATIONS): Remove duplicate.
ebotcazou [Mon, 12 Nov 2018 12:00:37 +0000 (12:00 +0000)] 
* config/mcore/mcore.h (WORD_REGISTER_OPERATIONS): Remove duplicate.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@266029 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2018-11-12 Richard Biener <rguenther@suse.de>
rguenth [Mon, 12 Nov 2018 11:59:32 +0000 (11:59 +0000)] 
2018-11-12  Richard Biener  <rguenther@suse.de>

* tree-vrp.h (value_range_base::symbolic_p,
value_range_base::constant_p, value_range_base::zero_p,
value_range_base::singleton_p): Move from value_range.
(value_range::dump): Add.
* gimple-ssa-evrp-analyze.c
(evrp_range_analyzer::record_ranges_from_phis): Use set_varying.
* ipa-cp.c (ipcp_vr_lattice::print): Use dump_value_range.
* tree-ssa-threadedge.c (record_temporary_equivalences_from_phis):
Use set_varying.
* tree-vrp.c (value_range::symbolic_p): Move to value_range_base.
(value_range::constant_p): Likewise.
(value_range::singleton_p): Likewise.
(value_range_base::dump): Add.
(set_value_range_to_undefined): Remove.
(set_value_range_to_varying): Likewise.
(range_int_cst_p): Take value_range_base argument.
(range_int_cst_singleton_p): Likewise.
(value_range_constant_singleton): Likewise.
(vrp_set_zero_nonzero_bits): Likewise.
(extract_range_from_multiplicative_op): Use set_varying.
(extract_range_from_binary_expr_1): Likewise. Use set_undefined.
(extract_range_from_unary_expr): Likewise.
(dump_value_range_base): Change to overload of dump_value_range.
(vrp_prop::vrp_initialize): Use set_varying and set_undefined.
(vrp_prop::visit_stmt): Likewise.
(value_range::intersect_helper): Likewise.
(value_range::union_helper): Likewise.
(determine_value_range_1): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@266028 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2018-11-12 Richard Biener <rguenther@suse.de>
rguenth [Mon, 12 Nov 2018 11:16:36 +0000 (11:16 +0000)] 
2018-11-12  Richard Biener  <rguenther@suse.de>

* tree-vrp.c (set_value_range_to_nonnull): Clear equiv.
(set_value_range_to_null): Likewise.
* vr-values.c (vr_values::extract_range_from_comparison):
Clear equiv for constant singleton ranges.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@266027 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2018-11-12 Wei Xiao <wei3.xiao@intel.com>
xguo [Mon, 12 Nov 2018 08:52:37 +0000 (08:52 +0000)] 
2018-11-12 Wei Xiao <wei3.xiao@intel.com>

        * config/i386/sse.md: Combine VFIXUPIMM* patterns
        (<avx512>_fixupimm<mode>_maskz<round_saeonly_expand_name>): Update.
        (<avx512>_fixupimm<mode><sd_maskz_name><round_saeonly_name>): Update.
        (<avx512>_fixupimm<mode>_mask<round_saeonly_name>): Remove.
        (avx512f_sfixupimm<mode>_maskz<round_saeonly_expand_name>): Update.
        (avx512f_sfixupimm<mode><sd_maskz_name><round_saeonly_name>): Update.
        (avx512f_sfixupimm<mode>_mask<round_saeonly_name>): Remove.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@266026 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2018-11-11 Sandra Loosemore <sandra@codesourcery.com>
sandra [Mon, 12 Nov 2018 06:23:16 +0000 (06:23 +0000)] 
2018-11-11  Sandra Loosemore  <sandra@codesourcery.com>

PR c/69502

gcc/
* doc/extend.texi (Common Type Attributes): For the align type
attribute, copy language about decreasing alignment from the
corresponding variable attribute.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@266025 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2018-11-11 Xianmiao Qu <xianmiao_qu@c-sky.com>
xianmiao [Mon, 12 Nov 2018 02:36:45 +0000 (02:36 +0000)] 
2018-11-11  Xianmiao Qu  <xianmiao_qu@c-sky.com>

gcc/
* config/csky/csky.md (*fpuv2_nmulsf3_1, *fpuv2_nmuldf3_1): Handle
-frounding-math.

gcc/testsuite
* gcc.target/csky/fnmul-1.c: New.
* gcc.target/csky/fnmul-2.c: New.
* gcc.target/csky/fnmul-3.c: New.
* gcc.target/csky/fnmul-4.c: New.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@266024 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoDaily bump.
gccadmin [Mon, 12 Nov 2018 00:16:28 +0000 (00:16 +0000)] 
Daily bump.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@266023 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2018-11-11 Sandra Loosemore <sandra@codesourcery.com>
sandra [Sun, 11 Nov 2018 22:46:00 +0000 (22:46 +0000)] 
2018-11-11  Sandra Loosemore  <sandra@codesourcery.com>

PR c++/43105

gcc/
* doc/invoke.texi (C++ Dialect Options): Add warning about mixing
-frtti and -fno-rtti code.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@266020 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoFix copypasto in las ChangeLog.
hp [Sun, 11 Nov 2018 22:21:28 +0000 (22:21 +0000)] 
Fix copypasto in las ChangeLog.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@266019 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago PR libstdc++-v3/54005
hp [Sun, 11 Nov 2018 22:20:19 +0000 (22:20 +0000)] 
PR libstdc++-v3/54005
* include/bits/atomic_base.h (__atomic_base<_TTp>::is_lock_free(),
__atomic_base<_PTp*>::is_lock_free()): Call __atomic_always_lock_free
with the type-derived _S_alignment instead of __alignof the object.
* include/std/atomic (atomic<T>::is_lock_free()): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@266018 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2018-11-11 Sandra Loosemore <sandra@codesourcery.com>
sandra [Sun, 11 Nov 2018 18:39:10 +0000 (18:39 +0000)] 
2018-11-11  Sandra Loosemore  <sandra@codesourcery.com>

PR c/26366

gcc/
* doc/extend.texi (Other Builtins): Document probability associated
with __builtin_expect.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@266017 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago PR target/87928
uros [Sun, 11 Nov 2018 17:49:33 +0000 (17:49 +0000)] 
PR target/87928
* config/i386/i386.h (STACK_BOUNDARY): Use TARGET_64BIT_MS_ABI
instead of (TARGET_64BIT && ix86_abi == MS_ABI).
* config/i386/darwin.h (STACK_BOUNDARY): Ditto.
* config/i386/cygming.h (STACK_BOUNDARY): Remove.

testsuite /Changelog:

PR target/87928
* gcc.target/i386/pr87928.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@266016 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2018-11-11 Xianmiao Qu <xianmiao_qu@c-sky.com>
xianmiao [Sun, 11 Nov 2018 14:56:23 +0000 (14:56 +0000)] 
2018-11-11  Xianmiao Qu  <xianmiao_qu@c-sky.com>

* config/csky/csky-linux-elf.h (CC1_SPEC): Support -profile.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@266013 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2018-11-11 Xianmiao Qu <xianmiao_qu@c-sky.com>
xianmiao [Sun, 11 Nov 2018 13:44:01 +0000 (13:44 +0000)] 
2018-11-11  Xianmiao Qu  <xianmiao_qu@c-sky.com>

* config/csky/csky.h (ASM_PREFERRED_EH_DATA_FORMAT): Define.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@266012 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2018-11-11 Richard Biener <rguenther@suse.de>
rguenth [Sun, 11 Nov 2018 08:51:34 +0000 (08:51 +0000)] 
2018-11-11  Richard Biener  <rguenther@suse.de>

* tree-vrp.h (class value_range_base): New base class for
value_range containing all but the m_equiv member.
(dump_value_range_base): Add.
(range_includes_zero_p): Work on value_range_base.
* tree-vrp.c (value_range_base::set): Split out base handling
from...
(value_range::set): this.
(value_range::set_equiv): New.
(value_range_base::value_range_base): New constructors.
(value_range_base::check): Split out base handling from...
(value_range::check): this.
(value_range::equal_p): Refactor in terms of
ignore_equivs_equal_p which is now member of the base.
(value_range_base::set_undefined): New.
(value_range_base::set_varying): Likewise.
(value_range_base::dump):Split out base handling from...
(value_range::dump): this.
(value_range_base::set_and_canonicalize): Split out base handling
from...
(value_range::set_and_canonicalize): this.
(value_range_base::union_): New.
* ipa-prop.h (struct ipa_jump_func): Use value_range_base *
for m_vr.
* ipa-cp.c (class ipcp_vr_lattice): Use value_range_base
instead of value_range everywhere.
(ipcp_vr_lattice::print): Use dump_value_range_base.
(ipcp_vr_lattice::meet_with): Adjust.
(ipcp_vr_lattice::meet_with_1): Likewise.
(ipa_vr_operation_and_type_effects): Likewise.
(propagate_vr_across_jump_function): Likewise.
* ipa-prop.c (struct ipa_vr_ggc_hash_traits): Likewise.
(ipa_get_value_range): Likewise.
(ipa_set_jfunc_vr): Likewise.
(ipa_compute_jump_functions_for_edge): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@266011 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoImplement P0318R1 unwrap_ref_decay and unwrap_reference
redi [Sun, 11 Nov 2018 05:17:03 +0000 (05:17 +0000)] 
Implement P0318R1 unwrap_ref_decay and unwrap_reference

Implement P0318R1 unwrap_ref_decay and unwrap_reference
* include/std/type_traits (unwrap_reference, unwrap_reference_t)
(unwrap_ref_decay, unwrap_ref_decay_t): New traits and aliases.
* testsuite/20_util/unwrap_reference/1.cc: New test.
* testsuite/20_util/unwrap_reference/2.cc: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@266010 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoImplement P1007R3 std::assume_aligned
redi [Sun, 11 Nov 2018 05:16:51 +0000 (05:16 +0000)] 
Implement P1007R3 std::assume_aligned

Implement P1007R3 std::assume_aligned
* include/std/memory (assume_aligned): Implement for C++17.
* testsuite/20_util/assume_aligned/1.cc: New test.
* testsuite/20_util/assume_aligned/2_neg.cc: New test.
* testsuite/20_util/assume_aligned/3.cc: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@266009 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2018-11-10 Sandra Loosemore <sandra@codesourcery.com>
sandra [Sun, 11 Nov 2018 01:33:53 +0000 (01:33 +0000)] 
2018-11-10  Sandra Loosemore  <sandra@codesourcery.com>

PR middle-end/65703

gcc/
* doc/invoke.texi (Optimize Options): Add @opindex entries
for the positive forms of -fno-xxx and -mno-xxx options
that were lacking them.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@266008 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoDaily bump.
gccadmin [Sun, 11 Nov 2018 00:16:47 +0000 (00:16 +0000)] 
Daily bump.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@266007 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agocombine: More make_more_copies
segher [Sat, 10 Nov 2018 23:12:48 +0000 (23:12 +0000)] 
combine: More make_more_copies

This makes make_more_copies do what its documentation says, that is,
only make an intermediate pseudo if copying to a pseudo.

This regressed generated code quality when we didn't keep the original
notes that were on the copy, but since r265582 we do, and only allowing
pseudos now is a win.  It also simplifies the code.

* combine.c (make_more_copies): Only make an intermediate copy if the
dest of a move is a pseudo.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@266004 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoDaily bump.
gccadmin [Sat, 10 Nov 2018 00:16:45 +0000 (00:16 +0000)] 
Daily bump.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@266001 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agogcc/testsuite/ChangeLog:
msebor [Fri, 9 Nov 2018 23:15:59 +0000 (23:15 +0000)] 
gcc/testsuite/ChangeLog:

PR testsuite/87965
* c-c++-common/pr60226.c: Adjust text of expected diagnostic.
* gcc.dg/pr39323-1.c: Ditto.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265998 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoMAINTAINERS: add myself as or1k maintainer
shorne [Fri, 9 Nov 2018 21:22:20 +0000 (21:22 +0000)] 
MAINTAINERS: add myself as or1k maintainer

ChangeLog:

yyyy-mm-dd  Stafford Horne  <shorne@gmail.com>

* MAINTAINERS (CPU Port Maintainers): Add myself for or1k.
(Write After Approval): Remove myself.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265996 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago * gcc.dg/Walloca-16.c: Ignore conflicting types for built-in
pkoning [Fri, 9 Nov 2018 21:08:32 +0000 (21:08 +0000)] 
* gcc.dg/Walloca-16.c: Ignore conflicting types for built-in
warnings.
* gcc.dg/Wrestrict-4.c: Ditto.
* gcc.dg/Wrestrict-5.c: Ditto.
* gcc.dg/pr83463.c: Ditto.
* gcc.dg/torture/pr55890-2.c: Ditto.
* gcc.dg/torture/pr55890-3.c: Ditto.
* gcc.dg/torture/pr71816.c: Ditto.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265995 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago PR target/87221
law [Fri, 9 Nov 2018 20:55:39 +0000 (20:55 +0000)] 
PR target/87221
* config/netbsd-elf.h (NETBSD_STARTFILE_SPEC): Use crtbeginS.o for PIE.
(NETBSD_ENDFILE_SPEC): Use crtendS.o for PIE.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265994 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2018-11-09 Sandra Loosemore <sandra@codesourcery.com>
sandra [Fri, 9 Nov 2018 20:45:06 +0000 (20:45 +0000)] 
2018-11-09  Sandra Loosemore  <sandra@codesourcery.com>

PR driver/41179
PR middle-end/65703

gcc/
* doc/invoke.texi (Optimize Options): Clarify default behavior
for -fno-toplevel-reorder, -fno-defer-pop, and -fno-branch-count-reg.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265993 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2018-11-09 Bernd Edlinger <bernd.edlinger@hotmail.de>
edlinger [Fri, 9 Nov 2018 20:38:07 +0000 (20:38 +0000)] 
2018-11-09  Bernd Edlinger  <bernd.edlinger@hotmail.de>

        PR tree-optimization/87940
        * expr.c (string_constant): Don't strip NOPS in subexpressions.
        Fold PLUS_EXPR correctly.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265992 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoS/390: Allow relative addressing of literal pool entries
iii [Fri, 9 Nov 2018 20:33:19 +0000 (20:33 +0000)] 
S/390: Allow relative addressing of literal pool entries

r265490 allowed the compiler to choose in a more flexible way whether to
use load or load-address-relative-long (LARL) instruction.  When it
chose LARL for literal pool references, the latter ones were rewritten
by pass_s390_early_mach to use UNSPEC_LTREF, which assumes base register
usage, which in turn is not compatible with LARL.  The end result was an
ICE because of unrecognizable insn.

UNSPEC_LTREF and friends are necessary in order to communicate the
dependency on the base register to pass_sched2.  When relative
addressing is used, no base register is necessary, so in such cases the
rewrite must be avoided.

gcc/ChangeLog:

2018-11-09  Ilya Leoshkevich  <iii@linux.ibm.com>

PR target/87762
* config/s390/s390.c (s390_safe_relative_long_p): New function.
(annotate_constant_pool_refs): Skip insns which support
relative addressing.
(annotate_constant_pool_refs_1): New helper function.
(find_constant_pool_ref): Skip insns which support relative
addression.
(find_constant_pool_ref_1): New helper function.
(replace_constant_pool_ref): Skip insns which support
relative addressing.
(replace_constant_pool_ref_1): New helper function.
(s390_mainpool_start): Adapt to the new signature.
(s390_mainpool_finish): Likewise.
(s390_chunkify_start): Likewise.
(s390_chunkify_finish): Likewise.
(pass_s390_early_mach::execute): Likewise.
(s390_prologue_plus_offset): Likewise.
(s390_emit_prologue): Likewise.
(s390_emit_epilogue): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265991 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoc/
jakub [Fri, 9 Nov 2018 20:22:48 +0000 (20:22 +0000)] 
c/
* c-parser.c (c_parser_omp_clause_final): Use
c_parser_expr_no_commas, convert_lvalue_to_rvalue,
c_objc_common_truthvalue_conversion, c_fully_fold and parentheses
parsing instead of c_parser_paren_condition.
(c_parser_omp_clause_if): Use c_parser_expr_no_commas,
convert_lvalue_to_rvalue, c_objc_common_truthvalue_conversion and
c_fully_fold instead of c_parser_condition.
(c_parser_omp_clause_num_threads, c_parser_omp_clause_num_tasks,
c_parser_omp_clause_grainsize, c_parser_omp_clause_priority,
c_parser_omp_clause_hint, c_parser_omp_clause_num_teams,
c_parser_omp_clause_thread_limit, c_parser_omp_clause_linear): Use
c_parser_expr_no_commas instead of c_parser_expression.
cp/
* parser.c (cp_parser_omp_clause_final, cp_parser_omp_clause_if): Use
cp_parser_assignment_expression instead of cp_parser_condition.
(cp_parser_omp_clause_num_threads, cp_parser_omp_clause_num_tasks,
cp_parser_omp_clause_grainsize, cp_parser_omp_clause_priority,
cp_parser_omp_clause_num_teams, cp_parser_omp_clause_thread_limit,
cp_parser_omp_clause_linear, cp_parser_omp_clause_device): Use
cp_parser_assignment_expression instead of cp_parser_expression.
(cp_parser_omp_clause_hint): Likewise.  Formatting fix.
testsuite/
* c-c++-common/gomp/clauses-5.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265990 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago * c-parser.c (c_parser_omp_clause_reduction): Call sorry_at on
jakub [Fri, 9 Nov 2018 20:21:41 +0000 (20:21 +0000)] 
* c-parser.c (c_parser_omp_clause_reduction): Call sorry_at on
reduction clause with inscan modifier.

* parser.c (cp_parser_omp_clause_reduction): Call sorry_at on
reduction clause with inscan modifier.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265989 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago * c-parser.c (c_parser_omp_requires): Call sorry_at on requires
jakub [Fri, 9 Nov 2018 20:20:53 +0000 (20:20 +0000)] 
* c-parser.c (c_parser_omp_requires): Call sorry_at on requires
clauses other than atomic_default_mem_order.

* parser.c (cp_parser_omp_requires): Call sorry_at on requires
clauses other than atomic_default_mem_order.

* c-c++-common/gomp/requires-1.c: Prune not supported yet messages.
* c-c++-common/gomp/requires-2.c: Likewise.
* c-c++-common/gomp/requires-4.c: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265988 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago * gimplify.c (gimplify_scan_omp_clauses): Call sorry_at for valid
jakub [Fri, 9 Nov 2018 20:19:58 +0000 (20:19 +0000)] 
* gimplify.c (gimplify_scan_omp_clauses): Call sorry_at for valid
but unsupported lastprivate with conditional modifier.

* c-c++-common/gomp/lastprivate-conditional-1.c: New test.
* c-c++-common/gomp/lastprivate-conditional-2.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265987 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago * config/mips/mips.c (mips_loongson_ext2_prefetch_cookie): Handle
law [Fri, 9 Nov 2018 20:17:52 +0000 (20:17 +0000)] 
* config/mips/mips.c (mips_loongson_ext2_prefetch_cookie): Handle
unused argument better.  Add gcc_unreachable to silence warning.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265986 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago * affinity-fmt.c: Include inttypes.h if HAVE_INTTYPES_H.
jakub [Fri, 9 Nov 2018 20:17:40 +0000 (20:17 +0000)] 
* affinity-fmt.c: Include inttypes.h if HAVE_INTTYPES_H.
(gomp_display_affinity): Use __builtin_choose_expr to handle
properly handle argument having integral, or pointer or some other
type.  If inttypes.h is available and PRIx64 is defined, use PRIx64
with uint64_t type instead of %llx and unsigned long long.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265985 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoPR libstdc++/87787 fix UBsan error in std::vector
redi [Fri, 9 Nov 2018 20:14:07 +0000 (20:14 +0000)] 
PR libstdc++/87787 fix UBsan error in std::vector

PR libstdc++/87787
* include/bits/stl_uninitialized.h (__relocate_a_1): Do not call
memmove when there's nothing to copy (and pointers could be null).

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265984 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoFix whitespace in ChangeLog
redi [Fri, 9 Nov 2018 20:13:58 +0000 (20:13 +0000)] 
Fix whitespace in ChangeLog

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265983 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago gcc.dg/torture/stackalign/builtin-apply-2.c: Skip on v850.
law [Fri, 9 Nov 2018 20:08:20 +0000 (20:08 +0000)] 
gcc.dg/torture/stackalign/builtin-apply-2.c: Skip on v850.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265982 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago cmd/cgo: fix typo in gccgo name mangling recipe
ian [Fri, 9 Nov 2018 19:03:59 +0000 (19:03 +0000)] 
cmd/cgo: fix typo in gccgo name mangling recipe

    The code to implement new-style gccgo name mangling had a recipe that
    didn't quite match the one in the compiler (incorrect handling for
    '.'). This showed up as a failure in the gotools cgo test if the
    directory containing the test run included a "." character.

    Reviewed-on: https://go-review.googlesource.com/c/147917

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265981 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoPR middle-end/81824 - Warn for missing attributes with function aliases
msebor [Fri, 9 Nov 2018 17:32:52 +0000 (17:32 +0000)] 
PR middle-end/81824 - Warn for missing attributes with function aliases

gcc/c-family/ChangeLog:

PR middle-end/81824
* c-attribs.c (handle_copy_attribute): New function.

gcc/cp/ChangeLog:

PR middle-end/81824
* pt.c (warn_spec_missing_attributes): Move code to attribs.c.
Call decls_mismatched_attributes.

gcc/ChangeLog:

PR middle-end/81824
* attribs.c (has_attribute): New helper function.
(decls_mismatched_attributes, maybe_diag_alias_attributes): Same.
* attribs.h (decls_mismatched_attributes): Declare.
* cgraphunit.c (handle_alias_pairs): Call maybe_diag_alias_attributes.
(maybe_diag_incompatible_alias): Use OPT_Wattribute_alias_.
* common.opt (-Wattribute-alias): Take an argument.
(-Wno-attribute-alias): New option.
* doc/extend.texi (Common Function Attributes): Document copy.
(Common Variable Attributes): Same.
* doc/invoke.texi (-Wmissing-attributes): Document enhancement.
(-Wattribute-alias): Document new option argument.

gcc/testsuite/ChangeLog:

PR middle-end/81824
* gcc.dg/Wattribute-alias.c: New test.
* gcc.dg/Wmissing-attributes.c: New test.
* gcc.dg/attr-copy.c: New test.
* gcc.dg/attr-copy-2.c: New test.
* gcc.dg/attr-copy-3.c: New test.
* gcc.dg/attr-copy-4.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265980 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2018-11-09 Jerry DeLisle <jvdelisle@gcc.gnu.org>
jvdelisle [Fri, 9 Nov 2018 17:29:33 +0000 (17:29 +0000)] 
2018-11-09  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

PR libfortran/78351
* io/transfer.c (read_sf_internal): Delete leftover
debug code.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265979 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoarm - minor cleanups for CPU alias support
rearnsha [Fri, 9 Nov 2018 17:28:57 +0000 (17:28 +0000)] 
arm - minor cleanups for CPU alias support

A couple of very minor issues with the new support for CPU
aliases.

* config/arm/parsecpu.awk (/alias/): Tighten invisible alias
matching criteria.  Remove unused array initializer.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265978 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoPR c/87795 - Excessive alignment permitted for functions and labels
msebor [Fri, 9 Nov 2018 17:17:47 +0000 (17:17 +0000)] 
PR c/87795 - Excessive alignment permitted for functions and labels

gcc/c-family/ChangeLog:

PR c/87795
* c-common.c (check_user_alignment): Use MAX_OFILE_ALIGNMENT.

gcc/testsuite/ChangeLog:

PR c/87795
* gcc.dg/attr-aligned.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265977 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2018-11-09 Bill Schmidt <wschmidt@linux.ibm.com>
wschmidt [Fri, 9 Nov 2018 16:35:23 +0000 (16:35 +0000)] 
2018-11-09  Bill Schmidt  <wschmidt@linux.ibm.com>
    Jinsong Ji  <jji@us.ibm.com>

* config/rs6000/xmmintrin.h (_mm_cvtss_si32): Fix incorrect
constraints by introducing a new temporary.
(_mm_cvtss_si64): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265975 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago syscall: change RLIM_INFINITY from 0xffffffffffffffff to -1
ian [Fri, 9 Nov 2018 15:30:51 +0000 (15:30 +0000)] 
syscall: change RLIM_INFINITY from 0xffffffffffffffff to -1

    For compatibility with the gc toolchain's syscall package.

    Fixes golang/go#28665

    Reviewed-on: https://go-review.googlesource.com/c/148697

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265974 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoUpdate ChangeLog entry
bergner [Fri, 9 Nov 2018 15:17:46 +0000 (15:17 +0000)] 
Update ChangeLog entry

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265971 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoCome up with the flag -fipa-stack-alignment.
marxin [Fri, 9 Nov 2018 15:05:40 +0000 (15:05 +0000)] 
Come up with the flag -fipa-stack-alignment.

2018-11-09  Martin Liska  <mliska@suse.cz>

* common.opt: Add -fipa-stack-alignment flag.
* doc/invoke.texi: Document it.
* final.c (rest_of_clean_state): Guard stack
shrinking with flag.
2018-11-09  Martin Liska  <mliska@suse.cz>

* gcc.target/i386/ipa-stack-alignment.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265970 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoCome up with -fipa-reference-addressable flag.
marxin [Fri, 9 Nov 2018 15:04:52 +0000 (15:04 +0000)] 
Come up with -fipa-reference-addressable flag.

2018-11-09  Martin Liska  <mliska@suse.cz>

* cgraph.h (ipa_discover_readonly_nonaddressable_vars): Rename
to ...
(ipa_discover_variable_flags): ... this.
* common.opt: Come up with new flag -fipa-reference-addressable.
* doc/invoke.texi: Document it.
* ipa-reference.c (propagate): Call the renamed fn.
* ipa-visibility.c (whole_program_function_and_variable_visibility):
Likewise.
* ipa.c (ipa_discover_readonly_nonaddressable_vars): Renamed to
...
(ipa_discover_variable_flags): ... this.  Discover
non-addressable variables only with the newly added flag.
* opts.c: Enable the newly added flag with -O1 and higher
optimization level.
2018-11-09  Martin Liska  <mliska@suse.cz>

* gcc.dg/tree-ssa/writeonly-2.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265969 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agojson.cc: fix comment
dmalcolm [Fri, 9 Nov 2018 13:25:33 +0000 (13:25 +0000)] 
json.cc: fix comment

gcc/ChangeLog:
* json.cc (selftest::test_writing_literals): Fix comment.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265968 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2018-11-09 Jakub Jelinek <jakub@redhat.com>
jakub [Fri, 9 Nov 2018 13:02:50 +0000 (13:02 +0000)] 
2018-11-09  Jakub Jelinek  <jakub@redhat.com>

* gcc.dg/gomp/workshare-reduction-1.c: New test.
* gcc.dg/gomp/workshare-reduction-2.c: New test.
* gcc.dg/gomp/workshare-reduction-3.c: New test.
* gcc.dg/gomp/workshare-reduction-4.c: New test.
* gcc.dg/gomp/workshare-reduction-5.c: New test.
* gcc.dg/gomp/workshare-reduction-6.c: New test.
* gcc.dg/gomp/workshare-reduction-7.c: New test.
* gcc.dg/gomp/workshare-reduction-8.c: New test.
* gcc.dg/gomp/workshare-reduction-9.c: New test.
* gcc.dg/gomp/workshare-reduction-10.c: New test.
* gcc.dg/gomp/workshare-reduction-11.c: New test.
* gcc.dg/gomp/workshare-reduction-12.c: New test.
* gcc.dg/gomp/workshare-reduction-13.c: New test.
* gcc.dg/gomp/workshare-reduction-14.c: New test.
* gcc.dg/gomp/workshare-reduction-15.c: New test.
* gcc.dg/gomp/workshare-reduction-16.c: New test.
* gcc.dg/gomp/workshare-reduction-17.c: New test.
* gcc.dg/gomp/workshare-reduction-18.c: New test.
* gcc.dg/gomp/workshare-reduction-19.c: New test.
* gcc.dg/gomp/workshare-reduction-20.c: New test.
* gcc.dg/gomp/workshare-reduction-21.c: New test.
* gcc.dg/gomp/workshare-reduction-22.c: New test.
* gcc.dg/gomp/workshare-reduction-23.c: New test.
* gcc.dg/gomp/workshare-reduction-24.c: New test.
* gcc.dg/gomp/workshare-reduction-25.c: New test.
* gcc.dg/gomp/workshare-reduction-26.c: New test.
* gcc.dg/gomp/workshare-reduction-27.c: New test.
* gcc.dg/gomp/workshare-reduction-28.c: New test.
* gcc.dg/gomp/workshare-reduction-29.c: New test.
* gcc.dg/gomp/workshare-reduction-30.c: New test.
* gcc.dg/gomp/workshare-reduction-31.c: New test.
* gcc.dg/gomp/workshare-reduction-32.c: New test.
* gcc.dg/gomp/workshare-reduction-33.c: New test.
* gcc.dg/gomp/workshare-reduction-34.c: New test.
* gcc.dg/gomp/workshare-reduction-35.c: New test.
* gcc.dg/gomp/workshare-reduction-36.c: New test.
* gcc.dg/gomp/workshare-reduction-37.c: New test.
* gcc.dg/gomp/workshare-reduction-38.c: New test.
* gcc.dg/gomp/workshare-reduction-39.c: New test.
* gcc.dg/gomp/workshare-reduction-40.c: New test.
* gcc.dg/gomp/workshare-reduction-41.c: New test.
* gcc.dg/gomp/workshare-reduction-42.c: New test.
* gcc.dg/gomp/workshare-reduction-43.c: New test.
* gcc.dg/gomp/workshare-reduction-44.c: New test.
* gcc.dg/gomp/workshare-reduction-45.c: New test.
* gcc.dg/gomp/workshare-reduction-46.c: New test.
* gcc.dg/gomp/workshare-reduction-47.c: New test.
* gcc.dg/gomp/workshare-reduction-48.c: New test.
* gcc.dg/gomp/workshare-reduction-49.c: New test.
* gcc.dg/gomp/workshare-reduction-50.c: New test.
* gcc.dg/gomp/workshare-reduction-51.c: New test.
* gcc.dg/gomp/workshare-reduction-52.c: New test.
* gcc.dg/gomp/workshare-reduction-53.c: New test.
* gcc.dg/gomp/workshare-reduction-54.c: New test.
* gcc.dg/gomp/workshare-reduction-55.c: New test.
* gcc.dg/gomp/workshare-reduction-56.c: New test.
* gcc.dg/gomp/workshare-reduction-57.c: New test.
* gcc.dg/gomp/workshare-reduction-58.c: New test.
libgomp/
* testsuite/libgomp.c-c++-common/task-reduction-13.c: New test.
* testsuite/libgomp.c-c++-common/task-reduction-14.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265967 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoRemove extra memory allocation of strings.
marxin [Fri, 9 Nov 2018 13:01:19 +0000 (13:01 +0000)] 
Remove extra memory allocation of strings.

2018-11-09  Martin Liska  <mliska@suse.cz>

* config/aarch64/aarch64.c (aarch64_parse_arch): Do not copy
string to a stack buffer.
(aarch64_parse_cpu): Likewise.
(aarch64_parse_tune): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265966 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2018-11-09 Richard Biener <rguenther@suse.de>
rguenth [Fri, 9 Nov 2018 12:29:51 +0000 (12:29 +0000)] 
2018-11-09  Richard Biener  <rguenther@suse.de>

PR tree-optimization/87953
* tree-vect-loop.c (vectorizable_reduction): For analysis
always pass ops[0] to vectorizable_condition.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265964 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoor1k: gcc: initial support for openrisc
shorne [Fri, 9 Nov 2018 12:16:14 +0000 (12:16 +0000)] 
or1k: gcc: initial support for openrisc

2018-11-09  Stafford Horne  <shorne@gmail.com>
    Richard Henderson  <rth@twiddle.net>
    Joel Sherrill  <joel@rtems.org>

* common/config/or1k/or1k-common.c: New file.
* config/or1k/*: New.
* config.gcc (or1k*-*-*): New.
* configure.ac (or1k*-*-*): New test for openrisc tls.
* configure: Regenerated.
* doc/install.texi: Document OpenRISC triplets.
* doc/invoke.texi: Document OpenRISC arguments.
* doc/md.texi: Document OpenRISC.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265963 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoor1k: testsuite: initial support for openrisc
shorne [Fri, 9 Nov 2018 12:12:56 +0000 (12:12 +0000)] 
or1k: testsuite: initial support for openrisc

gcc/testsuite/ChangeLog:

2018-11-09  Stafford Horne  <shorne@gmail.com>
    Richard Henderson  <rth@twiddle.net>

* gcc.c-torture/execute/20101011-1.c: Adjust for OpenRISC.
* gcc.dg/20020312-2.c: Likewise.
* gcc.dg/attr-alloc_size-11.c: Likewise.
* gcc.dg/builtin-apply2.c: Likewise.
* gcc.dg/nop.h: Likewise.
* gcc.dg/torture/stackalign/builtin-apply-2.c: Likewise.
* gcc.dg/tree-ssa/20040204-1.c: Likewise.
* gcc.dg/tree-ssa/reassoc-33.c: Likewise.
* gcc.dg/tree-ssa/reassoc-34.c: Likewise.
* gcc.dg/tree-ssa/reassoc-35.c: Likewise.
* gcc.dg/tree-ssa/reassoc-36.c: Likewise.
* lib/target-supports.exp
(check_effective_target_logical_op_short_circuit): Add or1k*-*-*.
* gcc.target/or1k/*: New.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265962 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoor1k: libgcc: initial support for openrisc
shorne [Fri, 9 Nov 2018 12:09:15 +0000 (12:09 +0000)] 
or1k: libgcc: initial support for openrisc

libgcc/ChangeLog:

2018-11-09  Stafford Horne  <shorne@gmail.com>
    Richard Henderson  <rth@twiddle.net>

* config.host: Add OpenRISC support.
* config/or1k/*: New.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265961 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoarm - use the new CPU alias option to simplify the list of CPUs.
rearnsha [Fri, 9 Nov 2018 10:58:59 +0000 (10:58 +0000)] 
arm - use the new CPU alias option to simplify the list of CPUs.

This patch simplifies the table of CPUs supported in GCC by making
use of the new alias feature.  Most of the changes are fairly
straight-forward:
- arm7tdmi and arm7tdmi-s are the same thing.
- arm710t, arm720t and arm740t differ only in features external to the core
- arm920 and arm920t are the same thing; arm922t and arm940t differ from
  arm920t only in features external to the core; ep9312 is an arm920t-derived
  core that we continue to recognize for legacy reasons.
- arm10tdmi and arm1020t differ only in features external to the core.
- arm9e, arm946te-s, arm966e-s and arm968e-s differ only in features external
  to the core.
- arm10e, arm1020e and arm1022e differ only in features external to the core.

The arm10e/arm1020e/arm1022e change is the only one which changes
behaviour of the compiler slightly.  Previously, and for no reason
that I can remember, the scheduler for arm1020e/arm1022e was not used
for arm10e: this was probably an oversight.  The unification means
that the same scheduler is now used for all three cores.

* config/arm/arm-cpus.in (arm7tdmi): Add an alias for arm7tdmi-s.
(arm7tdmi-s): Delete CPU.
(arm710t): Add aliases for arm720t and arm740t.
(arm720t, arm740t): Delete CPUs.
(arm920t): Add aliases for arm920, arm922t and arm940t.
(arm920, arm922t, arm940t): Delete CPUs.
(arm10tdmi): Add alias for arm1020t.
(arm1020t): Delete CPU.
(arm9e): Add aliases for arm946e-s, arm966e-s and arm968e-s.
(arm946e-s, arm966e-s, arm968e-s): Delete CPUs.
(arm10e): Add aliases for arm1020e and arm1022e.
(arm1020e, arm1022e): Delete CPU.
* config/arm/arm.md (generic_sched): Remove entries that are now
handled by aliases.
(generic_vfp): Likewise.
* config/arm/arm1020e.md: Simplify tuning selection based on alias
changes.
* config/arm/arm-tune.md: Regenerated.
* config/arm/arm-tables.opt: Regenerated.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265960 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2018-11-09 Richard Biener <rguenther@suse.de>
rguenth [Fri, 9 Nov 2018 10:53:31 +0000 (10:53 +0000)] 
2018-11-09  Richard Biener  <rguenther@suse.de>

PR tree-optimization/87621
* tree-vect-loop.c (vectorizable_reduction): Handle reduction
op with only phi inputs.
* tree-ssa-loop-ch.c: Include tree-ssa-sccvn.h.
(ch_base::copy_headers): Run CSE on copied loop headers.
(pass_ch_vect::process_loop_p): Simplify.

* g++.dg/vect/pr87621.cc: New testcase.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265959 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agolarge-addr-aware for biarch non-w64 mingw32
aoliva [Fri, 9 Nov 2018 10:49:47 +0000 (10:49 +0000)] 
large-addr-aware for biarch non-w64 mingw32

for  gcc/ChangeLog

* config/i386/mingw32.h (LINK_SPEC_LARGE_ADDR_AWARE): Adjust
        for non-w64 x86_64 biarch.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265958 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[PR86438] compare-elim: cope with set of in_b
aoliva [Fri, 9 Nov 2018 10:16:09 +0000 (10:16 +0000)] 
[PR86438] compare-elim: cope with set of in_b

When in_a resolves to a register set in the prev_clobber insn, we may
use the SET_SRC for the compare instead.  However, when in_b so
resolves, we proceed to use the reg with its earlier value.  When both
resolve to the same register and prev_clobber is an insn that modifies
the register, this arrangement may cause the compare to match (when it
shouldn't) and the elimination of the compare to incorrectly succeed.

(set (reg 1) (plus (reg 1) (const_int N)))
(set (reg 2) (reg 1))
(set (reg flags) (compare (reg 1) (reg 2)))

in_a: (reg 1)            --> (plus (reg 1) (const_int N))
in_b: (reg 2) -> (reg 1) -/> oops

(parallel [
 (set (reg flags) (compare (plus (reg 1) (const_int N))
                           (reg 1))) ;; should be (plus...)
 (set (reg 1) (plus (reg 1) (const_int N)))])
(set (reg 2) (reg 1))

This patch arranges for in_b to also undergo SET_SRC substitution
when appropriate, with a shortcut for when in_a and in_b are the same
rtx.

for  gcc/ChangeLog

PR rtl-optimization/86438
* compare-elim.c (try_eliminate_compare): Use SET_SRC instead
of in_b for the compare if in_b is SET_DEST.

for  gcc/testsuite/ChangeLog

PR rtl-optimization/86438
* gcc.dg/torture/pr86438.c: New.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265957 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[PR87793] reject non-toplevel unspecs in debug loc exprs on x86
aoliva [Fri, 9 Nov 2018 10:15:46 +0000 (10:15 +0000)] 
[PR87793] reject non-toplevel unspecs in debug loc exprs on x86

Before revision 254025, we'd reject UNSPECs in debug loc exprs.
TARGET_CONST_NOT_OK_FOR_DEBUG_P still rejects that by default, on all
ports that override it, except for x86, that accepts @gotoff unspecs.
We can indeed accept them in top-level expressions, but not as
subexpressions: the assembler rejects the difference between two
@gotoff symbols, for example.

We could simplify such a difference and drop the @gotoffs, provided
that the symbols are in the same section; we could also accept
@gotoffs plus literal constants.  However, accepting those but
rejecting such combinations as subexpressions would be ugly, and most
likely not worth the trouble: sym@gotoff+litconst hardly makes sense
as a standalone expression, and the difference between @gotoffs should
be avoided to begin with, as follows.

Ideally, the debug loc exprs would use the symbolic data in
REG_EQUIV/REG_EQUAL notes, or delegitimized addresses, instead of
simplifying the difference between two legitimized addresses so that
the occurrences of the GOT register cancel each other.  That would
require some more elaborate surgery in var-tracking and cselib than
would be appropriate at this stage.

for  gcc/ChangeLog

PR target/87793
* config/i386/i386.c (ix86_const_not_ok_for_debug_p): Reject
non-toplevel UNSPEC.

for  gcc/testsuite/ChangeLog

PR target/87793
* gcc.dg/pr87793.c: New.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265956 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago * tree-vrp.c (value_range::check): Do not access internals
aldyh [Fri, 9 Nov 2018 09:53:11 +0000 (09:53 +0000)] 
* tree-vrp.c (value_range::check): Do not access internals
directly.
(value_range::singleton_p): Same.
(value_range::type): Same.
(vrp_finalize): Use value_range API.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265955 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago * tree-vrp.c (may_contain_p): Do not access m_min/m_max directly.
aldyh [Fri, 9 Nov 2018 09:52:53 +0000 (09:52 +0000)] 
* tree-vrp.c (may_contain_p): Do not access m_min/m_max directly.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265954 138bc75d-0d04-0410-961f-82ee72b054a4