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:
parent
37fafc63e7
commit
e0ab5ee9be
1 changed files with 12 additions and 0 deletions
|
@ -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 =>
|
||||
|
|
Loading…
Add table
Reference in a new issue