Commit 9cbb5574 by Yannick Moy Committed by Pierre-Marie de Rodat

[Ada] Accept compilation switches -Og/-Ofast in non-GCC backends

Tools like GNATprove built as GNAT backends rely on adabkend.adb to
handle generic switches like the optimisation switches -Oxxx.
This patch adds support for -Og and -Ofast that was missing.

There is no impact on compilation.

2019-07-05  Yannick Moy  <moy@adacore.com>

gcc/ada/

	* adabkend.adb (Scan_Back_End_Switches): Accept -Og and -Ofast
	switches.

From-SVN: r273108
parent 9795b203
2019-07-05 Yannick Moy <moy@adacore.com>
* adabkend.adb (Scan_Back_End_Switches): Accept -Og and -Ofast
switches.
2019-07-05 Hristian Kirtchev <kirtchev@adacore.com>
* ali.adb: Relocate types Invocation_Construct_Record,
......
......@@ -117,9 +117,11 @@ package body Adabkend is
-- Set optimization indicators appropriately. In gcc-based GNAT this
-- is picked up from imported variables set by the gcc driver, but
-- for compilers with non-gcc back ends we do it here to allow use
-- of these switches by the front end. Allowed optimization switches
-- are -Os (optimize for size), -O[0123], and -O (same as -O1).
-- for compilers with non-gcc back ends we do it here to allow use of
-- these switches by the front end. Allowed optimization switches are
-- -Os (optimize for size), -O[0123], -O (same as -O1), -Ofast
-- (disregard strict standards compliance), and -Og (optimize
-- debugging experience).
elsif Switch_Chars (First) = 'O' then
if First = Last then
......@@ -134,10 +136,21 @@ package body Adabkend is
Optimization_Level :=
Character'Pos (Switch_Chars (Last)) - Character'Pos ('0');
-- Switch -Og is between -O0 and -O1 in GCC. Consider it like
-- -O0 for other back ends.
elsif Switch_Chars (Last) = 'g' then
Optimization_Level := 0;
else
Fail ("invalid switch: " & Switch_Chars);
end if;
-- Switch -Ofast enables -O3
elsif Switch_Chars (First + 1 .. Last) = "fast" then
Optimization_Level := 3;
else
Fail ("invalid switch: " & Switch_Chars);
end if;
......@@ -169,7 +182,7 @@ package body Adabkend is
return;
-- Special check, the back end switch -fno-inline also sets the
-- Special check, the back-end switch -fno-inline also sets the
-- front end flags to entirely inhibit all inlining. So we store it
-- and set the appropriate flags.
......@@ -206,7 +219,7 @@ package body Adabkend is
end case;
end if;
-- Ignore all other back end switches
-- Ignore all other back-end switches
elsif Is_Back_End_Switch (Switch_Chars) then
null;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment