re PR bootstrap/92783 (SEGV in field_byte_offset)
authorEric Botcazou <ebotcazou@gcc.gnu.org>
Tue, 3 Dec 2019 23:10:46 +0000 (23:10 +0000)
committerEric Botcazou <ebotcazou@gcc.gnu.org>
Tue, 3 Dec 2019 23:10:46 +0000 (23:10 +0000)
PR bootstrap/92783
* gcc-interface/utils.c (rest_of_record_type_compilation): Move down
the guard for the position of fields in the descriptive type.

From-SVN: r278948

gcc/ada/gcc-interface/utils.c

index 7217eeaf350814c2f55c9cb5c8b129e1e0033d44..fa98a5a96877a75bfb0c23d37afc7f88fc68f18a 100644 (file)
@@ -2246,13 +2246,6 @@ rest_of_record_type_compilation (tree record_type)
              pos = compute_related_constant (curpos, last_pos);
            }
 
-         /* If we can't compute a position, set it to zero.
-
-            ??? We really should abort here, but it's too much work
-            to get this correct for all cases.  */
-         if (!pos)
-           pos = bitsize_zero_node;
-
          /* See if this type is variable-sized and make a pointer type
             and indicate the indirection if so.  Beware that the debug
             back-end may adjust the position computed above according
@@ -2273,6 +2266,13 @@ rest_of_record_type_compilation (tree record_type)
                }
            }
 
+         /* If we can't compute a position, set it to zero.
+
+            ??? We really should abort here, but it's too much work
+            to get this correct for all cases.  */
+         if (!pos)
+           pos = bitsize_zero_node;
+
          /* Make a new field name, if necessary.  */
          if (var || align != 0)
            {