[flang] DATA stmt processing (part 4/4): Check & convert DATA

Implement rest of DATA statement semantics and conversion of
DATA statement initializations into static initializers of
objects in their symbol table entries.

Reviewed By: tskeith, PeteSteinfeld

Differential Revision: https://reviews.llvm.org/D82207
diff --git a/flang/lib/Semantics/semantics.cpp b/flang/lib/Semantics/semantics.cpp
index b832721..681e1dc 100644
--- a/flang/lib/Semantics/semantics.cpp
+++ b/flang/lib/Semantics/semantics.cpp
@@ -168,7 +168,11 @@
   ComputeOffsets(context);
   CheckDeclarations(context);
   StatementSemanticsPass1{context}.Walk(program);
-  StatementSemanticsPass2{context}.Walk(program);
+  StatementSemanticsPass2 pass2{context};
+  pass2.Walk(program);
+  if (!context.AnyFatalError()) {
+    pass2.CompileDataInitializationsIntoInitializers();
+  }
   return !context.AnyFatalError();
 }