Commit Graph

164277 Commits

Author SHA1 Message Date
Eric Botcazou
96d268c284 [Ada] Repinfo: list the mechanism of functions only
2018-10-09  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

	* repinfo.adb: Remove with/use clause for Stand.
	(List_Mechanisms): List the mechanism of functions only.

From-SVN: r264965
2018-10-09 15:05:19 +00:00
Bob Duff
98ebcae861 [Ada] Various User Manual updates for GNATpp
2018-10-09  Bob Duff  <duff@adacore.com>

gcc/ada/

	* doc/gnat_ugn/gnat_utility_programs.rst: Correct spelling of
	--eol switch.  Document the language-version switches.  Update
	description for --no-exception.

From-SVN: r264964
2018-10-09 15:05:14 +00:00
Vasiliy Fofanov
9aa47367b3 [Ada] System.Os_Lib.Normalize_Pathname: fix incorrect comment
2018-10-09  Vasiliy Fofanov  <fofanov@adacore.com>

gcc/ada/

	* libgnat/s-os_lib.ads (Normalize_Pathname): Fix incorrect
	comment.

From-SVN: r264963
2018-10-09 15:05:09 +00:00
Arnaud Charlet
0960ddad82 [Ada] Remove CodePeer annotation
2018-10-09  Arnaud Charlet  <charlet@adacore.com>

gcc/ada/

	* vxlink.adb: Remove pragma Annotate, no longer needed.

From-SVN: r264962
2018-10-09 15:05:04 +00:00
Ed Schonberg
94a98e801a [Ada] Preserve Do_Range_Check flags in SPARK mode
2018-10-09  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

	* checks.adb (Apply_Type_Conversion_Checks): Use GNATprove_Mode
	rather than SPARK_mode in order to preserve the Do_Range_Check
	flag for verification purposes.

From-SVN: r264961
2018-10-09 15:04:58 +00:00
Ed Schonberg
0ffbef9f35 [Ada] Spurious warning on uninitialized entity during code generation
This patch suppresses a spurious warning coming from the GCC backend, on
an aggregate that cannot be built in place and for which a temporary
variable must be created. If the type of the aggregate is a packed
boolean array, the generated code may appear to use an uninitialized
value for a component of the array, when in fact the code simply sets a
single bit of that array.

2018-10-09  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

	* exp_aggr.adb (Expand_Array_Aggregate): If it is not possible
	to build in place an aggregate with component associations, set
	the Warnings_Off flag on the generated temporary, to prevent
	spurious warnings from the backend when compiling with the
	-Wuninitialized gcc flag.

gcc/testsuite/

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

From-SVN: r264960
2018-10-09 15:04:53 +00:00
Jonathan Wakely
33b43b0d8c Define std::string and related typedefs outside __cxx11 namespace
The typedefs for common specializations of std::__cxx11::basic_string do
not need to be in the std::__cxx11 namespace. Those typedefs are never
used for linkage purposes so don't appear in mangled names, and so don't
need to be distinct from the equivalent typedefs for the COW
std::basic_string specializations. It is OK for the same typedef to
refer to different types in different translation units.

Defining them directly in namespace std improves diagnostics that use
those typedefs. For example:

error: could not convert '1' from 'int' to 'std::__cxx11::string' {aka 'std::__cxx11::basic_string<char>'}

will now be printed as:

error: could not convert '1' from 'int' to 'std::string' {aka 'std::__cxx11::basic_string<char>'}

The precise type is still shown, but the typedef is not obfuscated with
the inline namespace.

	* include/bits/stringfwd.h (string, wstring, u16string, u32string):
	Define typedefs outside of __cxx11 inline namespace.
	* python/libstdcxx/v6/printers.py (register_type_printers): Also
	register printers for typedefs in new location.

From-SVN: r264958
2018-10-09 14:06:46 +01:00
Richard Biener
fe8a86e1f4 re PR middle-end/63155 (memory hog)
2018-10-09  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/63155
	* tree-ssa-structalias.c: Include tree-ssa.h.
	(get_constraint_for_ssa_var): For undefs return nothing_id.
	(find_func_aliases): Cleanup PHI handling.

From-SVN: r264956
2018-10-09 11:43:46 +00:00
Richard Biener
c885142a15 tree-vectorizer.c (dump_stmt_cost): Fix cut&paste missing replacements.
2018-10-09  Richard Biener  <rguenther@suse.de>

	* tree-vectorizer.c (dump_stmt_cost): Fix cut&paste missing
	replacements.

From-SVN: r264954
2018-10-09 11:37:46 +00:00
Martin Liska
2c73950ded ASAN: emit line information of stack variables.
2018-10-09  Martin Liska  <mliska@suse.cz>

	* asan.c (asan_emit_stack_protection): If a stack variable
	is located in a same file as current function, then emit
	line info into variable definition string.
2018-10-09  Martin Liska  <mliska@suse.cz>

	* c-c++-common/asan/pr64820.c: Add line number to scanned
	pattern.
	* c-c++-common/asan/use-after-return-1.c: Likewise.
	* g++.dg/asan/function-argument-1.C (main): Likewise.
	* g++.dg/asan/function-argument-2.C (main): Likewise.
	* g++.dg/asan/function-argument-3.C (main): Likewise.
	* g++.dg/asan/use-after-scope-1.C (main): Likewise.
	* g++.dg/asan/use-after-scope-2.C (main): Likewise.
	* g++.dg/asan/use-after-scope-types-1.C (main): Likewise.
	* g++.dg/asan/use-after-scope-types-2.C (main): Likewise.
	* g++.dg/asan/use-after-scope-types-3.C (main): Likewise.
	* g++.dg/asan/use-after-scope-types-4.C (main): Likewise.
	* g++.dg/asan/use-after-scope-types-5.C (main): Likewise.
	* gcc.dg/asan/pr78541.c (main): Likewise.
	* gcc.dg/asan/use-after-scope-1.c (main): Likewise.
	* gcc.dg/asan/use-after-scope-10.c (main): Likewise.
	* gcc.dg/asan/use-after-scope-2.c (main): Likewise.
	* gcc.dg/asan/use-after-scope-3.c (main): Likewise.
	* gcc.dg/asan/use-after-scope-5.c (main): Likewise.
	* gcc.dg/asan/use-after-scope-9.c (main): Likewise.

From-SVN: r264951
2018-10-09 08:34:52 +00:00
Paul Thomas
9d44426f78 re PR fortran/87151 (allocating array of character)
2018-10-09  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/87151
	* trans-array.c (gfc_get_array_span): Deal with deferred char
	array components having a TYPE_MAX_VALUE of zero.
	(gfc_array_init_size): Use the hidden string length component
	to build the descriptor dtype.
	(gfc_array_allocate): Remove the erroneous replacement of the
	charlen backend decl with a temporary.
	(gfc_conv_expr_descriptor): Use the ss_info string length in
	the case of deferred character components.
	(gfc_alloc_allocatable_for_assignment): Actually compare the
	string lengths for deferred characters. Make sure that kind > 1
	is handled correctly. Set the span field of the descriptor.
	* trans-intrinsic.c (gfc_conv_intrinsic_len): Remove the stupid
	comment.

	PR fortran/80931
	* trans-array.c (gfc_array_allocate): Set the span field for
	variable length character arrays.


2018-10-09  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/87151
	* gfortran.dg/deferred_type_component_3.f90: New test.

	PR fortran/80931
	* gfortran.dg/deferred_character_28.f90: New test.
	* gfortran.dg/deferred_character_29.f90: New test (note that
	this test appears in PR83196 comment #4 by mistake).

From-SVN: r264949
2018-10-09 07:46:48 +00:00
GCC Administrator
6d52096313 Daily bump.
From-SVN: r264948
2018-10-09 00:16:37 +00:00
Eric Botcazou
87bd153645 print-rtl.c (rtx_writer::print_rtx_operand_code_i): Print column information.
* print-rtl.c (rtx_writer::print_rtx_operand_code_i): Print column
	information.

From-SVN: r264944
2018-10-08 22:50:51 +00:00
Eric Botcazou
23d8024177 cgraphunit.c (cgraph_node::expand_thunk): Do not force DECL_IGNORED_P on the thunk.
* cgraphunit.c (cgraph_node::expand_thunk): Do not force DECL_IGNORED_P
	on the thunk.

From-SVN: r264943
2018-10-08 22:49:07 +00:00
Eric Botcazou
de3101937e re PR tree-optimization/86659 (gnat.dg/sso/q[23].adb FAIL)
PR tree-optimization/86659
	* gimple-match.h (struct gimple_match_op): Add reverse field.
	(gimple_match_op::set_op): New overloaded method.
	* gimple-match-head.c (maybe_build_generic_op) <BIT_FIELD_REF>: Set
	the REF_REVERSE_STORAGE_ORDER flag on the value.
	(gimple_simplify) <GIMPLE_ASSIGN>: For BIT_FIELD_REF, propagate the
	REF_REVERSE_STORAGE_ORDER flag and avoid simplifying if it is set.

From-SVN: r264942
2018-10-08 22:47:32 +00:00
Richard Sandiford
91a3cbb4d2 Use FOR_EACH_IMM_USE_FAST in gimple-ssa-backprop.c
As pointed out by Richard in PR63155.  It speeds up the testcase a few %.

2018-10-08  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
	PR middle-end/63155
	* gimple-ssa-backprop.c (backprop::intersect_uses): Use
	FOR_EACH_IMM_USE_FAST instead of FOR_EACH_IMM_USE_STMT.

From-SVN: r264941
2018-10-08 18:58:59 +00:00
Paul Koning
be86efa7cc * config/pdp11/t-pdp11: Remove -mfloat32 switch.
From-SVN: r264939
2018-10-08 12:49:48 -04:00
H.J. Lu
a70b966196 i386: Correct _mm512_mask3_fmaddsub_round_pd
Define _mm512_mask3_fmaddsub_round_pd with
__builtin_ia32_vfmaddsubpd512_mask, instead of
__builtin_ia32_vfmaddpd512_mask.

	PR target/87517
	* config/i386/avx512fintrin.h (_mm512_mask_fmaddsub_round_pd):
	Defined with __builtin_ia32_vfmaddsubpd512_mask.

From-SVN: r264935
2018-10-08 07:54:53 -07:00
Richard Biener
45e87b24f3 x86-tune-costs.h (znver1_cost): Make AVX256 vector loads cost the same as AVX128 ones.
2018-10-08  Richard Biener  <rguenther@suse.de>

	* config/i386/x86-tune-costs.h (znver1_cost): Make AVX256 vector loads
	cost the same as AVX128 ones.

From-SVN: r264934
2018-10-08 14:47:40 +00:00
Ian Lance Taylor
3cbb7cbb09 libgo: update to Go 1.11.1 release
Reviewed-on: https://go-review.googlesource.com/c/140277

From-SVN: r264932
2018-10-08 14:21:30 +00:00
Paul Koning
a3368b8ea1 Fix ICE on block move when using LRA.
* config/pdp11/pdp11-protos.h (output_block_move): Remove.
    (expand_block_move): New function.
    * config/pdp11/pdp11.c (output_block_move): Remove.
    (expand_block_move): New function.
    * config/pdp11/pdp11.h (MOVE_RATIO): New definition.
    * config/pdp11/pdp11.md (movmemhi): Use expand_block_move.
    (*movmemhi1): Remove.

From-SVN: r264930
2018-10-08 10:16:13 -04:00
Martin Liska
a3927ffb90 Come up with gcc/testsuite/g++.target/i386/i386.dg and move there some tests.
2018-10-08  Martin Liska  <mliska@suse.cz>

	* gcc.target/i386/i386.exp: Move procedures to
	target-supports.exp.
	* g++.target/i386/i386.exp: New file.
	* gcc.target/i386/mv*.C: Move here tests and remove
	target filter in these tests.

From-SVN: r264929
2018-10-08 14:12:53 +00:00
Cesar Philippidis
ed9984a030 [Fortran] Disable "Assignment to contiguous pointer from non-contiguous target" error
gcc/fortran/
	* expr.c (gfc_check_pointer_assign): Demote "Assignment to
	contiguous pointer from non-contiguous target" to a warning.

	gcc/testsuite/
	* gfortran.dg/contiguous_4.f90: Adjust.
	* gfortran.dg/contiguous_4.f90: New test.

From-SVN: r264928
2018-10-08 07:04:45 -07:00
Robin Dapp
49108562af S/390: Increase latencies for some FP instructions
This patch increases the latency of some floating point instructions to better
match the real machine's behavior.

2018-10-08  Robin Dapp  <rdapp@linux.ibm.com>

	* config/s390/2827.md: Increase latencies for some FP instructions.

From-SVN: r264927
2018-10-08 13:16:32 +00:00
Richard Biener
269ba95042 tree-vect-loop.c (vect_compute_single_scalar_iteration_cost): Open a dump scope.
2018-10-08  Richard Biener  <rguenther@suse.de>

	* tree-vect-loop.c (vect_compute_single_scalar_iteration_cost):
	Open a dump scope.
	* tree-vectorizer.c (dump_stmt_cost): Add cost param and dump it.
	* tree-vectorizer.h (dump_stmt_cost): Adjust.
	(add_stmt_cost): Dump return value of the hook.

From-SVN: r264923
2018-10-08 12:29:51 +00:00
Jonathan Wakely
aca0dcde1f PR libstdc++/87538 Verify fix for std::experimental::not_fn
PR libstdc++/87538
	* testsuite/experimental/functional/87538.cc: New test.

From-SVN: r264922
2018-10-08 13:17:58 +01:00
Jonathan Wakely
606f6be67b PR libstdc++/87538 fix std::not_fn exception specifications
PR libstdc++/87538
	* include/std/functional (_Not_fn::operator()): Check value of
	__is_nothrow_invocable as well.
	* testsuite/20_util/function_objects/not_fn/87538.cc: New test.

From-SVN: r264921
2018-10-08 13:07:22 +01:00
Paul Thomas
0054ef84b0 re PR fortran/86372 (Segfault on ASSOCIATE statement with CHARACTER variable)
2018-10-08  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/86372
	* trans-stmt.c (trans_associate_var): Character associate names
	with variable string length do not have to be deferred length
	for the string length to be set, if variable.

2018-10-08  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/86372
	* gfortran.dg/associate_41.f90: New test.

From-SVN: r264919
2018-10-08 11:17:10 +00:00
Rainer Orth
87454aad99 Require string merging support in gnat.dg/string_merge?.adb etc.
* gcc.dg/merge-all-constants-2.c: Require string_merging support.
	* gnat.dg/string_merge1.adb: Likewise.
	* gnat.dg/string_merge2.adb: Likewise.

From-SVN: r264918
2018-10-08 11:03:22 +00:00
Rainer Orth
1a2a0b6044 Require constructor priority support in c-c++-common/Wprio-ctor-dtor.c
* c-c++-common/Wprio-ctor-dtor.c: Require init_priority support.

From-SVN: r264917
2018-10-08 10:59:36 +00:00
Martin Liska
1a097fd827 Limit a MV test just for x86 target.
2018-10-08  Martin Liska  <mliska@suse.cz>

	* g++.dg/ext/pr82625.C: Add dg-compile filter.

From-SVN: r264916
2018-10-08 09:53:44 +00:00
Paul Thomas
c16ac98ea9 re PR fortran/86372 (Segfault on ASSOCIATE statement with CHARACTER variable)
2018-10-08  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/86372
	* trans-stmt.c (trans_associate_var): Character associate names
	with variable string length do not have to be deferred length
	for the string length to be set, if variable.

2018-10-08  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/86372
	* gfortran.dg/associate_41.f90: New test.

From-SVN: r264915
2018-10-08 09:11:03 +00:00
Paolo Carlini
a52cdecf11 re PR c++/71128 ([concepts] ICE on ill-formed explicit instantiation of a function concept)
/cp
2018-10-08  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/71128
	* pt.c (do_decl_instantiation): Per 12.6.8/5, a concept cannot be
	explicitly instantiated.

/testsuite
2018-10-08  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/71128
	* g++.dg/concepts/pr71128.C: New.

From-SVN: r264914
2018-10-08 09:02:55 +00:00
Richard Sandiford
8656dafa39 Don't ICE on vectors of enums (PR 87286)
We've traditionally allowed vectors of enums (not sure if that's
deliberate) but vector_types_compatible_elements_p checked for
INTEGER_TYPE rather than INTEGRAL_TYPE_P.

2018-10-08  Richard Sandiford  <richard.sandiford@arm.com>

gcc/c-family/
	PR c/87286
	* c-common.c (vector_types_compatible_elements_p): Use
	INTEGRAL_TYPE_P instead of checking only for INTEGER_TYPE.

gcc/testsuite/
	PR c/87286
	* gcc.dg/pr87286.c: New test.

From-SVN: r264913
2018-10-08 08:16:13 +00:00
Richard Biener
090680870b re PR middle-end/63155 (memory hog)
2018-10-08  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/63155
	* tree-ssa-propagate.c (add_ssa_edge): Do cheap check first.
	(ssa_propagation_engine::ssa_propagate): Remove redundant
	bitmap bit clearing.

From-SVN: r264912
2018-10-08 07:16:28 +00:00
François Dumont
edec2bad9a list (list<>::cbegin()): Use C++11 direct initialization.
2018-10-08  François Dumont  <fdumont@gcc.gnu.org>

	* include/debug/list (list<>::cbegin()): Use C++11 direct
	initialization.
	(list<>::cend()): Likewise.
	(list<>::emplace<>(const_iterator, _Args&&...)): Likewise.
	(list<>::insert(const_iterator, initializer_list<>)): Likewise.
	(list<>::insert(const_iterator, size_type, const _Tp&)): Likewise.
	(list<>::erase(const_iterator, const_iterator)): Ensure consistent
	iterator comparisons.
	(list<>::splice(const_iterator, list&&, const_iterator,
	const_iterator)): Likewise.

From-SVN: r264911
2018-10-08 05:49:12 +00:00
GCC Administrator
c0485831b7 Daily bump.
From-SVN: r264910
2018-10-08 00:16:56 +00:00
GCC Administrator
7a7bd6960d Daily bump.
From-SVN: r264906
2018-10-07 00:16:21 +00:00
Janne Blomqvist
c0ab1530d4 Use gfc_charlen_type instead of int for string lenghts
This patch cleans up a few places where I noticed the code was still
using int instead gfc_charlen_type for string lengths.  Regtested on
x86_64-pc-linux-gnu, committed as obvious.

libgfortran/ChangeLog:

2018-10-06  Janne Blomqvist  <jb@gcc.gnu.org>

	* io/unix.c (compare_file_filename): Use gfc_charlen_type instead
	of int for string length.
	(inquire_sequential): Likewise.
	(inquire_direct): Likewise.
	(inquire_formatted): Likewise.
	(inquire_unformatted): Likewise.
	(inquire_access): Likewise.
	(inquire_read): Likewise.
	(inquire_write): Likewise.
	(inquire_readwrite): Likewise.
	* io/unix.h (compare_file_filename): Likewise.
	(inquire_sequential): Likewise.
	(inquire_direct): Likewise.
	(inquire_formatted): Likewise.
	(inquire_unformatted): Likewise.
	(inquire_read): Likewise.
	(inquire_write): Likewise.
	(inquire_readwrite): Likewise.

From-SVN: r264901
2018-10-06 21:21:00 +03:00
Thomas Koenig
7318fdcaaa re PR fortran/86111 (ICE in gfc_arith_concat, at fortran/arith.c:985)
2018-10-06  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/86111
	* gfortran.h (enum arith): Add ARITH_WRONGCONCAT.
	* arith.h (gfc_arith_error): Issue error for ARITH_WRONGCONCAT.
	(gfc_arith_concat):  If the types of op1 and op2 are not
	character of if their kinds do not match, issue ARITH_WRONGCONCAT.

2018-10-06  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/86111
	* gfortran.dg/array_constructor_type_23.f90: New test.

From-SVN: r264900
2018-10-06 18:20:14 +00:00
Paul Thomas
2b03b800d8 re PR fortran/83999 (ICE in gfc_trans_assignment_1, at fortran/trans-expr.c:10233)
2018-10-06  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/83999
	* resolve.c (resolve_fl_procedure): Include class functions in
	the test that elemental function results be scalar.

2018-10-06  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/83999
	* gfortran.dg/elemental_function_4.f90 : New test.

From-SVN: r264899
2018-10-06 15:14:29 +00:00
Thomas Koenig
f64b9ed94c re PR fortran/84640 (gcc/fortran/simplify.c:2587:9: runtime error: pointer index expression with base 0x0000090de160 overflowed to 0xffffffffc0632960)
2018-10-06  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/84640
	* simplify.c (gfc_simplify_cshift): Extend size of hs_ex and ss_ex
	by one. Set extents one past the array boundaries to zero to avoid
	warning with instrumented compiler.
	(gfc_simplify_eoshift): Likewise, only for ss_ex.

From-SVN: r264898
2018-10-06 11:45:05 +00:00
Peter Bergner
a141f2d862 re PR rtl-optimization/86939 (IRA incorrectly creates an interference between a pseudo register and a hard register)
gcc/
	PR rtl-optimization/86939
	PR rtl-optimization/87479
	* ira.h (non_conflicting_reg_copy_p): New prototype.
	* ira-lives.c (ignore_reg_for_conflicts): New static variable.
	(make_hard_regno_dead): Don't add conflicts for register
	ignore_reg_for_conflicts.
	(make_object_dead): Likewise.
	(non_conflicting_reg_copy_p): New function.
	(process_bb_node_lives): Set ignore_reg_for_conflicts for copies.
	Remove special conflict handling of REAL_PIC_OFFSET_TABLE_REGNUM.
	* lra-lives.c (ignore_reg_for_conflicts): New static variable.
	(make_hard_regno_dead): Don't add conflicts for register
	ignore_reg_for_conflicts.  Remove special conflict handling of
	REAL_PIC_OFFSET_TABLE_REGNUM.  Remove now unused argument
	check_pic_pseudo_p and update callers.
	(mark_pseudo_dead): Don't add conflicts for register
	ignore_reg_for_conflicts.
	(process_bb_lives): Set ignore_reg_for_conflicts for copies.

gcc/testsuite/
	PR rtl-optimization/86939
	PR rtl-optimization/87479
	* gcc.target/powerpc/pr86939.c: New test.
	* gcc/testsuite/gcc.target/i386/pr49095.c: Fix expected results.

From-SVN: r264897
2018-10-05 21:12:30 -05:00
GCC Administrator
fb6f9bbc75 Daily bump.
From-SVN: r264896
2018-10-06 00:17:07 +00:00
Andrew Waterman
1fcbfb00fc RISC-V: Fix -fsignaling-nans for glibc testsuite.
gcc/
	* config/riscv/riscv.md (f<quiet_pattern>_quiet<ANYF:mode><X:mode>4):
	Add define_expand.  Add ! HONOR_SNANS check to current pattern.  Add
	new pattern using HONOR_SNANS that emits one extra instruction.

Co-Authored-By: Jim Wilson <jimw@sifive.com>

From-SVN: r264892
2018-10-05 13:18:21 -07:00
Segher Boessenkool
a3a81f2922 rs6000: Some mfcr pattern simplification
* config/rs6000/rs6000.md (unnamed mfcr scc_comparison_operator
	patterns): Merge SI and DI patterns to a GPR pattern.
	(unnamed define_insn and define_split for record form of that): Merge
	to a single define_insn_and_split pattern.

From-SVN: r264889
2018-10-05 21:40:36 +02:00
Bernd Edlinger
c1ec62f1fb string_merge1.adb: Fix test expectations.
2018-10-05  Bernd Edlinger  <bernd.edlinger@hotmail.de>

        * gnat.dg/string_merge1.adb: Fix test expectations.
        * gnat.dg/string_merge2.adb: Likewise.

From-SVN: r264888
2018-10-05 19:19:42 +00:00
David Malcolm
0d48e8779c Support string locations for C++ in -Wformat (PR c++/56856)
-Wformat in the C++ FE doesn't work as well as it could:
(a) it doesn't report precise locations within the string literal, and
(b) it doesn't underline arguments for those arguments !CAN_HAVE_LOCATION_P,
despite having location wrapper nodes.

For example:

  Wformat-ranges.C:32:10: warning: format '%s' expects argument of type 'char*', but argument 2 has type 'int' [-Wformat=]
  32 |   printf("hello %s", 42);
     |          ^~~~~~~~~~

(a) is due to not wiring up the langhook for extracting substring
    locations.

    This patch uses the one in c-family; it also fixes string literal
    parsing so that it records string concatenations (needed for
    extracting substring locations from concatenated strings).

(b) is due to the call to maybe_constant_value here:
       fargs[j] = maybe_constant_value (argarray[j]);
    within build_over_call.

    The patch fixes this by building a vec of location_t values when
    calling check_function_arguments.
    I attempted to eliminate the maybe_constant_value call here, but
    it's needed by e.g. check_function_sentinel for detecting NULL,
    and that code is in "c-family", so it can't simply call into
    maybe_constant_value (which is in "cp").

With this patch, the output for the above example is improved to:

  Wformat-ranges.C:32:18: warning: format '%s' expects argument of type 'char*', but argument 2 has type 'int' [-Wformat=]
  32 |   printf("hello %s", 42);
     |                 ~^   ~~
     |                  |   |
     |                  |   int
     |                  char*
     |                 %d

gcc/cp/ChangeLog:
	PR c++/56856
	* call.c (build_over_call): Build a vec of locations of the
	arguments before the call to maybe_constant_value, and pass to
	check_function_arguments.
	* cp-lang.c (LANG_HOOKS_GET_SUBSTRING_LOCATION): Define as
	c_get_substring_location.
	* parser.c (cp_parser_string_literal): Capture string
	concatenation locations.

gcc/ChangeLog:
	PR c++/56856
	* input.c (expand_location_to_spelling_point): Add param "aspect"
	and use rather than hardcoding LOCATION_ASPECT_CARET.
	(get_substring_ranges_for_loc): Handle the case of a single token
	within a macro expansion.
	* input.h (expand_location_to_spelling_point): Add "aspect" param,
	defaulting to LOCATION_ASPECT_CARET.

gcc/testsuite/ChangeLog:
	PR c++/56856
	* g++.dg/ext/builtin4.C: Set expected location for warning to the
	correct location within the format string.
	* g++.dg/plugin/plugin.exp (plugin_test_list): Add the plugin and
	files for testing locations within string literal locations from
	the C frontend.
	* g++.dg/warn/Wformat-method.C: New test.
	* g++.dg/warn/Wformat-pr71863.C: New test.
	* g++.dg/warn/Wformat-ranges-c++11.C: New test.
	* g++.dg/warn/Wformat-ranges.C: New test, based on
	gcc.dg/format/diagnostic-ranges.c.
	* gcc.dg/plugin/diagnostic-test-string-literals-1.c
	(test_multitoken_macro): Generalize expected output to work with
	both C and C++.
	* gcc.dg/plugin/diagnostic-test-string-literals-2.c
	(test_stringified_token_1): Likewise.
	(test_stringified_token_3): Likewise.

From-SVN: r264887
2018-10-05 19:02:17 +00:00
Uros Bizjak
1f58c814c0 * config/i386/i386.md: Reorder cmpi patterns.
From-SVN: r264886
2018-10-05 20:59:04 +02:00
Uros Bizjak
874761d228 i386.md (*cmpxf_cc_i387): Remove pattern.
* config/i386/i386.md (*cmpxf_cc_i387): Remove pattern.
	(*cmp<mode>_cc_i387): Ditto.
	(*cmpu<mode>_cc_i387): Ditto.
	(*cmp<X87MODEF:mode>_<SWI24:mode>_cc_i387): Ditto.
	* config/i386/i386.c (ix86_expand_fp_compare): Remove
	"scratch" argument.
	<case IX86_FPCMP_SAHF>: Do not generate pattern with HImode clobber.
	Emit x86_sahf_1 pattern.
	(ix86_expand_compare): Update call to ix86_expand_fp_compare.
	(ix86_expand_carry_flag_compare): Ditto.

From-SVN: r264884
2018-10-05 20:48:56 +02:00