[llvm-branch-commits] [llvm-tag] r101749 - in /llvm/tags/Apple/llvmCore-2326.8: ./ include/llvm/CodeGen/JITCodeEmitter.h include/llvm/CodeGen/MachineModuleInfo.h lib/CodeGen/MachineModuleInfo.cpp lib/ExecutionEngine/JIT/JITDwarfEmitter.cpp lib/ExecutionEngine/JIT/JITEmitter.cpp lib/Transforms/IPO/FunctionAttrs.cpp

Bill Wendling isanbard at gmail.com
Sun Apr 18 13:02:10 PDT 2010


Author: void
Date: Sun Apr 18 15:02:10 2010
New Revision: 101749

URL: http://llvm.org/viewvc/llvm-project?rev=101749&view=rev
Log:
Add fix for <rdar://problem/7820007>.

Added:
    llvm/tags/Apple/llvmCore-2326.8/   (props changed)
      - copied from r101748, llvm/tags/Apple/llvmCore-2326.7/
Modified:
    llvm/tags/Apple/llvmCore-2326.8/include/llvm/CodeGen/JITCodeEmitter.h
    llvm/tags/Apple/llvmCore-2326.8/include/llvm/CodeGen/MachineModuleInfo.h
    llvm/tags/Apple/llvmCore-2326.8/lib/CodeGen/MachineModuleInfo.cpp
    llvm/tags/Apple/llvmCore-2326.8/lib/ExecutionEngine/JIT/JITDwarfEmitter.cpp
    llvm/tags/Apple/llvmCore-2326.8/lib/ExecutionEngine/JIT/JITEmitter.cpp
    llvm/tags/Apple/llvmCore-2326.8/lib/Transforms/IPO/FunctionAttrs.cpp   (props changed)

Propchange: llvm/tags/Apple/llvmCore-2326.8/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Sun Apr 18 15:02:10 2010
@@ -0,0 +1,22 @@
+Debug
+Release
+Release-Asserts
+mklib
+Makefile.config
+config.log
+config.status
+cvs.out
+autom4te.cache
+configure.out
+LLVM-*
+_distcheckdir
+llvm.spec
+svn-commit.*
+*.patch
+*.patch.raw
+cscope.*
+Debug+Coverage-Asserts
+Release+Coverage-Asserts
+Debug+Coverage
+Release+Coverage
+Debug+Checks

Propchange: llvm/tags/Apple/llvmCore-2326.8/
------------------------------------------------------------------------------
--- svn:mergeinfo (added)
+++ svn:mergeinfo Sun Apr 18 15:02:10 2010
@@ -0,0 +1,3 @@
+/llvm/branches/Apple/Hermes:96832,96835,96858,96870,96876,96879
+/llvm/branches/Apple/Morbo:100162
+/llvm/trunk:98602,98604,98612,98615-98616,98675,98686,98743-98744,98773,98778,98780,98810,98835,98839,98845,98855,98862,98881,98920,98977,99032-99033,99043,99223,99263,99282-99284,99306,99319-99321,99324,99336,99378,99418,99423,99429,99455,99463,99465,99469,99484,99490,99492-99494,99537,99539,99544,99570,99575,99629-99630,99671,99692,99695,99697,99699,99722,99846,99850,99910,100149,100170,100186,101453,101686

Modified: llvm/tags/Apple/llvmCore-2326.8/include/llvm/CodeGen/JITCodeEmitter.h
URL: http://llvm.org/viewvc/llvm-project/llvm/tags/Apple/llvmCore-2326.8/include/llvm/CodeGen/JITCodeEmitter.h?rev=101749&r1=101748&r2=101749&view=diff
==============================================================================
--- llvm/tags/Apple/llvmCore-2326.8/include/llvm/CodeGen/JITCodeEmitter.h (original)
+++ llvm/tags/Apple/llvmCore-2326.8/include/llvm/CodeGen/JITCodeEmitter.h Sun Apr 18 15:02:10 2010
@@ -21,6 +21,7 @@
 #include "llvm/System/DataTypes.h"
 #include "llvm/Support/MathExtras.h"
 #include "llvm/CodeGen/MachineCodeEmitter.h"
+#include "llvm/ADT/DenseMap.h"
 
 using namespace std;
 
@@ -324,6 +325,10 @@
   /// Specifies the MachineModuleInfo object. This is used for exception handling
   /// purposes.
   virtual void setModuleInfo(MachineModuleInfo* Info) = 0;
+
+  /// getLabelLocations - Return the label locations map of the label IDs to
+  /// their address.
+  virtual DenseMap<MCSymbol*, uintptr_t> *getLabelLocations() { return 0; }
 };
 
 } // End llvm namespace

Modified: llvm/tags/Apple/llvmCore-2326.8/include/llvm/CodeGen/MachineModuleInfo.h
URL: http://llvm.org/viewvc/llvm-project/llvm/tags/Apple/llvmCore-2326.8/include/llvm/CodeGen/MachineModuleInfo.h?rev=101749&r1=101748&r2=101749&view=diff
==============================================================================
--- llvm/tags/Apple/llvmCore-2326.8/include/llvm/CodeGen/MachineModuleInfo.h (original)
+++ llvm/tags/Apple/llvmCore-2326.8/include/llvm/CodeGen/MachineModuleInfo.h Sun Apr 18 15:02:10 2010
@@ -287,7 +287,7 @@
 
   /// TidyLandingPads - Remap landing pad labels and remove any deleted landing
   /// pads.
-  void TidyLandingPads();
+  void TidyLandingPads(DenseMap<MCSymbol*, uintptr_t> *LPMap = 0);
                         
   /// getLandingPads - Return a reference to the landing pad info for the
   /// current function.

Modified: llvm/tags/Apple/llvmCore-2326.8/lib/CodeGen/MachineModuleInfo.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/tags/Apple/llvmCore-2326.8/lib/CodeGen/MachineModuleInfo.cpp?rev=101749&r1=101748&r2=101749&view=diff
==============================================================================
--- llvm/tags/Apple/llvmCore-2326.8/lib/CodeGen/MachineModuleInfo.cpp (original)
+++ llvm/tags/Apple/llvmCore-2326.8/lib/CodeGen/MachineModuleInfo.cpp Sun Apr 18 15:02:10 2010
@@ -447,10 +447,12 @@
 
 /// TidyLandingPads - Remap landing pad labels and remove any deleted landing
 /// pads.
-void MachineModuleInfo::TidyLandingPads() {
+void MachineModuleInfo::TidyLandingPads(DenseMap<MCSymbol*, uintptr_t> *LPMap) {
   for (unsigned i = 0; i != LandingPads.size(); ) {
     LandingPadInfo &LandingPad = LandingPads[i];
-    if (LandingPad.LandingPadLabel && !LandingPad.LandingPadLabel->isDefined())
+    if (LandingPad.LandingPadLabel &&
+        !LandingPad.LandingPadLabel->isDefined() &&
+        (!LPMap || (*LPMap)[LandingPad.LandingPadLabel] == 0))
       LandingPad.LandingPadLabel = 0;
 
     // Special case: we *should* emit LPs with null LP MBB. This indicates
@@ -463,7 +465,10 @@
     for (unsigned j = 0, e = LandingPads[i].BeginLabels.size(); j != e; ++j) {
       MCSymbol *BeginLabel = LandingPad.BeginLabels[j];
       MCSymbol *EndLabel = LandingPad.EndLabels[j];
-      if (BeginLabel->isDefined() && EndLabel->isDefined()) continue;
+      if ((BeginLabel->isDefined() ||
+           (LPMap && (*LPMap)[BeginLabel] != 0)) &&
+          (EndLabel->isDefined() ||
+           (LPMap && (*LPMap)[EndLabel] != 0))) continue;
       
       LandingPad.BeginLabels.erase(LandingPad.BeginLabels.begin() + j);
       LandingPad.EndLabels.erase(LandingPad.EndLabels.begin() + j);

Modified: llvm/tags/Apple/llvmCore-2326.8/lib/ExecutionEngine/JIT/JITDwarfEmitter.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/tags/Apple/llvmCore-2326.8/lib/ExecutionEngine/JIT/JITDwarfEmitter.cpp?rev=101749&r1=101748&r2=101749&view=diff
==============================================================================
--- llvm/tags/Apple/llvmCore-2326.8/lib/ExecutionEngine/JIT/JITDwarfEmitter.cpp (original)
+++ llvm/tags/Apple/llvmCore-2326.8/lib/ExecutionEngine/JIT/JITDwarfEmitter.cpp Sun Apr 18 15:02:10 2010
@@ -75,7 +75,7 @@
     MCSymbol *Label = Move.getLabel();
     
     // Throw out move if the label is invalid.
-    if (Label && !Label->isDefined())
+    if (Label && (*JCE->getLabelLocations())[Label] == 0)
       continue;
     
     intptr_t LabelPtr = 0;
@@ -199,7 +199,7 @@
   assert(MMI && "MachineModuleInfo not registered!");
 
   // Map all labels and get rid of any dead landing pads.
-  MMI->TidyLandingPads();
+  MMI->TidyLandingPads(JCE->getLabelLocations());
 
   const std::vector<GlobalVariable *> &TypeInfos = MMI->getTypeInfos();
   const std::vector<unsigned> &FilterIds = MMI->getFilterIds();
@@ -711,7 +711,7 @@
     MCSymbol *Label = Move.getLabel();
     
     // Throw out move if the label is invalid.
-    if (Label && !Label->isDefined())
+    if (Label && (*JCE->getLabelLocations())[Label] == 0)
       continue;
     
     intptr_t LabelPtr = 0;
@@ -780,7 +780,7 @@
   unsigned FinalSize = 0;
 
   // Map all labels and get rid of any dead landing pads.
-  MMI->TidyLandingPads();
+  MMI->TidyLandingPads(JCE->getLabelLocations());
 
   const std::vector<GlobalVariable *> &TypeInfos = MMI->getTypeInfos();
   const std::vector<unsigned> &FilterIds = MMI->getFilterIds();

Modified: llvm/tags/Apple/llvmCore-2326.8/lib/ExecutionEngine/JIT/JITEmitter.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/tags/Apple/llvmCore-2326.8/lib/ExecutionEngine/JIT/JITEmitter.cpp?rev=101749&r1=101748&r2=101749&view=diff
==============================================================================
--- llvm/tags/Apple/llvmCore-2326.8/lib/ExecutionEngine/JIT/JITEmitter.cpp (original)
+++ llvm/tags/Apple/llvmCore-2326.8/lib/ExecutionEngine/JIT/JITEmitter.cpp Sun Apr 18 15:02:10 2010
@@ -23,6 +23,7 @@
 #include "llvm/Analysis/DebugInfo.h"
 #include "llvm/CodeGen/JITCodeEmitter.h"
 #include "llvm/CodeGen/MachineFunction.h"
+#include "llvm/CodeGen/MachineCodeInfo.h"
 #include "llvm/CodeGen/MachineConstantPool.h"
 #include "llvm/CodeGen/MachineJumpTableInfo.h"
 #include "llvm/CodeGen/MachineModuleInfo.h"
@@ -30,8 +31,8 @@
 #include "llvm/ExecutionEngine/GenericValue.h"
 #include "llvm/ExecutionEngine/JITEventListener.h"
 #include "llvm/ExecutionEngine/JITMemoryManager.h"
-#include "llvm/CodeGen/MachineCodeInfo.h"
 #include "llvm/Target/TargetData.h"
+#include "llvm/Target/TargetInstrInfo.h"
 #include "llvm/Target/TargetJITInfo.h"
 #include "llvm/Target/TargetMachine.h"
 #include "llvm/Target/TargetOptions.h"
@@ -43,7 +44,6 @@
 #include "llvm/Support/raw_ostream.h"
 #include "llvm/System/Disassembler.h"
 #include "llvm/System/Memory.h"
-#include "llvm/Target/TargetInstrInfo.h"
 #include "llvm/ADT/DenseMap.h"
 #include "llvm/ADT/SmallPtrSet.h"
 #include "llvm/ADT/SmallVector.h"
@@ -471,6 +471,10 @@
       LabelLocations[Label] = getCurrentPCValue();
     }
 
+    virtual DenseMap<MCSymbol*, uintptr_t> *getLabelLocations() {
+      return &LabelLocations;
+    }
+
     virtual uintptr_t getLabelAddress(MCSymbol *Label) const {
       assert(LabelLocations.count(Label) && "Label not emitted!");
       return LabelLocations.find(Label)->second;

Propchange: llvm/tags/Apple/llvmCore-2326.8/lib/Transforms/IPO/FunctionAttrs.cpp
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Sun Apr 18 15:02:10 2010
@@ -1,2 +1,2 @@
 /llvm/branches/Apple/Morbo/lib/Transforms/IPO/FunctionAttrs.cpp:100162
-/llvm/trunk/lib/Transforms/IPO/FunctionAttrs.cpp:99492,99539,99699,99836,99846,99850,99910,100170,100186
+/llvm/trunk/lib/Transforms/IPO/FunctionAttrs.cpp:99492,99539,99699,99836,99846,99850,99910,100170,100186,101453,101686





More information about the llvm-branch-commits mailing list