aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ada/ChangeLog6
-rw-r--r--gcc/ada/repinfo.adb18
2 files changed, 22 insertions, 2 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index e139e2d..83685b4 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,9 @@
+2018-09-26 Eric Botcazou <ebotcazou@adacore.com>
+
+ * repinfo.adb (List_Record_Layout): Be prepared for JSON output.
+ (List_Record_Info): Use the flat representation for record
+ subtypes in the JSON format.
+
2018-09-26 Justin Squirek <squirek@adacore.com>
* lib-writ.adb, lib-writ.ads (Write_With_Lines): Add
diff --git a/gcc/ada/repinfo.adb b/gcc/ada/repinfo.adb
index b2bc9ca..d5c099f 100644
--- a/gcc/ada/repinfo.adb
+++ b/gcc/ada/repinfo.adb
@@ -1358,7 +1358,8 @@ package body Repinfo is
Starting_First_Bit : Uint := Uint_0;
Prefix : String := "")
is
- Comp : Entity_Id;
+ Comp : Entity_Id;
+ First : Boolean := True;
begin
Comp := First_Component_Or_Discriminant (Ent);
@@ -1413,6 +1414,15 @@ package body Repinfo is
goto Continue;
end if;
+ if List_Representation_Info_To_JSON then
+ if First then
+ Write_Eol;
+ First := False;
+ else
+ Write_Line (",");
+ end if;
+ end if;
+
List_Component_Layout (Comp,
Starting_Position, Starting_First_Bit, Prefix);
end;
@@ -1678,7 +1688,11 @@ package body Repinfo is
Write_Line (",");
Write_Str (" ""record"": [");
- List_Structural_Record_Layout (Ent, Ent);
+ if Is_Base_Type (Ent) then
+ List_Structural_Record_Layout (Ent, Ent);
+ else
+ List_Record_Layout (Ent);
+ end if;
Write_Eol;
Write_Str (" ]");