diff options
Diffstat (limited to 'lib/CodeGen')
-rw-r--r-- | lib/CodeGen/Android.mk | 130 | ||||
-rw-r--r-- | lib/CodeGen/AsmPrinter/Android.mk | 58 | ||||
-rw-r--r-- | lib/CodeGen/AsmPrinter/AsmPrinter.cpp | 23 | ||||
-rw-r--r-- | lib/CodeGen/AsmPrinter/AsmPrinterInlineAsm.cpp | 4 | ||||
-rw-r--r-- | lib/CodeGen/SelectionDAG/Android.mk | 51 |
5 files changed, 263 insertions, 3 deletions
diff --git a/lib/CodeGen/Android.mk b/lib/CodeGen/Android.mk new file mode 100644 index 0000000..f10e2a3 --- /dev/null +++ b/lib/CodeGen/Android.mk @@ -0,0 +1,130 @@ +LOCAL_PATH:= $(call my-dir) + +codegen_SRC_FILES := \ + AggressiveAntiDepBreaker.cpp \ + AllocationOrder.cpp \ + Analysis.cpp \ + BranchFolding.cpp \ + CalcSpillWeights.cpp \ + CallingConvLower.cpp \ + CodeGen.cpp \ + CodePlacementOpt.cpp \ + CriticalAntiDepBreaker.cpp \ + DFAPacketizer.cpp \ + DeadMachineInstructionElim.cpp \ + DwarfEHPrepare.cpp \ + ELFCodeEmitter.cpp \ + ELFWriter.cpp \ + EdgeBundles.cpp \ + ExecutionDepsFix.cpp \ + ExpandISelPseudos.cpp \ + ExpandPostRAPseudos.cpp \ + GCMetadata.cpp \ + GCMetadataPrinter.cpp \ + GCStrategy.cpp \ + IfConversion.cpp \ + InlineSpiller.cpp \ + InterferenceCache.cpp \ + IntrinsicLowering.cpp \ + LLVMTargetMachine.cpp \ + LatencyPriorityQueue.cpp \ + LexicalScopes.cpp \ + LiveDebugVariables.cpp \ + LiveInterval.cpp \ + LiveIntervalAnalysis.cpp \ + LiveIntervalUnion.cpp \ + LiveRangeCalc.cpp \ + LiveRangeEdit.cpp \ + LiveStackAnalysis.cpp \ + LiveVariables.cpp \ + LocalStackSlotAllocation.cpp \ + MachineBasicBlock.cpp \ + MachineBlockFrequencyInfo.cpp \ + MachineBlockPlacement.cpp \ + MachineBranchProbabilityInfo.cpp \ + MachineCSE.cpp \ + MachineDominators.cpp \ + MachineFunction.cpp \ + MachineFunctionAnalysis.cpp \ + MachineFunctionPass.cpp \ + MachineFunctionPrinterPass.cpp \ + MachineInstr.cpp \ + MachineInstrBundle.cpp \ + MachineLICM.cpp \ + MachineLoopInfo.cpp \ + MachineLoopRanges.cpp \ + MachineModuleInfo.cpp \ + MachineModuleInfoImpls.cpp \ + MachinePassRegistry.cpp \ + MachineRegisterInfo.cpp \ + MachineSSAUpdater.cpp \ + MachineSink.cpp \ + MachineVerifier.cpp \ + ObjectCodeEmitter.cpp \ + OcamlGC.cpp \ + OptimizePHIs.cpp \ + PHIElimination.cpp \ + PHIEliminationUtils.cpp \ + Passes.cpp \ + PeepholeOptimizer.cpp \ + PostRASchedulerList.cpp \ + ProcessImplicitDefs.cpp \ + PrologEpilogInserter.cpp \ + PseudoSourceValue.cpp \ + RegAllocBasic.cpp \ + RegAllocFast.cpp \ + RegAllocGreedy.cpp \ + RegAllocPBQP.cpp \ + RegisterClassInfo.cpp \ + RegisterCoalescer.cpp \ + RegisterScavenging.cpp \ + RenderMachineFunction.cpp \ + ScheduleDAG.cpp \ + ScheduleDAGEmit.cpp \ + ScheduleDAGInstrs.cpp \ + ScheduleDAGPrinter.cpp \ + ScoreboardHazardRecognizer.cpp \ + ShadowStackGC.cpp \ + ShrinkWrapping.cpp \ + SjLjEHPrepare.cpp \ + SlotIndexes.cpp \ + SpillPlacement.cpp \ + Spiller.cpp \ + SplitKit.cpp \ + StackProtector.cpp \ + StackSlotColoring.cpp \ + StrongPHIElimination.cpp \ + TailDuplication.cpp \ + TargetFrameLoweringImpl.cpp \ + TargetInstrInfoImpl.cpp \ + TargetLoweringObjectFileImpl.cpp \ + TargetOptionsImpl.cpp \ + TwoAddressInstructionPass.cpp \ + UnreachableBlockElim.cpp \ + VirtRegMap.cpp + +# For the host +# ===================================================== +include $(CLEAR_VARS) + +LOCAL_SRC_FILES := $(codegen_SRC_FILES) +LOCAL_MODULE:= libLLVMCodeGen + +LOCAL_MODULE_TAGS := optional + +include $(LLVM_HOST_BUILD_MK) +include $(LLVM_GEN_INTRINSICS_MK) +include $(BUILD_HOST_STATIC_LIBRARY) + +# For the device +# ===================================================== +include $(CLEAR_VARS) + +LOCAL_SRC_FILES := $(codegen_SRC_FILES) +LOCAL_MODULE:= libLLVMCodeGen + +LOCAL_MODULE_TAGS := optional + +include $(LLVM_DEVICE_BUILD_MK) +include $(LLVM_GEN_INTRINSICS_MK) +include $(BUILD_STATIC_LIBRARY) diff --git a/lib/CodeGen/AsmPrinter/Android.mk b/lib/CodeGen/AsmPrinter/Android.mk new file mode 100644 index 0000000..5e22024 --- /dev/null +++ b/lib/CodeGen/AsmPrinter/Android.mk @@ -0,0 +1,58 @@ +LOCAL_PATH := $(call my-dir) + +codegen_asmprinter_SRC_FILES := \ + AsmPrinter.cpp + +# For the host +# ===================================================== +include $(CLEAR_VARS) + +LOCAL_SRC_FILES := \ + AsmPrinter.cpp \ + AsmPrinterDwarf.cpp \ + AsmPrinterInlineAsm.cpp \ + ARMException.cpp \ + DIE.cpp \ + DwarfAccelTable.cpp \ + DwarfCFIException.cpp \ + DwarfCompileUnit.cpp \ + DwarfDebug.cpp \ + DwarfException.cpp \ + OcamlGCPrinter.cpp \ + Win64Exception.cpp + +LOCAL_MODULE:= libLLVMAsmPrinter + +LOCAL_MODULE_TAGS := optional + +include $(LLVM_HOST_BUILD_MK) +include $(BUILD_HOST_STATIC_LIBRARY) + +# For the device +# ===================================================== +include $(CLEAR_VARS) + +LOCAL_SRC_FILES := \ + AsmPrinter.cpp \ + AsmPrinterDwarf.cpp \ + AsmPrinterInlineAsm.cpp + +ifeq ($(TARGET_BUILD_VARIANT),eng) +LOCAL_SRC_FILES := \ + ARMException.cpp \ + DIE.cpp \ + DwarfAccelTable.cpp \ + DwarfCFIException.cpp \ + DwarfCompileUnit.cpp \ + DwarfDebug.cpp \ + DwarfException.cpp \ + Win64Exception.cpp \ + $(LOCAL_SRC_FILES) +endif + +LOCAL_MODULE:= libLLVMAsmPrinter + +LOCAL_MODULE_TAGS := optional + +include $(LLVM_DEVICE_BUILD_MK) +include $(BUILD_STATIC_LIBRARY) diff --git a/lib/CodeGen/AsmPrinter/AsmPrinter.cpp b/lib/CodeGen/AsmPrinter/AsmPrinter.cpp index c3106f4..d5926f9 100644 --- a/lib/CodeGen/AsmPrinter/AsmPrinter.cpp +++ b/lib/CodeGen/AsmPrinter/AsmPrinter.cpp @@ -13,8 +13,10 @@ #define DEBUG_TYPE "asm-printer" #include "llvm/CodeGen/AsmPrinter.h" -#include "DwarfDebug.h" -#include "DwarfException.h" +#if !defined(ANDROID_TARGET_BUILD) || defined(ANDROID_ENGINEERING_BUILD) +# include "DwarfDebug.h" +# include "DwarfException.h" +#endif // !ANDROID_TARGET_BUILD || ANDROID_ENGINEERING_BUILD #include "llvm/Module.h" #include "llvm/CodeGen/GCMetadataPrinter.h" #include "llvm/CodeGen/MachineConstantPool.h" @@ -46,6 +48,7 @@ #include "llvm/Support/Format.h" #include "llvm/Support/MathExtras.h" #include "llvm/Support/Timer.h" +#include <ctype.h> using namespace llvm; static const char *DWARFGroupName = "DWARF Emission"; @@ -187,6 +190,7 @@ bool AsmPrinter::doInitialization(Module &M) { OutStreamer.AddBlankLine(); } +#if !defined(ANDROID_TARGET_BUILD) || defined(ANDROID_ENGINEERING_BUILD) if (MAI->doesSupportDebugInformation()) DD = new DwarfDebug(this, &M); @@ -204,6 +208,9 @@ bool AsmPrinter::doInitialization(Module &M) { DE = new Win64Exception(this); return false; } +#else + return false; +#endif // !ANDROID_TARGET_BUILD || ANDROID_ENGINEERING_BUILD llvm_unreachable("Unknown exception type."); } @@ -460,6 +467,7 @@ void AsmPrinter::EmitFunctionHeader() { } // Emit pre-function debug and/or EH information. +#if !defined(ANDROID_TARGET_BUILD) || defined(ANDROID_ENGINEERING_BUILD) if (DE) { NamedRegionTimer T(EHTimerName, DWARFGroupName, TimePassesIsEnabled); DE->BeginFunction(MF); @@ -468,6 +476,7 @@ void AsmPrinter::EmitFunctionHeader() { NamedRegionTimer T(DbgTimerName, DWARFGroupName, TimePassesIsEnabled); DD->beginFunction(MF); } +#endif // !ANDROID_TARGET_BUILD || ANDROID_ENGINEERING_BUILD } /// EmitFunctionEntryLabel - Emit the label that is the entrypoint for the @@ -667,13 +676,15 @@ void AsmPrinter::EmitFunctionBody() { if (!II->isLabel() && !II->isImplicitDef() && !II->isKill() && !II->isDebugValue()) { HasAnyRealCode = true; + ++EmittedInsts; } - +#if !defined(ANDROID_TARGET_BUILD) || defined(ANDROID_ENGINEERING_BUILD) if (ShouldPrintDebugScopes) { NamedRegionTimer T(DbgTimerName, DWARFGroupName, TimePassesIsEnabled); DD->beginInstruction(II); } +#endif // !ANDROID_TARGET_BUILD || ANDROID_ENGINEERING_BUILD if (isVerbose()) EmitComments(*II, OutStreamer.GetCommentOS()); @@ -710,10 +721,12 @@ void AsmPrinter::EmitFunctionBody() { break; } +#if !defined(ANDROID_TARGET_BUILD) || defined(ANDROID_ENGINEERING_BUILD) if (ShouldPrintDebugScopes) { NamedRegionTimer T(DbgTimerName, DWARFGroupName, TimePassesIsEnabled); DD->endInstruction(II); } +#endif // !ANDROID_TARGET_BUILD || ANDROID_ENGINEERING_BUILD } } @@ -769,6 +782,7 @@ void AsmPrinter::EmitFunctionBody() { } // Emit post-function debug information. +#if !defined(ANDROID_TARGET_BUILD) || defined(ANDROID_ENGINEERING_BUILD) if (DD) { NamedRegionTimer T(DbgTimerName, DWARFGroupName, TimePassesIsEnabled); DD->endFunction(MF); @@ -777,6 +791,7 @@ void AsmPrinter::EmitFunctionBody() { NamedRegionTimer T(EHTimerName, DWARFGroupName, TimePassesIsEnabled); DE->EndFunction(); } +#endif // !ANDROID_TARGET_BUILD || ANDROID_ENGINEERING_BUILD MMI->EndFunction(); // Print out jump tables referenced by the function. @@ -866,6 +881,7 @@ bool AsmPrinter::doFinalization(Module &M) { getObjFileLowering().emitModuleFlags(OutStreamer, ModuleFlags, Mang, TM); // Finalize debug and EH information. +#if !defined(ANDROID_TARGET_BUILD) || defined(ANDROID_ENGINEERING_BUILD) if (DE) { { NamedRegionTimer T(EHTimerName, DWARFGroupName, TimePassesIsEnabled); @@ -880,6 +896,7 @@ bool AsmPrinter::doFinalization(Module &M) { } delete DD; DD = 0; } +#endif // !ANDROID_TARGET_BUILD || ANDROID_ENGINEERING_BUILD // If the target wants to know about weak references, print them all. if (MAI->getWeakRefDirective()) { diff --git a/lib/CodeGen/AsmPrinter/AsmPrinterInlineAsm.cpp b/lib/CodeGen/AsmPrinter/AsmPrinterInlineAsm.cpp index 8eda889..89e6cd1 100644 --- a/lib/CodeGen/AsmPrinter/AsmPrinterInlineAsm.cpp +++ b/lib/CodeGen/AsmPrinter/AsmPrinterInlineAsm.cpp @@ -69,6 +69,7 @@ static void SrcMgrDiagHandler(const SMDiagnostic &Diag, void *diagInfo) { /// EmitInlineAsm - Emit a blob of inline asm to the output streamer. void AsmPrinter::EmitInlineAsm(StringRef Str, const MDNode *LocMDNode) const { +#ifndef ANDROID_TARGET_BUILD assert(!Str.empty() && "Can't emit empty inline asm block"); // Remember if the buffer is nul terminated or not so we can avoid a copy. @@ -133,12 +134,14 @@ void AsmPrinter::EmitInlineAsm(StringRef Str, const MDNode *LocMDNode) const { /*NoFinalize*/ true); if (Res && !HasDiagHandler) report_fatal_error("Error parsing inline asm\n"); +#endif // ANDROID_TARGET_BUILD } /// EmitInlineAsm - This method formats and emits the specified machine /// instruction that is an inline asm. void AsmPrinter::EmitInlineAsm(const MachineInstr *MI) const { +#ifndef ANDROID_TARGET_BUILD assert(MI->isInlineAsm() && "printInlineAsm only works on inline asms"); unsigned NumOperands = MI->getNumOperands(); @@ -366,6 +369,7 @@ void AsmPrinter::EmitInlineAsm(const MachineInstr *MI) const { if (OutStreamer.hasRawTextSupport()) OutStreamer.EmitRawText(Twine("\t")+MAI->getCommentString()+ MAI->getInlineAsmEnd()); +#endif // ANDROID_TARGET_BUILD } diff --git a/lib/CodeGen/SelectionDAG/Android.mk b/lib/CodeGen/SelectionDAG/Android.mk new file mode 100644 index 0000000..4fc5cc9 --- /dev/null +++ b/lib/CodeGen/SelectionDAG/Android.mk @@ -0,0 +1,51 @@ +LOCAL_PATH:= $(call my-dir) + +codegen_selectiondag_SRC_FILES := \ + DAGCombiner.cpp \ + FastISel.cpp \ + FunctionLoweringInfo.cpp \ + InstrEmitter.cpp \ + LegalizeDAG.cpp \ + LegalizeFloatTypes.cpp \ + LegalizeIntegerTypes.cpp \ + LegalizeTypes.cpp \ + LegalizeTypesGeneric.cpp \ + LegalizeVectorOps.cpp \ + LegalizeVectorTypes.cpp \ + ScheduleDAGFast.cpp \ + ScheduleDAGRRList.cpp \ + ScheduleDAGSDNodes.cpp \ + SelectionDAG.cpp \ + SelectionDAGBuilder.cpp \ + SelectionDAGISel.cpp \ + SelectionDAGPrinter.cpp \ + TargetLowering.cpp \ + TargetSelectionDAGInfo.cpp + +# For the host +# ===================================================== +include $(CLEAR_VARS) + +LOCAL_SRC_FILES := $(codegen_selectiondag_SRC_FILES) + +LOCAL_MODULE:= libLLVMSelectionDAG + +LOCAL_MODULE_TAGS := optional + +include $(LLVM_HOST_BUILD_MK) +include $(LLVM_GEN_INTRINSICS_MK) +include $(BUILD_HOST_STATIC_LIBRARY) + +# For the device +# ===================================================== +include $(CLEAR_VARS) + +LOCAL_SRC_FILES := $(codegen_selectiondag_SRC_FILES) + +LOCAL_MODULE:= libLLVMSelectionDAG + +LOCAL_MODULE_TAGS := optional + +include $(LLVM_DEVICE_BUILD_MK) +include $(LLVM_GEN_INTRINSICS_MK) +include $(BUILD_STATIC_LIBRARY) |