fix: valid compiler optimization may fail the test

cxa4001 may fail with "Exception not raised" when the compiler omits the
calls to To_Mapping, in accordance with 10.2.1(18/3):

  "If a library unit is declared pure, then the implementation is
  permitted to omit a call on a library-level subprogram of the library
  unit if the results are not needed after the call"

Using the result of both To_Mapping calls prevents the compiler from
omitting them.

"The corrected test will be available on the ACAA web site
(http://www.ada-auth.org/), and will be issued with the Modified Tests List
version 2.6K, 3.1DD, and 4.1GG."

gcc/testsuite/ChangeLog:

	* ada/acats/tests/cxa/cxa4001.a: Use function result.
This commit is contained in:
Marc Poulhiès 2024-05-23 11:57:54 +02:00
parent 37fafc63e7
commit e0ab5ee9be

View file

@ -185,6 +185,12 @@ begin
begin
Bad_Map := Maps.To_Mapping(From => "aa", To => "yz");
Report.Failed("Exception not raised with repeated character");
if Report.Equal (Character'Pos('y'),
Character'Pos(Maps.Value(Bad_Map, 'a'))) then
-- Use the map to avoid optimization.
Report.Comment ("Shouldn't get here.");
end if;
exception
when Translation_Error => null; -- OK
when others =>
@ -200,6 +206,12 @@ begin
begin
Bad_Map := Maps.To_Mapping("abc", "yz");
Report.Failed("Exception not raised with unequal parameter lengths");
if Report.Equal (Character'Pos('y'),
Character'Pos(Maps.Value(Bad_Map, 'a'))) then
-- Use the map to avoid optimization.
Report.Comment ("Shouldn't get here.");
end if;
exception
when Translation_Error => null; -- OK
when others =>