trans.c (gnat_to_gnu): Deal with a missing library unit instead of calling gnat_to_gn...
authorEric Botcazou <ebotcazou@adacore.com>
Fri, 9 Nov 2012 11:07:30 +0000 (11:07 +0000)
committerEric Botcazou <ebotcazou@gcc.gnu.org>
Fri, 9 Nov 2012 11:07:30 +0000 (11:07 +0000)
* gcc-interface/trans.c (gnat_to_gnu) <N_Subprogram_Body_Stub>: Deal
with a missing library unit instead of calling gnat_to_gnu on Emtpy.
Remove last bits of support for SCIL nodes.  Add cases for nodes that
should only be present when annotating types.  Add default abort.

From-SVN: r193357

gcc/ada/ChangeLog
gcc/ada/gcc-interface/trans.c

index 2012814..6871576 100644 (file)
@@ -1,3 +1,10 @@
+2012-11-09  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * gcc-interface/trans.c (gnat_to_gnu) <N_Subprogram_Body_Stub>: Deal
+       with a missing library unit instead of calling gnat_to_gnu on Emtpy.
+       Remove last bits of support for SCIL nodes.  Add cases for nodes that
+       should only be present when annotating types.  Add default abort.
+
 2012-11-06  Eric Botcazou  <ebotcazou@adacore.com>
 
        * gcc-interface/Makefile.in: Revert most changes.
index 0188ddc..dbc4689 100644 (file)
@@ -6493,7 +6493,13 @@ gnat_to_gnu (Node_Id gnat_node)
     case N_Protected_Body_Stub:
     case N_Task_Body_Stub:
       /* Simply process whatever unit is being inserted.  */
-      gnu_result = gnat_to_gnu (Unit (Library_Unit (gnat_node)));
+      if (Present (Library_Unit (gnat_node)))
+       gnu_result = gnat_to_gnu (Unit (Library_Unit (gnat_node)));
+      else
+       {
+         gcc_assert (type_annotate_only);
+         gnu_result = alloc_stmt_list ();
+       }
       break;
 
     case N_Subunit:
@@ -6855,11 +6861,20 @@ gnat_to_gnu (Node_Id gnat_node)
       gnu_result = alloc_stmt_list ();
       break;
 
-    default:
-      /* SCIL nodes require no processing for GCC.  Other nodes should only
-        be present when annotating types.  */
-      gcc_assert (IN (kind, N_SCIL_Node) || type_annotate_only);
+    case N_Function_Specification:
+    case N_Procedure_Specification:
+    case N_Op_Concat:
+    case N_Component_Association:
+    case N_Protected_Body:
+    case N_Task_Body:
+      /* These nodes should only be present when annotating types.  */
+      gcc_assert (type_annotate_only);
       gnu_result = alloc_stmt_list ();
+      break;
+
+    default:
+      /* Other nodes are not supposed to reach here.  */
+      gcc_unreachable ();
     }
 
   /* If we pushed the processing of the elaboration routine, pop it back.  */