H.J. Lu [Thu, 28 Jul 2016 17:00:43 +0000 (28 10:00 -0700)]
Add __attribute__((visibility("protected"))) tests
H.J. Lu [Wed, 27 Jul 2016 17:06:03 +0000 (27 10:06 -0700)]
X86: Add -mcopy-reloc to avoid copy relocation
On x86, copy relocation is used in executable to access external data
defined in shared object as if it is defined locally. At run-time,
dynamic linker copies symbol data from shared object to executable and
its references from shared objects are resolved by GLOB_DAT relocation.
Since the copy of symbol data in executable is writable even if the
original symbol in shared object is read-only, this is a potential
security risk.
We can avoid copy relocation by always using PIC model to access
external data symbol. If the external symbol is defined locally in
executable, linker can optimize instructions on memory operand with
GOTPCRELX/GOT32X relocation against external symbol into a different
form on immediate operand.
Without copy relocation, external symbols in executable are accessed
indirectly via the GOT slot. Even when the symbol is defined locally,
it is still referenced indirectly through a register. However, there
are a few side benefits:
1. Without copy relocation in executable for external symbol defined
in shared object, symbol size can be increased while still providing
backward binary compatibility.
2. Since protected symbols in shared objects are no longer copied to
executable at run-time, references of protected symbols within shared
objects can be resolved without GOT.
gcc/
PR target/77408
* config/i386/i386.c (ix86_force_load_from_GOT_p): Return
true on data symbols for -mno-copy-reloc.
(legitimate_pic_address_disp_p): Allow copy relocation in
64-bit PIE only with -mcopy-reloc.
* config/i386/i386.opt (mcopy-reloc): New.
* doc/invoke.texi: Document -mcopy-reloc.
gcc/testsuite/
PR target/77408
* gcc.target/i386/no-copy-reloc-1.c: New test.
* gcc.target/i386/no-copy-reloc-2.c: Likewise.
* gcc.target/i386/no-copy-reloc-3.c: Likewise.
* gcc.target/i386/no-copy-reloc-4.c: Likewise.
* gcc.target/i386/no-copy-reloc-5.c: Likewise.
* gcc.target/i386/no-copy-reloc-6.c: Likewise.
* gcc.target/i386/no-copy-reloc-7.c: Likewise.
* gcc.target/i386/no-copy-reloc-8.c: Likewise.
* gcc.target/i386/no-copy-reloc-9.c: Likewise.
munroesj [Fri, 25 Aug 2017 15:11:50 +0000 (25 15:11 +0000)]
Part 2/3 for contributing PPC64LE support for X86 SSE
instrisics. This patch includes the new (for PPC) xmmintrin.h,
changes x86intrin.h to include xmmintrin.h and associated
config.gcc changes.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251356 138bc75d-0d04-0410-961f-82ee72b054a4
wschmidt [Fri, 25 Aug 2017 15:08:30 +0000 (25 15:08 +0000)]
2017-08-25 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
PR target/81504
* config/rs6000/rs6000-p8swap.c (find_alignment_op): Add reference
parameter and_insn and return it.
(recombine_lvx_pattern): Insert a copy to ensure availability of
the base register of the copied masking operation at the point of
the instruction replacement.
(recombine_stvx_pattern): Likewise.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251355 138bc75d-0d04-0410-961f-82ee72b054a4
meissner [Fri, 25 Aug 2017 13:07:10 +0000 (25 13:07 +0000)]
[gcc]
2017-08-24 Michael Meissner <meissner@linux.vnet.ibm.com>
* config/rs6000/rs6000.opt (-mpower9-dform-scalar): Delete
undocumented switches.
(-mpower9-dform-vector): Likewise.
(-mpower9-dform): Likewise.
* config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Update
comments to delete references to -mpower9-dform* switches.
* config/rs6000/predicates.md (vsx_quad_dform_memory_operand):
Delete reference to -mpower9-dform* switches, test for
-mpower9-vector instead.
* config/rs6000/rs6000-cpus.def (ISA_3_0_MASKS_SERVER): Likewise.
(OTHER_P9_VECTOR_MASKS): Likewise.
(POWERPC_MASKS): Likewise.
* config/rs6000/rs6000.c (rs6000_setup_reg_addr_masks): Change
tests against -mpower9-dform* to -mpower9-vector. Delete code
that checked for -mpower9-dform* consistancy with other options.
Add test for -mpower9-misc to enable other power9 switches.
(rs6000_init_hard_regno_mode_ok): Likewise.
(rs6000_option_override_internal): Likewise.
(rs6000_emit_prologue): Likewise.
(rs6000_emit_epilogue): Likewise.
(rs6000_opt_masks): Delete -mpower9-dform-{scalar,vector}.
(rs6000_disable_incompatiable_switches): Delete -mpower9-dform.
(emit_fusion_p9_load): Change tests for -mpower9-dform-scalar
-mpower9-vector.
(emit_fusion_p9_store): Likewise.
* config/rs6000/rs6000.h (TARGET_P9_DFORM_SCALAR): Delete
resetting these macros if the assembler does not support ISA 3.0
instructions.
(TARGET_P9_DFORM_VECTOR): Likewise.
* config/rs6000/rs6000.md (peepholes to optimize altivec memory):
Change to use -mpower9-vector instead of -mpower9-dform-scalar.
[gcc/testsuite]
2017-08-24 Michael Meissner <meissner@linux.vnet.ibm.com>
* gcc.target/powerpc/dform-1.c: Delete -mpower9-dform*
options.
* gcc.target/powerpc/dform-2.c: Likewise.
* gcc.target/powerpc/dform-3.c: Likewise.
* gcc.target/powerpc/pr71656-1.c: Likewise.
* gcc.target/powerpc/pr71656-2.c: Likewise.
* gcc.target/powerpc/pr80103-1.c: Likewise.
* gcc.target/powerpc/pr80098-1.c: Likewise.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251352 138bc75d-0d04-0410-961f-82ee72b054a4
nathan [Fri, 25 Aug 2017 12:32:54 +0000 (25 12:32 +0000)]
Retabify 2017-08-24 Richard Biener <rguenther@suse.de>
PR target/81921
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251351 138bc75d-0d04-0410-961f-82ee72b054a4
nathan [Fri, 25 Aug 2017 12:27:48 +0000 (25 12:27 +0000)]
* class.c (method_name_cmp, resort_method_name_cmp): Method names
can never be NULL.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251350 138bc75d-0d04-0410-961f-82ee72b054a4
amodra [Fri, 25 Aug 2017 12:21:00 +0000 (25 12:21 +0000)]
PR81747, ICE in operator[]
PR rtl-optimization/81747
* cse.c (cse_extended_basic_block): Don't attempt to record
equivalences for degenerate conditional branches that branch
to their fall-through.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251349 138bc75d-0d04-0410-961f-82ee72b054a4
nathan [Fri, 25 Aug 2017 11:37:10 +0000 (25 11:37 +0000)]
Conversion operators have a special name
* cp-tree.h (CPTI_CONV_OP_MARKER, CPTI_CONV_OP_IDENTIFIER): New.
(conv_op_marker, conv_op_identifier): New.
(CLASSTYPE_FIRST_CONVERSION_SLOT): Delete.
* decl.c (initialize_predefined_identifiers): Add
conv_op_identifier.
(cxx_init_decl_processing): Create conv_op_marker.
* decl2.c (check_classfn): Lookup conv-ops by name.
* class.c (add_method): Use conv_op_identifier & conv_op_marker.
(resort_type_method_vec): Don't skip conv-ops.
(finish_struct_methods, warn_hidden): Likewise.
* name-lookup.h (lookup_all_conversions): Delete.
* name-lookup.c (lookup_conversion_operator): Replace with ...
(extract_conversion_operator): ... this.
(lookup_fnfields_slot_nolazy): Find conv-ops by name.
(lookup_all_conversions): Delete.
* pt.c (check_explicit_specialization): Find conv-ops by name.
* search.c (lookup_conversions_r): Likewise.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251348 138bc75d-0d04-0410-961f-82ee72b054a4
msebor [Fri, 25 Aug 2017 00:25:57 +0000 (25 00:25 +0000)]
PR middle-end/81908 - FAIL: gfortran.dg/alloc_comp_auto_array_2.f90 -O3 -g -m32
gcc/ChangeLog:
PR middle-end/81908
* gimple-fold.c (size_must_be_zero_p): New function.
(gimple_fold_builtin_memory_op): Call it.
gcc/testsuite/ChangeLog:
PR middle-end/81908
* gcc.dg/tree-ssa/builtins-folding-gimple-2.c: New test.
* gcc.dg/tree-ssa/builtins-folding-gimple-3.c: New test.
* gcc.dg/tree-ssa/pr81908.c: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251347 138bc75d-0d04-0410-961f-82ee72b054a4
gccadmin [Fri, 25 Aug 2017 00:16:43 +0000 (25 00:16 +0000)]
Daily bump.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251346 138bc75d-0d04-0410-961f-82ee72b054a4
fdumont [Thu, 24 Aug 2017 20:31:53 +0000 (24 20:31 +0000)]
2017-08-24 François Dumont <fdumont@gcc.gnu.org>
* include/bits/stl_list.h
[!_GLIBCXX_INLINE_VERSION](_List_base<>::_S_distance): Remove.
(_List_impl(_Node_alloc_type&&, _List_impl&&)): New.
(_List_base(_Node_alloc_type&&, _List_base&&)): New, use latter.
[!_GLIBCXX_INLINE_VERSION](_List_base(_Node_alloc_type&&,_List_base&&)):
Remove.
(_List_base(_Node_alloc_type&&)): New.
[!_GLIBCXX_INLINE_VERSION](_List_base<>::_M_distance): Remove.
[!_GLIBCXX_INLINE_VERSION](_List_base<>::_M_node_count): Remove.
(list<>::_M_node_count): New.
(list<>::size()): Adapt to call latter.
(list<>::_S_distance(const_iterator, const_iterator)): New.
(list<>::splice(iterator, list&, const_iterator, const_iterator)):
Adapt to call latter.
(list(list&&, const allocator_type&, true_type)): New.
(list(list&&, const allocator_type&, false_type)): New.
(list(list&&, const allocator_type&)): Adapt to call latters.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251342 138bc75d-0d04-0410-961f-82ee72b054a4
meissner [Thu, 24 Aug 2017 19:28:07 +0000 (24 19:28 +0000)]
[gcc]
2017-08-24 Michael Meissner <meissner@linux.vnet.ibm.com>
* config/rs6000/rs6000.opt (-mpower9-dform-scalar): Delete
undocumented switches.
(-mpower9-dform-vector): Likewise.
(-mpower9-dform): Likewise.
* config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Update
comments to delete references to -mpower9-dform* switches.
* config/rs6000/predicates.md (vsx_quad_dform_memory_operand):
Delete reference to -mpower9-dform* switches, test for
-mpower9-vector instead.
* config/rs6000/rs6000-cpus.def (ISA_3_0_MASKS_SERVER): Likewise.
(OTHER_P9_VECTOR_MASKS): Likewise.
(POWERPC_MASKS): Likewise.
* config/rs6000/rs6000.c (rs6000_setup_reg_addr_masks): Change
tests against -mpower9-dform* to -mpower9-vector. Delete code
that checked for -mpower9-dform* consistancy with other options.
Add test for -mpower9-misc to enable other power9 switches.
(rs6000_init_hard_regno_mode_ok): Likewise.
(rs6000_option_override_internal): Likewise.
(rs6000_emit_prologue): Likewise.
(rs6000_emit_epilogue): Likewise.
(rs6000_opt_masks): Delete -mpower9-dform-{scalar,vector}.
(rs6000_disable_incompatiable_switches): Delete -mpower9-dform.
(emit_fusion_p9_load): Change tests for -mpower9-dform-scalar
-mpower9-vector.
(emit_fusion_p9_store): Likewise.
* config/rs6000/rs6000.h (TARGET_P9_DFORM_SCALAR): Delete
resetting these macros if the assembler does not support ISA 3.0
instructions.
(TARGET_P9_DFORM_VECTOR): Likewise.
* config/rs6000/rs6000.md (peepholes to optimize altivec memory):
Change to use -mpower9-vector instead of -mpower9-dform-scalar.
[gcc/testsuite]
2017-08-24 Michael Meissner <meissner@linux.vnet.ibm.com>
* gcc.target/powerpc/dform-1.c: Delete -mpower9-dform*
options.
* gcc.target/powerpc/dform-2.c: Likewise.
* gcc.target/powerpc/dform-3.c: Likewise.
* gcc.target/powerpc/pr71656-1.c: Likewise.
* gcc.target/powerpc/pr71656-2.c: Likewise.
* gcc.target/powerpc/pr80103-1.c: Likewise.
* gcc.target/powerpc/pr80098-1.c: Likewise.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251341 138bc75d-0d04-0410-961f-82ee72b054a4
nathan [Thu, 24 Aug 2017 18:39:41 +0000 (24 18:39 +0000)]
Conversion operators kept on single overload set
* class.c (add_method): Keep all conv-ops on one slot.
* name-lookup.c (lookup_conversion_operator): Pull the desired
conv op out of overload set.
* search.c (lookup_conversions_r): Lose template/non-template
distinction.
(lookup_conversions): Likewise.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251340 138bc75d-0d04-0410-961f-82ee72b054a4
munroesj [Thu, 24 Aug 2017 17:46:01 +0000 (24 17:46 +0000)]
Adds the powerpc equivalent mm_malloc.h header which is needed by
xmmintrin.h and cleans up some noisy warnings from the previous MMX
commit.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251339 138bc75d-0d04-0410-961f-82ee72b054a4
uros [Thu, 24 Aug 2017 17:19:50 +0000 (24 17:19 +0000)]
* lib/target-supports.exp: Group together target-dependant checks.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251338 138bc75d-0d04-0410-961f-82ee72b054a4
amker [Thu, 24 Aug 2017 15:38:39 +0000 (24 15:38 +0000)]
PR tree-optimization/81913
* tree-ssa-loop-niter.c (number_of_iterations_cond): Skip niter
analysis when either IVs in condition can wrap.
gcc/testsuite
* gcc.c-torture/execute/pr81913.c: New test.
* gcc.dg/tree-ssa/loop-niter-1.c: New test.
* gcc.dg/tree-ssa/loop-niter-2.c: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251337 138bc75d-0d04-0410-961f-82ee72b054a4
dmalcolm [Thu, 24 Aug 2017 14:28:16 +0000 (24 14:28 +0000)]
C: fix logic within c_expr::get_location
In r251239 I added a c_expr::get_location method for use by
c_parser_expr_list for building the vec<location_t> for
an expression list, rather than using the location of the first token.
When determining whether to use the location within the tree node,
or fall back to the range in the c_expr, I used EXPR_CAN_HAVE_LOCATION,
rather than EXPR_HAS_LOCATION. This meant that any tree nodes of kinds
that *can* have a location but which erroneously had
EXPR_LOCATION (value) == UNKNOWN_LOCATION
had that value added to the vec<location_t>, leading to missing
location information when reporting on the issue
(seen with gcc.dg/Wtraditional-conversion-2.c for m68k).
This patch addresses this in two ways:
(a) it fixes the specific issue in this failing test case, by
setting up the location properly on the EXCESS_PRECISION_EXPR.
(b) updating c_expr::get_location by only using the EXPR_LOCATION
if it's sane. Arguably this is papering over bugs, but they are
pre-existing ones exposed by r251239, and I'd rather have this
fix in place than play whack-a-mole on any other such "missing
location" bugs that are lurking in the codebase.
gcc/c/ChangeLog:
* c-tree.h (c_expr::get_location) Use EXPR_HAS_LOCATION rather
than CAN_HAVE_LOCATION_P when determining whether to use the
location_t value within "value".
gcc/c-family/ChangeLog:
* c-lex.c (interpret_float): Use token location
when building an EXCESS_PRECISION_EXPR.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251335 138bc75d-0d04-0410-961f-82ee72b054a4
uros [Thu, 24 Aug 2017 14:18:57 +0000 (24 14:18 +0000)]
* dwarf2out.c (MAX_ARTIFICIAL_LABEL_BYTES): Increase to 40.
* dwarf2cfi.c (MAX_ARTIFICIAL_LABEL_BYTES): Remove.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251334 138bc75d-0d04-0410-961f-82ee72b054a4
rguenth [Thu, 24 Aug 2017 13:44:35 +0000 (24 13:44 +0000)]
2017-08-23 Richard Biener <rguenther@suse.de>
PR target/81921
* targhooks.c (default_target_can_inline_p): Properly
use target_option_default_node when no DECL_FUNCTION_SPECIFIC_TARGET
is present and always compare.
* config/i386/i386.c (ix86_valid_target_attribute_tree): Do not
imply -mfpmath=sse from TARGET_SSE_P.
(ix86_can_inline_p): Properly use target_option_default_node when
no DECL_FUNCTION_SPECIFIC_TARGET is present and always compare.
* gcc.target/i386/pr81921.c: New testcase.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251333 138bc75d-0d04-0410-961f-82ee72b054a4
rguenth [Thu, 24 Aug 2017 13:41:51 +0000 (24 13:41 +0000)]
2017-08-24 Richard Biener <rguenther@suse.de>
PR debug/81936
* dwarf2out.c (output_die): Handle flag_generate_offload like
flag_generate_lto.
(output_comp_unit): Likewise.
(gen_array_type_die): Likewise.
(dwarf2out_early_finish): Likewise.
(note_variable_value_in_expr): Likewise.
(dwarf2out_finish): Likewise. Adjust assert.
* cgraphunit.c (symbol_table::compile): Move setting of
flag_generate_offload earlier ...
(symbol_table::finalize_compilation_unit): ... here, before
early debug finalization.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251332 138bc75d-0d04-0410-961f-82ee72b054a4
rguenth [Thu, 24 Aug 2017 12:22:30 +0000 (24 12:22 +0000)]
2017-08-24 Richard Biener <rguenther@suse.de>
* config/i386/i386.c: Include symbol-summary.h, ipa-prop.h
and ipa-fnsummary.h.
(ix86_can_inline_p): When ix86_fpmath flags do not match
check whether the callee uses FP math at all.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251330 138bc75d-0d04-0410-961f-82ee72b054a4
aldyh [Thu, 24 Aug 2017 11:40:55 +0000 (24 11:40 +0000)]
PR middle-end/81931
* tree-ssanames.c (get_nonzero_bits): Use element_precision
instead of TYPE_PRECISION.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251328 138bc75d-0d04-0410-961f-82ee72b054a4
rsandifo [Thu, 24 Aug 2017 07:47:13 +0000 (24 07:47 +0000)]
Make more use of subreg_offset_from_lsb
This patch makes use of the subreg_offset_from_lsb function
added by an earlier patch in the SVE series.
2017-08-24 Richard Sandiford <richard.sandiford@linaro.org>
Alan Hayward <alan.hayward@arm.com>
David Sherwood <david.sherwood@arm.com>
gcc/
* combine.c (make_extraction): Use subreg_offset_from_lsb.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251326 138bc75d-0d04-0410-961f-82ee72b054a4
gccadmin [Thu, 24 Aug 2017 00:16:27 +0000 (24 00:16 +0000)]
Daily bump.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251325 138bc75d-0d04-0410-961f-82ee72b054a4
dansan [Wed, 23 Aug 2017 21:46:14 +0000 (23 21:46 +0000)]
PR target/80969 - Fix ICE with -mabi=ms -mavx512f, reduce wasted space when realigning stack.
2017-08-23 Daniel Santos <daniel.santos@pobox.com>
* config/i386/i386.h (ix86_frame::stack_realign_allocate_offset):
Remove field.
(ix86_frame::stack_realign_allocate): New field.
(struct machine_frame_state): Modify comments.
(machine_frame_state::sp_realigned_fp_end): New field.
* config/i386/i386.c (ix86_compute_frame_layout): Rework stack frame
layout calculation.
(sp_valid_at): Add assertion to assure no attempt to access invalid
offset of a realigned stack.
(fp_valid_at): Likewise.
(choose_baseaddr): Modify comments.
(ix86_emit_outlined_ms2sysv_save): Adjust to changes in
ix86_expand_prologue.
(ix86_expand_prologue): Modify stack realignment and allocation.
(ix86_expand_epilogue): Modify comments.
* doc/sourcebuild.texi: Add documentation for target selectors avx2,
avx2_runtime, avx512f, and avx512f_runtime.
2017-08-23 Daniel Santos <daniel.santos@pobox.com>
* gcc.target/i386/pr80969-1.c: New testcase.
* gcc.target/i386/pr80969-2a.c: Likewise.
* gcc.target/i386/pr80969-2.c: Likewise.
* gcc.target/i386/pr80969-3.c: Likewise.
* gcc.target/i386/pr80969-4a.c: Likewise.
* gcc.target/i386/pr80969-4b.c: Likewise.
* gcc.target/i386/pr80969-4.c: Likewise.
* gcc.target/i386/pr80969-4.h: New header common to pr80969-4*.c
* lib/target-supports.exp (check_avx512_os_support_available,
check_avx512f_hw_available, check_effective_target_avx512f_runtime):
New proceedures for target avx512f and avx512f_runtime selectors.
(check_avx2_hw_available): Fix breakage due NULL being undefined.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251321 138bc75d-0d04-0410-961f-82ee72b054a4
nathan [Wed, 23 Aug 2017 21:09:03 +0000 (23 21:09 +0000)]
* cp-tree.h (lookup_field_1, lookup_fnfields_slot,
lookup_fnfields_slot_nolazy, lookup_all_conversions): Move
declatations to ...
* name-lookup.h (lookup_field_1, lookup_fnfields_slot,
lookup_fnfields_slot_nolazy, lookup_all_conversions): ... here.
* search.c (lookup_conversion_operator,
lookup_fnfields_slot_nolazy, lookup_field_1, lookup_fnfields_slot,
lookup_all_conversions): Move to ...
* name-lookup.c (lookup_conversion_operator,
lookup_fnfields_slot_nolazy, lookup_field_1, lookup_fnfields_slot,
lookup_all_conversions): ... here.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251319 138bc75d-0d04-0410-961f-82ee72b054a4
nathan [Wed, 23 Aug 2017 19:43:38 +0000 (23 19:43 +0000)]
* semantics.c (finish_member_declaration): Move USING_DECL check
earlier. Always set C++ linkage. Commonize TYPE_FIELD and
template decl list insertion.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251317 138bc75d-0d04-0410-961f-82ee72b054a4
nathan [Wed, 23 Aug 2017 19:37:53 +0000 (23 19:37 +0000)]
* cp-tree.h (maybe_version_functions): Declare.
* decl.c (decls_match): Break function versioning check to
separate function. Call it.
(maybe_version_functions): Broken out of decls_match.
* class.c (add_method): Use maybe_version_functions.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251316 138bc75d-0d04-0410-961f-82ee72b054a4
nathan [Wed, 23 Aug 2017 19:33:08 +0000 (23 19:33 +0000)]
* cp-tree.h (print_search_statistics,
reinit_search_statistics): Don't declare.
* search.c (n_fields_searched, n_calls_lookup_field,
n_calls_lookup_field_1, n_calls_lookup_fnfields,
n_calls_lookup_fnfields_1, n_calls_get_base_type,
n_outer_fields_searched, n_contexts_saved): Delete.
(lookup_field_1, lookup_member,
lookup_fnfields_slot_nolazy): Remove stat gathering.
(print_search_statistics, reinit_search_statistics): Delete.
* tree.c (cxx_print_statistics): Don't print search stats.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251315 138bc75d-0d04-0410-961f-82ee72b054a4
dmalcolm [Wed, 23 Aug 2017 15:53:41 +0000 (23 15:53 +0000)]
testsuite: add param-type-mismatch.c/C testcases as a baseline
gcc/testsuite/ChangeLog:
* g++.dg/diagnostic/param-type-mismatch.C: New test acse.
* gcc.dg/param-type-mismatch.c: New test case.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251312 138bc75d-0d04-0410-961f-82ee72b054a4
uros [Wed, 23 Aug 2017 14:45:30 +0000 (23 14:45 +0000)]
* config/i386/i386.opt: Remove unneeded Init(0) initializations.
(mstackrealign): Do not init to -1.
* config/i386/i386.c (ix86_option_override_internal):
Check opts_set, not opts when setting default value of
opts->x_ix86_force_align_arg_pointer.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251311 138bc75d-0d04-0410-961f-82ee72b054a4
willschm [Wed, 23 Aug 2017 14:06:55 +0000 (23 14:06 +0000)]
[gcc/testsuite]
2017-08-23 Will Schmidt <will_schmidt@vnet.ibm.com>
* gcc.target/powerpc/fold-vec-perm-char.c: New.
* gcc.target/powerpc/fold-vec-perm-double.c: New.
* gcc.target/powerpc/fold-vec-perm-float.c: New.
* gcc.target/powerpc/fold-vec-perm-int.c: New.
* gcc.target/powerpc/fold-vec-perm-longlong.c: New.
* gcc.target/powerpc/fold-vec-perm-pixel.c: New.
* gcc.target/powerpc/fold-vec-perm-short.c: New.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251310 138bc75d-0d04-0410-961f-82ee72b054a4
rguenth [Wed, 23 Aug 2017 13:50:02 +0000 (23 13:50 +0000)]
2017-08-23 Richard Biener <rguenther@suse.de>
* testsuite/ChangeLog: Fix last entry.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251309 138bc75d-0d04-0410-961f-82ee72b054a4
rguenth [Wed, 23 Aug 2017 13:44:20 +0000 (23 13:44 +0000)]
2017-08-23 Richard Biener <rguenther@suse.de>
* function.c (fndecl_name): Use verbosity 1 (no arguments) for
lang_hooks.decl_printable_name.
* print-rtl-function.c (print_rtx_function): Likewise.
* tree-pretty-print.c (dump_function_header): Likewise.
* g++.dg/cpp1y/constexpr-instantiate.C: Adjust.
* g++.dg/tree-ssa/pr45605.C: Likewise.
* gnat.dg/noinline2.ad: Likewise.b
* gnat.dg/renaming6.ad: Likewise.b
* gnat.dg/renaming6.ad: Likewise.s
* gnat.dg/specs/noinline3.ad: Likewise.s
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251308 138bc75d-0d04-0410-961f-82ee72b054a4
rguenth [Wed, 23 Aug 2017 12:11:03 +0000 (23 12:11 +0000)]
2017-08-23 Richard Biener <rguenther@suse.de>
PR lto/81940
* dwarf2out.c (dwarf2out_abstract_function): Handle LTO with
-g0 at compile-time.
* g++.dg/lto/pr81940_0.C: New testcase.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251306 138bc75d-0d04-0410-961f-82ee72b054a4
tnfchris [Wed, 23 Aug 2017 11:34:59 +0000 (23 11:34 +0000)]
2017-08-23 Tamar Christina <tamar.christina@arm.com>
PR middle-end/19706
* doc/sourcebuild.texi (Other hardware attributes):
Document xorsign.
gcc/testsuite
2017-08-23 Tamar Christina <tamar.christina@arm.com>
PR middle-end/19706
* gcc.dg/tree-ssa/pr19706.c: New.
* lib/target-supports.exp (check_effective_target_xorsign): New.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251304 138bc75d-0d04-0410-961f-82ee72b054a4
tnfchris [Wed, 23 Aug 2017 11:32:47 +0000 (23 11:32 +0000)]
2017-08-23 Tamar Christina <tamar.christina@arm.com>
PR middle-end/19706
* tree-ssa-math-opts.c (convert_expand_mult_copysign):
Fix single-use check.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251303 138bc75d-0d04-0410-961f-82ee72b054a4
thopre01 [Wed, 23 Aug 2017 10:43:36 +0000 (23 10:43 +0000)]
Fix broken MinGW build of gcc.c
2017-08-23 Thomas Preud'homme <thomas.preudhomme@arm.com>
gcc/
* gcc.c (execute): Only test for SIGKILL and SIGQUIT if available.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251302 138bc75d-0d04-0410-961f-82ee72b054a4
gccadmin [Wed, 23 Aug 2017 00:16:22 +0000 (23 00:16 +0000)]
Daily bump.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251300 138bc75d-0d04-0410-961f-82ee72b054a4
dansan [Tue, 22 Aug 2017 22:08:19 +0000 (22 22:08 +0000)]
Move entry to correct ChangeLog.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251294 138bc75d-0d04-0410-961f-82ee72b054a4
dansan [Tue, 22 Aug 2017 18:54:49 +0000 (22 18:54 +0000)]
Add missing ChangeLog entry for previous commit
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251290 138bc75d-0d04-0410-961f-82ee72b054a4
dansan [Tue, 22 Aug 2017 18:52:10 +0000 (22 18:52 +0000)]
docs: Explain how to use multiple file-name patterns in RUNTESTFLAGS
* doc/install.texi: Modify to add more details on running
selected tests.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251289 138bc75d-0d04-0410-961f-82ee72b054a4
dansan [Tue, 22 Aug 2017 17:59:24 +0000 (22 17:59 +0000)]
PR target/71958: Error on -mx32 with -mabi=ms
gcc/ChangeLog:
2017-08-11 Daniel Santos <daniel.santos@pobox.com>
* config/i386/i386.c (ix86_option_override_internal): Error when
-mx32 is combined with -mabi=ms.
(ix86_function_type_abi): Limit errors for mixing -mx32 with
attribute ms_abi.
gcc/testsuite/ChangeLog:
2017-08-11 Daniel Santos <daniel.santos@pobox.com>
* gcc.target/i386/pr71958.c: New test to verify error on -mx32
and -mabi=ms
* gcc.target/i386/pr64409.c: Modify to only run on x32.
* gcc.target/i386/pr46470.c: Modify to skip x32 target.
* gcc.target/i386/pr66275.c: Likewise.
* gcc.target/i386/pr68018.c: Likewise.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251287 138bc75d-0d04-0410-961f-82ee72b054a4
wschmidt [Tue, 22 Aug 2017 17:32:26 +0000 (22 17:32 +0000)]
2017-08-22 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
PR tree-optimization/81488
* gimple-ssa-strength-reduction (struct slsr_cand_d): Add visited
and cached_basis fields.
(MAX_SPREAD): New constant.
(alloc_cand_and_find_basis): Initialize new fields.
(clear_visited): New function.
(create_phi_basis_1): Rename from create_phi_basis, set visited
and cached_basis fields.
(create_phi_basis): New wrapper function.
(phi_add_costs_1): Rename from phi_add_costs, add spread
parameter, set visited field, short-circuit when limits reached.
(phi_add_costs): New wrapper function.
(record_phi_increments_1): Rename from record_phi_increments, set
visited field.
(record_phi_increments): New wrapper function.
(phi_incr_cost_1): Rename from phi_incr_cost, set visited field.
(phi_incr_cost): New wrapper function.
(all_phi_incrs_profitable_1): Rename from
all_phi_incrs_profitable, set visited field.
(all_phi_incrs_profitable): New wrapper function.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251286 138bc75d-0d04-0410-961f-82ee72b054a4
rsandifo [Tue, 22 Aug 2017 16:14:48 +0000 (22 16:14 +0000)]
Make more use of paradoxical_subreg_p
This patch makes more use of the existing paradoxical_subreg_p
predicate and also adds a version that operates on outer and
inner modes.
Some of the affected tests were based on GET_MODE_SIZE rather than
GET_MODE_PRECISION and so the patch could change the result for modes
that have the same size but different precisions. I think in each
case the change should be a no-op or more correct, since a mode with
precision N bits can't be expected to hold all of a mode with precision
M>N bits.
The patch changes the branch taken in simplify_subreg for modes with
equal precision, but the new form matches the commentary more closely.
Both branches should be equally good in that situation.
2017-08-22 Richard Sandiford <richard.sandiford@linaro.org>
Alan Hayward <alan.hayward@arm.com>
David Sherwood <david.sherwood@arm.com>
gcc/
* rtl.h (paradoxical_subreg_p): Define inline, and add a version
that takes the outer and inner modes.
* doc/rtl.texi: Use paradoxical_subreg_p instead of a GET_MODE_SIZE
comparison as the canonical test for a paradoxical subreg.
* combine.c (simplify_set): Use paradoxical_subreg_p.
(make_extraction): Likewise.
(force_to_mode): Likewise.
(rtx_equal_for_field_assignment_p): Likewise.
(gen_lowpart_for_combine): Likewise.
(simplify_comparison): Likewise.
* cse.c (equiv_constant): Likewise.
* expmed.c (store_bit_field_1): Likewise.
* final.c (alter_subreg): Likewise.
* fwprop.c (propagate_rtx): Likewise.
(forward_propagate_subreg): Likewise.
* ira-conflicts.c (ira_build_conflicts): Likewise.
* lower-subreg.c (simplify_gen_subreg_concatn): Likewise.
* lra-constraints.c (curr_insn_transform): Likewise.
(split_reg): Likewise.
* lra-eliminations.c (move_plus_up): Likewise.
(lra_eliminate_regs_1): Likewise.
* recog.c (general_operand): Likewise.
* ree.c (combine_reaching_defs): Likewise.
* reload.c (push_reload): Likewise.
(find_reloads): Likewise.
* reload1.c (elimination_effects): Likewise.
(compute_reload_subreg_offset): Likewise.
(choose_reload_regs): Likewise.
* rtlanal.c (subreg_lsb_1): Likewise.
* simplify-rtx.c (simplify_unary_operation_1): Likewise.
(simplify_subreg): Likewise.
* var-tracking.c (track_loc_p): Likewise.
* emit-rtl.c (byte_lowpart_offset): Likewise.
(paradoxical_subreg_p): Delete out-of-line definition.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251282 138bc75d-0d04-0410-961f-82ee72b054a4
willschm [Tue, 22 Aug 2017 15:40:23 +0000 (22 15:40 +0000)]
[gcc/testsuite]
2017-08-22 Will Schmidt <will_schmidt@vnet.ibm.com>
* gcc.target/powerpc/fold-vec-sums-int.c: New.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251281 138bc75d-0d04-0410-961f-82ee72b054a4
law [Tue, 22 Aug 2017 15:13:09 +0000 (22 15:13 +0000)]
PR tree-optimization/81741
PR tree-optimization/71947
* tree-ssa-dom.c: Include tree-inline.h.
(record_temporary_equivalences): Only record SSA_NAME = SSA_NAME
equivalences if one is more expensive to compute than the other.
* tree-ssa-scopedtables.h (class const_or_copies): Make
record_const_or_copy_raw method private.
(class avail_exprs_stack): New method simplify_binary_operation.
* tree-ssa-scopedtables.c (avail_exprs_stack::lookup_avail_expr): Call
avail_exprs_stack::simplify_binary_operation as needed.
(avail_exprs_stack::simplify_binary_operation): New function.
PR tree-optimization/81741
PR tree-optimization/71947
* gcc.dg/tree-ssa/pr81741.c: New test.
* gcc.dg/tree-ssa/pr71947-7.c: New test.
* gcc.dg/tree-ssa/pr71947-8.c: New test.
* gcc.dg/tree-ssa/pr71947-9.c: New test.
* gcc.dg/tree-ssa/pr71941-1.c: Tweak expected output.
* gcc.dg/tree-ssa/pr71941-2.c: Tweak expected output.
* gcc.dg/tree-ssa/pr71941-3.c: Tweak expected output.
* gcc.dg/tree-ssa/
20030922-2.c: xfail.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251279 138bc75d-0d04-0410-961f-82ee72b054a4
rguenth [Tue, 22 Aug 2017 13:54:01 +0000 (22 13:54 +0000)]
2017-08-22 Richard Biener <rguenther@suse.de>
PR lto/81925
* simple-object-elf.c (simple_object_elf_write_shdr): Adjust
type of sh_addralign and sh_entsize and properly write
sh_entsize as Elf_Addr.
(simple_object_elf_write_to_file): Read sh_entsize as Elf_Addr.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251276 138bc75d-0d04-0410-961f-82ee72b054a4
sh [Tue, 22 Aug 2017 13:43:27 +0000 (22 13:43 +0000)]
[PowerPC/RTEMS] Enable -mcmodel option
gcc/
* config.gcc (powerpc-*-rtems*): Add rs6000/linux64.opt.
* config/rs6000/rtems.h (ASM_PREFERRED_EH_DATA_FORMAT): New define.
(DOT_SYMBOLS): Likewise.
(MINIMAL_TOC_SECTION_ASM_OP): Likewise.
(RELOCATABLE_NEEDS_FIXUP): Likewise.
(RS6000_ABI_NAME): Likewise.
(TARGET_CMODEL): Likewise.
(TOC_SECTION_ASM_OP): Likewise.
(SET_CMODEL): New macro.
(SUBSUBTARGET_OVERRIDE_OPTIONS): Evaluate cmodel options.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251275 138bc75d-0d04-0410-961f-82ee72b054a4
rguenth [Tue, 22 Aug 2017 11:10:28 +0000 (22 11:10 +0000)]
2017-08-22 Richard Biener <rguenther@suse.de>
* tree-inline.c (remap_type_1): Change asserts on TYPE_SIZE[_UNIT]
to allow for free-lang-data replacements similar to verify_type_variant.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251274 138bc75d-0d04-0410-961f-82ee72b054a4
yroux [Tue, 22 Aug 2017 09:32:38 +0000 (22 09:32 +0000)]
2017-08-22 Yvan Roux <yvan.roux@linaro.org>
PR c++/80287
* g++.dg/pr80287.C: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251268 138bc75d-0d04-0410-961f-82ee72b054a4
rsandifo [Tue, 22 Aug 2017 09:17:16 +0000 (22 09:17 +0000)]
[AArch64] Fix label mode
This patch fixes a case where we tried to force a VOIDmode label
into a DImode register, which led to invalid rtl that was previously
undiagnosed.
2017-08-22 Richard Sandiford <richard.sandiford@linaro.org>
Alan Hayward <alan.hayward@arm.com>
David Sherwood <david.sherwood@arm.com>
gcc/
* config/aarch64/aarch64.md (casesi): Use DImode rather than
VOIDmode for the LABEL_REF.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251266 138bc75d-0d04-0410-961f-82ee72b054a4
rguenth [Tue, 22 Aug 2017 09:11:40 +0000 (22 09:11 +0000)]
2017-08-22 Richard Biener <rguenther@suse.de>
Revert
2017-08-09 Slava Barinov <v.barinov@samsung.com>
* g++.dg/asan/asan.exp: Switch on *.cc tests.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251265 138bc75d-0d04-0410-961f-82ee72b054a4
rguenth [Tue, 22 Aug 2017 09:04:28 +0000 (22 09:04 +0000)]
2017-08-22 Richard Biener <rguenther@suse.de>
* tree-cfg.c (gimple_split_edge): Avoid reallocating target
PHI nodes.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251264 138bc75d-0d04-0410-961f-82ee72b054a4
rguenth [Tue, 22 Aug 2017 08:50:37 +0000 (22 08:50 +0000)]
2017-08-22 Richard Biener <rguenther@suse.de>
* common.opt (feliminate-dwarf2-dups): Ignore.
* doc/invoke.texi (feliminate-dwarf2-dups): Remove documentation.
* dwarf2out.c (push_new_compile_unit, pop_compile_unit,
same_die_p_wrap, compute_section_prefix,
is_symbol_die, assign_symbol_names, break_out_includes): Remove.
(comdat_symbol_id, comdat_symbol_number): Likewise.
(cu_hash_table_entry, cu_hash_table_entry_hasher, cu_hash_type):
Likewise.
(check_duplicate_cu, record_comdat_symbol_number): Likewise.
(output_die): Mark unreachable path unreachable.
(dwarf2out_start_source_file): Do not create DW_TAG_GNU_BINCL.
(dwarf2out_end_source_file): Do not create DW_TAG_GNU_EINCL.
(dwarf2out_init): Remove code handling flag_eliminate_dwarf2_dups.
(dwarf2out_early_finish): Likewise.
* g++.dg/debug/dwarf2/dwarf2-1.C: Remove -feliminate-dwarf2-dups.
* g++.dg/debug/dwarf2/dwarf2-2.C: Likewise.
* g++.dg/debug/dwarf2/pr46123-2.C: Likewise.
* g++.dg/debug/dwarf2/typedef5.C: Likewise.
* gcc.dg/debug/dwarf2/dwarf2-3.c: Likewise.
* gcc.dg/debug/dwarf2/dwarf2-3.h: Likewise.
* gcc.dg/debug/dwarf2/dups-types.c: Remove.
* gcc.dg/debug/dwarf2/dups-types.h: Likewise.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251262 138bc75d-0d04-0410-961f-82ee72b054a4
aldyh [Tue, 22 Aug 2017 08:25:24 +0000 (22 08:25 +0000)]
* wide-int.h (hwi_with_prec::hwi_with_prec): Sign extend.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251260 138bc75d-0d04-0410-961f-82ee72b054a4
gjl [Tue, 22 Aug 2017 07:52:42 +0000 (22 07:52 +0000)]
gcc/
PR target/81910
* config/avr/avr.c (avr_handle_addr_attribute): Early return if
not VAR_P. Filter attribute warnings with OPT_Wattributes.
(avr_attribute_table) <io, io_low, address>: Initialize
.decl_required with true.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251256 138bc75d-0d04-0410-961f-82ee72b054a4
jvdelisle [Tue, 22 Aug 2017 01:02:15 +0000 (22 01:02 +0000)]
2017-08-21 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/81296
* trans-io.c (get_dtio_proc): Add check for format label and set
formatted flag accordingly. Reorganize the code a little.
* gfortran.dg/dtio_12.f90: Update test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251254 138bc75d-0d04-0410-961f-82ee72b054a4
gccadmin [Tue, 22 Aug 2017 00:16:29 +0000 (22 00:16 +0000)]
Daily bump.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251253 138bc75d-0d04-0410-961f-82ee72b054a4
meissner [Mon, 21 Aug 2017 20:33:55 +0000 (21 20:33 +0000)]
2017-08-21 Michael Meissner <meissner@linux.vnet.ibm.com>
* config/rs6000/rs6000-cpus.def (-mvsx-scalar-float): Delete
undocumented debugging options.
(-mvsx-scalar-double): Likewise.
(-mallow-df-permute): Likewise.
(-mvectorize-builtins): Likewise.
* config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok):
Likewise.
(rs6000_builtin_vectorized_function): Likewise.
(rs6000_builtin_md_vectorized_function): Likewise.
(rs6000_opt_vars): Likewise.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251248 138bc75d-0d04-0410-961f-82ee72b054a4
nathan [Mon, 21 Aug 2017 18:57:06 +0000 (21 18:57 +0000)]
* search.c (lookup_field_r): Remove obsolete code for type-named
field in PoD.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251243 138bc75d-0d04-0410-961f-82ee72b054a4
nathan [Mon, 21 Aug 2017 17:11:49 +0000 (21 17:11 +0000)]
* search.c (lookup_field_1): Assert TYPE is a class and VFIELD
isn't special.
(lookup_field_fuzzy_info::fuzzy_lookup_fnfields): Delete.
(lookup_field_fuzzy_r): Adjust.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251241 138bc75d-0d04-0410-961f-82ee72b054a4
nathan [Mon, 21 Aug 2017 17:06:26 +0000 (21 17:06 +0000)]
* g++.dg/template/pr81899.C: Fix c++03.
* g++.dg/debug/debug9.C: Add -fno-reorder-blocks-and-partition"
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251240 138bc75d-0d04-0410-961f-82ee72b054a4
dmalcolm [Mon, 21 Aug 2017 17:03:15 +0000 (21 17:03 +0000)]
C: use full locations within c_parser_expr_list's vec<location_t>
The previous patch uncovered a bug in how c_parser_expr_list builds the
vec<location_t>: it was only using the location of the first token
within each assignment-expression in the expr-list.
This shows up in e.g. this -Wformat warning, where only part of the
2nd param is underlined:
printf("hello %i", (long)0);
~^ ~
%li
This patch fixes c_parser_expr_list to use the full range of
each assignment-expression in the list for the vec<location_t>, so
that for the above we print:
printf("hello %i", (long)0);
~^ ~~~~~~~
%li
gcc/c/ChangeLog:
* c-parser.c (c_parser_expr_list): Use c_expr::get_location ()
rather than peeking the location of the first token.
* c-tree.h (c_expr::get_location): New method.
gcc/testsuite/ChangeLog:
* gcc.dg/format/diagnostic-ranges.c (test_mismatching_types):
Update expected result to show all of "(long)0" being underlined.
* gcc.dg/plugin/diagnostic-test-string-literals-1.c
(test_multitoken_macro): Update expected underlining.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251239 138bc75d-0d04-0410-961f-82ee72b054a4
dmalcolm [Mon, 21 Aug 2017 16:53:10 +0000 (21 16:53 +0000)]
c-family/c/c++: pass optional vec<location_t> to c-format.c
This patch passes along the vec<location_t> of argument locations
at a callsite from the C frontend to check_function_arguments and
from there to c-format.c, so that we can underline the pertinent
argument to mismatched format codes even for tree codes like decls
and constants which lack a location_t for their usage sites.
This takes e.g.:
printf("hello %i %i %i ", foo, bar, baz);
~^
%s
to:
printf("hello %i %i %i ", foo, bar, baz);
~^ ~~~
%s
which is useful for cases where there's more than one variadic argument.
gcc/c-family/ChangeLog:
* c-common.c (check_function_arguments): Add "arglogs" param; pass
it to check_function_format.
* c-common.h (check_function_arguments): Add vec<location_t> *
param.
(check_function_format): Likewise.
* c-format.c (struct format_check_context): Add field "arglocs".
(check_function_format): Add param "arglocs"; pass it to
check_format_info.
(check_format_info): Add param "arglocs"; use it to initialize
new field of format_ctx.
(check_format_arg): Pass format_ctx->arglocs to new param of
check_format_info_main.
(class argument_parser): New field "arglocs".
(argument_parser::argument_parser): Add "arglocs_" param and use
it to initialize new field.
(argument_parser::check_argument_type): Pass new arglocs field to
check_format_types.
(check_format_info_main): Add param "arglocs", and use it when
constructing arg_parser.
(check_format_types): Add param "arglocs"; use it if non-NULL when
!EXPR_HAS_LOCATION (cur_param) to get at location information.
gcc/c/ChangeLog:
* c-typeck.c (build_function_call_vec): Pass arg_loc to call
to check_function_arguments.
gcc/cp/ChangeLog:
* call.c (build_over_call): Pass NULL for new parameter to
check_function_arguments.
* typeck.c (cp_build_function_call_vec): Likewise.
gcc/testsuite/ChangeLog:
* gcc.dg/format/diagnostic-ranges.c: Update expected results
to show underlining of all pertinent params.
* gcc.dg/format/pr72858.c: Likewise.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251238 138bc75d-0d04-0410-961f-82ee72b054a4
uros [Mon, 21 Aug 2017 15:15:07 +0000 (21 15:15 +0000)]
PR target/46091
* config/i386/i386.md (*btsq_imm): Rename from *btsq.
(*btrq_imm): Rename from *btrq.
(*btcq_imm): Rename from *btcq.
(btsc): New code attribute.
(*<btsc><mode>): New insn pattern.
(*btr<mode>): Ditto.
(*<btsc><mode>_mask): New insn_and_split pattern.
(*btr<mode>_mask): Ditto.
testsuite/ChangeLog:
PR target/46091
* gcc.target/i386/pr46091-4.c: New test.
* gcc.target/i386/pr46091-4a.c: Ditto.
* gcc.target/i386/pr46091-5.c: Ditto.
* gcc.target/i386/pr46091-5a.c: Ditto.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251235 138bc75d-0d04-0410-961f-82ee72b054a4
redi [Mon, 21 Aug 2017 15:14:27 +0000 (21 15:14 +0000)]
PR libstdc++/81912 make std::__iterator_category constexpr
PR libstdc++/81912
* include/bits/stl_iterator_base_types.h (__iterator_category): Add
constexpr for C++11 and later.
* testsuite/24_iterators/container_access.cc: Add target selector.
* testsuite/24_iterators/range_access.cc: Fix clause number in
comment.
* testsuite/24_iterators/range_access_cpp14.cc: Likewise.
* testsuite/24_iterators/range_access_cpp17.cc: New.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251234 138bc75d-0d04-0410-961f-82ee72b054a4
rsandifo [Mon, 21 Aug 2017 14:52:43 +0000 (21 14:52 +0000)]
Simplify pad_below implementation
This patch simplifies the alignment calculations in pad_below.
The first arm of the "if" was:
- taking GET_MODE_BITSIZE (always equal to GET_MODE_SIZE * BITS_PER_UNIT),
- rounding up to the next multiple of PARM_BOUNDARY
- converting bits to bytes and
- subtracting the GET_MODE_SIZE
so was in effect calculating the number of bytes needed to round
GET_MODE_SIZE up to (PARM_BOUNDARY / BITS_PER_UNIT). That can be
done more directly as -size & (align - 1), which is easier to
convert to variable-sized modes.
2017-08-21 Richard Sandiford <richard.sandiford@linaro.org>
Alan Hayward <alan.hayward@arm.com>
David Sherwood <david.sherwood@arm.com>
gcc/
* function.c (pad_below): Simplify padding calculation.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251233 138bc75d-0d04-0410-961f-82ee72b054a4
rsandifo [Mon, 21 Aug 2017 14:51:52 +0000 (21 14:51 +0000)]
Remove the frame size argument from function_prologue/epilogue
Later patches will add support for frame sizes that are a run-time
invariant but not a compile-time constant. This then raised the
question of whether the frame size argument to the function_prologue/
epilogue hooks should be updated accordingly.
It turned out that only two targets actually used this argument, and
even they got other frame-related information from the cached machine
structure. This patch therefore removes the argument and makes the two
targets use get_frame_size () instead.
2017-08-21 Richard Sandiford <richard.sandiford@linaro.org>
Alan Hayward <alan.hayward@arm.com>
David Sherwood <david.sherwood@arm.com>
gcc/
* target.def (function_prologue): Remove frame size argument.
(function_epilogue): Likewise.
* doc/tm.texi: Regenerate.
* final.c (final_start_function): Update call to function_prologue.
(final_end_function): Update call to function_epilogue.
(default_function_pro_epilogue): Remove frame size argument.
* output.h (default_function_pro_epilogue): Likewise.
* config/arm/arm.c (arm_output_function_epilogue): Likewise.
(arm_output_function_prologue): Likewise.
* config/frv/frv.c (frv_function_prologue): Likewise.
(frv_function_epilogue): Likewise.
* config/i386/i386.c (ix86_output_function_epilogue): Likewise.
* config/ia64/ia64.c (ia64_output_function_prologue): Likewise.
(ia64_output_function_epilogue): Likewise.
* config/m32r/m32r.c (m32r_output_function_prologue): Likewise.
(m32r_output_function_epilogue): Likewise.
* config/microblaze/microblaze.c (microblaze_function_prologue)
(microblaze_function_epilogue): Likewise.
* config/mips/mips.c (mips_output_function_prologue): Likewise.
(mips_output_function_epilogue): Likewise.
* config/mmix/mmix.c (mmix_target_asm_function_prologue): Likewise.
(mmix_target_asm_function_epilogue): Likewise.
* config/msp430/msp430.c (msp430_start_function): Likewise.
* config/nds32/nds32.c (nds32_asm_function_prologue): Likewise.
(nds32_asm_function_epilogue): Likewise.
* config/nios2/nios2.c (nios2_asm_function_prologue): Likewise.
* config/pa/pa.c (pa_output_function_prologue): Likewise.
(pa_output_function_epilogue): Likewise.
* config/powerpcspe/powerpcspe.c (rs6000_output_function_prologue)
(rs6000_output_function_epilogue): Likewise.
* config/rl78/rl78.c (rl78_start_function): Likewise.
* config/rs6000/rs6000.c (rs6000_output_function_prologue): Likewise.
(rs6000_output_function_epilogue): Likewise.
* config/rx/rx.c (rx_output_function_prologue): Likewise.
* config/sh/sh.c (sh_output_function_epilogue): Likewise.
* config/sparc/sparc.c (sparc_asm_function_prologue): Likewise.
(sparc_asm_function_epilogue): Likewise.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251232 138bc75d-0d04-0410-961f-82ee72b054a4
rsandifo [Mon, 21 Aug 2017 14:50:56 +0000 (21 14:50 +0000)]
Add a type_has_mode_precision_p helper function
...to replace instances of:
TYPE_PRECISION (t) == GET_MODE_PRECISION (TYPE_MODE (t))
These conditions would need to be rewritten with variable-sized
modes anyway.
2017-08-21 Richard Sandiford <richard.sandiford@linaro.org>
gcc/
* tree.h (type_has_mode_precision_p): New function.
* convert.c (convert_to_integer_1): Use it.
* expr.c (expand_expr_real_2): Likewise.
(expand_expr_real_1): Likewise.
* fold-const.c (fold_single_bit_test_into_sign_test): Likewise.
* match.pd: Likewise.
* tree-ssa-forwprop.c (simplify_rotate): Likewise.
* tree-ssa-math-opts.c (convert_mult_to_fma): Likewise.
* tree-tailcall.c (process_assignment): Likewise.
* tree-vect-loop.c (vectorizable_reduction): Likewise.
* tree-vect-patterns.c (vect_recog_vector_vector_shift_pattern)
(vect_recog_mult_pattern, vect_recog_divmod_pattern): Likewise.
* tree-vect-stmts.c (vectorizable_conversion): Likewise.
(vectorizable_assignment): Likewise.
(vectorizable_shift): Likewise.
(vectorizable_operation): Likewise.
* tree-vrp.c (register_edge_assert_for_2): Likewise.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251231 138bc75d-0d04-0410-961f-82ee72b054a4
wilco [Mon, 21 Aug 2017 14:46:34 +0000 (21 14:46 +0000)]
This patch simplifies pow (C, x) into exp (x * C1) if C > 0, C1 = log (C).
Do this only for fast-math as accuracy is reduced. This is much faster
since pow is more complex than exp.
gcc/
* match.pd: Add pow (C, x) simplification
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251230 138bc75d-0d04-0410-961f-82ee72b054a4
jsm28 [Mon, 21 Aug 2017 14:08:22 +0000 (21 14:08 +0000)]
* de.po: Update.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251228 138bc75d-0d04-0410-961f-82ee72b054a4
nathan [Mon, 21 Aug 2017 13:29:20 +0000 (21 13:29 +0000)]
PR c++/81899
* pt.c (instantiate_class_template_1):
BOUND_TEMPLATE_TEMPLATE_PARM is never friend-injected.
PR c++/81899
* g++.dg/template/pr81899.C: New.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251227 138bc75d-0d04-0410-961f-82ee72b054a4
rguenth [Mon, 21 Aug 2017 13:18:35 +0000 (21 13:18 +0000)]
2017-08-21 Richard Biener <rguenther@suse.de>
PR tree-optimization/81900
* tree-ssa-pre.c (compute_antic_aux): Properly compute changed
for blocks with abnormal predecessors.
(compute_antic): Do not set visited flag prematurely.
* gcc.dg/torture/pr81900.c: New testcase.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251226 138bc75d-0d04-0410-961f-82ee72b054a4
gjl [Mon, 21 Aug 2017 12:39:59 +0000 (21 12:39 +0000)]
PR target/79883
* config/avr/avr.c (avr_set_current_function): Typo in diagnostic.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251223 138bc75d-0d04-0410-961f-82ee72b054a4
nathan [Mon, 21 Aug 2017 11:51:17 +0000 (21 11:51 +0000)]
Tabify 2017-08-21 Richard Biener <rguenther@suse.de> entry
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251222 138bc75d-0d04-0410-961f-82ee72b054a4
rsandifo [Mon, 21 Aug 2017 11:14:56 +0000 (21 11:14 +0000)]
Move vector_type_mode to tree.c
...so that it's possible to use TYPE_MODE in tree.h.
2017-08-21 Richard Sandiford <richard.sandiford@linaro.org>
gcc/
* stor-layout.h (vector_type_mode): Move to...
* tree.h (vector_type_mode): ...here.
* stor-layout.c (vector_type_mode): Move to...
* tree.c (vector_type_mode): ...here. Include rtl.h and regs.h.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251221 138bc75d-0d04-0410-961f-82ee72b054a4
rguenth [Mon, 21 Aug 2017 10:29:00 +0000 (21 10:29 +0000)]
2017-08-21 Richard Biener <rguenther@suse.de>
include/
* simple-object.h (simple_object_copy_lto_debug_sections): New
function.
libiberty/
* simple-object-common.h (struct simple_object_functions): Add
copy_lto_debug_sections hook.
* simple-object.c: Include fcntl.h.
(handle_lto_debug_sections): New helper function.
(simple_object_copy_lto_debug_sections): New function copying
early LTO debug sections to regular debug sections in a new file.
(simple_object_start_write): Handle NULL segment_name.
* simple-object-coff.c (simple_object_coff_functions): Adjust
for not implemented copy_lto_debug_sections hook.
* simple-object-mach-o.c (simple_object_mach_o_functions): Likewise.
* simple-object-xcoff.c (simple_object_xcoff_functions): Likewise.
* simple-object-elf.c (SHT_NULL, SHT_SYMTAB, SHT_RELA, SHT_REL,
SHT_GROUP): Add various sectopn header types.
(SHF_EXCLUDE): Add flag.
(Elf32_External_Sym, Elf64_External_Sym): Add symbol struct.
(ELF_ST_BIND, ELF_ST_TYPE, ELF_ST_INFO): Add accessors.
(STT_OBJECT, STT_FUNC, STT_TLS, STT_GNU_IFUNC): Add Symbol types.
(STV_DEFAULT): Add symbol visibility.
(SHN_COMMON): Add special section index name.
(struct simple_object_elf_write): New.
(simple_object_elf_start_write): Adjust for new private data.
(simple_object_elf_write_shdr): Pass in values for all fields
we write.
(simple_object_elf_write_to_file): Adjust. Copy from recorded
section headers if requested.
(simple_object_elf_release_write): Release private data.
(simple_object_elf_copy_lto_debug_sections): Copy and rename sections
as denoted by PFN and all their dependences, symbols and relocations
to the empty destination file.
(simple_object_elf_functions): Adjust for copy_lto_debug_sections hook.
gcc/
* debug.h (struct gcc_debug_hooks): Add die_ref_for_decl and
register_external_die hooks.
(debug_false_tree_charstarstar_uhwistar): Declare.
(debug_nothing_tree_charstar_uhwi): Likewise.
* debug.c (do_nothing_debug_hooks): Adjust.
(debug_false_tree_charstarstar_uhwistar): New do nothing.
(debug_nothing_tree_charstar_uhwi): Likewise.
* dbxout.c (dbx_debug_hooks): Adjust.
(xcoff_debug_hooks): Likewise.
* sdbout.c (sdb_debug_hooks): Likewise.
* vmsdbgout.c (vmsdbg_debug_hooks): Likewise.
* dwarf2out.c (macinfo_label_base): New global.
(dwarf2out_register_external_die): New function for the
register_external_die hook.
(dwarf2out_die_ref_for_decl): Likewise for die_ref_for_decl.
(dwarf2_debug_hooks): Use them.
(dwarf2_lineno_debug_hooks): Adjust.
(struct die_struct): Add with_offset flag.
(DEBUG_LTO_DWO_INFO_SECTION, DEBUG_LTO_INFO_SECTION,
DEBUG_LTO_DWO_ABBREV_SECTION, DEBUG_LTO_ABBREV_SECTION,
DEBUG_LTO_DWO_MACINFO_SECTION, DEBUG_LTO_MACINFO_SECTION,
DEBUG_LTO_DWO_MACRO_SECTION, DEBUG_LTO_MACRO_SECTION,
DEBUG_LTO_LINE_SECTION, DEBUG_LTO_DWO_STR_OFFSETS_SECTION,
DEBUG_LTO_STR_DWO_SECTION, DEBUG_STR_LTO_SECTION): New macros
defining section names for the early LTO debug variants.
(reset_indirect_string): New helper.
(add_AT_external_die_ref): Helper for dwarf2out_register_external_die.
(print_dw_val): Add support for offsetted symbol references.
(get_ultimate_context): Split out from is_cxx.
(is_cxx): Use get_ultimate_context.
(is_fortran): Add decl overload.
(compute_comp_unit_symbol): Split out worker from
compute_section_prefix.
(compute_section_prefix): Call compute_comp_unit_symbol and
set comdat_type_p here.
(output_die): Skip DIE symbol output for the LTO added one.
Handle DIE symbol references with offset.
(output_comp_unit): Guard section name mangling properly.
For LTO debug sections emit a symbol at the section beginning
which we use to refer to its DIEs.
(add_abstract_origin_attribute): For DIEs registered via
dwarf2out_register_external_die directly refer to the early
DIE rather than indirectly through the shadow one we created.
Remove obsolete call to dwarf2out_abstract_function for
non-function/block origins.
(gen_array_type_die): When generating early LTO debug do
not emit DW_AT_string_length.
(gen_formal_parameter_die): Do not re-create DIEs for PARM_DECLs
late when in LTO. As suggested place a gcc_unreachable for
the DECL_ABSTRACT_P case.
(gen_subprogram_die): Avoid another specification DIE
for early built declarations/definitions for the late LTO case.
(gen_variable_die): Add type references for late duplicated VLA dies
when in late LTO.
(gen_inlined_subroutine_die): Do not call dwarf2out_abstract_function,
we have the abstract instance already.
(process_scope_var): Adjust decl DIE contexts in LTO which
first puts them in limbo.
(gen_decl_die): Do not generate type DIEs late apart from
types for VLAs or for decls we do not yet have a DIE. Do not
call dwarf2out_abstract_function late.
(dwarf2out_early_global_decl): Make sure to create DIEs
for abstract instances of a decl first.
(dwarf2out_late_global_decl): Adjust comment.
(output_macinfo_op): With multiple macro sections use
macinfo_label_base to distinguish labels.
(output_macinfo): Likewise. Update macinfo_label_base.
Pass in the line info label.
(note_variable_value_in_expr): When generating LTO resolve
all variable values here by generating DIEs as needed.
(init_sections_and_labels): Add early LTO debug flag parameter
and generate different sections and names if set. Add generation
counter for the labels so we can have multiple of them.
(reset_dies): Helper to allow DIEs to be output multiple times.
(dwarf2out_finish): When outputting DIEs to the fat part of an
LTO object first reset DIEs.
(dwarf2out_early_finish): Output early DIEs when generating LTO.
(modified_type_die): Check for decl_ultimate_origin being self
before recursing.
(gen_type_die_with_usage): Likewise.
(gen_typedef_die): Allow decl_ultimate_origin being self.
(set_decl_abstract_flags): Remove.
(set_block_abstract_flags): Likewise.
(dwarf2out_abstract_function): Treat the early generated DIEs
as the abstract copy and only add DW_AT_inline and
DW_AT_artificial here and call set_decl_origin_self.
If the DIE has an abstract origin don't do anything.
* tree.c (free_lang_data): Build a dummy TRANSLATION_UNIT_DECL
if we have none yet (Go fails to build one, PR78628).
(variably_modified_type_p): Prevent endless recursion for Ada
cyclic pointer types.
* lto-streamer-in.c: Include debug.h.
(dref_queue): New global.
(lto_read_tree_1): Stream in DIE references.
(lto_input_tree): Register DIE references.
(input_function): Stream DECL_DEBUG_ARGS.
* lto-streamer-out.c: Include debug.h.
(lto_write_tree_1): Output DIE references.
(DFS::DFS_write_tree_body): Follow DECL_ABSTRACT_ORIGIN.
Force a TRANSLATION_UNIT_DECL DECL_CONTEXT for file-scope decls.
(output_function): Stream DECL_DEBUG_ARGS.
* tree-streamer-in.c (lto_input_ts_decl_common_tree_pointers):
Stream DECL_ABSTRACT_ORIGIN.
* tree-streamer-out.c (write_ts_decl_common_tree_pointers): Likewise.
(write_ts_decl_minimal_tree_pointers): Force a TRANSLATION_UNIT_DECL
DECL_CONTEXT for file-scope decls.
* lto-streamer.h (struct dref_entry): Declare.
(dref_queue): Likewise.
* cfgexpand.c (pass_expand::execute): Do not call the
outlining_inline_function hook here.
* lto-wrapper.c (debug_obj): New global.
(tool_cleanup): Unlink it if required.
(debug_objcopy): New function.
(run_gcc): Handle early debug sections in the IL files by
extracting them to separate files, partially linkin them and
feeding the result back as result to the linker.
* config/darwin.h (DEBUG_LTO_INFO_SECTION, DEBUG_LTO_ABBREV_SECTION,
DEBUG_LTO_MACINFO_SECTION, DEBUG_LTO_LINE_SECTION,
DEBUG_STR_LTO_SECTION, DEBUG_LTO_MACRO_SECTION): Put early debug
sections into a separate segment.
* config/darwin.c (darwin_asm_named_section): Handle __GNU_DWARF_LTO
segments.
(darwin_asm_dwarf_section): Likewise.
(darwin_asm_output_dwarf_offset): Likewise.
* config/i386/i386.c (make_resolver_func): Set DECL_IGNORED_P.
lto/
* lto.c (unify_scc): Truncate DIE reference queue for dropped SCCs.
(lto_read_decls): Process TRANSLATION_UNIT_DECLs. Remove
TYPE_DECL debug processing, register DIE references from
prevailing SCCs with the debug machinery.
(lto_section_with_id): Handle LTO debug sections.
libstdc++/
* testsuite/libstdc++-prettyprinters/prettyprinters.exp: Run all
tests with -flto as well if supported.
testsuite/
* c-c++-common/asan/global-overflow-1.c: Adjust diagnostic location
regex to handle the LTO case.
* c-c++-common/asan/heap-overflow-1.c: Likewise.
* c-c++-common/asan/misalign-1.c: Likewise.
* c-c++-common/asan/misalign-2.c: Likewise.
* c-c++-common/asan/null-deref-1.c: Likewise.
* c-c++-common/asan/stack-overflow-1.c: Likewise.
* c-c++-common/asan/strncpy-overflow-1.c: Likewise.
* c-c++-common/asan/use-after-free-1.c: Likewise.
* c-c++-common/asan/alloca_big_alignment.c: Likewise.
* c-c++-common/asan/alloca_detect_custom_size.c: Likewise.
* c-c++-common/asan/alloca_overflow_partial.c: Likewise.
* c-c++-common/asan/alloca_overflow_right.c: Likewise.
* c-c++-common/asan/alloca_underflow_left.c: Likewise.
* g++.dg/asan/large-func-test-1.C: Likewise.
* gfortran.dg/save_6.f90: Add -flto -g variant of save_5.f90.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251220 138bc75d-0d04-0410-961f-82ee72b054a4
rsandifo [Mon, 21 Aug 2017 09:51:14 +0000 (21 09:51 +0000)]
Pass rtx and index to read-md.c iterator routines
The read-md.c iterator callbacks previously used a void * to record the
position at which the iterator value should be installed. This doesn't
scale easily to the SUBREG_BYTE representation used by a later patch,
so this patch replaces the void * with both an rtx and an operand
number. The operand number is ignored for modes and codes.
2017-08-21 Richard Sandiford <richard.sandiford@linaro.org>
Alan Hayward <alan.hayward@arm.com>
David Sherwood <david.sherwood@arm.com>
gcc/
* read-md.h (md_reader::record_potential_iterator_use): Replace
pointer argument with an rtx and an index.
* read-rtl.c (iterator_group::apply_iterator): Likewise.
(apply_mode_iterator): Likewise.
(apply_code_iterator): Likewise.
(apply_int_iterator): Likewise.
(apply_subst_iterator): Likewise.
(record_iterator_use): Likewise.
(record_attribute_use): Likewise.
(md_reader::record_potential_iterator_use): Likewise. Update calls
to record_iterator_use and apply_iterator.
(iterator_use): Replace ptr with x and index.
(attribute_use): Likewise.
(apply_attribute_uses): Update calls to apply_iterator.
(apply_iterators): Likewise. Update initialization of iterator_use.
(rtx_reader::read_rtx_code): Update calls to record_iterator_use
and record_potential_iterator_use.
(rtx_reader::read_rtx_operand): Likewise.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251219 138bc75d-0d04-0410-961f-82ee72b054a4
rsandifo [Mon, 21 Aug 2017 09:46:05 +0000 (21 09:46 +0000)]
Fix bogus CONST_WIDE_INT hash
The CONST_WIDE_INT case in const_rtx_hash_1 started the hash
with the precision of the mode, but the mode is always VOIDmode.
2017-08-21 Richard Sandiford <richard.sandiford@linaro.org>
Alan Hayward <alan.hayward@arm.com>
David Sherwood <david.sherwood@arm.com>
gcc/
* varasm.c (const_rtx_hash_1): Don't hash in the mode of a
CONST_WIDE_INT.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251218 138bc75d-0d04-0410-961f-82ee72b054a4
rguenth [Mon, 21 Aug 2017 07:37:59 +0000 (21 07:37 +0000)]
2017-08-21 Richard Biener <rguenther@suse.de>
PR middle-end/81884
* tree-ssa-alias.c (stmt_kills_ref_p): Handle array accesses
at struct end conservatively when comparing common bases.
* g++.dg/torture/pr81884.C: New testcase.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251217 138bc75d-0d04-0410-961f-82ee72b054a4
rguenth [Mon, 21 Aug 2017 07:21:33 +0000 (21 07:21 +0000)]
2017-08-21 Richard Biener <rguenther@suse.de>
* tree-ssa-loop-im.c (struct lim_aux_data): Add ref index member.
(mem_ref_in_stmt): Remove.
(determine_max_movement): Use ref index to get at the reference.
(invariantness_dom_walker::before_dom_children): Deal with
lim data already initialized.
(gather_mem_refs_stmt): Initialize lim data and record ref index.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251216 138bc75d-0d04-0410-961f-82ee72b054a4
gccadmin [Mon, 21 Aug 2017 00:16:57 +0000 (21 00:16 +0000)]
Daily bump.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251215 138bc75d-0d04-0410-961f-82ee72b054a4
msebor [Sun, 20 Aug 2017 21:31:39 +0000 (20 21:31 +0000)]
libstdc++/ChangeLog:
PR c/81854
* src/c++98/compatibility.cc (_GLIBCXX_3_4_SYMVER): Declare alias
target as a C++ function with no prototype.
(_GLIBCXX_3_4_5_SYMVER): Ditto.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251211 138bc75d-0d04-0410-961f-82ee72b054a4
danglin [Sun, 20 Aug 2017 19:03:36 +0000 (20 19:03 +0000)]
Fix typo.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251210 138bc75d-0d04-0410-961f-82ee72b054a4
danglin [Sun, 20 Aug 2017 18:52:59 +0000 (20 18:52 +0000)]
PR testsuite/81056
* testsuite/17_intro/names.cc: Undef 'd' and 'r' on __hpux__
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251208 138bc75d-0d04-0410-961f-82ee72b054a4
danglin [Sun, 20 Aug 2017 18:23:41 +0000 (20 18:23 +0000)]
PR ipa/77732
* gcc.dg/ipa/ipcp-cstagg-7.c: Xfail on 32-bit hppa.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251206 138bc75d-0d04-0410-961f-82ee72b054a4
gccadmin [Sun, 20 Aug 2017 00:16:25 +0000 (20 00:16 +0000)]
Daily bump.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251205 138bc75d-0d04-0410-961f-82ee72b054a4
uros [Sat, 19 Aug 2017 12:31:08 +0000 (19 12:31 +0000)]
* config/i386/i386.h (OPTION_MASK_ISA_ROUND): Remove.
(TARGET_ISA_ROUND): Ditto.
(TARGET_ROUND): Ditto.
* config/i386/i386.c: Substitute TARGET_ROUND with TARGET_SSE4_1.
* config/i386/i386.md: Ditto.
* config/i386/sse.md: Ditto.
* config/i386/i386-builtin.def: Substitute OPTION_MASK_ISA_ROUND
with OPTION_MASK_ISA_SSE4_1.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251201 138bc75d-0d04-0410-961f-82ee72b054a4
uros [Sat, 19 Aug 2017 08:20:20 +0000 (19 08:20 +0000)]
PR target/81894
* doc/extend.texi (x86 Built-in Functions): Correct the name of
__builtin_ia32_lzcnt_u16.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251197 138bc75d-0d04-0410-961f-82ee72b054a4
gccadmin [Sat, 19 Aug 2017 00:16:47 +0000 (19 00:16 +0000)]
Daily bump.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251196 138bc75d-0d04-0410-961f-82ee72b054a4
dmalcolm [Fri, 18 Aug 2017 23:56:28 +0000 (18 23:56 +0000)]
jit: fix segfault with autovectorization (PR tree-optimization/46805)
libgccjit ran into its own version of PR tree-optimization/46805 (seen
with the Go frontend); this patch fixes it in the same way.
gcc/jit/ChangeLog:
PR tree-optimization/46805
* dummy-frontend.c (jit_langhook_parse_file): Handle vector types.
gcc/testsuite/ChangeLog:
PR tree-optimization/46805
* jit.dg/all-non-failing-tests.h: Add test-autovectorize.c.
* jit.dg/test-autovectorize.c: New test case.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251192 138bc75d-0d04-0410-961f-82ee72b054a4
dmalcolm [Fri, 18 Aug 2017 23:50:34 +0000 (18 23:50 +0000)]
jit: make simpler reproducers
The C reproducers generated by gcc_jit_context_dump_reproducer_to_file
contain numerous pointer values (from %p) to ensure uniqueness of the
identifiers, but this makes them less readable than they could be.
This patch updates reproducer::make_identifier so that the pointer
is only added if it's necessary for uniqueness.
gcc/jit/ChangeLog:
* jit-recording.c (class gcc::jit::reproducer): Rename field
"m_identifiers" to "m_map_memento_to_identifier". Add field
"m_set_identifiers" and struct hash_traits for it.
(gcc::jit::reproducer::reproducer): Update for above.
(convert_to_identifier): New function.
(gcc::jit::reproducer::ensure_identifier_is_unique): New method.
(gcc::jit::reproducer::make_identifier): Avoid appending the %p
unless necessary for uniqueness. Update for field renaming.
(gcc::jit::reproducer::get_identifier): Update for field renaming.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251191 138bc75d-0d04-0410-961f-82ee72b054a4
bergner [Fri, 18 Aug 2017 23:41:41 +0000 (18 23:41 +0000)]
gcc/
PR target/80210
* config/rs6000/rs6000.c (rs6000_activate_target_options): New function.
(rs6000_set_current_function): Rewrite function to use it.
gcc/testsuite/
PR target/80210
* gcc.target/powerpc/pr80210.c: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251190 138bc75d-0d04-0410-961f-82ee72b054a4
ian [Fri, 18 Aug 2017 20:17:26 +0000 (18 20:17 +0000)]
PR go/81893
runtime: only use PPC GNU/Linux register code on little endian
Reportedly the current code builds on little endian but not big endian.
Fixes https://gcc.gnu.org/PR81893.
Reviewed-on: https://go-review.googlesource.com/57110
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251188 138bc75d-0d04-0410-961f-82ee72b054a4
redi [Fri, 18 Aug 2017 18:20:43 +0000 (18 18:20 +0000)]
Simplify allocator usage in unordered containers
* include/bits/hashtable_policy.h (_ReuseOrAllocNode): Remove
__value_alloc_type and __value_alloc_traits typedefs.
(_ReuseOrAllocNode::operator()): Call construct and destroy on the
node allocator.
(_Hashtable_alloc): Simplify __value_alloc_traits typedef.
(_Hashtable_alloc<_NodeAlloc>::_M_allocate_node(_Args&&...)): Call
construct on the node allocator.
(_Hashtable_alloc<_NodeAlloc>::_M_deallocate_node(__node_type*)): Call
destroy on the node allocator.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251187 138bc75d-0d04-0410-961f-82ee72b054a4
dmalcolm [Fri, 18 Aug 2017 18:12:47 +0000 (18 18:12 +0000)]
C++: fix ordering of missing std #include suggestion (PR c++/81514)
gcc/cp/ChangeLog:
PR c++/81514
* name-lookup.c (maybe_suggest_missing_header): Convert return
type from void to bool; return true iff a suggestion was offered.
(suggest_alternative_in_explicit_scope): Move call to
maybe_suggest_missing_header to before use of best_match, and
return true if the former offers a suggestion.
gcc/testsuite/ChangeLog:
PR c++/81514
* g++.dg/lookup/empty.h: New file.
* g++.dg/lookup/missing-std-include-2.C: Replace include of
stdio.h with empty.h and a declaration of a "std::sprintf" not based
on a built-in.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251186 138bc75d-0d04-0410-961f-82ee72b054a4
redi [Fri, 18 Aug 2017 17:46:57 +0000 (18 17:46 +0000)]
PR libstdc++/81891 fix double-free in hashtable constructor
PR libstdc++/81891
* include/bits/hashtable.h (_Hashtable(_InputIterator, _InputIterator,
size_type, const _H1&, const _H2&, const _Hash&, const _Equal&,
const _ExtractKey&, const allocator_type&)): Let destructor do clean
up if an exception is thrown.
* testsuite/23_containers/unordered_map/cons/81891.cc: New.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251185 138bc75d-0d04-0410-961f-82ee72b054a4
ian [Fri, 18 Aug 2017 14:05:52 +0000 (18 14:05 +0000)]
misc/cgo/test: make cgo tests run on AIX
Reviewed-on: https://go-review.googlesource.com/56910
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251182 138bc75d-0d04-0410-961f-82ee72b054a4