Build a shared host libiberty also for libcc1's benefit.

	* configure.ac (extra_host_libiberty_configure_flags): Add
	--enable-shared also for libcc1's benefit.
	* configure: Regenerate.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@216912 138bc75d-0d04-0410-961f-82ee72b054a4
	PR ipa/63574
	PR ipa/63664
	* g++.dg/ipa/pr63574.C: New test.
	* ipa-icf-gimple.c (func_checker::parse_labels): Missing comment added.
	(func_checker::compare_gimple_label): Simlified comparison introduced.
	* ipa-icf-gimple.h: Missing comment added.



git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@216913 138bc75d-0d04-0410-961f-82ee72b054a4
Add svn:executable property for generate_libstdcxx_web_docs.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@216914 138bc75d-0d04-0410-961f-82ee72b054a4
2014-10-30  Yannick Moy  <moy@adacore.com>

	* inline.adb (Has_Single_Return_In_GNATprove_Mode):
	Return False when return statement is inside one or more blocks.

2014-10-30  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch7.adb (Is_Subprogram_Call): Account for the case where an
	object declaration initialized by a function call that returns
	an unconstrained result may be rewritted as a renaming of the
	secondary stack result.

2014-10-30  Hristian Kirtchev  <kirtchev@adacore.com>

	* aspects.adb: Add an entry for aspect Extensions_Visible in
	table Canonical_Aspect.
	* aspects.ads: Add entry for aspect Extensions_Visible in
	tables Aspect_Argument, Aspect_Delay, Aspect_Id, Aspect_Names,
	Implementation_Defined_Aspect.
	* einfo.adb (Get_Pragma): Include pragma Extensions_Visible in
	the list of contract pragmas.
	* par-prag.adb Pragma Extensions_Visible does not require special
	processing from the parser.
	* sem_ch3.adb (Analyze_Object_Declaration): Prevent an
	implicit class-wide conversion of a formal parameter
	of a specific tagged type whose related subprogram is
	subject to pragma Extensions_Visible with value "False".
	(Check_Abstract_Overriding): Add various overriding checks
	related to pragma Extensions_Visible.
	(Derive_Subprogram):
	A subprogram subject to pragma Extensions_Visible with value
	False requires overriding if the subprogram has at least one
	controlling OUT parameter.
	(Is_EVF_Procedure): New routine.
	* sem_ch4.adb (Analyze_Type_Conversion): A formal parameter of
	a specific tagged type whose related subprogram is subject to
	pragma Extensions_Visible with value "False" cannot appear in
	a class-wide conversion.
	* sem_ch6.adb (Analyze_Subprogram_Contract): Remove
	the assertion to account for pragma Extensions_Visible.
	(Check_Overriding_Indicator): An overriding subprogram
	inherits the contact of the overridden subprogram.
	(New_Overloaded_Entity): An overriding subprogram inherits the
	contact of the overridden subprogram.
	* sem_ch13.adb (Analyze_Aspect_Specifications): Add processing
	for aspect Extensions_Visible.
	(Check_Aspect_At_Freeze_Point): Aspect Extensions_Visible does not
	require special processing at the freeze point.
	* sem_prag.adb Add an entry for pragma Extensions_Visible in
	table Sig_Flags.
	(Analyze_Pragma): Ensure that various SPARK
	pragmas lack identifiers in their arguments. Add processing for
	pragma Extensions_Visible.
	(Chain_CTC): Code reformatting.
	* sem_res.adb (Resolve_Actuals): A formal parameter of a
	specific tagged type whose related subprogram is subject to
	pragma Extensions_Visible with value "False" cannot act as an
	actual in a subprogram with value "True".
	* sem_util.adb (Add_Classification): New routine.
	(Add_Contract_Item): Account for pragma Extensions_Visible. Code
	reformatting.
	(Add_Contract_Test_Case): New routine.
	(Add_Pre_Post_Condition): New routine.
	(Extensions_Visible_Status): New routine.
	(Inherit_Subprogram_Contract): New routine.
	(Is_EVF_Expression): New routine.
	(Is_Specific_Tagged_Type): New routine.
	* sem_util.ads Add type Extensions_Visible_Mode and document all values.
	(Add_Contract_Item): Add pragma Extensions_Visible to the
	comment on usage.
	(Inherit_Subprogram_Contract): New routine.
	(Is_EVF_Expression): New routine.
	(Is_Specific_Tagged_Type): New routine.
	* sinfo.adb (Is_Inherited): New routine.
	(Set_Is_Inherited): New routine.
	* sinfo.ads Add flag Is_Inherited along with its usage in
	nodes.
	(Is_Inherited): New routine along with pragma Inline.
	(Set_Is_Inherited): New routine along with pragma Inline.
	* snames.ads-tmpl: Add predefined name "Extensions_Visible"
	and a new Pragma_Id for the pragma.



git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@216919 138bc75d-0d04-0410-961f-82ee72b054a4
2014-10-30  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_util.adb (Inherit_Subprogram_Contract):
	Add a guard to protect against enumeration literal overriding.
	* sem_ch3.adb, sem_ch4.adb, sem_res.adb, sem_util.adb:
	Minor reformatting (add SPARK RM references).

2014-10-30  Robert Dewar  <dewar@adacore.com>

	* exp_dbug.adb, opt.ads: Minor reformatting.



git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@216920 138bc75d-0d04-0410-961f-82ee72b054a4
2014-10-30  Ed Schonberg  <schonberg@adacore.com>

	* exp_util.ads, exp_util.adb (Following_Address_Clause): Modify
	Has_Following_Address_Clause so that it returns the address
	clause if present, rather than a boolean value.
	* sem_ch3.adb (Analyze_Object_Declaration): use
	Following_Address_Clause.
	* exp_ch3.adb (Expand_N_Object_Declaration): When a tagged object
	is initialized, insert tag assignment after object is frozen,
	which may be after an address clause that follows the declaration.

2014-10-30  Tristan Gingold  <gingold@adacore.com>

	* system-darwin-x86.ads, system-linux-s390x.ads, system-linux-alpha.ads,
	system-vxworks-arm.ads, system-freebsd-x86_64.ads,
	system-linux-hppa.ads, system-linux-s390.ads,
	system-solaris-sparcv9.ads, system-mingw.ads, system-linux-ia64.ads,
	system-vxworks-sparcv9.ads, system-linux-ppc.ads, system-aix64.ads,
	system-linux-sh4.ads, system-solaris-x86.ads, system-linux-x86_64.ads,
	system-linux-x86.ads, system-vxworks-ppc.ads, system-hpux.ads,
	system-linux-armel.ads, system-darwin-ppc.ads, system-solaris-sparc.ads,
	system-vxworks-m68k.ads, system-hpux-ia64.ads, system.ads,
	system-solaris-x86_64.ads, system-mingw-x86_64.ads,
	system-vxworks-mips.ads, system-linux-sparc.ads, system-freebsd-x86.ads,
	system-aix.ads, system-darwin-x86_64.ads, system-vxworks-x86.ads: Add
	pragma No_Elaboration_Code_All.

2014-10-30  Eric Botcazou  <ebotcazou@adacore.com>

	* gnat_ugn.texi: Minor improvement to -flto entry.



git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@216921 138bc75d-0d04-0410-961f-82ee72b054a4
Re-commit wrongly reverted previous change.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@216922 138bc75d-0d04-0410-961f-82ee72b054a4
Recommit wrongly reverted change.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@216923 138bc75d-0d04-0410-961f-82ee72b054a4
Recommit wrongly reverted change.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@216924 138bc75d-0d04-0410-961f-82ee72b054a4
2014-10-30  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch3.adb (Expand_N_Object_Declaration): Code cleanup.

2014-10-30  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch5.adb (Analyze_Iterator_Specification): If a subtype
	indication is provided, check properly that it covers the element
	type of of the container type.

2014-10-30  Hristian Kirtchev  <kirtchev@adacore.com>

	* g-dynhta.ads, g-dynhta.adb: Add the implementation of a load facto
	-based hash table.



git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@216926 138bc75d-0d04-0410-961f-82ee72b054a4
2014-10-30  Jan-Benedict Glaw  <jbglaw@lug-owl.de>

	* config/avr/driver-avr.c (avr_set_current_device): Remove.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@216932 138bc75d-0d04-0410-961f-82ee72b054a4
2014-10-30  Richard Biener  <rguenther@suse.de>

	* match.pd: Implement more patterns that simplify to a single value.
	* fold-const.c (fold_binary_loc): Remove them here.
	* tree-ssa-forwprop.c (simplify_bitwise_binary): Likewise.
	(fwprop_ssa_val): Remove restriction on single uses.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@216933 138bc75d-0d04-0410-961f-82ee72b054a4
        * configure.host (aix5+): New stanza.
        (aix4.3+): Do not use -G in link command.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@216935 138bc75d-0d04-0410-961f-82ee72b054a4
	* gcc.misc-tests/godump-1.c: Skip -fdump-go-spec tests for all
	platforms except s390[x] and x86_64.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@216936 138bc75d-0d04-0410-961f-82ee72b054a4
	* gcc.misc-tests/godump-1.c: Skip if ! lp64.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@216938 138bc75d-0d04-0410-961f-82ee72b054a4
2014-10-30  Richard Biener  <rguenther@suse.de>

	* genmatch.c (capture_info::walk_c_expr): Ignore capture
	uses inside TREE_TYPE ().
	* gimple-ssa-strength-reduction.c (stmt_cost): Use CASE_CONVERT.
	(find_candidates_dom_walker::before_dom_children): Likewise.
	(replace_mult_candidate): Use CONVERT_EXPR_CODE_P.
	(replace_profitable_candidates): Likewise.
	* tree-ssa-dom.c (initialize_hash_element): Canonicalize
	CONVERT_EXPR_CODE_P to CONVERT_EXPR.
	* convert.c (convert_to_integer): Use CASE_CONVERT.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@216939 138bc75d-0d04-0410-961f-82ee72b054a4
2014-10-30  Richard Biener  <rguenther@suse.de>

	* genmatch.c: Remove <map>, <utility> and <string> includes.
	Include ggc.h and hash-map.h.
	(ggc_internal_cleared_alloc): Provide stub definition.
	(ggc_free): Likewise.
	(struct capture_id_map_hasher): New traits for hash_map.
	(cid_map_t): New typedef.
	(everywhere else): Replace std::map use with cid_map_t.
	* hash-map.h (hash_map::elements): New member function.
	* Makefile.in (build/genmatch.o): Add $(HASH_TABLE_H),
	hash-map.h and $(GGC_H) as dependency.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@216940 138bc75d-0d04-0410-961f-82ee72b054a4
	* c-objc-common.c (c_tree_printer) <case 'T'>: For a typedef name,
	print the stripped version as well, if they're not the same.

	* gcc.dg/diag-aka-1.c: New test.
	* gcc.dg/pr13804-1.c: Adjust dg-error.
	* gcc.dg/redecl-14.c: Likewise.
	* gcc.dg/pr56980.c: Adjust dg-message.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@216941 138bc75d-0d04-0410-961f-82ee72b054a4
Make soft-fp symbols into compat symbols for powerpc*-*-linux*.

Continuing preparations for implementing
TARGET_ATOMIC_ASSIGN_EXPAND_FENV for powerpc*-*-linux* soft-float and
e500, this patch makes soft-fp symbols used for those targets into
compat symbols when building with glibc >= 2.19, so that they are only
in shared libgcc for existing binaries requiring them, not in static
libgcc and not available for new links using shared libgcc.  Instead,
new links will get the symbols from libc, which has exported all of
them since 2.19.  (Actually all the symbols were exported from glibc
since 2.4, but some of them were exported by glibc as compat symbols
only - because of a confusion between deliberately present soft-fp
symbols and old accidental reexports of libgcc functions from glibc
2.0 - until 2.19.)

This allows user floating-point arithmetic to interoperate properly
with the state handled by <fenv.h> functions, whether software state
(for soft-float; TLS variables that don't form a public part of
glibc's ABI, so can only be accessed directly by functions within
glibc) or hardware state (for e500 - the copies of the soft-fp
functions in glibc being built to interoperate with the hardware state
whereas those in libgcc aren't).  Previously only glibc's own
functions, and those operations done in hardware on e500, properly
worked with that state, not direct floating-point arithmetic
operations that were implemented in software.

The intended next step is the actual TARGET_ATOMIC_ASSIGN_EXPAND_FENV
implementation.

The test of glibc >= 2.19 uses the same --with-glibc-version configure
option as in the gcc/ directory (but differently implemented; in gcc/
the fallback is to examine headers to find the version, while in
libgcc/ we can use compile for the target and so use AC_COMPUTE_INT).
The TARGET_ATOMIC_ASSIGN_EXPAND_FENV implementation will also only do
anything for glibc >= 2.19, as it will depend on generating calls to
functions __atomic_feholdexcept __atomic_feclearexcept
__atomic_feupdateenv that were added in 2.19 for that purpose (even
for e500, inline code is not readily possible because of the need to
make prctl syscalls from the implementation of these functions).

In order to make symbols compat symbols, the soft-fp files need
wrapping with generated wrappers including asm .symver directives,
which need to name the symbol version in question.  This is extracted
by an awk script from an intermediate stage of generating the .map
file for linking libgcc (that .map itself depends on the objects that
go into the library, so can't be used for this purpose as that would
mean a circular dependency); the extraction is not fully general
regarding the features available in .map generation, but suffices for
the present purpose.

It would make sense for hardfp.c symbols to be compat symbols as well
(in the cases where hardfp.c gets used, the functions in question
should not be used for new links), but this isn't required for the
present purpose, which is only concerned with ensuring that where
functions that should be affected by rounding modes or exceptions get
used, those functions are actually affected by those rounding modes or
exceptions.

Tested with no regressions with cross to powerpc-linux-gnu
(soft-float); c11-atomic-exec-5.c moves from UNSUPPORTED to FAIL, as
expected, now that floating-point arithmetic in user programs uses the
same state as <fenv.h> functions, so the fenv_exceptions test passes,
but TARGET_ATOMIC_ASSIGN_EXPAND_FENV isn't yet implemented.  (For
e500, c11-atomic-exec-5.c was already FAILing, as enough operations
worked with the hardware state for the fenv_exceptions effective
target test to pass.)  Also verified that the exported symbols and
versions are unchanged, with the expected symbols becoming compat
symbols at the same versions, and that with --with-glibc-version=2.18
the symbols remain normal rather than compat symbols.

	* Makefile.in (libgcc.map.in): New target.
	(libgcc.map): Use libgcc.map.in.
	* config/t-softfp (softfp_compat): New variable to be set by
	users.
	[$(softfp_compat) = y] (softfp_map_dep, softfp_set_symver): New
	variables.
	[$(softfp_compat) = y] (softfp_file_list): Use files in the build
	directory.
	[$(softfp_compat) = y] ($(softfp_file_list)): Generate wrappers
	that use compat symbols and disable all code unless [SHARED].
	* config/t-softfp-compat: New file.
	* find-symver.awk: New file.
	* configure.ac (--with-glibc-version): New configure option.
	(ppc_fp_compat): New variable set for powerpc*-*-linux*.
	* configure: Regenerate.
	* config.host (powerpc*-*-linux*): Use ${ppc_fp_compat} for
	soft-float and e500.


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