+2018-05-30 Arnaud Charlet <charlet@adacore.com>
+
+ * checks.adb (Apply_Scalar_Range_Check):
+ * sem_eval.adb (Check_Non_Static_Context, Out_Of_Range): Ignore out of
+ range values for System.Priority in CodePeer mode since the actual
+ target compiler may provide a wider range.
+
2018-05-30 Ed Schonberg <schonberg@adacore.com>
* exp_unst.adb: Search specification of main unit as well, for
-- If definitely not in range, warn
elsif Lov > Hi or else Hiv < Lo then
- Bad_Value;
+ -- Ignore out of range values for System.Priority in
+ -- CodePeer mode since the actual target compiler may
+ -- provide a wider range.
+
+ if not CodePeer_Mode
+ or else Target_Typ /= RTE (RE_Priority)
+ then
+ Bad_Value;
+ end if;
+
return;
-- Otherwise we don't know
null;
elsif Is_Out_Of_Range (N, T, Assume_Valid => True) then
- Apply_Compile_Time_Constraint_Error
- (N, "value not in range of}<<", CE_Range_Check_Failed);
+ -- Ignore out of range values for System.Priority in CodePeer
+ -- mode since the actual target compiler may provide a wider
+ -- range.
+
+ if CodePeer_Mode and then T = RTE (RE_Priority) then
+ Set_Do_Range_Check (N, False);
+ else
+ Apply_Compile_Time_Constraint_Error
+ (N, "value not in range of}<<", CE_Range_Check_Failed);
+ end if;
elsif Checks_On then
Enable_Range_Check (N);
First_Rep_Item (Parent (N)));
Rewrite (N, Make_Integer_Literal (Sloc (N), Uint_1));
- -- All cases except the special array case
+ -- All cases except the special array case.
+ -- No message if we are dealing with System.Priority values in
+ -- CodePeer mode where the target runtime may have more priorities.
- else
+ elsif not CodePeer_Mode or else Etype (N) /= RTE (RE_Priority) then
Apply_Compile_Time_Constraint_Error
(N, "value not in range of}", CE_Range_Check_Failed);
end if;