===================================================================
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
+-- Copyright (C) 1992-2010, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -141,8 +141,8 @@ package body Debug is
-- d.U
-- d.V
-- d.W Print out debugging information for Walk_Library_Items
- -- d.X Use Expression_With_Actions for short-circuited forms
- -- d.Y
+ -- d.X Use Expression_With_Actions
+ -- d.Y Do not use Expression_With_Actions
-- d.Z
-- d1 Error msgs have node numbers where possible
@@ -581,10 +581,15 @@ package body Debug is
-- d.X By default, the compiler uses an elaborate rewriting framework for
-- short-circuited forms where the right hand condition generates
- -- actions to be inserted. Use of this switch causes the compiler to
- -- use the much simpler Expression_With_Actions node for this purpose.
- -- It is a debug flag to aid transitional implementation in gigi and
- -- the back end. As soon as that works fine, we will remove this flag.
+ -- actions to be inserted. With the gcc backend, we now use the new
+ -- N_Expression_With_Actions node for this expansion, but we still use
+ -- the old method for other backends and in SCIL mode. This debug flag
+ -- forces use of the new N_Expression_With_Actions node in these other
+ -- cases and is intended for transitional use.
+
+ -- d.Y Prevents the use of the N_Expression_With_Actions node even in the
+ -- case of the gcc back end. Provided as a back up in case the new
+ -- scheme has problems.
-- d1 Error messages have node numbers where possible. Normally error
-- messages have only source locations. This option is useful when
===================================================================
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
+-- Copyright (C) 1992-2010, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -332,6 +332,33 @@ procedure Gnat1drv is
else
Suppress_Options (Overflow_Check) := True;
end if;
+
+ -- Set switch indicating if we can use N_Expression_With_Actions
+
+ -- Debug flag -gnatd.X decisively sets usage on
+
+ if Debug_Flag_Dot_XX then
+ Use_Expression_With_Actions := True;
+
+ -- Debug flag -gnatd.Y decisively sets usage off
+
+ elsif Debug_Flag_Dot_YY then
+ Use_Expression_With_Actions := False;
+
+ -- If no debug flags, usage off for AAMP, VM, SCIL cases
+
+ elsif AAMP_On_Target
+ or else VM_Target /= No_VM
+ or else Generate_SCIL
+ then
+ Use_Expression_With_Actions := False;
+
+ -- Otherwise normal gcc back end, for now still turn usage off by
+ -- default.
+
+ else
+ Use_Expression_With_Actions := False;
+ end if;
end Adjust_Global_Switches;
--------------------
===================================================================
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
+-- Copyright (C) 1992-2010, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -8829,10 +8829,10 @@ package body Exp_Ch4 is
-- of the introduction of the new variable C, which obscures the
-- structure of the test.
- -- We use this "old approach" by default for now, unless the
- -- special debug switch gnatd.X is used.
+ -- We use this "old approach" if use of N_Expression_With_Actions
+ -- is False (see description in Opt of when this is or is not set).
- if not Debug_Flag_Dot_XX then
+ if not Use_Expression_With_Actions then
Op_Var := Make_Temporary (Loc, 'C', Related_Node => N);
Insert_Action (N,
===================================================================
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
+-- Copyright (C) 1992-2010, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -453,8 +453,8 @@ package Opt is
Front_End_Setjmp_Longjmp_Exceptions;
-- GNAT
-- Set to the appropriate value depending on the default as given in
- -- system.ads (ZCX_By_Default, GCC_ZCX_Support).
- -- The C convention is there to make this variable accessible to gigi.
+ -- system.ads (ZCX_By_Default, GCC_ZCX_Support). The C convention is there
+ -- to make this variable accessible to gigi.
Exception_Tracebacks : Boolean := False;
-- GNATBIND
@@ -1239,6 +1239,13 @@ package Opt is
-- Set to True if -h (-gnath for the compiler) switch encountered
-- requesting usage information
+ Use_Expression_With_Actions : Boolean := False;
+ -- The N_Expression_With_Actions node has been introduced relatively
+ -- recently, and not all back ends are prepared to handle it yet. So
+ -- we use this flag to suppress its use during a transitional period.
+ -- Currently the default is False for all cases except the standard
+ -- GCC back end. The default can be modified using -gnatd.X/-gnatd.Y.
+
Use_Pragma_Linker_Constructor : Boolean := False;
-- GNATBIND
-- True if pragma Linker_Constructor applies to adainit