[m-rev.] for post-commit review: fix a problem with valid/impure_detism

Julien Fischer jfischer at opturion.com
Thu Mar 21 15:11:33 AEDT 2013

For post-commit review by Paul.


Fix a problem with the valid/impure_detism test case.

GCC was emitting warnings excess elements in structure initializers for the
above test.  The problem was that some #ifdefs were missing from the
initializers generated for MR_ProcStatic structures.  This meant that they did
not necessarily match the definition given for that structure in the runtime.

    Include the appropriate #ifdef guards for MR_DEEP_PROFILING_COVERAGE.


diff --git a/compiler/layout_out.m b/compiler/layout_out.m
index 9334428..f32a79e 100644
--- a/compiler/layout_out.m
+++ b/compiler/layout_out.m
@@ -1267,6 +1267,7 @@ output_proc_static_slot(Info, ProcStatic, !Slot, !IO) :-
     io.write_string(",", !IO),
     io.write_int(OldOutermostSlot, !IO),
     io.write_string(",", !IO),
+    io.write_string("\n#ifdef MR_DEEP_PROFILING_COVERAGE\n", !IO),
         MaybeCoveragePoints = yes({CoveragePointsSlot, NumCoveragePoints}),
         % If MR_DEEP_PROFILING_COVERAGE is not defined but
@@ -1285,6 +1286,7 @@ output_proc_static_slot(Info, ProcStatic, !Slot, !IO) :-
         output_layout_slot_addr(use_layout_macro, MangledModuleName,
             CoveragePointsDynamicSlotName, !IO),
         io.write_string("\n#endif\n", !IO),
+        io.write_string("#endif\n", !IO),
         io.write_string(" },\n", !IO)
         MaybeCoveragePoints = no,
@@ -1292,6 +1294,7 @@ output_proc_static_slot(Info, ProcStatic, !Slot, !IO) :-
         io.write_string("#ifdef MR_DEEP_PROFILING_COVERAGE_STATIC\n", !IO),
         io.write_string("NULL\n", !IO),
         io.write_string("#endif\n", !IO),
+        io.write_string("#endif\n", !IO),
         io.write_string(" },\n", !IO)
     !:Slot = !.Slot + 1.

More information about the reviews mailing list