The debug switch -gnatd.WW enables extra info when traversing library units
with Walk_Library_Items, which is used in the CodePeer and GNATprove. This
routine was crashing when trying to print info about a unit with configuration
pragmas (typically an .adc file). Now fixed.
No test, as the crash only happens when a GNATprove backend is manually called
with -gnatd.WW switch. Frontend is not affected.
2018-07-16 Piotr Trojanek <trojanek@adacore.com>
gcc/ada/
* sem.adb (Walk_Library_Items): Skip units with configuration pragmas
when printing debug info.
From-SVN: r262720
2018-07-16 Piotr Trojanek <trojanek@adacore.com>
+ * sem.adb (Walk_Library_Items): Skip units with configuration pragmas
+ when printing debug info.
+
+2018-07-16 Piotr Trojanek <trojanek@adacore.com>
+
* sem.adb (Walk_Library_Items): Reuse local constant.
(Is_Subunit_Of_Main): Turn condition to positive and flip the
IF-THEN-ELSE branches; avoid potentially ineffective assignment to the
for Unit_Num in Done'Range loop
if not Done (Unit_Num) then
- Write_Unit_Info
- (Unit_Num, Unit (Cunit (Unit_Num)), Withs => True);
+
+ -- Units with configuration pragmas (.ads files) have empty
+ -- compilation-unit nodes; skip printing info about them.
+
+ if Present (Cunit (Unit_Num)) then
+ Write_Unit_Info
+ (Unit_Num, Unit (Cunit (Unit_Num)), Withs => True);
+ end if;
end if;
end loop;