[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