Support location tracking for built-in macro tokens

When a built-in macro is expanded, the location of the token in the
epansion list is the location of the expansion point of the built-in
macro.

This patch creates a virtual location for that token instead,
effectively tracking locations of tokens resulting from built-in macro
tokens.

libcpp/
	* include/line-map.h (line_maps::builtin_location): New data
	member.
	(line_map_init): Add a new parameter to initialize the new
	line_maps::builtin_location data member.
	* line-map.c (linemap_init): Initialize the
	line_maps::builtin_location data member.
	* macro.c (builtin_macro): Create a macro map and track the token
	resulting from the expansion of a built-in macro.
gcc/
	* input.h (is_location_from_builtin_token): New function
	declaration.
	* input.c (is_location_from_builtin_token): New function
	definition.
	* toplev.c (general_init): Tell libcpp what the pre-defined
	spelling location for built-in tokens is.

Signed-off-by: Dodji Seketeli <dodji@redhat.com>

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@212637 138bc75d-0d04-0410-961f-82ee72b054a4
PR preprocessor/60723 - missing system-ness marks for macro tokens

When a system macro is expanded in a non-system file during
out-of-line preprocessing, it can happen that the preprocessor forgets
to emit line markers to express the system-ness status of tokens that
come after the expansion of the macro.

That can lead to situations where the entire non-system file can be
considered as being a system file and thus have its warnings be
discarded during the compilation of the resulting preprocessed file.

My understanding is that this is due to the preprocessor not
systematically detecting (and reporting) the change in system-ness of
tokens.

And this is what this patch does.  Each time the system-ness of a
given token is different from the previous token that was emitted by
the preprocessor, it emits a line marker for the sole purpose of
marking the new system-ness of the subsequent tokens to come.

Bootstrapped and tested on x86_64-unknown-linux-gnu against trunk.

gcc/c-family/ChangeLog:
	* c-ppoutput.c (struct print::prev_was_system_token): New data
	member.
	(init_pp_output): Initialize it.
	(maybe_print_line_1, maybe_print_line, print_line_1, print_line)
	(do_line_change): Return a flag saying if a line marker was
	emitted or not.
	(scan_translation_unit): Detect if the system-ness of the token we
	are about to emit is different from the one of the previously
	emitted token.  If so, emit a line marker.  Avoid emitting useless
	adjacent line markers.  Avoid emitting line markers for tokens
	originating from the expansion of built-in macros.
	(scan_translation_unit_directives_only): Adjust.

gcc/testsuite/ChangeLog:
	* gcc.dg/cpp/syshdr{4,5}.{c,h}: New test files.

Signed-off-by: Dodji Seketeli <dodji@redhat.com>

Signed-off-by: Dodji Seketeli <dodji@redhat.com>

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

	* a-coinho-shared.adb: Fix spurious accessibility check.



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

	* a-coinho-shared.adb, a-coinho-shared.ads: Proper structures for
	tampering checks.



git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@212642 138bc75d-0d04-0410-961f-82ee72b054a4
2014-07-16  Robert Dewar  <dewar@adacore.com>

	* a-coinho.adb, a-coinho-shared.adb, a-coinho-shared.ads: Minor
	reformatting.

2014-07-16  Ed Schonberg  <schonberg@adacore.com>

	* a-cohase.ads: Type Iterator must be controlled, so that the
	tampering bit is properly set through an iteration.
	* a-cohase.adb: Add Finalize operation for type Iterator.



git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@212643 138bc75d-0d04-0410-961f-82ee72b054a4
2014-07-16  Vadim Godunko  <godunko@adacore.com>

	* a-coinho.adb, a-coinho-shared.adb, a-coinho.ads, a-coinho-shared.ads:
	Fix parameter mode of Update_Element.



git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@212644 138bc75d-0d04-0410-961f-82ee72b054a4
2014-07-16  Vadim Godunko  <godunko@adacore.com>

	* a-coinho-shared.adb (Adjust): Create
	copy of internal shared object and element when source container
	is locked.
	(Copy): Likewise.
	(Query_Element): Likewise.
	(Update_Element): Likewise.
	(Constant_Reference): Likewise. Raise Constraint_Error on attempt
	to get reference for empty holder.
	(Reference): Likewise.

2014-07-16  Thomas Quinot  <quinot@adacore.com>

	* exp_ch4.adb (Find_Hook_Context): New subprogram, extracted
	from Process_Transient_Oject.
	* exp_ch4.ads: Ditto.
	* exp_ch9.adb (Build_Class_Wide_Master): Insert the _master
	declaration as an action on the topmost enclosing expression,
	not on a possibly conditional subexpreession.



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

	* exp_ch4.ads, exp_ch4.adb (Find_Hook_Context): Relocated to Exp_Util.
	* exp_ch7.adb (Process_Declarations): There is no need to check
	that a transient object being hooked is controlled as it would
	not have been hooked in the first place.
	* exp_ch9.adb Remove with and use clause for Exp_Ch4.
	* exp_util.adb (Find_Hook_Context): Relocated from Exp_Ch4.
	(Is_Aliased): A renaming of a transient controlled object is
	not considered aliasing when it occurs within an expression
	with actions.
	(Requires_Cleanup_Actions): There is no need to
	check that a transient object being hooked is controlled as it
	would not have been hooked in the first place.
	* exp_util.ads (Find_Hook_Context): Relocated from Exp_Ch4.

2014-07-16  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch13.adb (Insert_After_SPARK_Mode): Moved to
	the outer level of routine Analyze_Aspect_Specifications. Ensure
	that the corresponding pragmas of aspects Initial_Condition and
	Initializes are inserted after pragma SPARK_Mode.

2014-07-16  Ed Schonberg  <schonberg@adacore.com>

	* sem_attr.adb (Analyze_Attribute, case 'Update): Handle
	properly a choice list with more than one choice, where each
	is an aggregate denoting a sequence of array indices for a
	multidimentional array. For SPARK use.



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

	* sem_attr.adb (Analyze_Attribute/cases Pred
	and Succ): Always enable range check on fixed-point types if
	not suppressed for the type.

2014-07-16  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_util.adb (State_Has_Enabled_Property):
	Account for an external property denoted by an others choice.



git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@212647 138bc75d-0d04-0410-961f-82ee72b054a4
2014-07-16  Robert Dewar  <dewar@adacore.com>

	* exp_util.adb, sem_attr.adb, exp_ch4.adb, a-cohase.ads,
	a-coinho-shared.adb, a-coinho-shared.ads: Minor reformatting.

2014-07-16  Robert Dewar  <dewar@adacore.com>

	* gnat_ugn.texi: Add note that integrated
	preprocessing cannot be applied to configuration pragma files.



git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@212648 138bc75d-0d04-0410-961f-82ee72b054a4
2014-07-16  Robert Dewar  <dewar@adacore.com>

	* snames.ads-tmpl, sem_attr.adb, exp_attr.adb: Same_Storage attribute
	is renamed Has_Same_Storage.
	* gnat_rm.texi: Document missing SPARK pragmas and attributes.
	* sem_prag.adb: Minor comment fix (use LOCAL_NAME in syntax
	descriptions).



git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@212649 138bc75d-0d04-0410-961f-82ee72b054a4
2014-07-16  Bob Duff  <duff@adacore.com>

	* gnat_ugn.texi: Document need for project file
	for --incremental switch for gnat2xml.

2014-07-16  Robert Dewar  <dewar@adacore.com>

	* gnat_rm.texi: Fix example of non-packable components in packed
	records section.

2014-07-16  Robert Dewar  <dewar@adacore.com>

	* s-tpoben.adb, s-tasren.adb, s-interr.adb, s-interr-hwint.adb,
	s-shasto.adb, s-interr-vms.adb, s-interr-sigaction.adb: Avoid use of
	upper case in exception messages.



git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@212650 138bc75d-0d04-0410-961f-82ee72b054a4
2014-07-16  Robert Dewar  <dewar@adacore.com>

	* gnat_rm.texi: Document that leading/trailing asterisks are
	now implied for the pattern match string for pragma Warnings
	and Warning_As_Error.
	* sem_prag.adb (Acquire_Warning_Match_String): New procedure.
	(Analyze_Pragma, case Warning_As_Error): Call
	Acquire_Warning_Match_String.
	(Analyze_Pragma, case Warnings): Call Acquire_Warning_Match_String.



git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@212651 138bc75d-0d04-0410-961f-82ee72b054a4
2014-07-16  Adhemerval Zanella  <azanella@linux.vnet.ibm.com>

        * MAINTAINERS (Write After Approval): Add myself.



git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@212652 138bc75d-0d04-0410-961f-82ee72b054a4
2014-07-16  Robert Dewar  <dewar@adacore.com>

	* gnat_rm.texi: Document erroneous mixing of thin pointers and
	unrestricted access
	* gnat_ugn.texi: Add note on size of access types about thin
	pointers and the use of attribute Unrestricted_Access.

2014-07-16  Ed Schonberg  <schonberg@adacore.com>

	* a-cbdlli.ads, a-cbdlli.adb, a-cbhama.ads, a-cbhama.adb,
	* a-cbhase.ads, a-cbhase.adb, a-cborma.ads, a-cborma.adb,
	* a-cborse.ads, a-cborse.adb, a-cobove.ads a-cobove.adb: Add Control
	machinery to detect tampering on bounded vectors.



git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@212653 138bc75d-0d04-0410-961f-82ee72b054a4
2014-07-16  Robert Dewar  <dewar@adacore.com>

	* gnat_ugn.texi: Document binder switch -Ra.
	* gnatbind.adb (List_Closure_Display): Implement -Ra switch
	(List_Closure_All).
	* opt.ads (List_Closure_All): New switch.
	* switch-b.adb (Scan_Binder_Switches): Recognize -Ra to set
	List_Closure_All.

2014-07-16  Ben Brosgol  <brosgol@adacore.com>

	* gnat_rm.texi: Minor edits, to make case consistent in names
	of types and fields.



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

	* exp_ch7.adb (Process_Declarations): Reinstate the check on
	a hook object to ensure that the related transient declaration
	is finalizable.
	* exp_util.adb (Is_Aliased): Do not consider expresison with
	actions as a special context.
	(Requires_Cleanup_Actions): Reinstate the check on a hook object to
	ensure that the related transient declaration is finalizable.

2014-07-16  Robert Dewar  <dewar@adacore.com>

	* checks.ads, checks.adb (Allocation_Checks_Suppressed): New function.
	* snames.ads-tmpl: Add Allocation_Check to list of check names.
	* types.ads: Add Allocation_Check to list of check names.

2014-07-16  Thomas Quinot  <quinot@adacore.com>

	* sem_util.adb (Enter_Name): replace bogus test for presence of
	Corresponding_Remote_Type with correct test on Ekind.
	* sem_res.adb (Valid_Conversion): ditto; also clarify validity
	of calls to Corresponding_ Remote_Type (documentation fix).

2014-07-16  Robert Dewar  <dewar@adacore.com>

	* gnat_rm.texi: Document illegal case of Unrestricted_Access.
	* sem_attr.adb (Analyze_Access_Attribute): Set_Non_Aliased_Prefix
	where it applies.
	(Resolve_Attribute, case Access): Flag illegal Unrestricted_Access use.
	* sinfo.ads, sinfo.adb (Non_Aliased_Prefix): New flag.



git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@212655 138bc75d-0d04-0410-961f-82ee72b054a4
2014-07-16  Robert Dewar  <dewar@adacore.com>

	* sem_ch3.adb, sem_prag.adb, sem_util.adb, sem_res.adb, sem_ch13.adb:
	Minor code reorganization (use Is_Access_Type, not in Access_Kind).
	* exp_ch3.adb: Minor code reorganization, use Is_Access_Type,
	not in Access_Kind.
	* par-ch4.adb (At_Start_Of_Attribute): New function
	(P_Simple_Expression): Better msg for bad attribute prefix.
	* scans.ads: Minor reformatting.

2014-07-16  Ed Schonberg  <schonberg@adacore.com>

	* sem_attr.adb (Resolve_Attribute, case 'Update): If choice is a
	static constant, check that in belongs to the corresponding index
	subtype, to produce the proer warning when expansion is disabled.

2014-07-16  Robert Dewar  <dewar@adacore.com>

	* freeze.adb (Freeze_Entity): Warn on incompatible size/alignment.
	* gnat_ugn.texi: Document -gnatw.z and -gnatw.Z.
	* ug_words: VMS synonyms (WARNINGS=[NO]SIZE_ALIGN) for -gnatw.z/-gnatw.Z
	* usage.adb: Add lines for -gnatw.z/-gnatw.Z.
	* vms_data.ads: VMS synonyms (WARNINGS=[NO]SIZE_ALIGN) for
	-gnatw.z/-gnatw.Z
	* warnsw.adb: Set Warn_On_Size_Alignment appropriately.
	* warnsw.ads (Warn_On_Size_Alignment): New flag Minor
	reformatting.



git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@212656 138bc75d-0d04-0410-961f-82ee72b054a4
2014-07-16  Eric Botcazou  <ebotcazou@adacore.com>

	* switch-b.adb (Scan_Binder_Switches): Add missing guard.

2014-07-16  Ben Brosgol  <brosgol@adacore.com>

	* gnat_ugn.texi: Fix typo.

2014-07-16  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch4.adb (Expand_N_Case_Expression): Do not expand case
	expression if it is the specification of a subtype predicate:
	it will be expanded when the return statement is analyzed, or
	when a static predicate is transformed into a static expression
	for evaluation by the front-end.
	* sem_ch13.adb (Get_RList): If the expression for a static
	predicate is a case expression, extract the alternatives of the
	branches with a True value to create the required statically
	evaluable expression.

2014-07-16  Thomas Quinot  <quinot@adacore.com>

	* exp_prag.adb (Expand_Pragma_Check): Use the location of the
	expression, not the location of the aspect, for all generated
	code, so that in particular the call to raise_assert_failure
	gets the sloc of the associated condition.
	* exp_ch6.adb
	(Expand_Subprogram_Contract.Build_Postconditions_Procedure):
	Set an explicit End_Label on the handled sequence of statements
	for the _Postconditions procedure so that the implicit return
	statement does not erroneously get associated with code generated
	for the last condition in postconditions.

2014-07-16  Thomas Quinot  <quinot@adacore.com>

	* ug_words: Fix name of VMS synonym for -gnatw.z (SIZE_ALIGNMENT,
	not SIZE_ALIGN) and -gnatw.Z (NOSIZE_ALIGNMENT, not NOSIZE_ALIGN).
	* vms_data.ads: Add missing spaces in VMS synonyms for -gnatw.z /
	-gnatw.Z.



git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@212657 138bc75d-0d04-0410-961f-82ee72b054a4
2014-07-16  Vincent Celier  <celier@adacore.com>

	* gnatls.adb (Normalize): New function.
	(Gnatls): Get the target parameters. On targets other than VMS,
	normalize the path names in the source search path, the object search
	path and the project search path.

2014-07-16  Ed Schonberg  <schonberg@adacore.com>

	* sem_case.adb: Avoid self-checking of case expressions in
	dynamic predicates.

2014-07-16  Robert Dewar  <dewar@adacore.com>

	* gnat_rm.texi: Document effect of Suppress_Initialization on tags and
	discriminants.



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