]> git.ipfire.org Git - thirdparty/gcc.git/log
thirdparty/gcc.git
4 years ago[Ada] Fix documentation for GNAT.Command_Line.Exit_From_Command_Line
pmderodat [Tue, 20 Aug 2019 09:47:49 +0000 (09:47 +0000)] 
[Ada] Fix documentation for GNAT.Command_Line.Exit_From_Command_Line

2019-08-20  Bob Duff  <duff@adacore.com>

gcc/ada/

* libgnat/g-comlin.ads (Exit_From_Command_Line): Fix
documentation for GNAT.Command_Line.

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

4 years ago[Ada] Add missing dot at the end of lang.opt doc for -fdump-scos
pmderodat [Tue, 20 Aug 2019 09:47:44 +0000 (09:47 +0000)] 
[Ada] Add missing dot at the end of lang.opt doc for -fdump-scos

2019-08-20  Pierre-Marie de Rodat  <derodat@adacore.com>

gcc/ada/

PR ada/91492
* gcc-interface/lang.opt (-fdump-scos): Add missing dot at the
end of the documentation.

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

4 years ago PR rtl-optimization/91347
ebotcazou [Tue, 20 Aug 2019 09:10:53 +0000 (09:10 +0000)] 
PR rtl-optimization/91347
* dse.c (scan_insn): Call add_wild_read for non-const/memset tail calls
before reload if HARD_FRAME_POINTER_IS_ARG_POINTER.

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

4 years agoAdd a pass_by_reference flag to function_arg_info
rsandifo [Tue, 20 Aug 2019 08:54:03 +0000 (08:54 +0000)] 
Add a pass_by_reference flag to function_arg_info

This patch adds a flag that tells targets whether an argument
has been converted to pass-by-reference form.  This replaces
assign_parm_data_one::passed_pointer in function.c.

The flag is set automatically for places that call
apply_pass_by_reference_rules.  Places that apply
pass-by-reference manually need to set it themselves.

(After previous changes, no targets apply pass-by-reference
manually.  They all go through apply_pass_by_reference_rules.)

2019-08-20  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
* calls.h (function_arg_info): Add a pass_by_reference field,
defaulting to false.
* calls.c (apply_pass_by_reference_rules): Set pass_by_reference
when applying pass-by-reference semantics.
(initialize_argument_information): Likewise.
(emit_library_call_value_1): Likewise.
* function.c (assign_parm_data_one): Remove passed_pointer field.
(assign_parm_find_data_types): Don't set it.
(assign_parm_find_stack_rtl, assign_parm_adjust_stack_rtl)
(assign_parm_setup_reg, assign_parms, gimplify_parameters): Use
arg.pass_by_reference instead of passed_pointer.

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

4 years agoMake calls.c use function_arg_info internally
rsandifo [Tue, 20 Aug 2019 08:53:56 +0000 (08:53 +0000)] 
Make calls.c use function_arg_info internally

This patch makes the two main calls.c argument-processing
routines track the state of the argument in a function_arg_info
instead of using separate mode variables.

2019-08-20  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
* calls.c (emit_library_call_value_1): Merge arg and orig_arg
into a single function_arg_info, updating its fields when we
apply pass-by-reference and promotion semantics.  Use the
function_arg_info to track the mode rather than keeping it in
a separate local variable.
(initialize_argument_information): Likewise.  Base the final
arg_to_skip on this new function_arg_info rather than creating
a new one from scratch.

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

4 years agoMake function.c use function_arg_info internally
rsandifo [Tue, 20 Aug 2019 08:53:52 +0000 (08:53 +0000)] 
Make function.c use function_arg_info internally

This patch adds a function_arg_info field to assign_parm_data_one,
so that:

  - passed_type -> arg.type
  - promoted_mode -> arg.mode
  - named_arg -> arg.named

We can then pass this function_arg_info directly to the converted
hooks.

Between the initialisation of the assign_parm_data_one and the
application of promotion rules (which is a state internal to
assign_parm_find_data_types), arg.mode is equivalent to passed_mode
(i.e. to TYPE_MODE).

2019-08-20  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
* function.c (assign_parm_data_one): Replace passed_type,
promoted_mode and named_arg with a function_arg_info field.
(assign_parm_find_data_types): Remove local variables and
assign directly to "data".  Make data->passed_mode shadow
data->arg.mode until promotion, then assign the promoted
mode to data->arg.mode.
(assign_parms_setup_varargs, assign_parm_find_entry_rtl)
(assign_parm_find_stack_rtl, assign_parm_adjust_entry_rtl)
(assign_parm_remove_parallels, assign_parm_setup_block_p)
(assign_parm_setup_block, assign_parm_setup_reg)
(assign_parm_setup_stack, assign_parms, gimplify_parameters): Use
arg.mode instead of promoted_mode, arg.type instead of passed_type
and arg.named instead of named_arg.  Use data->arg for
function_arg_info structures that had the field values passed_type,
promoted_mode and named_arg.  Base other function_arg_infos on
data->arg, changing the necessary properties.

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

4 years agoAdd a apply_pass_by_reference_rules helper
rsandifo [Tue, 20 Aug 2019 08:53:47 +0000 (08:53 +0000)] 
Add a apply_pass_by_reference_rules helper

This patch adds a helper routine that applies pass-by-reference
semantics to an existing function_arg_info.

The c6x part means that c6x_function_arg and c6x_function_arg_advance
see the same "named" value as pass_by_reference did, rather than
pass_by_reference seeing "true" and the others seeing "false".
This doesn't matter because the c6x port doesn't care about namedness.

The rs6000.c patch removes an assignment to "type", but the only
later code to use it was the patched promote_mode line.

(The reason for patching these places despite the above is that
often target code gets used as a basis for new targets or changes
to existing ones.)

2019-08-20  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
* calls.h (apply_pass_by_reference_rules): Declare.
* calls.c (apply_pass_by_reference_rules): New function.
* config/c6x/c6x.c (c6x_call_saved_register_used): Use it.
* config/rs6000/rs6000-call.c (rs6000_parm_needs_stack): Likewise.
* config/s390/s390.c (s390_call_saved_register_used): Likewise.
* function.c (assign_parm_find_data_types): Likewise.
* var-tracking.c (prepare_call_arguments): Likewise.

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

4 years agoUse function_arg_info for TARGET_MUST_PASS_IN_STACK
rsandifo [Tue, 20 Aug 2019 08:53:39 +0000 (08:53 +0000)] 
Use function_arg_info for TARGET_MUST_PASS_IN_STACK

The hook is passed the promoted mode instead of the original type mode.

The expr.h reference in the documentation is no longer correct, but
pointing to calls.h or calls.c doesn't help much either.  I just left
this as-is since it's not related to the point of the series.

After previous changes, most places already pass arg.mode and arg.type.
Only i386 and mcore needed to construct a new one out of nothing.
rs6000 needs to construct one slightly earlier than before.

2019-08-20  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
* target.def (must_pass_in_stack): Take a function_arg_info instead
of a mode and a type.
* doc/tm.texi: Regenerate.
* calls.h (must_pass_in_stack_var_size): Take a function_arg_info
instead of a mode and a type.
(must_pass_in_stack_var_size_or_pad): Likewise.
* calls.c (must_pass_in_stack_var_size): Likewise.
(must_pass_in_stack_var_size_or_pad): Likewise.
(initialize_argument_information): Update call to
targetm.calls.must_pass_in_stack.
(must_pass_va_arg_on_stack): Likewise.
* function.c (assign_parm_find_entry_rtl): Likewise.
* targhooks.c (hook_pass_by_reference_must_pass_in_stack): Likewise.
* config/alpha/alpha.c (alpha_function_arg): Likewise.
(alpha_function_arg_advance): Likewise.
* config/cr16/cr16.c (cr16_function_arg): Likewise.
(cr16_function_arg_advance): Likewise.
* config/cris/cris.c (cris_pass_by_reference): Likewise.
(cris_arg_partial_bytes): Likewise.
* config/iq2000/iq2000.c (iq2000_pass_by_reference): Likewise.
* config/lm32/lm32.c (lm32_function_arg): Likewise.
* config/mcore/mcore.c (mcore_num_arg_regs): Likewise.
(mcore_function_arg, mcore_arg_partial_bytes): Likewise.
* config/mips/mips.c (mips_pass_by_reference): Likewise.
* config/mmix/mmix.c (mmix_function_arg_advance): Likewise.
(mmix_function_arg_1, mmix_pass_by_reference): Likewise.
* config/sh/sh.c (sh_pass_by_reference): Likewise.
* config/stormy16/stormy16.c (xstormy16_function_arg): Likewise.
* config/xtensa/xtensa.c (xtensa_function_arg_advance): Likewise.
* config/arm/arm.c (arm_must_pass_in_stack): Take a function_arg_info
instead of a mode and a type.
* config/fr30/fr30.c (fr30_must_pass_in_stack): Likewise.
(fr30_num_arg_regs): Likewise.
(fr30_setup_incoming_varargs): Update calls accordingly.
(fr30_arg_partial_bytes, fr30_function_arg): Likewise.
(fr30_function_arg_advance): Likewise.
* config/frv/frv.c (frv_must_pass_in_stack): Take a function_arg_info
instead of a mode and a type.
* config/gcn/gcn.c (num_arg_regs): Likewise.
(gcn_function_arg, gcn_function_arg_advance): Update calls to
num_arg_regs and targetm.calls.must_pass_in_stack.
(gcn_arg_partial_bytes): Likewise.
* config/i386/i386.c (ix86_must_pass_in_stack): Take a
function_arg_info instead of a mode and a type.
(classify_argument): Update call accordingly.
* config/nds32/nds32.c (nds32_must_pass_in_stack): Take a
function_arg_info instead of a mode and a type.
* config/rs6000/rs6000-internal.h (rs6000_must_pass_in_stack):
Likewise.
* config/rs6000/rs6000-call.c (rs6000_must_pass_in_stack): Likewise.
(rs6000_parm_needs_stack): Update call accordingly.
(setup_incoming_varargs): Likewise.

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

4 years agoUse function_arg_info for TARGET_CALLEE_COPIES
rsandifo [Tue, 20 Aug 2019 08:53:23 +0000 (08:53 +0000)] 
Use function_arg_info for TARGET_CALLEE_COPIES

The hook is passed the unpromoted type mode instead of the promoted mode.

The aarch64 definition is redundant, but worth keeping for emphasis.

2019-08-20  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
* target.def (callee_copies): Take a function_arg_info instead
of a mode, type and named flag.
* doc/tm.texi: Regenerate.
* targhooks.h (hook_callee_copies_named): Take a function_arg_info
instead of a mode, type and named flag.
(hook_bool_CUMULATIVE_ARGS_mode_tree_bool_false): Delete.
(hook_bool_CUMULATIVE_ARGS_mode_tree_bool_true): Likewise.
(hook_bool_CUMULATIVE_ARGS_arg_info_true): New function.
* targhooks.c (hook_callee_copies_named): Take a function_arg_info
instead of a mode, type and named flag.
(hook_bool_CUMULATIVE_ARGS_mode_tree_bool_false): Delete.
(hook_bool_CUMULATIVE_ARGS_mode_tree_bool_true): Likewise.
(hook_bool_CUMULATIVE_ARGS_arg_info_true): New function.
* calls.h (reference_callee_copied): Take a function_arg_info
instead of a mode, type and named flag.
* calls.c (reference_callee_copied): Likewise.
(initialize_argument_information): Update call accordingly.
(emit_library_call_value_1): Likewise.
* function.c (gimplify_parameters): Likewise.
* config/aarch64/aarch64.c (TARGET_CALLEE_COPIES): Define to
hook_bool_CUMULATIVE_ARGS_arg_info_false instead of
hook_bool_CUMULATIVE_ARGS_mode_tree_bool_false.
* config/c6x/c6x.c (c6x_callee_copies): Delete.
(TARGET_CALLEE_COPIES): Define to
hook_bool_CUMULATIVE_ARGS_arg_info_true instead.
* config/epiphany/epiphany.c (TARGET_CALLEE_COPIES): Define to
hook_bool_CUMULATIVE_ARGS_arg_info_true instead of
hook_bool_CUMULATIVE_ARGS_mode_tree_bool_true.
* config/mips/mips.c (mips_callee_copies): Take a function_arg_info
instead of a mode, type and named flag.
* config/mmix/mmix.c (TARGET_CALLEE_COPIES): Define to
hook_bool_CUMULATIVE_ARGS_arg_info_true instead of
hook_bool_CUMULATIVE_ARGS_mode_tree_bool_true.
* config/mn10300/mn10300.c (TARGET_CALLEE_COPIES): Likewise.
* config/msp430/msp430.c (msp430_callee_copies): Delete.
(TARGET_CALLEE_COPIES): Define to
hook_bool_CUMULATIVE_ARGS_arg_info_true instead.
* config/pa/pa.c (pa_callee_copies): Take a function_arg_info
instead of a mode, type and named flag.
* config/sh/sh.c (sh_callee_copies): Likewise.
* config/v850/v850.c (TARGET_CALLEE_COPIES): Define to
hook_bool_CUMULATIVE_ARGS_arg_info_true instead of
hook_bool_CUMULATIVE_ARGS_mode_tree_bool_true.

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

4 years agoUse function_arg_info for TARGET_FUNCTION_ARG_ADVANCE
rsandifo [Tue, 20 Aug 2019 08:53:14 +0000 (08:53 +0000)] 
Use function_arg_info for TARGET_FUNCTION_ARG_ADVANCE

There seems to be a bit of confusion around this one.  Almost all
callers pass the same arguments as TARGET_FUNCTION_ARG, meaning
that the mode is the promoted mode rather than the type mode.
But the calls.c handling for normal typed arguments instead passes
the unpromoted TYPE_MODE (despite passing the promoted mode to
TARGET_FUNCTION_ARG).  I've kept this behaviour with a ??? comment.

(The calls.c handling of libgcc functions does pass the promoted
mode though, as does the function.c handling of incoming arguments.)

Also, a couple of the arm callers don't seem to be using the hook
correctly.  Again I kept the current choices and added a ??? comment.

2019-08-20  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
* target.def (function_arg_advance): Take a function_arg_info instead
of a mode, type and named flag.
* doc/tm.texi: Regenerate.
* targhooks.h (default_function_arg_advance): Take a function_arg_info
instead of a mode, type and named flag.
* targhooks.c (default_function_arg_advance): Likewise.
* calls.c (initialize_argument_information): Update call to
targetm.calls.function_arg_advance.
(emit_library_call_value_1): Likewise.
* dse.c (get_call_args): Likewise.
* expr.c (block_move_libcall_safe_for_call_parm): Likewise.
* function.c (assign_parms, gimplify_parameters): Likewise.
* var-tracking.c (prepare_call_arguments): Likewise.
* config/aarch64/aarch64.c (aarch64_function_arg_advance): Take a
function_arg_info instead of a mode, type and named flag.
(aarch64_setup_incoming_varargs): Update call accordingly.
* config/alpha/alpha.c (alpha_function_arg_advance): Take a
function_arg_info instead of a mode, type and named flag.
(alpha_setup_incoming_varargs): Update call accordingly.
* config/arc/arc.c (arc_function_arg_advance): Take a
function_arg_info instead of a mode, type and named flag.
(arc_setup_incoming_varargs): Update call accordingly.
* config/arm/arm.c (arm_function_arg_advance): Take a
function_arg_info instead of a mode, type and named flag.
(cmse_func_args_or_return_in_stack): Update call accordingly.
(arm_function_ok_for_sibcall): Likewise.
(cmse_nonsecure_call_clear_caller_saved): Likewise.
* config/avr/avr.c (avr_function_arg_advance): Take a
function_arg_info instead of a mode, type and named flag.
* config/bfin/bfin.c (bfin_function_arg_advance): Likewise.
* config/c6x/c6x.c (c6x_function_arg_advance): Likewise.
(c6x_call_saved_register_used): Update call accordingly.
* config/cr16/cr16.c (cr16_function_arg_advance): Take a
function_arg_info instead of a mode, type and named flag.
* config/cris/cris.c (cris_function_arg_advance): Likewise.
* config/csky/csky.c (csky_function_arg_advance): Likewise.
(csky_setup_incoming_varargs): Update call accordingly.
* config/epiphany/epiphany.c (epiphany_function_arg_advance): Take a
function_arg_info instead of a mode, type and named flag.
* config/fr30/fr30.c (fr30_function_arg_advance): Likewise.
* config/frv/frv.c (frv_function_arg_advance): Likewise.
* config/ft32/ft32.c (ft32_function_arg_advance): Likewise.
* config/gcn/gcn.c (gcn_function_arg_advance): Likewise.
* config/h8300/h8300.c (h8300_function_arg_advance): Likewise.
* config/i386/i386.c (ix86_function_arg_advance): Likewise.
(ix86_setup_incoming_varargs): Update call accordingly.
* config/ia64/ia64.c (ia64_function_arg_advance): Take a
function_arg_info instead of a mode, type and named flag.
(ia64_setup_incoming_varargs): Update call accordingly.
* config/iq2000/iq2000.c (iq2000_function_arg_advance): Take a
function_arg_info instead of a mode, type and named flag.
(iq2000_expand_prologue): Update call accordingly.
* config/lm32/lm32.c (lm32_function_arg_advance): Take a
function_arg_info instead of a mode, type and named flag.
* config/m32c/m32c.c (m32c_function_arg_advance): Likewise.
* config/m32r/m32r.c (m32r_function_arg_advance): Likewise.
* config/m68k/m68k.c (m68k_function_arg_advance): Likewise.
* config/mcore/mcore.c (mcore_function_arg_advance): Likewise.
* config/microblaze/microblaze.c (microblaze_function_arg_advance):
Likewise.
(microblaze_expand_prologue): Update call accordingly.
* config/mips/mips.c (mips_function_arg_advance): Take a
function_arg_info instead of a mode, type and named flag.
(mips_setup_incoming_varargs): Update call accordingly.
(mips_output_args_xfer): Likewise.
* config/mmix/mmix.c (mmix_function_arg_advance): Take a
function_arg_info instead of a mode, type and named flag.
* config/mn10300/mn10300.c (mn10300_function_arg_advance): Likewise.
* config/moxie/moxie.c (moxie_function_arg_advance): Likewise.
* config/msp430/msp430.c (msp430_function_arg_advance): Likewise.
* config/nds32/nds32.c (nds32_function_arg_advance): Likewise.
* config/nios2/nios2.c (nios2_function_arg_advance): Likewise.
(nios2_setup_incoming_varargs): Update call accordingly.
* config/nvptx/nvptx.c (nvptx_function_arg_advance): Take a
function_arg_info instead of a mode, type and named flag.
* config/or1k/or1k.c (or1k_function_arg_advance): Likewise.
* config/pa/pa.c (pa_function_arg_advance): Likewise.
* config/pdp11/pdp11.c (pdp11_function_arg_advance): Likewise.
* config/pru/pru.c (pru_function_arg_advance): Likewise.
* config/riscv/riscv.c (riscv_function_arg_advance): Likewise.
(riscv_setup_incoming_varargs): Update call accordingly.
* config/rl78/rl78.c (rl78_function_arg_advance): Take a
function_arg_info instead of a mode, type and named flag.
* config/rs6000/rs6000-internal.h (rs6000_function_arg_advance):
Likewise.
* config/rs6000/rs6000-call.c (rs6000_function_arg_advance): Likewise.
(rs6000_parm_needs_stack): Update call accordingly.
* config/rx/rx.c (rx_function_arg_advance): Take a function_arg_info
instead of a mode, type and named flag.
* config/s390/s390.c (s390_function_arg_advance): Likewise.
(s390_call_saved_register_used): Update call accordingly.
* config/sh/sh.c (sh_function_arg_advance): Take a function_arg_info
instead of a mode, type and named flag.
(sh_output_mi_thunk): Update call accordingly.
* config/sparc/sparc.c (sparc_function_arg_advance): Take a
function_arg_info instead of a mode, type and named flag.
* config/spu/spu.c (spu_function_arg_advance): Likewise.
(spu_setup_incoming_varargs): Update call accordingly.
* config/stormy16/stormy16.c (xstormy16_function_arg_advance): Take a
function_arg_info instead of a mode, type and named flag.
* config/tilegx/tilegx.c (tilegx_function_arg_advance): Likewise.
(tilegx_setup_incoming_varargs): Update call accordingly.
* config/tilepro/tilepro.c (tilepro_function_arg_advance): Take a
function_arg_info instead of a mode, type and named flag.
(tilegx_setup_incoming_varargs): Update call accordingly.
* config/v850/v850.c (v850_function_arg_advance): Take a
function_arg_info instead of a mode, type and named flag.
* config/vax/vax.c (vax_function_arg_advance): Likewise.
* config/visium/visium.c (visium_function_arg_advance): Likewise.
(visium_setup_incoming_varargs): Update call accordingly.
* config/xtensa/xtensa.c (xtensa_function_arg_advance): Take a
function_arg_info instead of a mode, type and named flag.

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

4 years agoUse function_arg_info for TARGET_FUNCTION_(INCOMING_)ARG
rsandifo [Tue, 20 Aug 2019 08:53:04 +0000 (08:53 +0000)] 
Use function_arg_info for TARGET_FUNCTION_(INCOMING_)ARG

This patch makes both TARGET_FUNCTION_ARG and
TARGET_FUNCTION_INCOMING_ARG take a function_arg_info.
They have to be done together since many targets use the
same function for both.

The hooks are passed the promoted mode instead of the original type mode.

2019-08-20  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
* target.def (function_arg, function_incoming_arg): Take a
function_arg_info instead of a mode, tree and named flag.
* doc/tm.texi: Regenerate.
* targhooks.h (default_function_arg): Take a function_arg_info
instead of a mode, tree and named flag.
(default_function_incoming_arg): Likewise.
* targhooks.c (default_function_arg): Likewise.
(default_function_incoming_arg): Likewise.
* calls.h (function_arg_info::end_marker_p): New function.
(function_arg_info::end_marker): Likewise.
* calls.c (prepare_call_address, initialize_argument_information)
(expand_call, emit_library_call_value_1): Update calls to
targetm.calls.function_arg and targetm.calls.function_incoming_arg.
* dse.c: Include calls.h.
(get_call_args): Update call to targetm.calls.function_arg.
* expr.c (block_move_libcall_safe_for_call_parm): Likewise.
* var-tracking.c (prepare_call_arguments): Likewise.
* function.c (assign_parm_find_entry_rtl): Update call to
targetm.calls.function_incoming_arg.
* config/aarch64/aarch64.c (aarch64_function_arg): Take a
function_arg_info instead of a mode, tree and named flag.
* config/alpha/alpha.c (alpha_function_arg): Likewise.
* config/arc/arc.c (arc_function_arg): Likewise.
* config/arm/arm.c (arm_function_arg): Likewise.
(cmse_func_args_or_return_in_stack): Update call accordingly.
(arm_function_ok_for_sibcall): Likewise.
(cmse_nonsecure_call_clear_caller_saved): Likewise.
* config/avr/avr.c (avr_function_arg): Take a function_arg_info
instead of a mode, tree and named flag.
* config/bfin/bfin.c (bfin_function_arg): Likewise.
* config/c6x/c6x.c (c6x_function_arg): Likewise.
(c6x_call_saved_register_used): Update call accordingly.
* config/cr16/cr16.c (cr16_function_arg): Take a function_arg_info
instead of a mode, tree and named flag.
* config/cris/cris.c (cris_function_arg, cris_function_incoming_arg)
(cris_function_arg_1): Likewise.
* config/csky/csky.c (csky_function_arg): Likewise.
* config/epiphany/epiphany.c (epiphany_function_arg): Likewise.
* config/fr30/fr30.c (fr30_function_arg): Likewise.
* config/frv/frv.c (frv_function_arg, frv_function_incoming_arg)
(frv_function_arg_1): Likewise.
* config/ft32/ft32.c (ft32_function_arg): Likewise.
* config/gcn/gcn.c (gcn_function_arg): Likewise.
* config/h8300/h8300.c (h8300_function_arg): Likewise.
* config/i386/i386.c (ix86_function_arg): Likewise.
* config/ia64/ia64.c (ia64_function_arg, ia64_function_incoming_arg)
(ia64_function_arg_1): Likewise.
* config/iq2000/iq2000.c (iq2000_function_arg): Likewise.
(iq2000_expand_prologue, iq2000_pass_by_reference): Update call
accordingly.
* config/lm32/lm32.c (lm32_function_arg): Take a function_arg_info
instead of a mode, tree and named flag.
* config/m32c/m32c.c (m32c_function_arg): Likewise.
* config/m32r/m32r.c (m32r_function_arg): Likewise.
* config/m68k/m68k.c (m68k_function_arg): Likewise.
* config/mcore/mcore.c (mcore_function_arg): Likewise.
* config/microblaze/microblaze.c (microblaze_function_arg): Likewise.
(microblaze_expand_prologue): Update call accordingly.
* config/mips/mips.c (mips_function_arg): Take a function_arg_info
instead of a mode, tree and named flag.
* config/mmix/mmix.c (mmix_function_incoming_arg, mmix_function_arg)
(mmix_function_arg_1): Likewise.
* config/mn10300/mn10300.c (mn10300_function_arg): Likewise.
* config/moxie/moxie.c (moxie_function_arg): Likewise.
* config/msp430/msp430.c (msp430_function_arg): Likewise.
* config/nds32/nds32.c (nds32_function_arg): Likewise.
* config/nios2/nios2.c (nios2_function_arg): Likewise.
* config/nvptx/nvptx.c (nvptx_function_arg): Likewise.
(nvptx_function_incoming_arg): Likewise.
* config/or1k/or1k.c (or1k_function_arg): Likewise.
* config/pa/pa.c (pa_function_arg): Likewise.
* config/pdp11/pdp11.c (pdp11_function_arg): Likewise.
* config/pru/pru.c (pru_function_arg): Likewise.
* config/riscv/riscv.c (riscv_function_arg): Likewise.
* config/rl78/rl78.c (rl78_function_arg): Likewise.
* config/rs6000/rs6000-internal.h (rs6000_function_arg): Likewise.
* config/rs6000/rs6000-call.c (rs6000_function_arg): Likewise.
(rs6000_parm_needs_stack): Update call accordingly.
* config/rx/rx.c (rx_function_arg): Take a function_arg_info
instead of a mode, tree and named flag.
* config/s390/s390.c (s390_function_arg): Likewise.
(s390_call_saved_register_used): Update call accordingly.
* config/sh/sh.c (sh_function_arg): Take a function_arg_info
instead of a mode, tree and named flag.
(sh_output_mi_thunk): Update call accordingly.
* config/sparc/sparc.c (sparc_function_arg_1, sparc_function_arg)
(sparc_function_incoming_arg): Take a function_arg_info instead of
a mode, tree and named flag.
* config/spu/spu.c (spu_function_arg): Likewise.
* config/stormy16/stormy16.c (xstormy16_function_arg): Likewise.
* config/tilegx/tilegx.c (tilegx_function_arg): Likewise.
* config/tilepro/tilepro.c (tilepro_function_arg): Likewise.
* config/v850/v850.c (v850_function_arg): Likewise.
* config/vax/vax.c (vax_function_arg): Likewise.
* config/visium/visium.c (visium_function_arg): Likewise.
* config/xtensa/xtensa.c (xtensa_function_arg_1, xtensa_function_arg)
(xtensa_function_incoming_arg): Likewise.

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

4 years agoUse function_arg_info for TARGET_SETUP_INCOMING_ARGS
rsandifo [Tue, 20 Aug 2019 08:52:48 +0000 (08:52 +0000)] 
Use function_arg_info for TARGET_SETUP_INCOMING_ARGS

The hook is passed the promoted mode instead of the original type mode.

2019-08-20  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
* target.def (setup_incoming_varargs): Take a function_arg_info
instead of a mode and tree.
* doc/tm.texi: Regenerate.
* targhooks.h (default_setup_incoming_varargs): Take a
function_arg_info instead of a mode and tree.
* targhooks.c (default_setup_incoming_varargs): Likewise.
* config/aarch64/aarch64.c (aarch64_setup_incoming_varargs): Likewise.
* config/alpha/alpha.c (alpha_setup_incoming_varargs): Likewise.
* config/arc/arc.c (arc_setup_incoming_varargs): Likewise.
* config/arm/arm.c (arm_setup_incoming_varargs): Likewise.
* config/bfin/bfin.c (setup_incoming_varargs): Likewise.
* config/cris/cris.c (cris_setup_incoming_varargs): Likewise.
* config/csky/csky.c (csky_setup_incoming_varargs): Likewise.
* config/epiphany/epiphany.c (epiphany_setup_incoming_varargs):
Likewise.
* config/fr30/fr30.c (fr30_setup_incoming_varargs): Likewise.
* config/frv/frv.c (frv_setup_incoming_varargs): Likewise.
* config/ft32/ft32.c (ft32_setup_incoming_varargs): Likewise.
* config/i386/i386.c (ix86_setup_incoming_varargs): Likewise.
* config/ia64/ia64.c (ia64_setup_incoming_varargs): Likewise.
* config/iq2000/iq2000.c (iq2000_setup_incoming_varargs): Likewise.
* config/lm32/lm32.c (lm32_setup_incoming_varargs): Likewise.
* config/m32r/m32r.c (m32r_setup_incoming_varargs): Likewise.
* config/mcore/mcore.c (mcore_setup_incoming_varargs): Likewise.
* config/mips/mips.c (mips_setup_incoming_varargs): Likewise.
* config/mmix/mmix.c (mmix_setup_incoming_varargs): Likewise.
* config/moxie/moxie.c (moxie_setup_incoming_varargs): Likewise.
* config/nds32/nds32.c (nds32_setup_incoming_varargs): Likewise.
* config/nios2/nios2.c (nios2_setup_incoming_varargs): Likewise.
* config/riscv/riscv.c (riscv_setup_incoming_varargs): Likewise.
* config/rs6000/rs6000-internal.h (setup_incoming_varargs): Likewise.
* config/rs6000/rs6000-call.c (setup_incoming_varargs): Likewise.
* config/sh/sh.c (sh_setup_incoming_varargs): Likewise.
* config/spu/spu.c (spu_setup_incoming_varargs): Likewise.
* config/tilegx/tilegx.c (tilegx_setup_incoming_varargs): Likewise.
* config/tilepro/tilepro.c (tilepro_setup_incoming_varargs): Likewise.
* config/visium/visium.c (visium_setup_incoming_varargs): Likewise.
* function.c (assign_parms_setup_varargs): Update call to
targetm.calls.setup_incoming_varargs.

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

4 years agoUse function_arg_info for TARGET_PASS_BY_REFERENCE
rsandifo [Tue, 20 Aug 2019 08:52:40 +0000 (08:52 +0000)] 
Use function_arg_info for TARGET_PASS_BY_REFERENCE

The hook is passed the unpromoted type mode instead of the promoted mode.

2019-08-20  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
* target.def (pass_by_reference): Take a function_arg_info instead
of a mode, type and named flag.
* doc/tm.texi: Regenerate.
* targhooks.h (hook_pass_by_reference_must_pass_in_stack): Update
accordingly.
(hook_bool_CUMULATIVE_ARGS_arg_info_false): Declare.
* targhooks.c (hook_pass_by_reference_must_pass_in_stack): Take a
function_arg_info instead of a mode, type and named flag.
(hook_bool_CUMULATIVE_ARGS_arg_info_false): New function.
* calls.h (pass_by_reference): Take a function_arg_info instead of a
mode, type and named flag.
* calls.c (pass_by_reference): Likewise.
(pass_va_arg_by_reference): Update call accordingly.
(initialize_argument_information): Likewise.
(emit_library_call_value_1): Likewise.
* function.c (assign_parm_find_data_types): Likewise.
* var-tracking.c (prepare_call_arguments): Likewise.
* stor-layout.c: Include calls.h.
(compute_record_mode): Update call to targetm.calls.pass_by_reference.
* config/aarch64/aarch64.c (aarch64_pass_by_reference): Take a
function_arg_info instead of a mode, type and named flag.
* config/alpha/alpha.c (alpha_pass_by_reference): Likewise.
* config/arc/arc.c (arc_pass_by_reference): Likewise.
* config/arm/arm.c (arm_pass_by_reference): Likewise.
* config/bfin/bfin.c (bfin_pass_by_reference): Likewise.
* config/c6x/c6x.c (c6x_pass_by_reference): Likewise.
(c6x_call_saved_register_used): Update call to pass_by_reference.
* config/cris/cris.c (cris_pass_by_reference): Take a
function_arg_info instead of a mode, type and named flag.
* config/epiphany/epiphany.c (epiphany_pass_by_reference): Take a
function_arg_info instead of a mode, type and named flag.
(epiphany_arg_partial_bytes): Update call accordingly.
* config/ft32/ft32.c (ft32_pass_by_reference): Take a
function_arg_info instead of a mode, type and named flag.
(ft32_arg_partial_bytes): Update call accordingly.
* config/i386/i386.c (ix86_pass_by_reference): Take a
function_arg_info instead of a mode, type and named flag.
* config/iq2000/iq2000.c (iq2000_pass_by_reference): Likewise.
* config/m32c/m32c.c (m32c_pass_by_reference): Likewise.
* config/m32r/m32r.c (m32r_pass_by_reference): Likewise.
(m32r_return_in_memory): Update call accordingly.
* config/mips/mips.c (mips_pass_by_reference): Take a
function_arg_info instead of a mode, type and named flag.
* config/mmix/mmix.c (mmix_pass_by_reference): Likewise.
* config/mn10300/mn10300.c (mn10300_pass_by_reference): Likewise.
* config/moxie/moxie.c (moxie_pass_by_reference): Likewise.
(moxie_arg_partial_bytes): Update call accordingly.
* config/msp430/msp430.c (msp430_pass_by_reference): Take a
function_arg_info instead of a mode, type and named flag.
* config/nvptx/nvptx.c (nvptx_pass_by_reference): Likewise.
* config/or1k/or1k.c (or1k_pass_by_reference): Likewise.
* config/pa/pa.c (pa_pass_by_reference): Likewise.
* config/riscv/riscv.c (riscv_pass_by_reference): Likewise.
(riscv_return_in_memory): Update call accordingly.
* config/rs6000/rs6000-internal.h (rs6000_pass_by_reference): Take a
function_arg_info instead of a mode, type and named flag.
* config/rs6000/rs6000-call.c (rs6000_pass_by_reference): Likewise.
(rs6000_parm_needs_stack): Update call to pass_by_reference.
* config/s390/s390.c (s390_pass_by_reference): Take a
function_arg_info instead of a mode, type and named flag.
(s390_call_saved_register_used): Update call accordingly.
* config/sh/sh.c (sh_pass_by_reference): Take a function_arg_info
instead of a mode, type and named flag.
* config/sparc/sparc.c (sparc_pass_by_reference): Likewise.
* config/spu/spu.c (spu_pass_by_reference): Likewise.
* config/tilegx/tilegx.c (tilegx_pass_by_reference): Likewise.
* config/tilepro/tilepro.c (tilepro_pass_by_reference): Likewise.
* config/v850/v850.c (v850_pass_by_reference): Likewise.
* config/visium/visium.c (visium_pass_by_reference): Likewise.

gcc/ada/
* gcc-interface/misc.c (default_pass_by_ref): Update call to
pass_by_reference.

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

4 years agoUse function_arg_info for TARGET_ARG_PARTIAL_BYTES
rsandifo [Tue, 20 Aug 2019 08:52:17 +0000 (08:52 +0000)] 
Use function_arg_info for TARGET_ARG_PARTIAL_BYTES

This patch adds the function_arg_info class and uses it for
TARGET_ARG_PARTIAL_BYTES.

The hook is passed the promoted mode instead of the original type mode.

The arguments aren't mentioned in the documentation, which is why the
target.def change is so small.

The patch changes "true" to "arg.named" in:

  gcc_assert (!epiphany_pass_by_reference (cum, mode, type, /* named */ true));

but epiphany_pass_by_reference doesn't care about the named flag.

2019-08-20  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
* target.def (arg_partial_bytes): Take a function_arg_info instead
of a mode, type and named flag.
* doc/tm.texi: Regenerate.
* target.h (function_arg_info): Declare.
* calls.h (function_arg_info): New class.
* targhooks.h (hook_int_CUMULATIVE_ARGS_mode_tree_bool_0): Delete.
(hook_int_CUMULATIVE_ARGS_arg_info_0): Declare.
* targhooks.c (hook_int_CUMULATIVE_ARGS_mode_tree_bool_0): Delete.
(hook_int_CUMULATIVE_ARGS_arg_info_0): New function.
* calls.c (initialize_argument_information): Update call to
targetm.calls.partial_bytes.
(emit_library_call_value_1): Likewise.
* expr.c (block_move_libcall_safe_for_call_parm): Likewise.
* function.c (assign_parm_find_entry_rtl): Likewise.
* config/alpha/alpha.c (alpha_arg_partial_bytes): Take a
function_arg_info instead of a mode, type and named flag.
* config/arc/arc.c (arc_arg_partial_bytes): Likewise.
* config/arm/arm.c (arm_arg_partial_bytes): Likewise.
(cmse_func_args_or_return_in_stack): Update accordingly.
* config/bfin/bfin.c (bfin_arg_partial_bytes): Take a
function_arg_info instead of a mode, type and named flag.
* config/cris/cris.c (cris_arg_partial_bytes): Likewise.
* config/csky/csky.c (csky_arg_partial_bytes): Likewise.
* config/epiphany/epiphany.c (epiphany_arg_partial_bytes): Likewise.
* config/fr30/fr30.c: Include calls.h.
(fr30_arg_partial_bytes): Take a function_arg_info instead of a mode,
type and named flag.
* config/frv/frv.c: Include calls.h.
(frv_arg_partial_bytes): Take a function_arg_info instead of a mode,
type and named flag.
* config/ft32/ft32.c (ft32_arg_partial_bytes): Likewise.
* config/gcn/gcn.c (gcn_arg_partial_bytes): Likewise.
* config/ia64/ia64.c (ia64_arg_partial_bytes): Likewise.
* config/iq2000/iq2000.c (iq2000_arg_partial_bytes): Likewise.
* config/m32r/m32r.c (m32r_arg_partial_bytes): Likewise.
* config/mcore/mcore.c (mcore_arg_partial_bytes): Likewise.
* config/microblaze/microblaze.c (function_arg_partial_bytes):
Likewise.
* config/mips/mips.c (mips_arg_partial_bytes): Likewise.
* config/mn10300/mn10300.c (mn10300_arg_partial_bytes): Likewise.
* config/moxie/moxie.c (moxie_arg_partial_bytes): Likewise.
* config/msp430/msp430.c (msp430_arg_partial_bytes): Likewise.
* config/nds32/nds32.c (nds32_arg_partial_bytes): Likewise.
* config/nios2/nios2.c (nios2_arg_partial_bytes): Likewise.
* config/pa/pa.c (pa_arg_partial_bytes): Likewise.
* config/pru/pru.c (pru_arg_partial_bytes): Likewise.
* config/riscv/riscv.c (riscv_arg_partial_bytes): Likewise.
* config/rs6000/rs6000-internal.h (rs6000_arg_partial_bytes): Likewise.
* config/rs6000/rs6000-call.c (rs6000_arg_partial_bytes): Likewise.
(rs6000_parm_needs_stack): Update call accordingly.
* config/sh/sh.c (sh_arg_partial_bytes): Take a
function_arg_info instead of a mode, type and named flag.
* config/sparc/sparc.c (sparc_arg_partial_bytes): Likewise.
* config/v850/v850.c (v850_arg_partial_bytes): Likewise.

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

4 years agoAdd must_pass_va_arg_in_stack
rsandifo [Tue, 20 Aug 2019 08:51:09 +0000 (08:51 +0000)] 
Add must_pass_va_arg_in_stack

This patch splits out another idiom from the va_arg gimplification
routines, so that there's only one place to update later.

2019-08-20  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
* calls.h (must_pass_va_arg_in_stack): Declare.
* calls.c (must_pass_va_arg_in_stack): New function.
* config/alpha/alpha.c (alpha_gimplify_va_arg_1): Use it.
* config/sh/sh.c (sh_gimplify_va_arg_expr): Likewise.
* config/stormy16/stormy16.c (xstormy16_gimplify_va_arg_expr):
Likewise.
* config/xtensa/xtensa.c (xtensa_gimplify_va_arg_expr): Likewise.

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

4 years agoAdd pass_va_arg_by_reference
rsandifo [Tue, 20 Aug 2019 08:50:59 +0000 (08:50 +0000)] 
Add pass_va_arg_by_reference

This patch splits out a common idiom from the va_arg gimplification
routines, so that there's only one place to update later.

2019-08-20  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
* calls.h (pass_va_arg_by_reference): Declare.
* calls.c (pass_va_arg_by_reference): New function.
* config/aarch64/aarch64.c (aarch64_gimplify_va_arg_expr): Use it.
* config/alpha/alpha.c (alpha_gimplify_va_arg): Likewise.
* config/gcn/gcn.c (gcn_gimplify_va_arg_expr): Likewise.
* config/i386/i386.c (ix86_gimplify_va_arg): Likewise.
* config/ia64/ia64.c (ia64_gimplify_va_arg): Likewise.
* config/mips/mips.c (mips_std_gimplify_va_arg_expr): Likewise.
(mips_gimplify_va_arg_expr): Likewise.
* config/msp430/msp430.c (msp430_gimplify_va_arg_expr): Likewise.
* config/pa/pa.c (hppa_gimplify_va_arg_expr): Likewise.
* config/rs6000/rs6000-call.c (rs6000_gimplify_va_arg): Likewise.
* config/s390/s390.c (s390_gimplify_va_arg): Likewise.
* config/sparc/sparc.c (sparc_gimplify_va_arg): Likewise.
* config/spu/spu.c (spu_gimplify_va_arg_expr): Likewise.
* config/tilegx/tilegx.c (tilegx_gimplify_va_arg_expr): Likewise.
* config/tilepro/tilepro.c (tilepro_gimplify_va_arg_expr): Likewise.
* config/visium/visium.c (visium_gimplify_va_arg): Likewise.
* config/xtensa/xtensa.c (xtensa_gimplify_va_arg_expr): Likewise.
* targhooks.c (std_gimplify_va_arg_expr): Likewise.

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

4 years ago2019-08-20 Richard Biener <rguenther@suse.de>
rguenth [Tue, 20 Aug 2019 08:45:56 +0000 (08:45 +0000)] 
2019-08-20  Richard Biener  <rguenther@suse.de>

PR target/91498
* config/i386/i386-features.c (general_scalar_chain::convert_op):
Use (vec_merge (vec_duplicate..)) style vector from scalar move.
(convert_scalars_to_vector): Add timode_p parameter and use it
to guard TImode-only operation.
(pass_stv::gate): Adjust so STV runs twice for TARGET_64BIT.
(pass_stv::execute): Pass down timode_p.

* gcc.target/i386/minmax-7.c: New testcase.

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

4 years agoAdd TIGERLAKE and COOPERLAKE to GCC.
liuhongt [Tue, 20 Aug 2019 07:06:03 +0000 (07:06 +0000)] 
Add TIGERLAKE and COOPERLAKE to GCC.

2019-08-20  Lili Cui  <lili.cui@intel.com>

gcc/
* common/config/i386/i386-common.c
(processor_names): Add tigerlake and cooperlake.
(processor_alias_table): Add tigerlake and cooperlake.
* config.gcc: Add -march=tigerlake and cooperlake.
* config/i386/driver-i386.c
(host_detect_local_cpu): Detect tigerlake and cooperlake.
Add "has_avx" to classify processor.
* config/i386/i386-builtins.c (processor_model):
Add M_INTEL_COREI7_TIGERLAKE and M_INTEL_COREI7_COOPERLAKE.
(arch_names_table): Add tigerlake and cooperlake.
(get_builtin_code_for_version) : Handle PROCESSOR_TIGERLAKE and
PROCESSOR_COOPERLAKE.
* config/i386/i386-c.c
(ix86_target_macros_internal): Handle tigerlake and cooperlake.
* config/i386/i386-options.c
(m_TIGERLAKE)  : Define.
(m_COOPERLAKE) : Ditto.
(m_CORE_AVX512): Ditto.
(processor_cost_table): Add cascadelake.
(ix86_option_override_internal): Hadle PTA_MOVDIRI, PTA_MOVDIR64B.
* config/i386/i386.h
(ix86_size_cost) : Define TARGET_TIGERLAKE and TARGET_COOPERLAKE.
(processor_type) : Add PROCESSOR_TIGERLAKE and PROCESSOR_COOPERLAKE.
(PTA_MOVDIRI): Ditto.
(PTA_MOVDIR64B): Ditto.
(PTA_COOPERLAKE) : Ditto.
(PTA_TIGERLAKE)  : Ditto.
(processor_type) : Add PROCESSOR_TIGERLAKE and PROCESSOR_COOPERLAKE.
* doc/extend.texi: Add tigerlake and cooperlake.
* doc/invoke.texi: Add tigerlake and cooperlake.

gcc/testsuite/
* gcc.target/i386/funcspec-56.inc: Handle new march.
* g++.target/i386/mv16.C: Handle new march

libgcc/
* config/i386/cpuinfo.h: Add INTEL_COREI7_TIGERLAKE and
INTEL_COREI7_COOPERLAKE.

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

4 years ago * doc/install.texi (Specific, alpha): Remove note to use
gerald [Tue, 20 Aug 2019 05:38:06 +0000 (05:38 +0000)] 
* doc/install.texi (Specific, alpha): Remove note to use
binutils 2.11.2 or later.

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

4 years ago2019-08-20 Bernd Edlinger <bernd.edlinger@hotmail.de>
edlinger [Tue, 20 Aug 2019 05:32:49 +0000 (05:32 +0000)] 
2019-08-20  Bernd Edlinger  <bernd.edlinger@hotmail.de>

        PR middle-end/89544
        * function.c (assign_parm_find_stack_rtl): Use larger alignment
        when possible.

testsuite:
2019-08-20  Bernd Edlinger  <bernd.edlinger@hotmail.de>

        PR middle-end/89544
        * gcc.target/arm/unaligned-argument-1.c: New test.
        * gcc.target/arm/unaligned-argument-2.c: New test.

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

4 years agoDaily bump.
gccadmin [Tue, 20 Aug 2019 00:16:22 +0000 (00:16 +0000)] 
Daily bump.

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

4 years ago compiler: new debugging output methods/functions
ian [Mon, 19 Aug 2019 21:15:49 +0000 (21:15 +0000)] 
compiler: new debugging output methods/functions

    Add new hooks for dumping named objects, package bindings,
    and top level Gogo package list.

    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/190877

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

4 years ago runtime: be more strict in GC
ian [Mon, 19 Aug 2019 19:09:50 +0000 (19:09 +0000)] 
runtime: be more strict in GC

    With CL 190599, along with what we do in greyobject, we ensure
    that we only mark allocated heap objects. As a result we can be
    more strict in GC:

    - Enable "sweep increased allocation count" check, which checks
      that the number of mark bits set are no more than the number of
      allocation bits.

    - Enable invalid pointer check on heap scan. We only trace
      allocated heap objects, which should not contain invalid
      pointer.

    This also makes the libgo runtime more convergent with the gc
    runtime.

    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/190797

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

4 years ago[AArch64] Use scvtf fbits option where appropriate
avieira [Mon, 19 Aug 2019 16:55:20 +0000 (16:55 +0000)] 
[AArch64] Use scvtf fbits option where appropriate

gcc/ChangeLog:
2019-08-19  Joel Hutton  <Joel.Hutton@arm.com>

* config/aarch64/aarch64-protos.h (aarch64_fpconst_pow2_recip): New prototype
* config/aarch64/aarch64.c (aarch64_fpconst_pow2_recip): New function
* config/aarch64/aarch64.md (*aarch64_<su_optab>cvtf<fcvt_target><GPF:mode>2_mult): New pattern
(*aarch64_<su_optab>cvtf<fcvt_iesize><GPF:mode>2_mult): New pattern
* config/aarch64/constraints.md (Dt): New constraint
* config/aarch64/predicates.md (aarch64_fpconst_pow2_recip): New predicate

gcc/testsuite/ChangeLog:
2019-08-19  Joel Hutton  <Joel.Hutton@arm.com>

* gcc.target/aarch64/fmul_scvtf_1.c: New test.

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

4 years agoAdd --with-static-standard-libraries to the top level
tromey [Mon, 19 Aug 2019 15:47:30 +0000 (15:47 +0000)] 
Add --with-static-standard-libraries to the top level

gdb should normally not be linked with -static-libstdc++.  Currently
this has not caused problems, but it's incompatible with catching an
exception thrown from a shared library -- and a subsequent patch
changes gdb to do just this.

This patch adds a new --with-static-standard-libraries flag to the
top-level configure.  It defaults to "auto", which means enabled if
gcc is being built, and disabled otherwise.

ChangeLog
2019-08-19  Tom Tromey  <tom@tromey.com>

* configure: Rebuild.
* configure.ac: Add --with-static-standard-libraries.

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

4 years ago2019-08-19 Richard Biener <rguenther@suse.de>
rguenth [Mon, 19 Aug 2019 14:45:38 +0000 (14:45 +0000)] 
2019-08-19  Richard Biener  <rguenther@suse.de>

PR tree-optimization/91403
* tree-scalar-evolution.c (follow_ssa_edge_binary): Inline
cases we can handle with tail-recursion...
(follow_ssa_edge_expr): ... here.  Do so.

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

4 years ago PR c++/91264 - detect modifying const objects in constexpr.
mpolacek [Mon, 19 Aug 2019 13:59:13 +0000 (13:59 +0000)] 
PR c++/91264 - detect modifying const objects in constexpr.
* constexpr.c (modifying_const_object_error): New function.
(cxx_eval_call_expression): Set TREE_READONLY on a CONSTRUCTOR of
a const-qualified object after it's been fully constructed.
(modifying_const_object_p): New function.
(cxx_eval_store_expression): Detect modifying a const object
during constant expression evaluation.
(cxx_eval_increment_expression): Use a better location when building
up the store.
(cxx_eval_constant_expression) <case DECL_EXPR>: Mark a constant
object's constructor TREE_READONLY.

* g++.dg/cpp1y/constexpr-tracking-const1.C: New test.
* g++.dg/cpp1y/constexpr-tracking-const2.C: New test.
* g++.dg/cpp1y/constexpr-tracking-const3.C: New test.
* g++.dg/cpp1y/constexpr-tracking-const4.C: New test.
* g++.dg/cpp1y/constexpr-tracking-const5.C: New test.
* g++.dg/cpp1y/constexpr-tracking-const6.C: New test.
* g++.dg/cpp1y/constexpr-tracking-const7.C: New test.
* g++.dg/cpp1y/constexpr-tracking-const8.C: New test.
* g++.dg/cpp1y/constexpr-tracking-const9.C: New test.
* g++.dg/cpp1y/constexpr-tracking-const10.C: New test.
* g++.dg/cpp1y/constexpr-tracking-const11.C: New test.
* g++.dg/cpp1y/constexpr-tracking-const12.C: New test.
* g++.dg/cpp1y/constexpr-tracking-const13.C: New test.
* g++.dg/cpp1y/constexpr-tracking-const14.C: New test.

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

4 years agoUpdate BOZ constant documentation.
markeggleston [Mon, 19 Aug 2019 08:53:49 +0000 (08:53 +0000)] 
Update BOZ constant documentation.

In the section "BOZ Literal constants" delete paragraph about integer
overload errors when initialising integer variables with BOZ constants
as these no longer occur.

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

4 years ago[Ada] Fix documentation for stream oriented attributes
pmderodat [Mon, 19 Aug 2019 08:37:39 +0000 (08:37 +0000)] 
[Ada] Fix documentation for stream oriented attributes

2019-08-19  Bob Duff  <duff@adacore.com>

gcc/ada/

* doc/gnat_rm/implementation_advice.rst: Fix documentation for
stream oriented attributes.
* gnat_rm.texi: Regenerate.

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

4 years ago[Ada] Einfo: update comments for E_Function and E_Procedure
pmderodat [Mon, 19 Aug 2019 08:37:34 +0000 (08:37 +0000)] 
[Ada] Einfo: update comments for E_Function and E_Procedure

2019-08-19  Gary Dismukes  <dismukes@adacore.com>

gcc/ada/

* einfo.ads (E_Function, E_Procedure): Update comments to
reflect that Renamed_Entity is also used for nongeneric
subprograms.

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

4 years ago[Ada] Fix bogus compilation error with Elaborate_Body and -gnatN
pmderodat [Mon, 19 Aug 2019 08:37:28 +0000 (08:37 +0000)] 
[Ada] Fix bogus compilation error with Elaborate_Body and -gnatN

This fixes a bogus compilation error when a unit with SPARK_Mode
containing a pragma Elaborate_Body is with-ed by a generic unit
containing an inlined subprogram, and front-end inlining is enabled.

2019-08-19  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

* sem_prag.adb (Is_Before_First_Decl): Deal with rewritten
pragmas.

gcc/testsuite/

* gnat.dg/elab8.adb, gnat.dg/elab8_gen.adb,
gnat.dg/elab8_gen.ads, gnat.dg/elab8_pkg.adb,
gnat.dg/elab8_pkg.ads: New testcase.

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

4 years ago[Ada] Suppress warnings on unreferenced parameters of dispatching ops
pmderodat [Mon, 19 Aug 2019 08:37:23 +0000 (08:37 +0000)] 
[Ada] Suppress warnings on unreferenced parameters of dispatching ops

If the -gnatwf switch is used to activate warnings on unreferenced
formal parameters, the warning is no longer given if the subprogram is
dispatching, because such warnings tend to be noise. It is quite common
to have a parameter that is necessary just because the subprogram is
overriding, or just because we need a controlling parameter for the
dispatch.

2019-08-19  Bob Duff  <duff@adacore.com>

gcc/ada/

* sem_warn.adb (Warn_On_Unreferenced_Entity): Suppress warning
on formal parameters of dispatching operations.

gcc/testsuite/

* gnat.dg/warn29.adb, gnat.dg/warn29.ads: New testcase.

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

4 years ago[Ada] Crash on object initialization that is call to expression function
pmderodat [Mon, 19 Aug 2019 08:37:18 +0000 (08:37 +0000)] 
[Ada] Crash on object initialization that is call to expression function

This patch fixes a compiler abort on an object declaration for a
class-wide type whose expression is a call to an expression function
that returns type extension.

2019-08-19  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

* sem_res.adb (Resolve_Call): A call to an expression function
freezes when expander is active, unless the call appears within
the body of another expression function,

gcc/testsuite/

* gnat.dg/expr_func9.adb: New testcase.

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

4 years ago[Ada] Conversion routines between GNAT.OS_Lib.OS_Time and long integer
pmderodat [Mon, 19 Aug 2019 08:37:13 +0000 (08:37 +0000)] 
[Ada] Conversion routines between GNAT.OS_Lib.OS_Time and long integer

The new routines convert back and forth between private type OS_Time and
a long integer which can be used in package Ada.Calendar.Conversions
routines to convert to Ada.Calendar.Time.

2019-08-19  Dmitriy Anisimkov  <anisimko@adacore.com>

gcc/ada/

* libgnat/s-os_lib.ads, libgnat/s-os_lib.adb (To_Ada, To_C): New
routines.

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

4 years ago[Ada] Incorrect code for -gnateV switch
pmderodat [Mon, 19 Aug 2019 08:37:09 +0000 (08:37 +0000)] 
[Ada] Incorrect code for -gnateV switch

This patch corrects the code generated by the -gnateV switch in the case
of a private type whose full type is a modular type, removing spurious
run-time failures.

In addition, this corrects the initialization of exception occurrences
in exception handlers to avoid leaving data uninitialized, which caused
-gnateV to raise spurious errors.

2019-08-19  Bob Duff  <duff@adacore.com>

gcc/ada/

* exp_attr.adb (Attribute_Valid): Correct the handling of
private types where the full type is modular. System.Address is
an example. Otherwise, we convert uncheckedly to a signed type,
so we get an incorrect range 0 .. -1, for which all values will
fail.  The 'Valid attribute is illegal for such types, but we
generate such illegal attribute_references for 'Valid_Scalars,
and we generate 'Valid_Scalars when the -gnateV switch is used.
Rename Btyp --> PBtyp to avoid hiding the outer Btyp, which was
confusing.
* libgnat/a-except.adb: Set the Exception_Raised component.
Otherwise, we have incorrect reads of invalid data.

gcc/testsuite/

* gnat.dg/valid_scalars2.adb: New testcase.

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

4 years ago[Ada] Import documentation from the RM for various runtime units
pmderodat [Mon, 19 Aug 2019 08:37:03 +0000 (08:37 +0000)] 
[Ada] Import documentation from the RM for various runtime units

2019-08-19  Pierre-Marie de Rodat  <derodat@adacore.com>

gcc/ada/

* libgnat/a-cgaaso.ads, libgnat/a-cgarso.ads,
libgnat/a-cogeso.ads, libgnat/a-contai.ads,
libgnat/a-locale.ads: Import documentation from the RM.

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

4 years ago[Ada] Generate ada_target_properties
pmderodat [Mon, 19 Aug 2019 08:36:58 +0000 (08:36 +0000)] 
[Ada] Generate ada_target_properties

Generate target-dependent info into a file named ada_target_properties.
This information is used by tools for static analysis: they need to know
the size of standard types for a given run-time library. This metadata
is meant to be saved at the root of the run-time directory.

2019-08-19  Jerome Guitton  <guitton@adacore.com>

gcc/ada/

* Makefile.rtl (system.o): New target to add generation of
target properties.
* gcc-interface/Makefile.in (install-gnatlib): Install
ada_target_properties.

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

4 years ago[Ada] Lift restriction on instantiations that are compilation units
pmderodat [Mon, 19 Aug 2019 08:36:53 +0000 (08:36 +0000)] 
[Ada] Lift restriction on instantiations that are compilation units

This change lifts the restriction that was still present in the new
on-demand instantiation scheme for the body of generics instantiated in
non-main units.

The instantiations that are compilation units were still dealt with in
the old-fashioned way, that is to say the decision of instantiating the
body was still made up front during the analysis of the instance
declaration, instead of being deferred until after a call to an inlined
subprogram is encountered.

This should save a few more cycles when full inlining across units is
enabled, but there should otherwise be no functional changes.

2019-08-19  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

* inline.adb (Add_Inlined_Body): Do not special-case instances
that are compilation units.
(Add_Pending_Instantiation): Likewise.
(Instantiate_Body): Skip instantiations that are compilation
units and have already been performed.
* sem_ch12.adb (Needs_Body_Instantiated): Do not special-case
instances that are compilation units.
(Load_Parent_Of_Generic): Be prepared for parent that is a
compilation unit but whose instantiation node has not been
replaced.

gcc/testsuite/

* gnat.dg/generic_inst12.adb, gnat.dg/generic_inst12_pkg1.adb,
gnat.dg/generic_inst12_pkg1.ads,
gnat.dg/generic_inst12_pkg2.ads: New testcase.

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

4 years ago[Ada] Further cleanup in inlining machinery
pmderodat [Mon, 19 Aug 2019 08:36:48 +0000 (08:36 +0000)] 
[Ada] Further cleanup in inlining machinery

This adds missing boilerplate stuff.  No functional changes.

2019-08-19  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

* inline.adb (Initialize, Lock): Deal with
Called_Pending_Instantiations.

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

4 years ago[Ada] Legality of protected subp. implementing interface operations
pmderodat [Mon, 19 Aug 2019 08:36:44 +0000 (08:36 +0000)] 
[Ada] Legality of protected subp. implementing interface operations

This patch refines the predicate that implements rule in RM 9.4 (11.9/2)

Compiling b94.ads must yield:

   b94.ads:11:17: illegal overriding of subprogram inherited from interface
   b94.ads:11:17: first formal of "N" declared at line 8 must be of mode
     "out", "in out" or access-to-variable

----
package B94 is

   type Prot2_Int is protected interface;
   procedure  J (PI : in     Prot2_Int; N : in Integer)  is null;
   procedure  K (PI : in out Prot2_Int; N : in Integer)  is null;
   procedure  L (PI :    out Prot2_Int; N : in Integer)  is null;
   procedure  M (PI : access Prot2_Int; N : in Integer)  is null;
   procedure  N (PI : access constant Prot2_Int; N : in Integer)  is null;

   protected type Protected_2 is new Prot2_Int with
      procedure N (N : in Integer);                   -- ERROR: {7;1}
   end Protected_2;

end B94;

2019-08-19  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

* sem_ch6.adb (Check_Synchronized_Overriding): Complete
predicate that applies legality check in 9.4 (11.9/2): if an
inherited subprogram is implemented by a protected procedure or
entry, its first paarameter must be out, in_out or
access_to_varible.

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

4 years ago[Ada] Buffer reading overflow in dispatch table initialization
pmderodat [Mon, 19 Aug 2019 08:36:39 +0000 (08:36 +0000)] 
[Ada] Buffer reading overflow in dispatch table initialization

For tagged types not defined at library level that derive from library
level tagged types the compiler may generate code to initialize their
dispatch table of predefined primitives copying from the parent type
data stored in memory after the dispatch table of the parent; that is,
at runtime the initialization of dispatch tables overflows reading the
parent dispatch table.

This problem does not affect the execution of the program since the
target dispatch table always has enough space to store the extra data,
and after such copy the compiler generates code to complete the
initialization of the dispatch table.

The following test must compile and execute without errors.

package pkg_a is
   type Root is tagged null record;
end pkg_a;

with pkg_a;
procedure main is
   type Derived is new pkg_a.Root with null record;  -- Test
begin
   null;
end main;

Command: gnatmake -q main -fsanitize=address; ./main

2019-08-19  Javier Miranda  <miranda@adacore.com>

gcc/ada/

PR ada/65696
* exp_atag.ads, exp_atag.adb (Build_Inherit_Predefined_Prims):
Adding formal to specify how many predefined primitives are
inherited from the parent type.
* exp_disp.adb (Number_Of_Predefined_Prims): New subprogram.
(Make_Secondary_DT): Compute the number of predefined primitives
of all tagged types (including tagged types not defined at
library level).  Previously we unconditionally relied on the
Max_Predef_Prims constant value when building the dispatch
tables of tagged types not defined at library level (thus
consuming more memory for their dispatch tables than required).
(Make_DT): Compute the number of predefined primitives that must
be inherited from their parent type when building the dispatch
tables of tagged types not defined at library level. Previously
we unconditionally relied on the Max_Predef_Prims constant value
when building the dispatch tables of tagged types not defined at
library level (thus copying more data than required from the
parent type).

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

4 years ago[Ada] Process type extensions for -gnatw.h
pmderodat [Mon, 19 Aug 2019 08:36:35 +0000 (08:36 +0000)] 
[Ada] Process type extensions for -gnatw.h

This patch enables gap detection in type extensions.

With the -gnatw.h switch, on 64-bit machines,
the following test should get warnings:

gcc -c gaps.ads -gnatw.h
gaps.ads:16:07: warning: 48-bit gap before component "Comp2"
gaps.ads:17:07: warning: 8-bit gap before component "Comp3"

package Gaps is
   type Integer_16 is mod 2**16;

   type TestGap is tagged record
      Comp1 : Integer_16;
   end record;
   for TestGap use record
      Comp1 at 0 + 8 range 0..15;
   end record;

   type TestGap2 is new TestGap with record
      Comp2  : Integer_16;
      Comp3  : Integer_16;
   end record;
   for TestGap2 use record
      Comp2 at 08 + 8 range 0..15;
      Comp3 at 11 + 8 range 0..15;
   end record;

end Gaps;

2019-08-19  Bob Duff  <duff@adacore.com>

gcc/ada/

* sem_ch13.adb (Record_Hole_Check): Procedure to check for holes
that incudes processing type extensions. A type extension is
processed by first calling Record_Hole_Check recursively on the
parent type to compute the bit number after the last component
of the parent.

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

4 years ago[Ada] Improve warnings about "too few elements" and "too many elements"
pmderodat [Mon, 19 Aug 2019 08:36:30 +0000 (08:36 +0000)] 
[Ada] Improve warnings about "too few elements" and "too many elements"

When warning about length-check failures detected at compile time that
are flagged with "too few elements" or "too many elements", the compiler
now gives an additional message indicating the number of elements
expected by the context versus how many are present in the conflicting
expression (such as an aggregate that has too few or too many
components).

The test below reports the following warnings when compiled with this command:

$ gcc -c -gnatj78 length_warnings.adb

length_warnings.adb:6:09: warning: too few elements for subtype of
                          "Boolean_Array" defined at line 5, expected 10
                          elements; found 9 elements, "Constraint_Error" will
                          be raised at run time
length_warnings.adb:10:09: warning: too few elements for subtype of
                           "Boolean_Array" defined at line 9, expected 2
                           elements; found 1 element, "Constraint_Error" will
                           be raised at run time
length_warnings.adb:14:09: warning: too many elements for subtype of
                           "Boolean_Array" defined at line 13, expected 10
                           elements; found 11 elements, "Constraint_Error"
                           will be raised at run time
length_warnings.adb:18:09: warning: too many elements for subtype of
                           "Boolean_Array" defined at line 17, expected 0
                           elements; found 1 element, "Constraint_Error" will
                           be raised at run time
length_warnings.adb:22:09: warning: too many elements for subtype of
                           "Boolean_Array" defined at line 21, expected 1
                           element; found 2 elements, "Constraint_Error" will
                           be raised at run time

procedure Length_Check_Warnings is

   type Boolean_Array is array (Natural range <>) of Boolean;

   Bits_A : Boolean_Array (1 .. 10)
     := (True, True, True, True, True, True, True, True, True);
   -- Too few elements

   Bits_B : Boolean_Array (1 .. 2)
     := (1 => False);
   -- Too few elements

   Bits_C : Boolean_Array (1 .. 10)
     := (True, True, True, True, True, True, True, True, True, True, True);
   -- Too many elements

   Bits_D : Boolean_Array (1 .. 0)
     := (1 => True);
   -- Too many elements

   Bits_E : Boolean_Array (1 .. 1)
     := (True, False);
   -- Too many elements

begin
   null;
end Length_Check_Warnings;

2019-08-19  Gary Dismukes  <dismukes@adacore.com>

gcc/ada/

* checks.adb (Length_Mismatch_Info_Message): New function in
Selected_Length_Checks to return a message indicating the
element counts for the mismatched lengths for a failed
compile-time length check.
(Plural_Or_Singular_Ending): Support function in
Length_Mismatch_Info_Message to return either "" or "s", for
concatenating to the end of words.
(Selected_Length_Checks): Pass the result of
Length_Mismatch_Info_Message as an extra warning message to
Compile_Time_Constraint_Error to indicate the mismatched lengths
for a failed compile-time length check.
* sem_util.ads (Compile_Time_Constraint_Error): Add an optional
message formal (Extra_Msg), defaulted to the empty string.
* sem_util.adb (Compile_Time_Constraint_Error): Output an extra
message following the main warning message (when Extra_Msg is
not the empty string).

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

4 years ago[Ada] Enable use of GNAT.Sockets for VxWorks RTP
pmderodat [Mon, 19 Aug 2019 08:36:26 +0000 (08:36 +0000)] 
[Ada] Enable use of GNAT.Sockets for VxWorks RTP

The recent introduction of GNAT.Sockets IPv6 support broke support for
VxWorks RTPs due to the use of internal VxWorks kernel calls. This patch
rectifies this by using the VxWorks public API for these routines.

The following RTP should compile successfully on a Development profile
VxWorks kernel that includes the INCLUDE_GETNAMEINFO component:

with GNAT.Sockets;      use GNAT.Sockets;

procedure IPvX is
   procedure Print_Address_Info
     (Host, Serv   : String;
      Family       : Family_Type := Family_Unspec)
   is
      Addresses : Address_Info_Array :=
        Get_Address_Info
          (Host, Serv, Family,
           Passive      => False,
           Numeric_Host => False);
   begin
      Sort (Addresses, IPv6_TCP_Preferred'Access);
   end Print_Address_Info;

begin
   Print_Address_Info ("localhost", "ssh");
end IPvX;

2019-08-19  Patrick Bernardi  <bernardi@adacore.com>

gcc/ada/

* socket.c: Removed the redefinition of getaddrinfo, getnameinfo
and freeaddrinfo to internal VxWorks kernel calls because they
are, well, internal kernel calls and cannot be called from RTPs.
VxWorks provides the necessary components to call these routines
directly.

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

4 years ago[Ada] Fix incorrect stub generation for types in instances
pmderodat [Mon, 19 Aug 2019 08:36:21 +0000 (08:36 +0000)] 
[Ada] Fix incorrect stub generation for types in instances

This fixes a fallout of a recent change clearing the
Is_Generic_Actual_Type on the implicit full view of a private actual
type in an instance.  This flag is used to help disambiguating formal
types instantiated on the same actual type within an instance, but it
should be cleared outside the instance to let the usual disambiguation
rules apply again to these types outside the instance.

This in particular means that Exp_Dist cannot rely on it to detect
subtypes representing generic actual types, hence the need for the new
predicate.

2019-08-19  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

* exp_dist.adb (Is_Generic_Actual_Subtype): New predicate.
(Build_From_Any_Call, Build_To_Any_Call, Build_TypeCode_Call):
Use it instead of Is_Generic_Actual_Type flag to detect subtypes
representing generic actual types.

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

4 years ago[Ada] Improve placement of warning on formals of generic subprograms
pmderodat [Mon, 19 Aug 2019 08:36:17 +0000 (08:36 +0000)] 
[Ada] Improve placement of warning on formals of generic subprograms

This patch modifies the handling of warnings on unused formal parameters
of generic subprograms. Previously such warnings were placed on the
formal appearing in the subprogram declaration, in contrast with
warnings on non-generic subprograms, where the warning is placed on the
corresponding entity in the body of the subprogram. This patch makes the
handling of both cases uniform. It is preferable to place the warning in
the body because this also provides a better suggestion for the
placement of an Unreferenced pragma to suppress the warning when desired.

2019-08-19  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

* sem_warn.adb (Check_References, Generic_Body_Formal): When a
formal parameter of a generic subprogram is not referenced in
the body, place the corresponding warning on the corresponding
entity in the specification of the generic body, as is done for
non-generic subprograms.

gcc/testsuite/

* gnat.dg/warn28.adb, gnat.dg/warn28.ads: New testcase.

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

4 years ago[Ada] Factor out the "size for& too small..." error message
pmderodat [Mon, 19 Aug 2019 08:36:12 +0000 (08:36 +0000)] 
[Ada] Factor out the "size for& too small..." error message

Use a constant for the Size_Too_Small_Message, so if it changes, it
won't change in one place but not another.  DRY. It might be better to
move this code out of errout.adb, but that's for another day.

2019-08-19  Bob Duff  <duff@adacore.com>

gcc/ada/

* errout.ads (Size_Too_Small_Message): New constant.
* errout.adb, freeze.adb, sem_ch13.adb: Use it.

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

4 years ago[Ada] Fix internal error on subprogram instantiation with -gnatzc
pmderodat [Mon, 19 Aug 2019 08:36:07 +0000 (08:36 +0000)] 
[Ada] Fix internal error on subprogram instantiation with -gnatzc

This fixes a fallout of the recent change keeping the
Is_Generic_Instance flag on the wrapper package built for the
instantiation of a generic subprogram.

There is no need to visit the Instance_Spec of an
N_Subprogram_Instantiation node anymore because the regular processing
for an N_Package_Declaration node now does the job for instantiations of
generic subprograms.

The following subprogram must compile again quietly with -gnatzc:

with Gen_Proc;

package RCI is
   pragma Remote_Call_Interface;

   procedure Inst_Proc is new Gen_Proc;

   procedure P (S : String);
end RCI;

generic
procedure Gen_Proc (S : String);
pragma Remote_Call_Interface (Gen_Proc);

with Ada.Text_IO; use Ada.Text_IO;
procedure Gen_Proc (S : String) is
begin
   Put_Line ("Gen_Proc called: " & S);
end Gen_Proc;

2019-08-19  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

* exp_dist.adb (Build_Package_Stubs): Do not specifically visit
the declarations of an N_Subprogram_Instantiation node.

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

4 years ago[Ada] Document missing gnatmetric switches
pmderodat [Mon, 19 Aug 2019 08:36:02 +0000 (08:36 +0000)] 
[Ada] Document missing gnatmetric switches

2019-08-19  Bob Duff  <duff@adacore.com>

gcc/ada/

* doc/gnat_ugn/gnat_utility_programs.rst: Document missing
metrics switches.

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

4 years ago[Ada] Minor refactorings
pmderodat [Mon, 19 Aug 2019 08:35:58 +0000 (08:35 +0000)] 
[Ada] Minor refactorings

2019-08-19  Piotr Trojanek  <trojanek@adacore.com>

gcc/ada/

* sem_ch12.adb (Get_Unit_Instantiation_Node): Simplify Nkind_In
membership test.
* sem.adb (Depends_On_Main): Whitespace cleanup; only assign a
local variable if needed.

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

4 years ago[Ada] Allow reading a borrowed object inside a call to a pledge function
pmderodat [Mon, 19 Aug 2019 08:35:53 +0000 (08:35 +0000)] 
[Ada] Allow reading a borrowed object inside a call to a pledge function

No impact on regular compilation.

2019-08-19  Claire Dross  <dross@adacore.com>

gcc/ada/

* sem_spark.ads, sem_spark.adb (Is_Pledge_Function): New
parameter of the generic. Function used to decide whether a
function is a pledge function.
(Check_Not_Borrowed): Disable check inside the second parameter
of a pledge function for the path borrowed by the first
parameter. Also disable checks for entities inside a Global
contract.

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

4 years ago[Ada] Add formal function parameter equality to SPARK containers
pmderodat [Mon, 19 Aug 2019 08:35:49 +0000 (08:35 +0000)] 
[Ada] Add formal function parameter equality to SPARK containers

This patch adds a formal function parameter "=" (L, R : Element_Type) to
SPARK containers. The equality that is used by default for Element_Type
after this patch is the primitive equality and not the predefined any
more. It also allows to use any function with the appropriate signature
for the equality function.

2019-08-19  Joffrey Huguet  <huguet@adacore.com>

gcc/ada/

* libgnat/a-cfdlli.ads, libgnat/a-cfhama.ads,
libgnat/a-cfinve.ads, libgnat/a-cforma.ads,
libgnat/a-cofove.ads, libgnat/a-cofuma.ads,
libgnat/a-cofuve.ads: Add formal function parameter "=" (L, R :
Element_Type) to the generic packages.

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

4 years ago[Ada] Opt: clean up left-overs of earlier implementation in comment
pmderodat [Mon, 19 Aug 2019 08:35:44 +0000 (08:35 +0000)] 
[Ada] Opt: clean up left-overs of earlier implementation in comment

2019-08-19  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

* opt.ads: Clean up left-overs of earlier implementation in
comment:

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

4 years ago[Ada] Representation clause for derived enumeration type is mishandled
pmderodat [Mon, 19 Aug 2019 08:35:40 +0000 (08:35 +0000)] 
[Ada] Representation clause for derived enumeration type is mishandled

This patch fixes an old-standing problem with premature freezing. When a
derived type declaration includes a constraint, we generate a subtype
declaration of an anonymous base type, with the constraint given in the
original type declaration, Conceptually, the bounds are converted to the
new base type, and this conversion freezes (prematurely) that base type,
when the bounds are simply literals.  As a result, a representation
clause for the derived type is then rejected or ignared. This procedure
recognizes the simple case of literal bounds in derived enumeration type
declarations, which allows us to indicate that the conversions are not
freeze points, and the subsequent representation clause can be accepted.

2019-08-19  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

* sem_ch3.adb (Derived_Enumeration_Type): Do no freeze anonymous
base type if the bounds in the derived type declaration are
literals of the type.

gcc/testsuite/

* gnat.dg/rep_clause9.adb: New testcase.

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

4 years ago[Ada] Do not skip non-aliasing checking when inlining in GNATprove
pmderodat [Mon, 19 Aug 2019 08:35:35 +0000 (08:35 +0000)] 
[Ada] Do not skip non-aliasing checking when inlining in GNATprove

When code is inlinined for proof in the special mode for GNATprove, Ada
rules about non-aliasing should still be checked. Now fixed.

There is no impact on compilation.

2019-08-19  Yannick Moy  <moy@adacore.com>

gcc/ada/

* sem_res.adb (Resolve_Call): Check non-aliasing rules before
GNATprove inlining.

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

4 years ago[Ada] Further cleanup in inlining machinery
pmderodat [Mon, 19 Aug 2019 08:35:31 +0000 (08:35 +0000)] 
[Ada] Further cleanup in inlining machinery

This gets rid of a small issue in the inlining machinery: under very
peculiar circumstances, it would add a pending instantiation for the
body of a generic package at the point of call to an inlined subprogram
of the instance.  That's theoritically problematic because the saved
context is that of the call and not that of the instance in this case,
although the strict conditions ensure that this doesn't make a real
difference in practice.

Now that the machinery can perform the pending instantiations on demand,
we can optimistically add more of them when the instantiations are
analyzed and thus remove the problematic handling at the point of call.

No functional changes.

2019-08-19  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

* inline.adb (Add_Inlined_Body): Do not add pending
instantiations.
* sem_ch12.adb (Needs_Body_Instantiated): New predicate.
(Analyze_Package_Instantiation): Use it to decide whether to add
a pending instantiation for the body of the package.

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

4 years ago[Ada] Fix thinko in Acc_Loop_to_gnu
pmderodat [Mon, 19 Aug 2019 08:35:24 +0000 (08:35 +0000)] 
[Ada] Fix thinko in Acc_Loop_to_gnu

This fixes a glitch introduced during the initial OpenACC work import
process, causing crashes on any Acc_Parallel + Acc_Loop combination.

2019-08-19  Olivier Hainque  <hainque@adacore.com>

gcc/ada/

* gcc-interface/trans.c (Acc_Loop_to_gnu): Return the openacc
BIND_EXPR node we have constructed on purpose.  Remove unused
variable.

gcc/testsuite/

* gnat.dg/openacc1.adb: New testcase.

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

4 years ago[Ada] Define the -fdump-scos option in lang.opt
pmderodat [Mon, 19 Aug 2019 08:35:17 +0000 (08:35 +0000)] 
[Ada] Define the -fdump-scos option in lang.opt

2019-08-19  Pierre-Marie de Rodat  <derodat@adacore.com>

gcc/ada/

* gcc-interface/lang.opt (fdump-scos): Define.
* gcc-interface/misc.c (gnat_handle_option): Handle
OPT_fdump_scos.

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

4 years agoPR target/91441 - Turn off -fsanitize=kernel-address if TARGET_ASAN_SHADOW_OFFSET...
kito [Mon, 19 Aug 2019 03:21:44 +0000 (03:21 +0000)] 
PR target/91441 - Turn off -fsanitize=kernel-address if TARGET_ASAN_SHADOW_OFFSET is not implemented.

 - -fsanitize=kernel-address will call targetm.asan_shadow_offset ()
   at asan_shadow_offset, so it will crash if TARGET_ASAN_SHADOW_OFFSET
   is not implemented, that's mean -fsanitize=kernel-address is not
   supported for target without TARGET_ASAN_SHADOW_OFFSET implementation.

gcc/ChangeLog:

PR target/91441
* toplev.c (process_options): Check TARGET_ASAN_SHADOW_OFFSET is
implemented for -fsanitize=kernel-address, and merge check logic
with -fsanitize=address.

testsuite/ChangeLog:

PR target/91441
* gcc.target/riscv/pr91441.c: New.

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

4 years ago2019-08-18 Steven G. Kargl <kargl@gcc.gnu.org>
kargl [Mon, 19 Aug 2019 03:00:54 +0000 (03:00 +0000)] 
2019-08-18  Steven G. Kargl  <kargl@gcc.gnu.org>

PR fortran/91485
module.c (gfc_match_use): User defined operator cannot conflict with
a rename symbol.

2019-08-18  Steven G. Kargl  <kargl@gcc.gnu.org>

PR fortran/91485
* gfortran.dg/pr91485.f90: New test.

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

4 years agoDaily bump.
gccadmin [Mon, 19 Aug 2019 00:16:20 +0000 (00:16 +0000)] 
Daily bump.

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

4 years ago[Darwin, fixincludes] Fix PR83531
iains [Sun, 18 Aug 2019 18:54:13 +0000 (18:54 +0000)] 
[Darwin, fixincludes] Fix PR83531

There is no reasonable chance that the SDKs in question will be re-
issued, so the only viable solution is a fixincludes.

2019-08-18  C.G. Dogan <gcc+cgdogan.00@gmail.com>
    Iain Sandoe  <iain@sandoe.co.uk>

PR target/83531
* inclhack.def (darwin_api_availability): New, strip leading
underscores from API_XXXX defines.
* fixincl.x: Regenerate.
* tests/base/os/availability.h: New file.

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

4 years ago[Darwin, PPC] Fix fail of cpp/assert4.c
iains [Sun, 18 Aug 2019 18:44:58 +0000 (18:44 +0000)] 
[Darwin, PPC] Fix fail of cpp/assert4.c

This test needs the cpu and machine asserts to be implemented
which hadn't been done for PPC Darwin.  Fixed thus.

gcc/

2019-08-18  Iain Sandoe  <iain@sandoe.co.uk>

* config/rs6000/darwin.h (TARGET_OS_CPP_BUILTINS): Add asserts
for cpu and machine.  Factor 64/32b builtins.

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

4 years ago * doc/install.texi (Specific, bfin): blackfin.uclinux.org is
gerald [Sun, 18 Aug 2019 11:34:49 +0000 (11:34 +0000)] 
* doc/install.texi (Specific, bfin): blackfin.uclinux.org is
gone, point to sourceforge.net.

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

4 years agoDaily bump.
gccadmin [Sun, 18 Aug 2019 00:16:35 +0000 (00:16 +0000)] 
Daily bump.

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

4 years ago compiler: support new numeric literal syntax
ian [Sat, 17 Aug 2019 23:47:58 +0000 (23:47 +0000)] 
compiler: support new numeric literal syntax

    Support 0b, 0o, and hex floats.

    Tested against test/literal2.go in the gc repo.

    Updates golang/go#12711
    Updates golang/go#19308
    Updates golang/go#28493
    Updates golang/go#29008

    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/189718

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

4 years ago compiler, runtime: allocate defer records on the stack
ian [Sat, 17 Aug 2019 23:43:08 +0000 (23:43 +0000)] 
compiler, runtime: allocate defer records on the stack

    When a defer is executed at most once in a function body,
    we can allocate the defer record for it on the stack instead
    of on the heap.

    This should make defers like this (which are very common) faster.

    This is a port of CL 171758 from the gc repo.

    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/190410

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

4 years ago2019-08-17 Steven G. Kargl <kargl@gcc.gnu.org>
kargl [Sat, 17 Aug 2019 17:15:42 +0000 (17:15 +0000)] 
2019-08-17  Steven G. Kargl  <kargl@gcc.gnu.org>

PR fortran/82992
* module.c (gfc_match_use):  When renaming a module entity, search
current namespace for conflicting symbol.

2019-08-17  Steven G. Kargl  <kargl@gcc.gnu.org>

PR fortran/82992
* gfortran.dg/pr71649.f90: Adjust error messages.
* gfortran.dg/use_15.f90: Ditto.
* gfortran.dg/use_rename_8.f90: Ditto.

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

4 years ago2019-08-17 Steven G. Kargl <kargl@gcc.gnu.org>
kargl [Sat, 17 Aug 2019 14:39:51 +0000 (14:39 +0000)] 
2019-08-17  Steven G. Kargl  <kargl@gcc.gnu.org>

PR fortran/78739
* match.c (gfc_match_st_function):  When matching a statement function,
need to check if the statement function name shadows the function
name.

2019-08-17  Steven G. Kargl  <kargl@gcc.gnu.org>

PR fortran/78739
* fortran.dg/pr78739.f90: New test.

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

4 years ago2019-08-17 Steven G. Kargl <kargl@gcc.gnu.org>
kargl [Sat, 17 Aug 2019 14:27:07 +0000 (14:27 +0000)] 
2019-08-17  Steven G. Kargl  <kargl@gcc.gnu.org>

PR fortran/78719
* decl.c (get_proc_name): Check for a CLASS entity when trying to
add attributes to an entity that already has an explicit interface.

2019-08-17  Steven G. Kargl  <kargl@gcc.gnu.org>

PR fortran/78719
* gfortran.dg/pr78719_1.f90: New test.
* gfortran.dg/pr78719_2.f90: Ditto.
* gfortran.dg/pr78719_3.f90: Ditto.

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

4 years ago2019-08-17 Steven G. Kargl <kargl@gcc.gnu.org>
kargl [Sat, 17 Aug 2019 14:23:10 +0000 (14:23 +0000)] 
2019-08-17  Steven G. Kargl  <kargl@gcc.gnu.org>

PR fortran/91471
* primary.c (gfc_variable_attr): Remove a gfc_internal_error(),
which cannot be reached by conforming Fortran code, but seems to
be reachable from nonconforming Fortran code.  Treat the AR_UNKNOWN
case as a no-op.

2019-08-17  Steven G. Kargl  <kargl@gcc.gnu.org>

PR fortran/91471
* gfortran.dg/pr91471.f90: New test.

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

4 years ago2019-08-17 Thomas Koenig <tkoenig@gcc.gnu.org>
tkoenig [Sat, 17 Aug 2019 11:57:25 +0000 (11:57 +0000)] 
2019-08-17  Thomas Koenig  <tkoenig@gcc.gnu.org>

    PR fortran/91473
    * testsuite/libgomp.fortran/appendix-a/a.28.5.f90: Add
    -std=legacy so invalid code in the test case is accepted.

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

4 years ago * doc/ux.texi (User Experience Guidelines): Update reference.
gerald [Sat, 17 Aug 2019 10:10:54 +0000 (10:10 +0000)] 
* doc/ux.texi (User Experience Guidelines): Update reference.

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

4 years ago * doc/include/gpl_v3.texi (Copying): Adjust the link to "Why
gerald [Sat, 17 Aug 2019 10:07:13 +0000 (10:07 +0000)] 
* doc/include/gpl_v3.texi (Copying): Adjust the link to "Why
not LGPL".

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

4 years agoPR fortran/68401 Improve allocation error message
jb [Sat, 17 Aug 2019 05:45:37 +0000 (05:45 +0000)] 
PR fortran/68401 Improve allocation error message

Improve the error message that is printed when a memory allocation
fails, by including the location, and the size of the allocation that
failed.

Regtested on x86_64-pc-linux-gnu.

gcc/fortran/ChangeLog:

2019-08-17  Janne Blomqvist  <jb@gcc.gnu.org>

PR fortran/68401
* trans-decl.c (gfc_build_builtin_function_decls): Replace
os_error with os_error_at decl.
* trans.c (trans_runtime_error_vararg): Modify so the error
function decl is passed directly.
(gfc_trans_runtime_error): Pass correct error function decl.
(gfc_trans_runtime_check): Likewise.
(trans_os_error_at): New function.
(gfc_call_malloc): Use trans_os_error_at.
(gfc_allocate_using_malloc): Likewise.
(gfc_call_realloc): Likewise.
* trans.h (gfor_fndecl_os_error): Replace with gfor_fndecl_os_error_at.

libgfortran/ChangeLog:

2019-08-17  Janne Blomqvist  <jb@gcc.gnu.org>

PR fortran/68401
* gfortran.map: Add GFORTRAN_10 node, add _gfortran_os_error_at
symbol.
* libgfortran.h (os_error_at): New prototype.
* runtime/error.c (os_error_at): New function.

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

4 years ago runtime: scan write barrier buffer conservatively
ian [Sat, 17 Aug 2019 04:35:37 +0000 (04:35 +0000)] 
runtime: scan write barrier buffer conservatively

    In gccgo, we insert the write barriers in the frontend, and so we
    cannot completely prevent write barriers on stack writes. So it
    is possible for a bad pointer appearing in the write barrier
    buffer. When flushing the write barrier, treat it the same as
    sacnning the stack. In particular, don't mark a pointer if it
    does not point to an allocated object. We already have similar
    logic in greyobject. With this, hopefully, we can prevent an
    unallocated object from being marked completely.

    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/190599

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

4 years agoPut the CL into the right dir.
mpolacek [Sat, 17 Aug 2019 01:22:18 +0000 (01:22 +0000)] 
Put the CL into the right dir.

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

4 years agoDaily bump.
gccadmin [Sat, 17 Aug 2019 00:16:17 +0000 (00:16 +0000)] 
Daily bump.

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

4 years ago compiler: print runtime.hex in hex
ian [Fri, 16 Aug 2019 22:49:23 +0000 (22:49 +0000)] 
compiler: print runtime.hex in hex

    The gc compiler recognizes the type runtime.hex and prints values
    in this type as hex. Do the same here. This makes debugging
    runtime crashes slightly better.

    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/190597

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

4 years ago * gcc.target/sh/pr54236-6.c: Use -fno-tree-forwprop.
law [Fri, 16 Aug 2019 21:51:13 +0000 (21:51 +0000)] 
* gcc.target/sh/pr54236-6.c: Use -fno-tree-forwprop.

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

4 years agoPR c++/85827
mpolacek [Fri, 16 Aug 2019 20:40:36 +0000 (20:40 +0000)] 
PR c++/85827
g++.dg/cpp1z/constexpr-if29.C: New test.

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

4 years agolibsanitizer, record a local patch.
iains [Fri, 16 Aug 2019 19:49:07 +0000 (19:49 +0000)] 
libsanitizer, record a local patch.

2019-08-16  Iain Sandoe  <iain@sandoe.co.uk>

* LOCAL_PATCHES: Add r274585.

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

4 years agolibsanitize, asan - reapply r272406
iains [Fri, 16 Aug 2019 19:46:09 +0000 (19:46 +0000)] 
libsanitize, asan - reapply r272406

The entry in LOCAL_PATCHES was accidentally omitted.

2019-08-16  Iain Sandoe  <iain@sandoe.co.uk>

* asan/asan_interceptors.h: Reapply r272406.

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

4 years agoAs discussed below:
msebor [Fri, 16 Aug 2019 17:06:25 +0000 (17:06 +0000)] 
As discussed below:
  https://gcc.gnu.org/ml/gcc-patches/2019-08/msg00517.html

gcc/testsuite/ChangeLog:
* gcc.dg/struct-ret-1.c: Enable on all targets.

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

4 years ago * tree-sra.c (build_reconstructed_reference): Return NULL_TREE instead
ebotcazou [Fri, 16 Aug 2019 16:00:25 +0000 (16:00 +0000)] 
* tree-sra.c (build_reconstructed_reference): Return NULL_TREE instead
of NULL.  Add guard for broken VIEW_CONVERT_EXPRs.

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

4 years agogcc/ChangeLog:
msebor [Fri, 16 Aug 2019 15:53:29 +0000 (15:53 +0000)] 
gcc/ChangeLog:

* tree.def (TYPE_SIZE): Clarify.
* tree.h (TYPE_SIZE, TYPE_SIZE_UNIT, DECL_SIZE): Add comments.

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

4 years agoPR testsuite/91458
msebor [Fri, 16 Aug 2019 15:47:25 +0000 (15:47 +0000)] 
PR testsuite/91458

gcc/testsuite/ChangeLog:

* g++.dg/tree-ssa/pr19807.C: Use the same search pattern
unconditionally (correcting r272199, PR middle-end/90676).

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

4 years ago2019-08-16 Bernd Edlinger <bernd.edlinger@hotmail.de>
edlinger [Fri, 16 Aug 2019 15:34:47 +0000 (15:34 +0000)] 
2019-08-16  Bernd Edlinger  <bernd.edlinger@hotmail.de>

        PR tree-optimization/91109
        * lra-int.h (lra_need_for_scratch_reg_p): Declare.
        * lra.c (lra): Use lra_need_for_scratch_reg_p.
        * lra-spills.c (lra_need_for_scratch_reg_p): New function.

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

4 years ago * config/i386/mmx.md (mmxdoublemode): New mode attribute.
uros [Fri, 16 Aug 2019 14:28:12 +0000 (14:28 +0000)] 
* config/i386/mmx.md (mmxdoublemode): New mode attribute.
(mmx_uavg<mode>3): Macroize expaner from mmx_uavgv8qi3 and
mmx_uavgv4hi3 using MMXMODE12 mode iterator.
(uavg<mode>3_ceil): New expander.
* config/i386/sse.md (uavg<mode>3_ceil): Use ssedoublemode
mode iterator when creating CONST1_RTX.
(<sse2_avx2>_uavg<mode>3<mask_name>): Ditto.
(*<sse2_avx2>_uavg<mode>3<mask_name>): Use ssedoublemode
mode iterator for const1_operand predicate.

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

4 years ago2019-08-16 Richard Biener <rguenther@suse.de>
rguenth [Fri, 16 Aug 2019 13:23:01 +0000 (13:23 +0000)] 
2019-08-16  Richard Biener  <rguenther@suse.de>

* tree-scalar-evolution.c (follow_ssa_edge_expr): Declare.
(follow_ssa_edge_binary): Call follow_ssa_edge_expr instead of
follow_ssa_edge.
(follow_ssa_edge_in_condition_phi_branch): Likewise.
(analyze_evolution_in_loop): Likewise.
(follow_ssa_edge, follow_ssa_edge_in_rhs): Inline into ...
(follow_ssa_edge_expr): ... here.  Refactor code.

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

4 years ago2019-08-16 Richard Biener <rguenther@suse.de>
rguenth [Fri, 16 Aug 2019 13:17:04 +0000 (13:17 +0000)] 
2019-08-16  Richard Biener  <rguenther@suse.de>

PR target/91469
* config/i386/i386-features.c
(general_scalar_chain::replace_with_subreg): Stop at memory operands.

* gcc.target/i386/pr91469-1.c: New testcase.
* gcc.target/i386/pr91469-2.c: Likewise.

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

4 years ago * config/abi/post/alpha-linux-gnu/baseline_symbols.txt: Update.
uros [Fri, 16 Aug 2019 12:30:40 +0000 (12:30 +0000)] 
* config/abi/post/alpha-linux-gnu/baseline_symbols.txt: Update.

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

4 years agoAllow automatics in equivalences
markeggleston [Fri, 16 Aug 2019 10:09:57 +0000 (10:09 +0000)] 
Allow automatics in equivalences

If a variable with an automatic attribute appears in an
equivalence statement the storage should be allocated on the
stack.

Note: most of this patch was provided by Jeff Law  <law@redhat.com>.

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

4 years ago[gensupport] PR 91255: Do not error out immediately on set_attr_alternative with...
ktkachov [Fri, 16 Aug 2019 09:32:36 +0000 (09:32 +0000)] 
[gensupport] PR 91255: Do not error out immediately on set_attr_alternative with define_subst

I'm trying to add a define_subst use in the arm backend but am getting many build errors complaining about:
`set_attr_alternative' is unsupported by `define_subst'

Looking at the gensupport.c code it iterates over all define_insns and errors if any of them have set_attr_alternative.

The usecase I'm targetting doesn't involve patterns with set_attr_alternative, so I would like to make the define_subst handling
more robust to only error out if the define_subst is actually attempted on a set_attr_alternative.

This patch produces the error only if the set_attr_alternative attr matches the subst name.
This allows a build of the arm backend with a define_subst usage to succeed.

PR other/91255
* gensupport.c (has_subst_attribute): Error out on set_attr_alternative
only if subst_name matches curr_attr string.

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

4 years ago2019-08-16 Richard Biener <rguenther@suse.de>
rguenth [Fri, 16 Aug 2019 09:27:34 +0000 (09:27 +0000)] 
2019-08-16  Richard Biener  <rguenther@suse.de>

* tree-ssa-forwprop.c (simplify_builtin_call): Do not remove
stmt at gsi_p, instead replace it with a NOP removed later.
(pass_forwprop::execute): Fully propagate lattice, DCE stmts
that became dead because of that.

fortran/
* trans-intrinsic.c (gfc_conv_intrinsic_findloc): Initialize
forward_branch to avoid bogus uninitialized warning.

* gcc.dg/tree-ssa/forwprop-31.c: Adjust.

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

4 years agoAdd missed to a opt-info dump.
marxin [Fri, 16 Aug 2019 08:10:55 +0000 (08:10 +0000)] 
Add missed to a opt-info dump.

2019-08-16  Martin Liska  <mliska@suse.cz>

PR ipa/91447
* g++.dg/ipa/ipa-icf-4.C: Add -missed for target that
don't have aliases.

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

4 years agoAdd type to VR_VARYING.
aldyh [Fri, 16 Aug 2019 06:54:23 +0000 (06:54 +0000)] 
Add type to VR_VARYING.

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

4 years agorequire trampolines for pr85044
aoliva [Fri, 16 Aug 2019 03:39:02 +0000 (03:39 +0000)] 
require trampolines for pr85044

Testcases that require support for trampolines should be marked as
such; gcc.target/i386/pr85044.c was missing it.  Fixed.

for  gcc/testsuite/ChangeLog

* gcc.target/i386/pr85044.c: Require support for trampolines.

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

4 years agoi386/asm-4 test: use amd64's natural addressing mode on all OSs
aoliva [Fri, 16 Aug 2019 03:38:49 +0000 (03:38 +0000)] 
i386/asm-4 test: use amd64's natural addressing mode on all OSs

gcc.target/i386/asm-4.c uses amd64's natural PC-relative addressing
mode on a single platform, using the 32-bit absolute addressing mode
elsewhere.  There's no point in giving up amd64's natural addressing
mode and insisting on the 32-bit one when we're targeting amd64, and
having to make explicit exceptions for systems where that's found not
to work for whatever reason.  If we just use the best-suited way to
take the address of a function behind the compiler's back on each
target variant, we're less likely to hit unexpected failures.

for  gcc/testsuite/ChangeLog

* gcc.target/i386/asm-4.c: Use amd64 natural addressing mode
on all __LP64__ targets.

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

4 years agouse __builtin_alloca, drop non-standard alloca.h
aoliva [Fri, 16 Aug 2019 03:38:36 +0000 (03:38 +0000)] 
use __builtin_alloca, drop non-standard alloca.h

Since alloca.h is not ISO C, most of our alloca-using tests seem to
rely on __builtin_alloca instead of including the header and calling
alloca.  This patch extends this practice to some of the exceptions I
found in gcc.target, marking them as requiring a functional alloca
while at that.

for  gcc/testsuite/ChangeLog

* gcc.target/arc/interrupt-6.c: Use __builtin_alloca, require
effective target support for alloca, drop include of alloca.h.
* gcc.target/i386/pr80969-3.c: Likewise.
* gcc.target/sparc/setjmp-1.c: Likewise.
* gcc.target/x86_64/abi/ms-sysv/gen.cc: Likewise.
* gcc.target/x86_64/abi/ms-sysv/ms-sysv.c: Likewise.

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