[llvm-commits] [dragonegg] r141778 - /dragonegg/trunk/src/Convert.cpp

Duncan Sands baldrick at free.fr
Wed Oct 12 08:55:36 PDT 2011


Author: baldrick
Date: Wed Oct 12 10:55:36 2011
New Revision: 141778

URL: http://llvm.org/viewvc/llvm-project?rev=141778&view=rev
Log:
There is usually a location already at this point (the
source location for the function definition).  Restore
it after outputting the basic block.

Modified:
    dragonegg/trunk/src/Convert.cpp

Modified: dragonegg/trunk/src/Convert.cpp
URL: http://llvm.org/viewvc/llvm-project/dragonegg/trunk/src/Convert.cpp?rev=141778&r1=141777&r2=141778&view=diff
==============================================================================
--- dragonegg/trunk/src/Convert.cpp (original)
+++ dragonegg/trunk/src/Convert.cpp Wed Oct 12 10:55:36 2011
@@ -1034,6 +1034,7 @@
 }
 
 void TreeToLLVM::EmitBasicBlock(basic_block bb) {
+  location_t saved_loc = input_location;
   ++NumBasicBlocks;
 
   // Avoid outputting a pointless branch at the end of the entry block.
@@ -1070,9 +1071,9 @@
   for (gimple_stmt_iterator gsi = gsi_start_bb(bb); !gsi_end_p(gsi);
        gsi_next(&gsi)) {
     gimple stmt = gsi_stmt(gsi);
+    input_location = gimple_location(stmt);
     ++NumStatements;
 
-    input_location = gimple_location(stmt);
     if (EmitDebugInfo()) {
       if (gimple_has_location(stmt)) {
         TheDebugInfo->setLocationFile(gimple_filename(stmt));
@@ -1135,7 +1136,6 @@
     }
   }
 
-  input_location = UNKNOWN_LOCATION;
   if (EmitDebugInfo()) {
     TheDebugInfo->setLocationFile("");
     TheDebugInfo->setLocationLine(0);
@@ -1147,9 +1147,13 @@
   edge_iterator ei;
   FOR_EACH_EDGE (e, ei, bb->succs)
     if (e->flags & EDGE_FALLTHRU) {
+      input_location = e->goto_locus;
+      // TODO: set the debug info location.
       Builder.CreateBr(getBasicBlock(e->dest));
       break;
     }
+
+  input_location = saved_loc;
 }
 
 Function *TreeToLLVM::EmitFunction() {





More information about the llvm-commits mailing list