Commit Graph

146915 Commits

Author SHA1 Message Date
Martin Liska
199b1891cb Dump profile-based number of iterations
* analyze_brprob.py: Parse and display average number
	of loop iterations.
	* cfgloop.c (flow_loop_dump): Dump average number of loop iterations.
	* cfgloop.h: Change 'struct loop' to 'const struct loop' for a
	few functions.
	* cfgloopanal.c (expected_loop_iterations_unbounded): Set a new
	argument to true if the expected number of iterations is
	loop-based.

From-SVN: r237762
2016-06-24 16:22:44 +00:00
Uros Bizjak
04619cb86e vect-nb-iter-ub-1.c: Remove default vector testsuite compile flags.
2016-06-24  Uros Bizjak  <ubizjak@gmail.com>

	* gcc.dg/vect/vect-nb-iter-ub-1.c: Remove default vector
	testsuite compile flags.
	* gcc.dg/vect/vect-nb-iter-ub-2.c: Ditto.
	* gcc.dg/vect/vect-nb-iter-ub-3.c: Ditto.

2016-06-24  Uros Bizjak  <ubizjak@gmail.com>

	* g++dg/vect/pr36684.cc: Add dg-do compile.
	* gcc.dg/vect/O3-pr70130.c: Remove dg-do run.
	* gcc.dg/vect/pr70021.c: Ditto.
	* gcc.dg/vect/pr70138-1.c: Ditto.
	* gcc.dg/vect/pr70138-2.c: Ditto.
	* gcc.dg/vect/pr70354-1.c: Ditto.
	* gcc.dg/vect/pr70354-2.c: Ditto.
	* gcc.dg/vect/pr71259.c: Ditto.
	* gcc.dg/vect/pr71416-1.c: Ditto.
	* gcc.dg/vect/slp-43.c: Ditto.
	* gcc.dg/vect/slp-45.c: Ditto.
	* gcc.dg/vect/vect-nb-iter-ub-1.c: Ditto.
	* gcc.dg/vect/vect-nb-iter-ub-2.c: Ditto.
	* gcc.dg/vect/vect-nb-iter-ub-3.c: Ditto.
	* gfortran.dg/vect/pr69980.f90: Ditto.

2016-06-24  Uros Bizjak  <ubizjak@gmail.com>

	* gcc.dg/vect/O3-pr70130.c: Include tree-vect.h and call check_vect.
	* gcc.dg/vect/bb-slp-30.c: Ditto.
	* gcc.dg/vect/costmodel/i386/costmodel-vect-33.c: Ditto.
	* gcc.dg/vect/fast-math-bb-slp-call-3.c: Ditto.
	* gcc.dg/vect/pr45902.c: Ditto.
	* gcc.dg/vect/pr48172.c: Ditto.
	* gcc.dg/vect/pr48377.c: Ditto.
	* gcc.dg/vect/pr49038.c: Ditto.
	* gcc.dg/vect/pr49771.c: Ditto.
	* gcc.dg/vect/pr52091.c: Ditto.
	* gcc.dg/vect/pr53185-2.c: Ditto.
	* gcc.dg/vect/pr56826.c: Ditto.
	* gcc.dg/vect/pr60276.c: Ditto.
	* gcc.dg/vect/pr62021.c: Ditto.
	* gcc.dg/vect/pr63530.c: Ditto.
	* gcc.dg/vect/pr65518.c: Ditto.
	* gcc.dg/vect/pr65947-1.c: Ditto.
	* gcc.dg/vect/pr65947-10.c: Ditto.
	* gcc.dg/vect/pr65947-11.c: Ditto.
	* gcc.dg/vect/pr65947-12.c: Ditto.
	* gcc.dg/vect/pr65947-13.c: Ditto.
	* gcc.dg/vect/pr65947-2.c: Ditto.
	* gcc.dg/vect/pr65947-3.c: Ditto.
	* gcc.dg/vect/pr65947-4.c: Ditto.
	* gcc.dg/vect/pr65947-5.c: Ditto.
	* gcc.dg/vect/pr65947-6.c: Ditto.
	* gcc.dg/vect/pr65947-7.c: Ditto.
	* gcc.dg/vect/pr65947-8.c: Ditto.
	* gcc.dg/vect/pr65947-9.c: Ditto.
	* gcc.dg/vect/pr71416-1.c: Ditto.
	* gcc.dg/vect/pr71439.c: Ditto.
	* gcc.dg/vect/slp-widen-mult-half.c: Ditto.
	* gcc.dg/vect/vect-bswap16.c: Ditto.
	* gcc.dg/vect/vect-bswap32.c: Ditto.
	* gcc.dg/vect/vect-bswap64.c: Ditto.
	* gcc.dg/vect/vect-live-1.c: Ditto.
	* gcc.dg/vect/vect-live-2.c: Ditto.
	* gcc.dg/vect/vect-live-3.c: Ditto.
	* gcc.dg/vect/vect-live-4.c: Ditto.
	* gcc.dg/vect/vect-live-5.c: Ditto.
	* gcc.dg/vect/vect-live-slp-1.c: Ditto.
	* gcc.dg/vect/vect-live-slp-2.c: Ditto.
	* gcc.dg/vect/vect-live-slp-3.c: Ditto.
	* gcc.dg/vect/vect-nb-iter-ub-1.c: Ditto.
	* gcc.dg/vect/vect-nb-iter-ub-2.c: Ditto.
	* gcc.dg/vect/vect-nb-iter-ub-3.c: Ditto.
	* gcc.dg/vect/vect-neg-store-1.c: Ditto.
	* gcc.dg/vect/vect-neg-store-2.c: Ditto.
	* gcc.dg/vect/vect-outer-pr69720.c: Ditto.
	* gcc.dg/vect/vect-reduc-mul_1.c: Ditto.
	* gcc.dg/vect/vect-reduc-mul_2.c: Ditto.
	* gcc.dg/vect/vect-reduc-or_1.c: Ditto.
	* gcc.dg/vect/vect-reduc-or_2.c: Ditto.
	* gcc.dg/vect/vect-widen-mult-const-s16.c: Ditto.
	* gcc.dg/vect/vect-widen-mult-const-u16.c: Ditto.
	* gcc.dg/vect/vect-widen-mult-half-u8.c: Ditto.
	* gcc.dg/vect/vect-widen-mult-half.c: Ditto.

From-SVN: r237761
2016-06-24 17:46:21 +02:00
Uros Bizjak
da224bcb28 float128-cmp-invalid.c (main): Use __builtin_nanq.
* gcc.dg/torture/float128-cmp-invalid.c (main): Use __builtin_nanq.

From-SVN: r237760
2016-06-24 15:55:40 +02:00
Uros Bizjak
936ff03092 tree-vect.h (check_vect): Handle __SSE4_2__.
* gcc.dg/vect/tree-vect.h (check_vect): Handle __SSE4_2__.

From-SVN: r237759
2016-06-24 15:53:13 +02:00
Uros Bizjak
e1ebd31d5a configure.ac (HAVE_AS_GOTOF_IN_DATA): Use $as_ix86_gas_32_opt to assemble for 32bit target.
* configure.ac (HAVE_AS_GOTOF_IN_DATA): Use $as_ix86_gas_32_opt to
	assemble for 32bit target.
	(HAVE_AS_IX86_TLSGDPLT): Use $as_ix86_gas_32_opt to assemble
	and $ld_ix86_gld_32_opt to link for 32bit target.
	(HAVE_AS_IX86_TLSLDMPLT): Ditto.
	* configure: Regenerate.

From-SVN: r237758
2016-06-24 15:37:06 +02:00
Kyrylo Tkachov
68a8632380 [ARM][1/4] Replace uses of int_log2 by exact_log2
* config/arm/arm.c (int_log2): Delete definition and prototype.
	(shift_op): Use exact_log2 instead of int_log2.
	(vfp3_const_double_for_fract_bits): Likewise.

From-SVN: r237757
2016-06-24 12:46:19 +00:00
H.J. Lu
dfee287036 Enable non-PIC noplt tests on 32-bit x86 target
Since non-PIC noplt works on 32-bit x86 target now with assembler/linker
support, enable non-PIC noplt tests on 32-bit x86 target.  main in
noplt-2.c and noplt-4.c are renamed to bar to avoid stack re-alignment
in main for 32-bit target, which disables tailcall optimization.

	* gcc.target/i386/noplt-1.c: Don't disable for ia32.  Scan for
	ia32 if R_386_GOT32X relocation is supported.
	* gcc.target/i386/noplt-3.c: Likewise.
	* gcc.target/i386/noplt-2.c: Likewise.
	(main): Renamed to ...
	(bar): This.
	* gcc.target/i386/noplt-4.c: Likewise.
	(main): Renamed to ...
	(bar): This.
	* gcc.target/i386/pr67400-3.c: Don't disable for ia32.
	* gcc.target/i386/pr67400-5.c: Likewise.

From-SVN: r237756
2016-06-24 04:17:14 -07:00
Jakub Jelinek
00085092c5 call.c (magic_varargs_p): Return 3 for __builtin_*_overflow_p.
* call.c (magic_varargs_p): Return 3 for __builtin_*_overflow_p.
	(build_over_call): For magic == 3, do no conversion only on 3rd
	argument.

	* c-c++-common/torture/builtin-arith-overflow-p-19.c: Run for C++ too.
	* g++.dg/ext/builtin-arith-overflow-2.C: New test.

From-SVN: r237755
2016-06-24 13:04:29 +02:00
Jakub Jelinek
a86451b9b2 internal-fn.c (expand_arith_set_overflow): New function.
* internal-fn.c (expand_arith_set_overflow): New function.
	(expand_addsub_overflow, expand_neg_overflow, expand_mul_overflow):
	Use it.
	(expand_arith_overflow_result_store): Likewise.  Handle precision
	smaller than mode precision.
	* tree-vrp.c (extract_range_basic): For imag part, handle
	properly signed 1-bit precision result.
	* doc/extend.texi (__builtin_add_overflow): Document that last
	argument can't be pointer to enumerated or boolean type.
	(__builtin_add_overflow_p): Document that last argument can't
	have enumerated or boolean type.

	* c-common.c (check_builtin_function_arguments): Require last
	argument of BUILT_IN_*_OVERFLOW_P to have INTEGER_TYPE type.
	Adjust wording of diagnostics for BUILT_IN_*_OVERLFLOW
	if the last argument is pointer to enumerated or boolean type.

	* c-c++-common/builtin-arith-overflow-1.c (generic_wrong_type, f3,
	f4): Adjust expected diagnostics.
	* c-c++-common/torture/builtin-arith-overflow.h (TP): New macro.
	(T): If OVFP is defined, redefine to TP.
	* c-c++-common/torture/builtin-arith-overflow-12.c: Adjust comment.
	* c-c++-common/torture/builtin-arith-overflow-p-1.c: New test.
	* c-c++-common/torture/builtin-arith-overflow-p-2.c: New test.
	* c-c++-common/torture/builtin-arith-overflow-p-3.c: New test.
	* c-c++-common/torture/builtin-arith-overflow-p-4.c: New test.
	* c-c++-common/torture/builtin-arith-overflow-p-5.c: New test.
	* c-c++-common/torture/builtin-arith-overflow-p-6.c: New test.
	* c-c++-common/torture/builtin-arith-overflow-p-7.c: New test.
	* c-c++-common/torture/builtin-arith-overflow-p-8.c: New test.
	* c-c++-common/torture/builtin-arith-overflow-p-9.c: New test.
	* c-c++-common/torture/builtin-arith-overflow-p-10.c: New test.
	* c-c++-common/torture/builtin-arith-overflow-p-11.c: New test.
	* c-c++-common/torture/builtin-arith-overflow-p-12.c: New test.
	* c-c++-common/torture/builtin-arith-overflow-p-13.c: New test.
	* c-c++-common/torture/builtin-arith-overflow-p-14.c: New test.
	* c-c++-common/torture/builtin-arith-overflow-p-15.c: New test.
	* c-c++-common/torture/builtin-arith-overflow-p-16.c: New test.
	* c-c++-common/torture/builtin-arith-overflow-p-17.c: New test.
	* c-c++-common/torture/builtin-arith-overflow-p-18.c: New test.
	* c-c++-common/torture/builtin-arith-overflow-p-19.c: New test.
	* g++.dg/ext/builtin-arith-overflow-1.C: Pass 0 instead of C
	as last argument to __builtin_add_overflow_p.

From-SVN: r237754
2016-06-24 13:03:27 +02:00
GCC Administrator
43535362e7 Daily bump.
From-SVN: r237753
2016-06-24 00:16:21 +00:00
François Dumont
e615c24c30 array (array<>::swap): Fix noexcept qualificaton for zero-size array.
2016-06-23  François Dumont  <fdumont@gcc.gnu.org>

	* include/debug/array (array<>::swap): Fix noexcept qualificaton for
	zero-size array.

From-SVN: r237747
2016-06-23 20:21:47 +00:00
Uros Bizjak
7bb5d5f42d pr33834_2.cc: Use dg-additional-options instead of dg-options and remove default vector...
* g++.dg/vect/pr33834_2.cc: Use dg-additional-options instead of
	dg-options and remove default vector testsuite compile flags.
	* g++.dg/vect/pr33860a.cc: Ditto.
	* g++.dg/vect/pr45470-a.cc: Ditto.
	* g++.dg/vect/pr45470-b.cc: Ditto.
	* g++.dg/vect/pr60896.cc: Ditto.
	* gcc.dg/vect/no-tree-pre-pr45241.c: Ditto.
	* gcc.dg/vect/pr18308.c: Ditto.
	* gcc.dg/vect/pr24049.c: Ditto.
	* gcc.dg/vect/pr33373.c: Ditto.
	* gcc.dg/vect/pr36228.c: Ditto.
	* gcc.dg/vect/pr42395.c: Ditto.
	* gcc.dg/vect/pr42604.c: Ditto.
	* gcc.dg/vect/pr46663.c: Ditto.
	* gcc.dg/vect/pr48765.c: Ditto.
	* gcc.dg/vect/pr49093.c: Ditto.
	* gcc.dg/vect/pr49352.c: Ditto.
	* gcc.dg/vect/pr52298.c: Ditto.
	* gcc.dg/vect/pr52870.c: Ditto.
	* gcc.dg/vect/pr53185.c: Ditto.
	* gcc.dg/vect/pr53773.c: Ditto.
	* gcc.dg/vect/pr56695.c: Ditto.
	* gcc.dg/vect/pr62171.c: Ditto.
	* gcc.dg/vect/pr63530.c: Ditto.
	* gcc.dg/vect/pr68339.c: Ditto.
	* gcc.dg/vect/pr71259.c: Ditto.
	* gcc.dg/vect/vect-82_64.c: Ditto.
	* gcc.dg/vect/vect-83_64.c: Ditto.
	* gcc.dg/vect/vect-debug-pr41926.c: Ditto.
	* gcc.dg/vect/vect-shift-2-big-array.c: Ditto.
	* gcc.dg/vect/vect-shift-2.c: Ditto.
	* gfortran.dg/vect/fast-math-mgrid-resid.f: Ditto.
	* gfortran.dg/vect/pr39318.f90: Ditto.
	* gfortran.dg/vect/pr45714-a.f: Ditto.
	* gfortran.dg/vect/pr45714-b.f: Ditto.
	* gfortran.dg/vect/pr46213.f90: Ditto.

From-SVN: r237745
2016-06-23 21:58:37 +02:00
Michael Meissner
2d4bb02f62 predicates.md (splat_input_operand): Rework.
[gcc]
2016-06-23  Michael Meissner  <meissner@linux.vnet.ibm.com>
	    Bill Schmidt  <wschmidt@linux.vnet.ibm.com>

	* config/rs6000/predicates.md (splat_input_operand): Rework.
	Don't allow constants, since the insns that use this predicate
	don't support constants.  Constants are handled by other insns
	that are created via combine.  During and after register
	allocation, only allow indexed or indirect addresses, and not
	general addresses.  Only allow modes supported by the hardware.
	* config/rs6000/rs6000.c (xxsplitb_constant_p): Update usage
	comment.  Move check for using VSPLTIS<x> to a common location,
	instead of doing it in two different places.

[gcc/testsuite]
2016-06-23  Michael Meissner  <meissner@linux.vnet.ibm.com>
	    Bill Schmidt  <wschmidt@linux.vnet.ibm.com>

	* gcc.target/powerpc/p9-splat-5.c: New test.


Co-Authored-By: Bill Schmidt <wschmidt@linux.vnet.ibm.com>

From-SVN: r237743
2016-06-23 19:19:09 +00:00
Jocelyn Mayer
a239d46051 driver-i386.c (host_detect_local_cpu): Set PROCESSOR_PENTIUMPRO for signature_CENTAUR_ebx family >= 9.
* config/i386/driver-i386.c (host_detect_local_cpu): Set
	PROCESSOR_PENTIUMPRO for signature_CENTAUR_ebx family >= 9.
	<case PROCESSOR_PENTIMUMPRO>: Pass c7 or nehemiah for
	signature_CENTAUR_ebx.

From-SVN: r237741
2016-06-23 20:06:43 +02:00
Uros Bizjak
f6d1b868c1 re PR tree-optimization/71488 (Wrong code for vector comparisons with ivybridge and westmere targets)
PR tree-optimization/71488
	* gcc.target/i386/i386.exp (check_effective_target_sse4): Move to ...
	* lib/target-supports.exp: ... here.
	(check_sse4_hw_available): New procedure.
	(check_effective_target_sse4_runtime): Ditto.
	* g++.dg/pr71488.C (dg-additional-options): Use -msse4 instead of
	-march=westmere for sse4_runtime targets.
	* gcc.dg/vect/vect-bool-cmp.c: Include "tree-vect.h".
	(dg-additional-options): Use for sse4_runtime targets.
	(main): Call check_vect ().
	(dg-final): Perform scan only for sse4_runtime targets.

From-SVN: r237738
2016-06-23 18:58:54 +02:00
H.J. Lu
4967753008 Apply missing changes
From-SVN: r237737
2016-06-23 09:46:46 -07:00
H.J. Lu
c05977599a i386: Access external function via GOT slot for -fno-plt
i386 psABI has been updated to clarify that R_386_GOT32X and R_386_GOT32
relocations can be used to access GOT without base register when PIC is
disabled:

https://groups.google.com/forum/#!topic/ia32-abi/awsRSvJOJfs

32-bit x86 assembler and linker from binutils 2.26.1 and 2.27 support

call/jmp *_start@GOT
cmpl $0, bar@GOT

for both normal and IFUNC functions.  We check if 32-bit x86 assembler
and linker have the fix for:

https://sourceware.org/bugzilla/show_bug.cgi?id=20244

before accessing external function via GOT slot for -fno-plt in both PIC
and non-PIC modes.

	PR target/66232
	PR target/67400
	* configure.ac (as_ix86_tls_ldm_opt): Renamed to ...
	(as_ix86_gas_32_opt): This.
	(ld_ix86_tls_ldm_opt): Renamed to ...
	(ld_ix86_gld_32_opt): This.
	(R_386_TLS_LDM reloc): Updated.
	(R_386_GOT32X reloc): New assembler/linker check.
	(HAVE_AS_IX86_GOT32X): New.  Defined to 1 if 32-bit assembler and
	linker support "jmp *_start@GOT" and "cmpl $0, bar@GOT".  Otherise,
	defined to 0.
	* config.in: Regenerated.
	* configure: Likewise.
	* config/i386/i386.c (ix86_force_load_from_GOT_p): Return
	true if HAVE_AS_IX86_GOT32X is 1 in 32-bit mode.
	(ix86_legitimate_address_p): Allow UNSPEC_GOT for -fno-plt
	if ix86_force_load_from_GOT_p returns true.
	(ix86_print_operand_address_as): Also support UNSPEC_GOT if
	ix86_force_load_from_GOT_p returns true.
	(ix86_expand_move): Generate UNSPEC_GOT in 32-bit mode to load
	the external function address via the GOT slot.
	(ix86_nopic_noplt_attribute_p): Check both TARGET_64BIT and
	HAVE_AS_IX86_GOT32X before returning false.
	(ix86_output_call_insn): Generate "%!jmp/call\t*%p0@GOT" in
	32-bit mode if ix86_nopic_noplt_attribute_p returns true.

gcc/testsuite/

	PR target/66232
	PR target/67400
	* gcc.target/i386/pr66232-14.c: New file.
	* gcc.target/i386/pr66232-15.c: Likewise.
	* gcc.target/i386/pr66232-16.c: Likewise.
	* gcc.target/i386/pr66232-17.c: Likewise.
	* gcc.target/i386/pr67400-1.c: Don't disable for ia32.  Scan for
	ia32 if R_386_GOT32X relocation is supported.
	* gcc.target/i386/pr67400-2.c: Likewise.
	* gcc.target/i386/pr67400-3.c: Likewise.
	* gcc.target/i386/pr67400-4.c: Likewise.
	* gcc.target/i386/pr67400-6.c: Likewise.
	* gcc.target/i386/pr67400-7.c: Likewise.
	* lib/target-supports.exp (check_effective_target_got32x_reloc):
	New.

From-SVN: r237736
2016-06-23 09:30:43 -07:00
Jerry DeLisle
5b0e27a724 re PR libfortran/48852 (Invalid spaces in list-directed output of complex constants)
2016-06-23  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR libgfortran/48852
	* io/write.c: Cleaned up whitespace.
	(write_d, write_e, write_f, write_es, write_en): Use new helper function
	write_float_0. (write_float_0): New helper function.
	(get_precision, select_buffer, select_string, write_float_string): New
	helper functions used in remaining float writing functions. Helper function
	write_float_string now contains code for writing to kind=4 character
	internal units.
	(write_real): Modified to establish working buffers at this level and to
	use new helper functions.
	(write_real_g0): Likewise modified.
	(write_complex): Likewise modified. Gets both float strings before
	output so that final lengths can be determined which allows right
	justifying the complex number with no intervening spaces.
	* io/write_float.def (build_float_string): Renamed from previosly
	output_float, modified to use buffers passed in from higher functions,
	builds a null terminated string of the floating point value. Character
	kind=4 code eliminated.
	(write_infnan): Likewise modified to use incoming buffers and eliminate
	kind=4 related code.
	(OUTPUT_FLOAT_FMT_G): Deleted, functionality moved into FORMAT_FLOAT.
	(FORMAT_FLOAT): Renamed macro from WRITE_FLOAT. Use build_float_string.
	(get_float_string): Renamed from write_float, uses FORMAT_FLOAT macro.
	Buffer allocation removed, now at higher level.

	PR libgfortran/48852
	* gfortran.dg/char4_iunit_1.f03: Update test.
	* gfortran.dg/f2003_io_5.f03: Update test.
	* gfortran.dg/real_const_3.f90: Update test.

From-SVN: r237735
2016-06-23 15:58:05 +00:00
Eric Botcazou
cd64be5bca * tree-inline.c (remap_decl): Preserve DECL_ORIGINAL_TYPE invariant.
From-SVN: r237734
2016-06-23 15:04:25 +00:00
Andi Kleen
277d7ee0c9 Add make autoprofiledbootstrap
Add support for profiledbootstrap with autofdo. Will be useful
to get better testing coverage of autofdo.

This requires Linux perf and autofdo to be installed, only
really for x86_64 linux on Intel so far.

Profile the whole build process with perf, then convert the file,
and pass it back to the compiler in the feedback stage.

The conversion has to be done per language, as only that knows
the name of the binary. Currently we only do it for C and C++,
as the other languages don't have enough coverage during a normal
bootstrap.

For lto1 it is also disabled, because it would only be useful during a LTO
bootstrap, but right now autofdo and LTO are not working together due to
PR66229

For common backend files always the profile output of the C++ compiler
is used. In theory multiple inputs could be merged here, but so far
that is not implemented.

The method is not friendly to partial rebuilds, as only the profile
information from the current rebuild is used. So if an error
occurs it is best to clean and restart, otherwise the code
quality may be worse.

This patch is fairly large, but most of it is auto generated from
autogen in Makefile.in. for the new stage targets.

Passes profiledbootstrap and normal bootstrap on x86_64-linux.
autoprofiledbootstrap is currently not working due to
PR70427 (but it finishes with that worked around)

The autofdo'ed compiler is ~7% faster on insn-recog.i (vs ~11% for
profiledfeedback), and ~4% faster for tramp3d-v4 (vs 10% for
profiledfeedback) on a Sandy Bridge system.

gcc/lto/:

2016-06-23  Andi Kleen  <ak@linux.intel.com>

	* Make-lang.in: Add support for autofdo (disabled for now)

gcc/cp/:

2016-06-23  Andi Kleen  <ak@linux.intel.com>

	* Make-lang.in: Add support for autofdo.

gcc/:

2016-06-23  Andi Kleen  <ak@linux.intel.com>

	* Makefile.in: Regenerate.
	* doc/install.texi: Document autoprofiledbootstrap.

/:
2016-06-23  Andi Kleen  <ak@linux.intel.com>

	* Makefile.def: Add autoprofiledbootstrap.
	* Makefile.tpl: Dito.
	* Makefile.in: Regenerate.

gcc/c/:

2016-06-23  Andi Kleen  <ak@linux.intel.com>

	* Make-lang.in: Add support for autofdo.

From-SVN: r237733
2016-06-23 14:34:16 +00:00
Andi Kleen
7f586d904d Run profile feedback tests with autofdo
Extend the existing bprob and tree-prof tests to also run with autofdo.
The test runtimes are really a bit too short for autofdo, but it's
a reasonable sanity check.

This only works natively for now.

dejagnu doesn't seem to support a wrapper for unix tests, so I had
to open code running these tests.  That should be ok due to the
native run restrictions.

gcc/testsuite/:

2016-06-23  Andi Kleen  <ak@linux.intel.com>

	* g++.dg/bprob/bprob.exp: Support autofdo.
	* g++.dg/tree-prof/tree-prof.exp: dito.
	* gcc.dg/tree-prof/tree-prof.exp: dito.
	* gcc.misc-tests/bprob.exp: dito.
	* gfortran.dg/prof/prof.exp: dito.
	* lib/profopt.exp: dito.
	* lib/target-supports.exp: Check for autofdo.

From-SVN: r237732
2016-06-23 14:34:04 +00:00
Andi Kleen
7b72d14a9f Add gcc-auto-profile script
Using autofdo is currently something difficult. It requires using the
model specific branches taken event, which differs on different CPUs.
The example shown in the manual requires a special patched version of
perf that is non standard, and also will likely not work everywhere.

This patch adds a new gcc-auto-profile script that figures out the
correct event and runs perf.

This is needed to actually make use of autofdo in a generic way
in the build system and in the test suite.

Since maintaining the script would be somewhat tedious (needs changes
every time a new CPU comes out) I auto generated it from the online
Intel event database. The script to do that is in contrib and can be
rerun.

Right now there is no test if perf works in configure. This
would vary depending on the build and target system, and since
it currently doesn't work in virtualization and needs uptodate
kernel it may often fail in common distribution build setups.

So far the script is not installed.

gcc/:
2016-06-23  Andi Kleen  <ak@linux.intel.com>

	* config/i386/gcc-auto-profile: New file.

contrib/:

2016-06-23  Andi Kleen  <ak@linux.intel.com>

	* gen_autofdo_event.py: New file to regenerate
	gcc-auto-profile.

From-SVN: r237731
2016-06-23 14:33:53 +00:00
Martin Liska
60fa7862a0 re PR middle-end/71619 (ICE: in predict_loops, at predict.c:1772 with --param=max-predicted-iterations=0)
Fix PR middle-end/71619

	PR middle-end/71619
	* predict.c (predict_loops): Revert the hunk that was removed
	in r237103.
	* gcc.dg/pr71619.c: New test.

From-SVN: r237730
2016-06-23 11:04:35 +00:00
Jakub Sejdak
a34c0db51e config.host: Add suport for arm*-*-phoenix* targets.
2016-06-23  Jakub Sejdak  <jakub.sejdak@phoesys.com>

   * config.host: Add suport for arm*-*-phoenix* targets.

From-SVN: r237729
2016-06-23 07:32:58 +00:00
Jakub Sejdak
bfdd80d44c config.gcc: Add support for arm*-*-phoenix* targets.
2016-06-23  Jakub Sejdak  <jakub.sejdak@phoesys.com>

	* config.gcc: Add support for arm*-*-phoenix* targets.
	* config/arm/t-phoenix: New.
	* config/phoenix.h: New.

From-SVN: r237728
2016-06-23 07:28:17 +00:00
Jakub Sejdak
fd6487af15 configure.ac: Disable libgcj and libgloss for Phoenix-RTOS targets.
2016-06-23  Jakub Sejdak  <jakub.sejdak@phoesys.com>

    * configure.ac: Disable libgcj and libgloss for Phoenix-RTOS targets.
    * configure: Regenerate.

From-SVN: r237727
2016-06-23 07:12:16 +00:00
GCC Administrator
cc425e3da7 Daily bump.
From-SVN: r237726
2016-06-23 00:16:18 +00:00
Uros Bizjak
cc901875eb * testsuite/ChangeLog: Whitespace fixes.
From-SVN: r237721
2016-06-23 00:13:41 +02:00
Uros Bizjak
e3d62871c3 re PR target/67400 (-fno-plt doesn't work with function pointers)
PR target/67400
	* config/i386/i386-protos.h (ix86_force_load_from_GOT_p): New.
	* config/i386/i386.c (ix86_force_load_from_GOT_p): New function.
	(ix86_legitimate_constant_p): Do not allow UNSPEC_GOTPCREL if
	ix86_force_load_from_GOT_p returns true.
	(ix86_legitimate_address_p): Allow UNSPEC_GOTPCREL if
	ix86_force_load_from_GOT_p returns true.
	(ix86_print_operand_address_as): Support UNSPEC_GOTPCREL if
	ix86_force_load_from_GOT_p returns true.
	(ix86_expand_move): Load the external function address via the
	GOT slot if ix86_force_load_from_GOT_p returns true.
	* config/i386/predicates.md (x86_64_immediate_operand): Return
	false for SYMBOL_REFs where ix86_force_load_from_GOT_p returns true.
	(x86_64_zext_immediate_operand): Ditto.

testsuite/ChangeLog:

	PR target/67400
        * gcc.target/i386/pr67400-1.c: New test.
        * gcc.target/i386/pr67400-2.c: Likewise.
        * gcc.target/i386/pr67400-3.c: Likewise.
        * gcc.target/i386/pr67400-4.c: Likewise.
        * gcc.target/i386/pr67400-5.c: Likewise.
        * gcc.target/i386/pr67400-6.c: Likewise.
        * gcc.target/i386/pr67400-7.c: Likewise.

From-SVN: r237720
2016-06-23 00:06:56 +02:00
Uros Bizjak
37c467c0a5 i386.c (ix86_expand_move): Simplify SYMBOL_REF handling.
* config/i386/i386.c (ix86_expand_move): Simplify SYMBOL_REF handling.

From-SVN: r237716
2016-06-22 20:40:21 +02:00
David Malcolm
ac81cf0b2b libcpp: Tweak to missing #include source location
This patch tweaks the error message location for missing header files.

Previously these read:

test.c:1:17: fatal error: 404.h: No such file or directory
 #include "404.h"
                 ^
compilation terminated.

With this patch, the pertinent string is underlined:

test.c:1:10: fatal error: 404.h: No such file or directory
 #include "404.h"
          ^~~~~~~
compilation terminated.

gcc/testsuite/ChangeLog:
	* c-c++-common/missing-header-1.c: New test case.
	* c-c++-common/missing-header-2.c: New test case.
	* c-c++-common/missing-header-3.c: New test case.
	* c-c++-common/missing-header-4.c: New test case.

libcpp/ChangeLog:
	* directives.c (do_include_common): Pass on "location" to
	_cpp_stack_include.
	* errors.c (cpp_diagnostic): Reimplement in terms of...
	(cpp_diagnostic_at): New function.
	(cpp_error_at): New function.
	(cpp_errno_filename): Add "loc" param and use it by using
	cpp_error_at rather than cpp_error.
	* files.c (find_file_in_dir): Add "loc" param and pass it to
	open_file_failed.
	(_cpp_find_file): Add "loc" param.  Use it to convert calls to
	cpp_error to cpp_error_at, and pass it to find_file_in_dir and
	open_file_failed.
	(read_file_guts): Add "loc" param.  Use it to convert calls to
	cpp_error to cpp_error_at.  Pass it to cpp_errno_filename.
	(read_file): Add "loc" param.  Pass it to open_file_failed and
	read_file_guts.
	(should_stack_file): Add "loc" param.  Pass it to read_file.
	(_cpp_stack_file): Add "loc" param.  Pass it to should_stack_file.
	(_cpp_stack_include): Add "loc" param.  Pass it to
	_cpp_find_file and _cpp_stack_file.
	(open_file_failed): Add "loc" param.  Pass it to
	cpp_errno_filename.
	(_cpp_fake_include): Add 0 as a source_location in call to
	_cpp_find_file.
	(_cpp_compare_file_date): Likewise.
	(cpp_push_include): Likewise for call to _cpp_stack_include.
	(cpp_push_default_include): Likewise.
	(_cpp_save_file_entries): Likewise for call to open_file_failed.
	(_cpp_has_header): Likewise for call to _cpp_find_file.
	* include/cpplib.h (cpp_errno_filename): Add source_location
	param.
	(cpp_error_at): New declaration.
	* init.c (cpp_read_main_file): Add 0 as a source_location in calls
	to _cpp_find_file and _cpp_stack_file.
	* internal.h (_cpp_find_file): Add source_location param.
	(_cpp_stack_file): Likewise.
	(_cpp_stack_include): Likewise.

From-SVN: r237715
2016-06-22 15:29:21 +00:00
David Malcolm
1a4f11c88a C FE: suggest corrections for misspelled identifiers and type names
gcc/c-family/ChangeLog:
	PR c/70339
	* c-common.h (enum lookup_name_fuzzy_kind): New enum.
	(lookup_name_fuzzy): New prototype.

gcc/c/ChangeLog:
	PR c/70339
	* c-decl.c: Include spellcheck-tree.h and gcc-rich-location.h.
	(implicit_decl_warning): When issuing warnings for implicit
	declarations, attempt to provide a suggestion via
	lookup_name_fuzzy.
	(undeclared_variable): Likewise when issuing errors.
	(lookup_name_in_scope): Likewise.
	(struct edit_distance_traits<cpp_hashnode *>): New struct.
	(best_macro_match): New typedef.
	(find_closest_macro_cpp_cb): New function.
	(lookup_name_fuzzy): New function.
	* c-parser.c: Include gcc-rich-location.h.
	(c_token_starts_typename): Split out case CPP_KEYWORD into...
	(c_keyword_starts_typename): ...this new function.
	(c_parser_declaration_or_fndef): When issuing errors about
	missing "struct" etc, add a fixit.  For other kinds of errors,
	attempt to provide a suggestion via lookup_name_fuzzy.
	(c_parser_parms_declarator): When looking ahead to detect typos in
	type names, also reject CPP_KEYWORD.
	(c_parser_parameter_declaration): When issuing errors about
	unknown type names, attempt to provide a suggestion via
	lookup_name_fuzzy.
	* c-tree.h (c_keyword_starts_typename): New prototype.

gcc/ChangeLog:
	PR c/70339
	* diagnostic-core.h (pedwarn_at_rich_loc): New prototype.
	* diagnostic.c (pedwarn_at_rich_loc): New function.
	* spellcheck.h (best_match::best_match): Add a
	"best_distance_so_far" optional parameter.
	(best_match::set_best_so_far): New method.
	(best_match::get_best_distance): New accessor.
	(best_match::get_best_candidate_length): New accessor.

gcc/testsuite/ChangeLog:
	PR c/70339
	* c-c++-common/attributes-1.c: Update dg-prune-output to include
	hint.
	* gcc.dg/diagnostic-token-ranges.c (undeclared_identifier): Update
	expected results due to builtin "nanl" now being suggested for
	"name".
	* gcc.dg/pr67580.c: Update expected messages.
	* gcc.dg/spellcheck-identifiers.c: New testcase.
	* gcc.dg/spellcheck-typenames.c: New testcase.

From-SVN: r237714
2016-06-22 15:20:41 +00:00
Nick Clifton
6f99ef82f1 dwarf2out.c (scompare_loc_descriptor): Use SCALAR_INT_MODE_P() in place of GET_MODE_CLASS() == MODE_INT...
* dwarf2out.c (scompare_loc_descriptor): Use SCALAR_INT_MODE_P() in
	place of GET_MODE_CLASS() == MODE_INT, so that partial integer
	modes are accepted as well.
	(ucompare_loc_descriptor): Likewise.
	(minmax_loc_descriptor): Likewise.
	(clz_loc_descriptor): Likewise.
	(popcount_loc_descriptor): Likewise.
	(bswap_loc_descriptor): Likewise.
	(rotate_loc_descriptor): Likewise.
	(mem_loc_descriptor): Likewise.
	(loc_descriptor): Likewise.

From-SVN: r237713
2016-06-22 15:12:39 +00:00
David Malcolm
a93eac6a84 Implement -fdiagnostics-parseable-fixits
gcc/ChangeLog:
	* common.opt (fdiagnostics-parseable-fixits): New option.
	* diagnostic.c: Include "selftest.h".
	(print_escaped_string): New function.
	(print_parseable_fixits): New function.
	(diagnostic_report_diagnostic): Call print_parseable_fixits.
	(selftest::assert_print_escaped_string): New function.
	(ASSERT_PRINT_ESCAPED_STRING_STREQ): New macro.
	(selftest::test_print_escaped_string): New function.
	(selftest::test_print_parseable_fixits_none): New function.
	(selftest::test_print_parseable_fixits_insert): New function.
	(selftest::test_print_parseable_fixits_remove): New function.
	(selftest::test_print_parseable_fixits_replace): New function.
	(selftest::diagnostic_c_tests): New function.
	* diagnostic.h (struct diagnostic_context): Add field
	"parseable_fixits_p".
	* doc/invoke.texi (Diagnostic Message Formatting Options): Add
	-fdiagnostics-parseable-fixits.
	(-fdiagnostics-parseable-fixits): New option.
	* opts.c (common_handle_option): Handle
	-fdiagnostics-parseable-fixits.
	* selftest-run-tests.c (selftest::run_tests): Call
	selftest::diagnostic_c_tests.
	* selftest.h (selftest::diagnostic_c_tests): New prototype.

gcc/testsuite/ChangeLog:
	* gcc.dg/plugin/diagnostic-test-show-locus-parseable-fixits.c: New
	file.
	* gcc.dg/plugin/plugin.exp (plugin_test_list): Add
	diagnostic-test-show-locus-parseable-fixits.c to sources for
	diagnostic_plugin_test_show_locus.c.
	* lib/gcc-defs.exp (freeform_regexps): New global.
	(dg-regexp): New function.
	(handle-dg-regexps): New function.
	* lib/gcc-dg.exp (cleanup-after-saved-dg-test): Reset
	freeform_regexps to the empty list.
	* lib/prune.exp (prune_gcc_output): Call handle-dg-regexps.

libcpp/ChangeLog:
	* include/line-map.h (fixit_hint::get_start_loc): New pure virtual
	function.
	(fixit_hint::maybe_get_end_loc): Likewise.
	(fixit_insert::get_start_loc): New function, implementing
	fixit_hint::get_start_loc.
	(fixit_insert::maybe_get_end_loc): New function, implementing
	fixit_hint::maybe_get_end_loc.
	(fixit_remove::get_start_loc): New function, implementing
	fixit_hint::get_start_loc.
	(fixit_remove::maybe_get_end_loc): New function, implementing
	fixit_hint::maybe_get_end_loc.
	(fixit_replace::get_start_loc): New function, implementing
	fixit_hint::get_start_loc.
	(fixit_replace::maybe_get_end_loc): New function, implementing
	fixit_hint::maybe_get_end_loc.

From-SVN: r237712
2016-06-22 14:42:30 +00:00
Eric Botcazou
d53c039815 * gcc.dg/guality/param-5.c (clear_stack): Tweak.
From-SVN: r237710
2016-06-22 14:35:50 +00:00
Georg-Johann Lay
e0277d6b51 re PR target/71151 ([avr] -fmerge-constants and -fdata-sections/-ffunction-sections results in string constants in .progmem.gcc_sw section)
* gcc/ChangeLog: Add pointer to PR71151 for r237536.
	* gcc/testsuite/ChangeLog: Same.

From-SVN: r237709
2016-06-22 14:29:59 +00:00
Eric Botcazou
e193b105a1 * gcc.dg/guality/param-5.c (clear_stack): Tweak.
From-SVN: r237707
2016-06-22 14:28:57 +00:00
Ilya Enkovich
49e76ff114 re PR tree-optimization/71488 (Wrong code for vector comparisons with ivybridge and westmere targets)
gcc/

	PR middle-end/71488
	* tree-vect-patterns.c (vect_recog_mask_conversion_pattern): Support
	comparison of boolean vectors.
	* tree-vect-stmts.c (vectorizable_comparison): Vectorize comparison
	of boolean vectors using bitwise operations.

gcc/testsuite/

	PR middle-end/71488
	* g++.dg/pr71488.C: New test.
	* gcc.dg/vect/vect-bool-cmp.c: New test.

From-SVN: r237706
2016-06-22 14:05:55 +00:00
Andreas Schwab
79c94ff796 aarch64-protos.h (aarch64_elf_asm_named_section): Remove declaration.
* config/aarch64/aarch64-protos.h (aarch64_elf_asm_named_section):
Remove declaration.

From-SVN: r237705
2016-06-22 13:50:23 +00:00
Eric Botcazou
951d8c8a23 * function.c (assign_parm_setup_reg): Prevent sharing in another case.
From-SVN: r237703
2016-06-22 13:13:22 +00:00
Bernd Edlinger
b60fc3bdf8 i386.c (print_reg): Emit an error message on attempt to print FLAGS_REG.
gcc:
2016-06-22  Bernd Edlinger  <bernd.edlinger@hotmail.de>

        * config/i386/i386.c (print_reg): Emit an error message on attempt to
        print FLAGS_REG.

testsuite:
2016-06-22  Bernd Edlinger  <bernd.edlinger@hotmail.de>

        * gcc.target/i386/asm-flag-7.c: New test.

From-SVN: r237702
2016-06-22 13:01:11 +00:00
Eric Botcazou
9465f1d3fc Add final newline.
From-SVN: r237701
2016-06-22 12:25:34 +00:00
Arnaud Charlet
e3de253ff0 Minor reformatting.
From-SVN: r237700
2016-06-22 13:50:48 +02:00
Arnaud Charlet
d13ecc2dc7 sem_prag.adb: Revert unwanted change in previous commit, only keep message fix.
2016-06-22  Arnaud Charlet  <charlet@adacore.com>

	* sem_prag.adb: Revert unwanted change in previous commit,
	only keep message fix.

From-SVN: r237699
2016-06-22 12:51:37 +02:00
Ed Schonberg
017d237ede sem_prag.ads (Build_Classwide_Expression): new procedure to build the expression for an inherited classwide condition...
2016-06-22  Ed Schonberg  <schonberg@adacore.com>

	* sem_prag.ads (Build_Classwide_Expression): new procedure to
	build the expression for an inherited classwide condition, and
	to validate such expressions when they apply to an inherited
	operation that is not overridden.
	* sem_prag.adb (Primitives_Mapping): new data structure to
	handle the mapping between operations of a root type and the
	corresponding overriding operations of a type extension. Used
	to construct the expression for an inherited classwide condition.
	(Update_Primitives_Mapping): add to Primitives_Mapping the links
	between primitive operations of a root type and those of a given
	type extension.
	(Build_Pragma_Check_Equivalent): use Primitives_Mapping.
	* sem_ch6.adb (New_Overloaded_Entity): Remove call to
	Collect_Iherited_Class_Wide_Conditions in GNATprove_Mode. This
	needs to be done at freeze point of the type.
	* freeze.adb (Check_Inherited_Conditions): new procedure to
	verify the legality of inherited classwide conditions. In normal
	compilation mode the procedure determines whether an inherited
	operation needs a wrapper to handle an inherited condition that
	differs from the condition of the root type.  In SPARK mode
	the routine invokes Collect_Inherited_Class_Wide_Conditions to
	produce the SPARK version of these inherited conditions.
	(Freeze_Record_Type): For a type extension, call
	Check_Inherited_Conditions.

From-SVN: r237698
2016-06-22 12:49:48 +02:00
Arnaud Charlet
497a660d21 [multiple changes]
2016-06-22  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch3.adb, sem_type.adb, sem.adb, freeze.adb, sem_util.adb,
	s-htable.adb, exp_ch11.adb, s-secsta.adb, restrict.adb, exp_disp.adb,
	sem_ch8.adb, s-tpobop.adb, exp_aggr.ads, sem_ch13.adb: Minor
	reformatting.

2016-06-22  Yannick Moy  <moy@adacore.com>

	* lib-xref-spark_specific.adb (Collect_SPARK_Xrefs): Inverse order of
	treatments so that files without compilation unit are simply skipped
	before more elaborate treatments.

2016-06-22  Bob Duff  <duff@adacore.com>

	* s-memory.ads: Minor typo fixes in comments.
	* s-memory.adb: Code cleanup.

From-SVN: r237697
2016-06-22 12:48:33 +02:00
Olivier Hainque
35484fc8b0 * vxworks-crtbe-link.spec: Removed, no longer used.
From-SVN: r237696
2016-06-22 12:46:14 +02:00
Arnaud Charlet
a9f5b1b836 Code cleanup.
From-SVN: r237695
2016-06-22 12:43:12 +02:00
Justin Squirek
194d6f3fc9 sem_ch8.adb (Push_Scope): Add a check for when the scope table is empty to assign the global variable...
2016-06-22  Justin Squirek  <squirek@adacore.com>

	* sem_ch8.adb (Push_Scope): Add a check for when the
	scope table is empty to assign the global variable
	Configuration_Component_Alignment.
	* sem.adb (Do_Analyze): Add Configuration_Component_Alignment
	to be assigned when the environment is cleaned instead of the
	default.
	* sem.ads Add a global variable Configuration_Component_Alignment
	to store the value given by pragma Component_Alignment in the
	context of a configuration file.
	* sem_prag.adb (Analyze_Pragma): Correct the case for
	Component_Alignment so that the pragma is verified and add
	comments to explain how it is applied to the scope stack.

2016-06-22  Justin Squirek  <squirek@adacore.com>

	* sprint.adb (Sprint_Node_Actual): Add check in
	the case of an N_Object_Declaration when evaluating an expression
	to properly ignore errors.

From-SVN: r237694
2016-06-22 12:42:46 +02:00
Arnaud Charlet
d1aea5ddc5 [multiple changes]
2016-06-22  Bob Duff  <duff@adacore.com>

	* g-comlin.ads (Parameter_Type): Change subtype of Last to
	Natural.
	* g-comlin.adb (Set_Parameter): Change subtype of Last to
	Natural.
	(Getopt): Check for Arg = "", and Switches /= "".
	(Internal_Initialize_Option_Scan): Check for Argument (Parser,
	Index) /= "".

2016-06-22  Gary Dismukes  <dismukes@adacore.com>

	* sem_prag.adb, sem_ch8.adb: Minor reformatting.

From-SVN: r237693
2016-06-22 12:39:31 +02:00