> Bootstrapped/regtested x86_64-linux, comitted.
Not with Ada apparently, resulting in
=== acats tests ===
FAIL: c34007d
FAIL: c34007g
FAIL: c34007s
FAIL: c37213j
FAIL: c37213k
FAIL: c37213l
FAIL: ce2201g
FAIL: cxa5a03
FAIL: cxa5a04
FAIL: cxa5a06
FAIL: cxg2013
FAIL: cxg2015
=== acats Summary ===
# of expected passes 2308
# of unexpected failures 12
Reduced testcase attached, compile p.adb at -O2.
--
Eric Botcazou
WITH Q; use Q;
PROCEDURE P IS
SUBTYPE COMPONENT IS INTEGER;
TYPE DESIGNATED IS ARRAY (NATURAL RANGE <>) OF COMPONENT;
SUBTYPE SUBDESIGNATED IS DESIGNATED (IDENT_INT (5) .. IDENT_INT (7));
TYPE PARENT IS ACCESS DESIGNATED;
TYPE T IS NEW PARENT (IDENT_INT (5) .. IDENT_INT (7));
X : T := NEW SUBDESIGNATED'(OTHERS => 2);
FUNCTION IDENT (X : T) RETURN T IS
BEGIN
IF X = NULL OR ELSE
EQUAL (X'LENGTH, X'LENGTH) THEN
RETURN X;
END IF;
RETURN NEW SUBDESIGNATED;
END IDENT;
BEGIN
IF IDENT (NULL) /= NULL THEN
raise Program_Error;
END IF;
END;
package Q is
FUNCTION IDENT_INT (X : INTEGER ) RETURN INTEGER;
FUNCTION EQUAL (X, Y : INTEGER ) RETURN BOOLEAN;
end Q;