diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td index 1ac067f96e8a8..53588ebdcd1ac 100644 --- a/clang/include/clang/Driver/Options.td +++ b/clang/include/clang/Driver/Options.td @@ -9092,15 +9092,10 @@ defm include_tree_preserve_pch_path : BoolFOption<"include-tree-preserve-pch-pat NegFlag>; /// BEGIN MCCAS -#ifdef LLVM_EMABLE_MCCAS defm cas_backend : BoolFOption<"cas-backend", CodeGenOpts<"UseCASBackend">, DefaultFalse, PosFlag, NegFlag>; -#else -def cas_backend : Flag<["-"], "fcas-backend">, Group; -def no_cas_backend : Flag<["-"], "fno-cas-backend">, Group; -#endif defm cas_emit_casid_file : BoolFOption<"cas-emit-casid-file", CodeGenOpts<"EmitCASIDFile">, DefaultFalse, diff --git a/clang/lib/Frontend/CMakeLists.txt b/clang/lib/Frontend/CMakeLists.txt index 2db35e619649f..4831919f5c50a 100644 --- a/clang/lib/Frontend/CMakeLists.txt +++ b/clang/lib/Frontend/CMakeLists.txt @@ -1,18 +1,11 @@ add_subdirectory(Rewrite) -if (LLVM_ENABLE_MCCAS) - add_definitions(-DLLVM_ENABLE_MCCAS=1) - set(MCCAS_DEPS - MCCAS - ) -endif() - set(LLVM_LINK_COMPONENTS BitReader BitstreamReader CAS CASUtil - ${MCCAS_DEPS} + MCCAS Option ProfileData RemoteCachingService diff --git a/clang/lib/Frontend/CompileJobCache.cpp b/clang/lib/Frontend/CompileJobCache.cpp index a8063996b76db..6e32eb80edb87 100644 --- a/clang/lib/Frontend/CompileJobCache.cpp +++ b/clang/lib/Frontend/CompileJobCache.cpp @@ -18,9 +18,7 @@ #include "llvm/CAS/ActionCache.h" #include "llvm/CAS/CASOutputBackend.h" #include "llvm/CASUtil/Utils.h" -#if LLVM_ENABLE_MCCAS #include "llvm/MCCAS/MCCASObjectV1.h" -#endif #include "llvm/RemoteCachingService/Client.h" #include "llvm/Support/FileOutputBuffer.h" #include "llvm/Support/Path.h" @@ -824,7 +822,6 @@ Expected> ObjectStoreCachingOutputs::replayCachedResult( if (WriteOutputAsCASID) llvm::cas::writeCASIDBuffer(CAS.getID(O.Object), *Output); else if (UseCASBackend) { -#if LLVM_ENABLE_MCCAS // Replay by write out object file. // When the environmental variable is set, save the backend CASID for // analysis later. @@ -841,9 +838,6 @@ Expected> ObjectStoreCachingOutputs::replayCachedResult( auto Schema = std::make_unique(CAS); if (auto E = Schema->serializeObjectFile(*Obj, *Output)) return E; -#else - llvm_unreachable("MCCAS disabled"); -#endif } return Output->keep(); } diff --git a/clang/test/CAS/cas-backend.c b/clang/test/CAS/cas-backend.c index de7589c2dafe1..662c45b0f7212 100644 --- a/clang/test/CAS/cas-backend.c +++ b/clang/test/CAS/cas-backend.c @@ -1,4 +1,3 @@ -// REQUIRES: mccas // RUN: rm -rf %t && mkdir -p %t // RUN: llvm-cas --cas %t/cas --ingest %s > %t/casid // diff --git a/clang/test/CAS/cas-emit-casid.c b/clang/test/CAS/cas-emit-casid.c index 3b1811592d3ad..e5598a161d923 100644 --- a/clang/test/CAS/cas-emit-casid.c +++ b/clang/test/CAS/cas-emit-casid.c @@ -1,4 +1,4 @@ -// REQUIRES: aarch64-registered-target && mccas +// REQUIRES: aarch64-registered-target // RUN: rm -rf %t && mkdir -p %t // RUN: %clang -target arm64-apple-macosx12.0.0 -c -Xclang -fcas-backend -Xclang -fcas-path -Xclang %t/cas -Xclang -fcas-backend-mode=native -Xclang -fcas-emit-casid-file %s -o %t/test.o // RUN: cat %t/test.o.casid | FileCheck %s --check-prefix=NATIVE_FILENAME diff --git a/clang/test/CAS/depscan-update-mccas.c b/clang/test/CAS/depscan-update-mccas.c index 4b16f758bcdc3..c9cd52c67f6eb 100644 --- a/clang/test/CAS/depscan-update-mccas.c +++ b/clang/test/CAS/depscan-update-mccas.c @@ -1,4 +1,3 @@ -// REQUIRES: mccas // RUN: %clang -cc1depscan -o - -cc1-args -cc1 -triple \ // RUN: x86_64-apple-darwin10 -debug-info-kind=standalone -dwarf-version=4 \ // RUN: -debugger-tuning=lldb -emit-obj -fcas-backend -fcas-path %t/cas \ diff --git a/clang/test/CAS/remote-cache-incompatible-options.c b/clang/test/CAS/remote-cache-incompatible-options.c index 61c4fc4a1b197..b15a3c98b18f6 100644 --- a/clang/test/CAS/remote-cache-incompatible-options.c +++ b/clang/test/CAS/remote-cache-incompatible-options.c @@ -1,4 +1,3 @@ -// REQUIRES: mccas // RUN: not %clang_cc1 -triple x86_64-apple-macos11 -fcompilation-caching-service-path %t -fcas-backend -fcasid-output -emit-obj %s -o %t.o 2>&1 | FileCheck %s // CHECK: error: '-fcas-backend' is incompatible with remote caching backend // CHECK: error: '-fcasid-output' is incompatible with remote caching backend diff --git a/clang/test/CMakeLists.txt b/clang/test/CMakeLists.txt index 474edafb4f52c..6230a51bc5db2 100644 --- a/clang/test/CMakeLists.txt +++ b/clang/test/CMakeLists.txt @@ -150,13 +150,6 @@ if(LLVM_INCLUDE_SPIRV_TOOLS_TESTS) ) endif() -if (LLVM_ENABLE_MCCAS) - set(MCCAS_DEPS - llvm-cas-object-format - llvm-cas-dump - ) -endif() - if( NOT CLANG_BUILT_STANDALONE ) list(APPEND CLANG_TEST_DEPS llvm-config @@ -167,7 +160,7 @@ if( NOT CLANG_BUILT_STANDALONE ) llvm-as llvm-bcanalyzer llvm-cas - ${MCCAS_DEPS} + llvm-cas-dump llvm-cat llvm-cxxfilt llvm-dis diff --git a/llvm/CMakeLists.txt b/llvm/CMakeLists.txt index bd4dcc1ae431e..a86818204dd52 100644 --- a/llvm/CMakeLists.txt +++ b/llvm/CMakeLists.txt @@ -907,7 +907,6 @@ option(LLVM_CAS_ENABLE_REMOTE_CACHE "Build remote CAS service" OFF) if(LLVM_CAS_ENABLE_REMOTE_CACHE) include(FindGRPC) endif() -option(LLVM_ENABLE_MCCAS "Build MCCAS backend" OFF) set(LLVM_INSTALL_DOXYGEN_HTML_DIR "${CMAKE_INSTALL_DOCDIR}/llvm/doxygen-html" CACHE STRING "Doxygen-generated HTML documentation install directory") diff --git a/llvm/include/llvm/MCCAS/MCCASObjectV1.def b/llvm/include/llvm/MCCAS/MCCASObjectV1.def index df630e851dd35..aab14eda7012f 100644 --- a/llvm/include/llvm/MCCAS/MCCASObjectV1.def +++ b/llvm/include/llvm/MCCAS/MCCASObjectV1.def @@ -88,7 +88,6 @@ MCFRAGMENT_NODE_REF(MCRelaxableFragment, FT_Relaxable, mc:relaxable) MCFRAGMENT_NODE_REF(MCDwarfLineAddrFragment, FT_Dwarf, mc:dwarf) MCFRAGMENT_NODE_REF(MCDwarfCallFrameFragment, FT_DwarfFrame, mc:dwarf_frame) MCFRAGMENT_NODE_REF(MCCVDefRangeFragment, FT_CVDefRange, mc:cv_def_range) -MCFRAGMENT_NODE_REF(MCPseudoProbeAddrFragment, FT_PseudoProbe, mc:presudo_pro) #undef MCFRAGMENT_NODE_REF #endif /* MCFRAGMENT_NODE_REF */ diff --git a/llvm/include/llvm/MCCAS/MCCASObjectV1.h b/llvm/include/llvm/MCCAS/MCCASObjectV1.h index 6cce778a8e803..2aaf858ebd247 100644 --- a/llvm/include/llvm/MCCAS/MCCASObjectV1.h +++ b/llvm/include/llvm/MCCAS/MCCASObjectV1.h @@ -392,7 +392,7 @@ class SpecificRef : public MCObjectProxy { public: \ static constexpr StringLiteral KindString = #MCEnumIdentifier; \ static Expected \ - create(MCCASBuilder &MB, const MCFragmentName &Fragment, \ + create(MCCASBuilder &MB, const MCFragment &Fragment, \ unsigned FragmentSize, ArrayRef FragmentContents); \ static Expected get(Expected Ref) { \ auto Specific = SpecificRefT::getSpecific(std::move(Ref)); \ @@ -404,7 +404,7 @@ class SpecificRef : public MCObjectProxy { cas::ObjectRef ID) { \ return get(Schema.get(ID)); \ } \ - static std::optional Cast(MCObjectProxy Ref) { \ + static std::optional Cast(MCObjectProxy Ref) { \ auto Specific = SpecificRefT::Cast(Ref); \ if (!Specific) \ return std::nullopt; \ diff --git a/llvm/include/llvm/MCCAS/MCCASReader.h b/llvm/include/llvm/MCCAS/MCCASReader.h index 161a22fabfd63..bc06165690312 100644 --- a/llvm/include/llvm/MCCAS/MCCASReader.h +++ b/llvm/include/llvm/MCCAS/MCCASReader.h @@ -44,18 +44,6 @@ class MCSectionCAS : public MCSection { public: MCSectionCAS(StringRef Name, SectionKind K); virtual ~MCSectionCAS() {} - - void printSwitchToSection(const MCAsmInfo &MAI, const Triple &T, - raw_ostream &OS, - uint32_t Subsection) const override { - llvm_unreachable("unsupported from CAS"); - } - - bool useCodeAlign() const override { - llvm_unreachable("unsupported from CAS"); - } - - static bool classof(const MCSection *S) { return S->getVariant() == SV_CAS; } }; class MCFragmentCAS : public MCFragment { diff --git a/llvm/lib/CMakeLists.txt b/llvm/lib/CMakeLists.txt index d9c387a8a65c9..080c435e98cf9 100644 --- a/llvm/lib/CMakeLists.txt +++ b/llvm/lib/CMakeLists.txt @@ -25,9 +25,7 @@ add_subdirectory(Linker) add_subdirectory(Analysis) add_subdirectory(LTO) add_subdirectory(MC) -if (LLVM_ENABLE_MCCAS) - add_subdirectory(MCCAS) -endif() +add_subdirectory(MCCAS) add_subdirectory(MCA) add_subdirectory(ObjCopy) add_subdirectory(Object) diff --git a/llvm/lib/CodeGen/CMakeLists.txt b/llvm/lib/CodeGen/CMakeLists.txt index a47b482e748ac..f3c33db6a3fac 100644 --- a/llvm/lib/CodeGen/CMakeLists.txt +++ b/llvm/lib/CodeGen/CMakeLists.txt @@ -1,10 +1,3 @@ -if (LLVM_ENABLE_MCCAS) - add_definitions(-DLLVM_ENABLE_MCCAS=1) - set(MCCAS_DEPS - MCCAS - ) -endif() - if (DEFINED LLVM_HAVE_TF_AOT OR LLVM_HAVE_TFLITE) include(TensorFlowCompile) set(LLVM_RAEVICT_MODEL_PATH_DEFAULT "models/regalloc-eviction") @@ -286,7 +279,7 @@ add_llvm_component_library(LLVMCodeGen Core MC ObjCARC - ${MCCAS_DEPS} + MCCAS ProfileData Scalar Support diff --git a/llvm/lib/CodeGen/CodeGenTargetMachineImpl.cpp b/llvm/lib/CodeGen/CodeGenTargetMachineImpl.cpp index 3584a2ccc1a26..03aa2b84e1a5b 100644 --- a/llvm/lib/CodeGen/CodeGenTargetMachineImpl.cpp +++ b/llvm/lib/CodeGen/CodeGenTargetMachineImpl.cpp @@ -23,20 +23,18 @@ #include "llvm/MC/MCContext.h" #include "llvm/MC/MCInstPrinter.h" #include "llvm/MC/MCInstrInfo.h" +#include "llvm/MC/MCMachOCASWriter.h" #include "llvm/MC/MCObjectWriter.h" #include "llvm/MC/MCRegisterInfo.h" #include "llvm/MC/MCStreamer.h" #include "llvm/MC/MCSubtargetInfo.h" #include "llvm/MC/TargetRegistry.h" +#include "llvm/MCCAS/MCCASObjectV1.h" #include "llvm/Support/CommandLine.h" #include "llvm/Support/FormattedStream.h" #include "llvm/Target/RegisterTargetPassConfigCallback.h" #include "llvm/Target/TargetMachine.h" #include "llvm/Target/TargetOptions.h" -#if LLVM_ENABLE_MCCAS -#include "llvm/MC/MCMachOCASWriter.h" -#include "llvm/MCCAS/MCCASObjectV1.h" -#endif using namespace llvm; static cl::opt @@ -210,9 +208,7 @@ CodeGenTargetMachineImpl::createMCStreamer(raw_pwrite_stream &Out, inconvertibleErrorCode()); Triple T(getTargetTriple()); -#if LLVM_ENABLE_MCCAS // BEGIN MCCAS - bool UseCASBackend = Options.UseCASBackend; std::unique_ptr CASBackendWriter; if (Options.UseCASBackend) { std::function CASBackendWriter; -#endif // END MCCAS AsmStreamer.reset(getTarget().createMCObjectStreamer( T, Context, std::unique_ptr(MAB), - UseCASBackend ? std::move(CASBackendWriter) // MCCAS + Options.UseCASBackend ? std::move(CASBackendWriter) // MCCAS : DwoOut ? MAB->createDwoObjectWriter(Out, *DwoOut) : MAB->createObjectWriter(Out), std::unique_ptr(MCE), STI)); diff --git a/llvm/lib/MC/CMakeLists.txt b/llvm/lib/MC/CMakeLists.txt index 10d2e69f2dc24..b8927601a1994 100644 --- a/llvm/lib/MC/CMakeLists.txt +++ b/llvm/lib/MC/CMakeLists.txt @@ -1,7 +1,3 @@ -if (LLVM_ENABLE_MCCAS) - add_definitions(-DLLVM_ENABLE_MCCAS=1) -endif() - add_llvm_component_library(LLVMMC ConstantPools.cpp DXContainerPSVInfo.cpp diff --git a/llvm/lib/MC/MachOCASWriter.cpp b/llvm/lib/MC/MachOCASWriter.cpp index 23d8cd341bd80..921cddfa06539 100644 --- a/llvm/lib/MC/MachOCASWriter.cpp +++ b/llvm/lib/MC/MachOCASWriter.cpp @@ -23,6 +23,8 @@ #include "llvm/MC/MCSymbol.h" #include "llvm/MC/MCSymbolMachO.h" #include "llvm/MC/MCValue.h" +#include "llvm/MCCAS/MCCASFormatSchemaBase.h" +#include "llvm/MCCAS/MCCASObjectV1.h" #include "llvm/Support/Alignment.h" #include "llvm/Support/Allocator.h" #include "llvm/Support/Casting.h" @@ -31,10 +33,6 @@ #include "llvm/Support/raw_ostream.h" #include -#if LLVM_ENABLE_MCCAS -#include "llvm/MCCAS/MCCASFormatSchemaBase.h" -#include "llvm/MCCAS/MCCASObjectV1.h" - using namespace llvm; using namespace llvm::cas; using namespace llvm::mccasformats; @@ -124,19 +122,3 @@ std::unique_ptr llvm::createMachOCASWriter( std::move(MOTW), TT, CAS, Mode, OS, IsLittleEndian, CreateFromMcAssembler, SerializeObjectFile, ResultCallBack, CasIDOS); } -#else -std::unique_ptr llvm::createMachOCASWriter( - std::unique_ptr MOTW, const Triple &TT, - cas::ObjectStore &CAS, CASBackendMode Mode, raw_pwrite_stream &OS, - bool IsLittleEndian, - std::function - CreateFromMcAssembler, - std::function - SerializeObjectFile, - std::optional ResultCallBack, - raw_pwrite_stream *CasIDOS) { - llvm_unreachable("unsupported"); -} -#endif diff --git a/llvm/lib/MCCAS/MCCASObjectV1.cpp b/llvm/lib/MCCAS/MCCASObjectV1.cpp index 0d4861d4a5f94..f987fd8cdb42b 100644 --- a/llvm/lib/MCCAS/MCCASObjectV1.cpp +++ b/llvm/lib/MCCAS/MCCASObjectV1.cpp @@ -1532,17 +1532,19 @@ Expected AtomRef::materialize(MCCASReader &Reader, } Expected -MCAlignFragmentRef::create(MCCASBuilder &MB, const MCAlignFragment &F, +MCAlignFragmentRef::create(MCCASBuilder &MB, const MCFragment &F, unsigned FragmentSize, ArrayRef FragmentContents) { Expected B = Builder::startNode(MB.Schema, KindString); if (!B) return B.takeError(); - uint64_t Count = FragmentSize / F.getFillLen(); - if (F.hasEmitNops()) { - // Write 0 as size and use backend to emit nop. - writeVBR8(0, B->Data); + writeVBR8(FragmentContents.size(), B->Data); + B->Data.append(FragmentContents.begin(), FragmentContents.end()); + uint64_t Count = (FragmentSize - F.getFixedSize()) / F.getAlignFillLen(); + if (F.hasAlignEmitNops()) { + // Write 1 to signify that it has nops. + writeVBR8(1, B->Data); if (!MB.Asm.getBackend().writeNopData(MB.FragmentOS, Count, F.getSubtargetInfo())) report_fatal_error("unable to write nop sequence of " + Twine(Count) + @@ -1550,25 +1552,39 @@ MCAlignFragmentRef::create(MCCASBuilder &MB, const MCAlignFragment &F, B->Data.append(MB.FragmentData); return get(B->build()); } + // Write 0 to signify that it has nops. + writeVBR8(0, B->Data); writeVBR8(Count, B->Data); - writeVBR8(F.getFill(), B->Data); - writeVBR8(F.getFillLen(), B->Data); + writeVBR8(F.getAlignFill(), B->Data); + writeVBR8(F.getAlignFillLen(), B->Data); return get(B->build()); } Expected MCAlignFragmentRef::materialize(MCCASReader &Reader, - raw_ostream *Stream) const { - uint64_t Count; + raw_ostream *Stream) const + { + uint64_t Count, FragContentSize, HasNops; auto Remaining = getData(); auto Endian = Reader.getEndian(); - if (auto E = consumeVBR8(Remaining, Count)) + if (auto E = consumeVBR8(Remaining, FragContentSize)) + return std::move(E); + + *Stream << Remaining.substr(0, FragContentSize); + + Remaining = Remaining.drop_front(FragContentSize); + + if (auto E = consumeVBR8(Remaining, HasNops)) return std::move(E); // hasEmitNops. - if (!Count) { + if (HasNops) { *Stream << Remaining; - return Remaining.size(); + return Remaining.size() + FragContentSize; } + + if (auto E = consumeVBR8(Remaining, Count)) + return std::move(E); + int64_t Value; unsigned ValueSize; if (auto E = consumeVBR8(Remaining, Value)) @@ -1594,12 +1610,13 @@ Expected MCAlignFragmentRef::materialize(MCCASReader &Reader, break; } } - return Count * ValueSize; + return (Count * ValueSize) + FragContentSize; } -Expected MCBoundaryAlignFragmentRef::create( - MCCASBuilder &MB, const MCBoundaryAlignFragment &F, unsigned FragmentSize, - ArrayRef FragmentContents) { +Expected +MCBoundaryAlignFragmentRef::create(MCCASBuilder &MB, const MCFragment &F, + unsigned FragmentSize, + ArrayRef FragmentContents) { Expected B = Builder::startNode(MB.Schema, KindString); if (!B) return B.takeError(); @@ -1618,9 +1635,10 @@ MCBoundaryAlignFragmentRef::materialize(MCCASReader &Reader, return getData().size(); } -Expected MCCVInlineLineTableFragmentRef::create( - MCCASBuilder &MB, const MCCVInlineLineTableFragment &F, - unsigned FragmentSize, ArrayRef FragmentContents) { +Expected +MCCVInlineLineTableFragmentRef::create(MCCASBuilder &MB, const MCFragment &F, + unsigned FragmentSize, + ArrayRef FragmentContents) { Expected B = Builder::startNode(MB.Schema, KindString); if (!B) return B.takeError(); @@ -1636,15 +1654,16 @@ MCCVInlineLineTableFragmentRef::materialize(MCCASReader &Reader, } Expected -MCFillFragmentRef::create(MCCASBuilder &MB, const MCFillFragment &F, +MCFillFragmentRef::create(MCCASBuilder &MB, const MCFragment &F, unsigned FragmentSize, ArrayRef FragmentContents) { + auto *FillFrag = dyn_cast(&F); Expected B = Builder::startNode(MB.Schema, KindString); if (!B) return B.takeError(); writeVBR8(FragmentSize, B->Data); - writeVBR8(F.getValue(), B->Data); - writeVBR8(F.getValueSize(), B->Data); + writeVBR8(FillFrag->getValue(), B->Data); + writeVBR8(FillFrag->getValueSize(), B->Data); return get(B->build()); } @@ -1686,7 +1705,7 @@ Expected MCFillFragmentRef::materialize(MCCASReader &Reader, } Expected -MCLEBFragmentRef::create(MCCASBuilder &MB, const MCLEBFragment &F, +MCLEBFragmentRef::create(MCCASBuilder &MB, const MCFragment &F, unsigned FragmentSize, ArrayRef FragmentContents) { Expected B = Builder::startNode(MB.Schema, KindString); @@ -1703,14 +1722,15 @@ Expected MCLEBFragmentRef::materialize(MCCASReader &Reader, } Expected -MCNopsFragmentRef::create(MCCASBuilder &MB, const MCNopsFragment &F, +MCNopsFragmentRef::create(MCCASBuilder &MB, const MCFragment &F, unsigned FragmentSize, ArrayRef FragmentContents) { + auto *NopsFrag = dyn_cast(&F); Expected B = Builder::startNode(MB.Schema, KindString); if (!B) return B.takeError(); - int64_t NumBytes = F.getNumBytes(); - int64_t ControlledNopLength = F.getControlledNopLength(); + int64_t NumBytes = NopsFrag->getNumBytes(); + int64_t ControlledNopLength = NopsFrag->getControlledNopLength(); int64_t MaximumNopLength = MB.Asm.getBackend().getMaximumNopSize(*F.getSubtargetInfo()); if (ControlledNopLength > MaximumNopLength) @@ -1739,14 +1759,15 @@ Expected MCNopsFragmentRef::materialize(MCCASReader &Reader, } Expected -MCOrgFragmentRef::create(MCCASBuilder &MB, const MCOrgFragment &F, +MCOrgFragmentRef::create(MCCASBuilder &MB, const MCFragment &F, unsigned FragmentSize, ArrayRef FragmentContents) { + auto *OrgFrag = dyn_cast(&F); Expected B = Builder::startNode(MB.Schema, KindString); if (!B) return B.takeError(); writeVBR8(FragmentSize, B->Data); - writeVBR8((char)F.getValue(), B->Data); + writeVBR8((char)OrgFrag->getValue(), B->Data); return get(B->build()); } @@ -1757,13 +1778,14 @@ Expected MCOrgFragmentRef::materialize(MCCASReader &Reader, } Expected -MCSymbolIdFragmentRef::create(MCCASBuilder &MB, const MCSymbolIdFragment &F, +MCSymbolIdFragmentRef::create(MCCASBuilder &MB, const MCFragment &F, unsigned FragmentSize, ArrayRef FragmentContents) { + auto *SymbolIDFrag = dyn_cast(&F); Expected B = Builder::startNode(MB.Schema, KindString); if (!B) return B.takeError(); - writeVBR8(F.getSymbol()->getIndex(), B->Data); + writeVBR8(SymbolIDFrag->getSymbol()->getIndex(), B->Data); return get(B->build()); } @@ -1776,7 +1798,7 @@ MCSymbolIdFragmentRef::materialize(MCCASReader &Reader, #define MCFRAGMENT_NODE_REF(MCFragmentName, MCEnumName, MCEnumIdentifier) \ Expected MCFragmentName##Ref::create( \ - MCCASBuilder &MB, const MCFragmentName &F, unsigned FragmentSize, \ + MCCASBuilder &MB, const MCFragment &F, unsigned FragmentSize, \ ArrayRef FragmentContents) { \ Expected B = Builder::startNode(MB.Schema, KindString); \ if (!B) \ @@ -1849,8 +1871,7 @@ Error MCCASBuilder::buildFragment(const MCFragment &F, unsigned Size, switch (F.getKind()) { #define MCFRAGMENT_NODE_REF(MCFragmentName, MCEnumName, MCEnumIdentifier) \ case MCFragment::MCEnumName: { \ - const MCFragmentName &SF = cast(F); \ - auto FN = MCFragmentName##Ref::create(*this, SF, Size, FragmentContents); \ + auto FN = MCFragmentName##Ref::create(*this, F, Size, FragmentContents); \ if (!FN) \ return FN.takeError(); \ addNode(*FN); \ @@ -1886,8 +1907,14 @@ Error MCDataFragmentMerger::tryMerge(const MCFragment &F, unsigned Size, bool IsSameAtom = Builder.getCurrentAtom() == F.getAtom(); bool Oversized = CurrentSize + Size > MCDataMergeThreshold; // TODO: Try merge align fragment? - bool IsMergeableFragment = - isa(F) || isa(F); + bool IsMergeableFragment = F.getKind() == MCFragment::FT_Relaxable || + F.getKind() == MCFragment::FT_Data || + F.getKind() == MCFragment::FT_Align || + F.getKind() == MCFragment::FT_Dwarf || + F.getKind() == MCFragment::FT_DwarfFrame || + F.getKind() == MCFragment::FT_LEB || + F.getKind() == MCFragment::FT_CVInlineLines || + F.getKind() == MCFragment::FT_CVDefRange; // If not the same atom, flush merge candidate and return false. if (!IsSameAtom || !IsMergeableFragment || Oversized) { if (auto E = emitMergedFragments()) @@ -1919,11 +1946,16 @@ Error MCDataFragmentMerger::tryMerge(const MCFragment &F, unsigned Size, return Error::success(); } -static Error writeAlignFragment(MCCASBuilder &Builder, - const MCAlignFragment &AF, raw_ostream &OS, - unsigned FragmentSize) { - uint64_t Count = FragmentSize / AF.getFillLen(); - if (AF.hasEmitNops()) { +static Error writeAlignFragment(MCCASBuilder &Builder, const MCFragment &AF, + raw_ostream &OS, unsigned FragmentSize, + bool WriteFragmentContents = true) { + // Do not always write the contents of the FT_Align fragment into the OS, this + // is because that data can contain addend values as well and is undesirable + // when creating AlignFragment CAS Objects. + if (WriteFragmentContents) + OS << StringRef(AF.getContents().data(), AF.getContents().size()); + uint64_t Count = (FragmentSize - AF.getFixedSize()) / AF.getAlignFillLen(); + if (AF.hasAlignEmitNops()) { if (!Builder.Asm.getBackend().writeNopData(OS, Count, AF.getSubtargetInfo())) return createStringError(inconvertibleErrorCode(), @@ -1934,20 +1966,20 @@ static Error writeAlignFragment(MCCASBuilder &Builder, auto Endian = Builder.ObjectWriter.Target.isLittleEndian() ? endianness::little : endianness::big; for (uint64_t I = 0; I != Count; ++I) { - switch (AF.getFillLen()) { + switch (AF.getAlignFillLen()) { default: llvm_unreachable("Invalid size!"); case 1: - OS << char(AF.getFill()); + OS << char(AF.getAlignFill()); break; case 2: - support::endian::write(OS, AF.getFill(), Endian); + support::endian::write(OS, AF.getAlignFill(), Endian); break; case 4: - support::endian::write(OS, AF.getFill(), Endian); + support::endian::write(OS, AF.getAlignFill(), Endian); break; case 8: - support::endian::write(OS, AF.getFill(), Endian); + support::endian::write(OS, AF.getAlignFill(), Endian); break; } } @@ -1979,9 +2011,14 @@ Error MCDataFragmentMerger::emitMergedFragments() { #define MCFRAGMENT_ENCODED_FRAGMENT_ONLY #include "llvm/MCCAS/MCCASObjectV1.def" case MCFragment::FT_Align: { - const MCAlignFragment *AF = cast(Candidate.first); - if (auto E = - writeAlignFragment(Builder, *AF, FragmentOS, Candidate.second)) + // Since an FT_Align can contain Addend Values, only write the + // post-fragment partitioned contents into the FragmentData and make sure + // that the writeAlignFragment function doesn't write any of the fragment + // data into FragmentData. + FragmentData.append(CandidateContents); + if (auto E = writeAlignFragment(Builder, *Candidate.first, FragmentOS, + Candidate.second, + false /*WriteFragmentContents*/)) return E; break; } @@ -2124,43 +2161,39 @@ Expected> MCCASBuilder::mergeMCFragmentContents(const MCSection *Section, bool IsDebugLineSection) { SmallVector mergedData; + if (!Section->curFragList()) + return mergedData; for (const MCFragment &Fragment : *Section) { - if (const auto *DataFragment = dyn_cast(&Fragment)) - llvm::append_range(mergedData, DataFragment->getContents()); - else if (const auto *RelaxableFragment = - dyn_cast(&Fragment)) - llvm::append_range(mergedData, RelaxableFragment->getContents()); - else if (const auto *DwarfLineAddrFrag = - dyn_cast(&Fragment)) - if (IsDebugLineSection) - llvm::append_range(mergedData, DwarfLineAddrFrag->getContents()); - else + if (Fragment.getKind() == MCFragment::FT_Dwarf) + if (IsDebugLineSection) { + llvm::append_range(mergedData, Fragment.getContents()); + llvm::append_range(mergedData, Fragment.getVarContents()); + } else return createStringError( inconvertibleErrorCode(), - "Invalid MCDwarfLineAddrFragment in a non debug line section"); - else if (const auto *DwarfCallFrameFragment = - dyn_cast(&Fragment)) - llvm::append_range(mergedData, DwarfCallFrameFragment->getContents()); + "Invalid MCFragment::FT_Dwarf type in a non debug line section"); else if (const auto *CVDefRangeFragment = - dyn_cast(&Fragment)) + dyn_cast(&Fragment)) { llvm::append_range(mergedData, CVDefRangeFragment->getContents()); - else if (const auto *PseudoProbeAddrFragment = - dyn_cast(&Fragment)) - llvm::append_range(mergedData, PseudoProbeAddrFragment->getContents()); - else if (const auto *LEBFragment = dyn_cast(&Fragment)) - llvm::append_range(mergedData, LEBFragment->getContents()); + llvm::append_range(mergedData, CVDefRangeFragment->getVarContents()); + } + else if (const auto *CVInlineLineTableFragment = - dyn_cast(&Fragment)) + dyn_cast(&Fragment)) { llvm::append_range(mergedData, CVInlineLineTableFragment->getContents()); - else if (const auto *AlignFragment = dyn_cast(&Fragment)) { + llvm::append_range(mergedData, + CVInlineLineTableFragment->getVarContents()); + } else if (Fragment.getKind() == MCFragment::FT_Align) { auto FragmentSize = Asm.computeFragmentSize(Fragment); raw_svector_ostream OS(mergedData); - if (auto E = writeAlignFragment(*this, *AlignFragment, OS, FragmentSize)) + if (auto E = writeAlignFragment(*this, Fragment, OS, FragmentSize)) return std::move(E); - } else - // All other fragment types can be considered empty, see - // getFragmentContents() for all fragments that have contents. - continue; + } else { + if (Fragment.getFixedSize() != 0) + llvm::append_range(mergedData, Fragment.getContents()); + if (Fragment.getVarSize() != 0) + llvm::append_range(mergedData, Fragment.getVarContents()); + } } return mergedData; } @@ -2608,7 +2641,7 @@ Expected> MCCASBuilder::createDebugStringRefs() { SmallVector DebugStringRefs; ArrayRef DebugStrData = - cast(*DwarfSections.Str->begin()).getContents(); + cast(*DwarfSections.Str->begin()).getContents(); StringRef S(DebugStrData.data(), DebugStrData.size()); if (auto E = createStringSection(S, [&](StringRef S) -> Error { auto Sym = DebugStrRef::create(*this, S); @@ -2860,26 +2893,40 @@ Error MCCASBuilder::createAppleObjCSection() { return finalizeSection(); } -static ArrayRef getFragmentContents(const MCFragment &Fragment) { +static void getFragmentContents(const MCFragment &Fragment, + SmallVectorImpl &FragContents) { switch (Fragment.getKind()) { #define MCFRAGMENT_NODE_REF(MCFragmentName, MCEnumName, MCEnumIdentifier) \ case MCFragment::MCEnumName: { \ - const MCFragmentName &SF = cast(Fragment); \ - return SF.getContents(); \ + FragContents.append(Fragment.getContents().begin(), \ + Fragment.getContents().end()); \ + FragContents.append(Fragment.getVarContents().begin(), \ + Fragment.getVarContents().end()); \ + return; \ } #define MCFRAGMENT_ENCODED_FRAGMENT_ONLY #include "llvm/MCCAS/MCCASObjectV1.def" case MCFragment::FT_CVInlineLines: { const MCCVInlineLineTableFragment &SF = cast(Fragment); - return SF.getContents(); + FragContents.append(SF.getContents().begin(), SF.getContents().end()); + FragContents.append(SF.getVarContents().begin(), SF.getVarContents().end()); + return; } case MCFragment::FT_LEB: { - const MCLEBFragment &SF = cast(Fragment); - return SF.getContents(); + FragContents.append(Fragment.getContents().begin(), + Fragment.getContents().end()); + FragContents.append(Fragment.getVarContents().begin(), + Fragment.getVarContents().end()); + return; + } + case MCFragment::FT_Align: { + FragContents.append(Fragment.getContents().begin(), + Fragment.getContents().end()); + return; } default: - return ArrayRef(); + return; } } @@ -2911,7 +2958,8 @@ partitionFragment(MCAssembler &Asm, SmallVector &Addends, ArrayRef RelocationBuffer, const MCFragment &Fragment, uint64_t &RelocationBufferIndex, bool IsLittleEndian) { - auto FragmentContents = getFragmentContents(Fragment); + SmallVector FragmentContents; + getFragmentContents(Fragment, FragmentContents); /// FragmentIndex: It denotes the index into the FragmentContents that is used /// to copy the data that deduplicates in the \p FinalFragmentContents. uint64_t FragmentIndex = 0; @@ -2960,7 +3008,7 @@ Error MCCASBuilder::buildFragments() { startGroup(); for (const MCSection &Sec : Asm) { - if (Sec.isVirtualSection()) + if (Sec.isBssSection()) continue; // Handle Debug Info sections separately. @@ -3078,6 +3126,7 @@ Error MCCASBuilder::buildFragments() { ArrayRef RelocationBuffer; MCDataFragmentMerger Merger(*this, &Sec); uint64_t RelocationBufferIndex = 0; + uint64_t TotalFragmentWithoutAddendsSize = 0; for (const MCFragment &F : Sec) { auto Relocs = RelMap.find(&F); if (RelocLocation == Atom) { @@ -3121,6 +3170,7 @@ Error MCCASBuilder::buildFragments() { partitionFragment(Asm, Addends, FinalFragmentContents, RelocationBuffer, F, RelocationBufferIndex, ObjectWriter.Target.isLittleEndian()); + TotalFragmentWithoutAddendsSize += FinalFragmentContents.size(); if (auto E = Merger.tryMerge(F, Size, FinalFragmentContents)) return E; @@ -3145,6 +3195,7 @@ Error MCCASBuilder::buildFragments() { if (auto E = finalizeSection()) return E; + TotalFragmentWithoutAddendsSize = 0; } return finalizeGroup(); } diff --git a/llvm/test/CAS/emit-casid-file.ll b/llvm/test/CAS/emit-casid-file.ll index 7be885edee5c8..7c262cd84385b 100644 --- a/llvm/test/CAS/emit-casid-file.ll +++ b/llvm/test/CAS/emit-casid-file.ll @@ -24,7 +24,7 @@ ; RUN: llc -O0 -cas-friendly-debug-info --filetype=obj --cas-backend --cas=%t/cas --mccas-casid %s --mccas-emit-casid-file -o - ; RUN: not cat %t/test.o.casid -; REQUIRES: aarch64-registered-target && mccas +; REQUIRES: aarch64-registered-target ; ModuleID = '/Users/shubham/Development/test109275485/a.cpp' source_filename = "/Users/shubham/Development/test109275485/a.cpp" diff --git a/llvm/test/CMakeLists.txt b/llvm/test/CMakeLists.txt index e0d5c2538976f..fc576f9693ff0 100644 --- a/llvm/test/CMakeLists.txt +++ b/llvm/test/CMakeLists.txt @@ -27,7 +27,6 @@ llvm_canonicalize_cmake_booleans( LLVM_INCLUDE_DXIL_TESTS LLVM_ENABLE_ONDISK_CAS LLVM_CAS_ENABLE_REMOTE_CACHE - LLVM_ENABLE_MCCAS LLVM_TOOL_LLVM_DRIVER_BUILD LLVM_INCLUDE_SPIRV_SIMULATOR_TESTS LLVM_INCLUDE_SPIRV_TOOLS_TESTS @@ -61,13 +60,6 @@ configure_lit_site_cfg( "SHLIBDIR" ) -if (LLVM_ENABLE_MCCAS) - set(MCCAS_DEPS - llvm-cas-object-format - llvm-cas-dump - ) -endif() - # Set the depends list as a variable so that it can grow conditionally. # NOTE: Sync the substitutions in test/lit.cfg when adding to this list. set(LLVM_TEST_DEPENDS @@ -88,7 +80,8 @@ set(LLVM_TEST_DEPENDS llvm-bitcode-strip llvm-c-test llvm-cas - ${MCCAS_DEPS} + llvm-cas-dump + llvm-cas-object-format llvm-cas-test llvm-cat llvm-cfi-verify diff --git a/llvm/test/DebugInfo/CAS/AArch64/debug_unopt.ll b/llvm/test/DebugInfo/CAS/AArch64/debug_unopt.ll index 7fc30b245fae2..651cb0fe58397 100644 --- a/llvm/test/DebugInfo/CAS/AArch64/debug_unopt.ll +++ b/llvm/test/DebugInfo/CAS/AArch64/debug_unopt.ll @@ -2,49 +2,49 @@ ; RUN: llc -debug-info-unopt -O0 --filetype=obj --cas-backend --cas=%t/cas --mccas-casid --mtriple=arm64-apple-darwin %s -o %t/debug_unopt.id ; RUN: llvm-cas-dump --cas=%t/cas --casid-file %t/debug_unopt.id | FileCheck %s -; CHECK: mc:assembler llvmcas:// -; CHECK-NEXT: mc:header llvmcas:// -; CHECK-NEXT: mc:group llvmcas:// -; CHECK-NEXT: mc:section llvmcas:// -; CHECK-NEXT: mc:atom llvmcas:// -; CHECK-NEXT: mc:atom llvmcas:// -; CHECK-NEXT: mc:data llvmcas:// -; CHECK-NEXT: mc:atom llvmcas:// -; CHECK-NEXT: mc:data llvmcas:// -; CHECK-NEXT: mc:padding llvmcas:// -; CHECK-NEXT: mc:debug_abbrev_section llvmcas:// -; CHECK-NEXT: mc:debug_abbrev_unopt llvmcas:// -; CHECK-NEXT: mc:padding llvmcas:// -; CHECK-NEXT: mc:debug_info_section llvmcas:// -; CHECK-NEXT: mc:debug_info_unopt llvmcas:// -; CHECK-NEXT: mc:padding llvmcas:// -; CHECK-NEXT: mc:debug_string_section llvmcas:// -; CHECK-NEXT: mc:debug_string llvmcas:// -; CHECK-NEXT: mc:padding llvmcas:// -; CHECK-NEXT: mc:apple_names_section llvmcas:// -; CHECK-NEXT: mc:apple_names llvmcas:// -; CHECK-NEXT: mc:padding llvmcas:// -; CHECK-NEXT: mc:apple_objc_section llvmcas:// -; CHECK-NEXT: mc:apple_objc llvmcas:// -; CHECK-NEXT: mc:padding llvmcas:// -; CHECK-NEXT: mc:apple_namepsac_section llvmcas:// -; CHECK-NEXT: mc:apple_namespac llvmcas:// -; CHECK-NEXT: mc:padding llvmcas:// -; CHECK-NEXT: mc:apple_types_section llvmcas:// -; CHECK-NEXT: mc:apple_types llvmcas:// -; CHECK-NEXT: mc:padding llvmcas:// -; CHECK-NEXT: mc:section llvmcas:// -; CHECK-NEXT: mc:atom llvmcas:// -; CHECK-NEXT: mc:atom llvmcas:// -; CHECK-NEXT: mc:data llvmcas:// -; CHECK-NEXT: mc:padding llvmcas:// -; CHECK-NEXT: mc:addends llvmcas:// -; CHECK-NEXT: mc:debug_line_section llvmcas:// -; CHECK-NEXT: mc:debug_line_unopt llvmcas:// -; CHECK-NEXT: mc:padding llvmcas:// -; CHECK-NEXT: mc:data_in_code llvmcas:// -; CHECK-NEXT: mc:symbol_table llvmcas:// -; CHECK-NEXT: mc:cstring llvmcas:// +;CHECK: mc:assembler llvmcas:// +;CHECK-NEXT: mc:header llvmcas:// +;CHECK-NEXT: mc:group llvmcas:// +;CHECK-NEXT: mc:section llvmcas:// +;CHECK-NEXT: mc:atom llvmcas:// +;CHECK-NEXT: mc:atom llvmcas:// +;CHECK-NEXT: mc:align llvmcas:// +;CHECK-NEXT: mc:atom llvmcas:// +;CHECK-NEXT: mc:data llvmcas:// +;CHECK-NEXT: mc:padding llvmcas:// +;CHECK-NEXT: mc:debug_abbrev_section llvmcas:// +;CHECK-NEXT: mc:debug_abbrev_unopt llvmcas:// +;CHECK-NEXT: mc:padding llvmcas:// +;CHECK-NEXT: mc:debug_info_section llvmcas:// +;CHECK-NEXT: mc:debug_info_unopt llvmcas:// +;CHECK-NEXT: mc:padding llvmcas:// +;CHECK-NEXT: mc:debug_string_section llvmcas:// +;CHECK-NEXT: mc:debug_string llvmcas:// +;CHECK-NEXT: mc:padding llvmcas:// +;CHECK-NEXT: mc:apple_names_section llvmcas:// +;CHECK-NEXT: mc:apple_names llvmcas:// +;CHECK-NEXT: mc:padding llvmcas:// +;CHECK-NEXT: mc:apple_objc_section llvmcas:// +;CHECK-NEXT: mc:apple_objc llvmcas:// +;CHECK-NEXT: mc:padding llvmcas:// +;CHECK-NEXT: mc:apple_namepsac_section llvmcas:// +;CHECK-NEXT: mc:apple_namespac llvmcas:// +;CHECK-NEXT: mc:padding llvmcas:// +;CHECK-NEXT: mc:apple_types_section llvmcas:// +;CHECK-NEXT: mc:apple_types llvmcas:// +;CHECK-NEXT: mc:padding llvmcas:// +;CHECK-NEXT: mc:section llvmcas:// +;CHECK-NEXT: mc:atom llvmcas:// +;CHECK-NEXT: mc:atom llvmcas:// +;CHECK-NEXT: mc:data llvmcas:// +;CHECK-NEXT: mc:padding llvmcas:// +;CHECK-NEXT: mc:addends llvmcas:// +;CHECK-NEXT: mc:debug_line_section llvmcas:// +;CHECK-NEXT: mc:debug_line_unopt llvmcas:// +;CHECK-NEXT: mc:padding llvmcas:// +;CHECK-NEXT: mc:data_in_code llvmcas:// +;CHECK-NEXT: mc:symbol_table llvmcas:// +;CHECK-NEXT: mc:cstring llvmcas:// define i32 @_Z3fooj(i32 noundef %0) #0 !dbg !10 { ret i32 1, !dbg !18 diff --git a/llvm/test/DebugInfo/CAS/AArch64/lit.local.cfg b/llvm/test/DebugInfo/CAS/AArch64/lit.local.cfg index 49c5885fcf191..102671146a4ae 100644 --- a/llvm/test/DebugInfo/CAS/AArch64/lit.local.cfg +++ b/llvm/test/DebugInfo/CAS/AArch64/lit.local.cfg @@ -1,4 +1,2 @@ if not "AArch64" in config.root.targets: - config.unsupported = True -if not config.have_mccas: - config.unsupported = True + config.unsupported = True \ No newline at end of file diff --git a/llvm/test/MC/CAS/lit.local.cfg b/llvm/test/MC/CAS/lit.local.cfg index 0928c4be89f1d..379945b68925d 100644 --- a/llvm/test/MC/CAS/lit.local.cfg +++ b/llvm/test/MC/CAS/lit.local.cfg @@ -1,4 +1,2 @@ if not config.have_ondisk_cas: config.unsupported = True -if not config.have_mccas: - config.unsupported = True diff --git a/llvm/test/lit.cfg.py b/llvm/test/lit.cfg.py index 118564ab93a14..bd74f6147df52 100644 --- a/llvm/test/lit.cfg.py +++ b/llvm/test/lit.cfg.py @@ -706,9 +706,6 @@ def host_unwind_supports_jit(): if config.have_ondisk_cas: config.available_features.add('ondisk_cas') -if config.have_mccas: - config.available_features.add('mccas') - if "MemoryWithOrigins" in config.llvm_use_sanitizer: config.available_features.add("use_msan_with_origins") diff --git a/llvm/test/lit.site.cfg.py.in b/llvm/test/lit.site.cfg.py.in index 08295a8dac5ec..e47dd77fbfa98 100644 --- a/llvm/test/lit.site.cfg.py.in +++ b/llvm/test/lit.site.cfg.py.in @@ -63,7 +63,6 @@ config.reverse_iteration = @LLVM_ENABLE_REVERSE_ITERATION@ config.dxil_tests = @LLVM_INCLUDE_DXIL_TESTS@ config.have_ondisk_cas = @LLVM_ENABLE_ONDISK_CAS@ config.enable_remote_cache = @LLVM_CAS_ENABLE_REMOTE_CACHE@ -config.have_mccas = @LLVM_ENABLE_MCCAS@ config.have_llvm_driver = @LLVM_TOOL_LLVM_DRIVER_BUILD@ config.spirv_tools_tests = @LLVM_INCLUDE_SPIRV_TOOLS_TESTS@ config.have_vc_rev = @LLVM_APPEND_VC_REV@ diff --git a/llvm/test/tools/llvm-cas-dump/lit.local.cfg b/llvm/test/tools/llvm-cas-dump/lit.local.cfg deleted file mode 100644 index d3b98db1f755a..0000000000000 --- a/llvm/test/tools/llvm-cas-dump/lit.local.cfg +++ /dev/null @@ -1,2 +0,0 @@ -if not config.have_mccas: - config.unsupported = True diff --git a/llvm/test/tools/llvm-cas-dump/stats-dump.test b/llvm/test/tools/llvm-cas-dump/stats-dump.test index cb9053a20155a..4e58b2b27ce91 100644 --- a/llvm/test/tools/llvm-cas-dump/stats-dump.test +++ b/llvm/test/tools/llvm-cas-dump/stats-dump.test @@ -18,6 +18,7 @@ CSV: Kind, Count, Parents, Children, Data (B), Cost (B) CSV-NEXT: builtin:node, {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}} CSV-NEXT: builtin:tree, {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}} CSV-NEXT: mc:addends, {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}} +CSV-NEXT: mc:align, {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}} CSV-NEXT: mc:assembler, {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}} CSV-NEXT: mc:atom, {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}} CSV-NEXT: mc:cstring, {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}} @@ -46,6 +47,7 @@ PRETTY-NEXT: ==== ===== ======= ==== PRETTY: builtin:node {{([0-9]+,)?[0-9]+}} {{[0-9]+\.[0-9]+}}% {{([0-9]+,)?[0-9]+}} {{[0-9]+\.[0-9]+}}% {{([0-9]+,)?[0-9]+}} {{[0-9]+\.[0-9]+}}% {{([0-9]+,)?[0-9]+}} {{[0-9]+\.[0-9]+}}% {{([0-9]+,)?[0-9]+}} {{[0-9]+\.[0-9]+}}% PRETTY-NEXT: builtin:tree {{([0-9]+,)?[0-9]+}} {{[0-9]+\.[0-9]+}}% {{([0-9]+,)?[0-9]+}} {{[0-9]+\.[0-9]+}}% {{([0-9]+,)?[0-9]+}} {{[0-9]+\.[0-9]+}}% {{([0-9]+,)?[0-9]+}} {{[0-9]+\.[0-9]+}}% {{([0-9]+,)?[0-9]+}} {{[0-9]+\.[0-9]+}}% PRETTY-NEXT: mc:addends {{([0-9]+,)?[0-9]+}} {{[0-9]+\.[0-9]+}}% {{([0-9]+,)?[0-9]+}} {{[0-9]+\.[0-9]+}}% {{([0-9]+,)?[0-9]+}} {{[0-9]+\.[0-9]+}}% {{([0-9]+,)?[0-9]+}} {{[0-9]+\.[0-9]+}}% {{([0-9]+,)?[0-9]+}} {{[0-9]+\.[0-9]+}}% +PRETTY-NEXT: mc:align {{([0-9]+,)?[0-9]+}} {{[0-9]+\.[0-9]+}}% {{([0-9]+,)?[0-9]+}} {{[0-9]+\.[0-9]+}}% {{([0-9]+,)?[0-9]+}} {{[0-9]+\.[0-9]+}}% {{([0-9]+,)?[0-9]+}} {{[0-9]+\.[0-9]+}}% {{([0-9]+,)?[0-9]+}} {{[0-9]+\.[0-9]+}}% PRETTY-NEXT: mc:assembler {{([0-9]+,)?[0-9]+}} {{[0-9]+\.[0-9]+}}% {{([0-9]+,)?[0-9]+}} {{[0-9]+\.[0-9]+}}% {{([0-9]+,)?[0-9]+}} {{[0-9]+\.[0-9]+}}% {{([0-9]+,)?[0-9]+}} {{[0-9]+\.[0-9]+}}% {{([0-9]+,)?[0-9]+}} {{[0-9]+\.[0-9]+}}% PRETTY-NEXT: mc:atom {{([0-9]+,)?[0-9]+}} {{[0-9]+\.[0-9]+}}% {{([0-9]+,)?[0-9]+}} {{[0-9]+\.[0-9]+}}% {{([0-9]+,)?[0-9]+}} {{[0-9]+\.[0-9]+}}% {{([0-9]+,)?[0-9]+}} {{[0-9]+\.[0-9]+}}% {{([0-9]+,)?[0-9]+}} {{[0-9]+\.[0-9]+}}% PRETTY-NEXT: mc:cstring {{([0-9]+,)?[0-9]+}} {{[0-9]+\.[0-9]+}}% {{([0-9]+,)?[0-9]+}} {{[0-9]+\.[0-9]+}}% {{([0-9]+,)?[0-9]+}} {{[0-9]+\.[0-9]+}}% {{([0-9]+,)?[0-9]+}} {{[0-9]+\.[0-9]+}}% {{([0-9]+,)?[0-9]+}} {{[0-9]+\.[0-9]+}}% diff --git a/llvm/test/tools/llvm-cas-object-format/lit.local.cfg b/llvm/test/tools/llvm-cas-object-format/lit.local.cfg deleted file mode 100644 index d3b98db1f755a..0000000000000 --- a/llvm/test/tools/llvm-cas-object-format/lit.local.cfg +++ /dev/null @@ -1,2 +0,0 @@ -if not config.have_mccas: - config.unsupported = True diff --git a/llvm/test/tools/llvm-cas/ingest-blobs-casid.test b/llvm/test/tools/llvm-cas/ingest-blobs-casid.test index bbac4269e1b48..b3ee24b89f00b 100644 --- a/llvm/test/tools/llvm-cas/ingest-blobs-casid.test +++ b/llvm/test/tools/llvm-cas/ingest-blobs-casid.test @@ -1,4 +1,4 @@ -; REQUIRES: aarch64-registered-target && mccas +; REQUIRES: aarch64-registered-target ; RUN: rm -rf %t && mkdir -p %t ; RUN: split-file %s %t diff --git a/llvm/tools/CMakeLists.txt b/llvm/tools/CMakeLists.txt index 385d177d2f0f7..73d4993194ece 100644 --- a/llvm/tools/CMakeLists.txt +++ b/llvm/tools/CMakeLists.txt @@ -40,18 +40,12 @@ add_llvm_tool_subdirectory(llvm-config) add_llvm_tool_subdirectory(llvm-ctxprof-util) add_llvm_tool_subdirectory(llvm-lto) add_llvm_tool_subdirectory(llvm-profdata) +add_llvm_tool_subdirectory(llvm-cas-dump) if(LLVM_CAS_ENABLE_REMOTE_CACHE) add_llvm_tool_subdirectory(llvm-remote-cache-test) else() set(LLVM_TOOL_LLVM_REMOTE_CACHE_TEST_BUILD Off) endif() -if(LLVM_ENABLE_MCCAS) - add_llvm_tool_subdirectory(llvm-cas-object-format) - add_llvm_tool_subdirectory(llvm-cas-dump) -else() - set(LLVM_TOOL_LLVM_CAS_OBJECT_FORMAT_BUILD Off) - set(LLVM_TOOL_LLVM_CAS_DUMP_BUILD Off) -endif() # Projects supported via LLVM_EXTERNAL_*_SOURCE_DIR need to be explicitly # specified. diff --git a/llvm/tools/llvm-mc/CMakeLists.txt b/llvm/tools/llvm-mc/CMakeLists.txt index 70004ceb4d4bf..55d8d9a779f59 100644 --- a/llvm/tools/llvm-mc/CMakeLists.txt +++ b/llvm/tools/llvm-mc/CMakeLists.txt @@ -1,10 +1,3 @@ -if (LLVM_ENABLE_MCCAS) - add_definitions(-DLLVM_ENABLE_MCCAS=1) - set(LLVM_LINK_MCCAS - MCCAS - ) -endif() - set(LLVM_LINK_COMPONENTS AllTargetsAsmParsers AllTargetsDescs @@ -12,7 +5,7 @@ set(LLVM_LINK_COMPONENTS AllTargetsInfos CAS MC - ${LLVM_LINK_MCCAS} + MCCAS MCParser Support TargetParser diff --git a/llvm/tools/llvm-mc/llvm-mc.cpp b/llvm/tools/llvm-mc/llvm-mc.cpp index 56feb139a8888..2c5bad9d6aeea 100644 --- a/llvm/tools/llvm-mc/llvm-mc.cpp +++ b/llvm/tools/llvm-mc/llvm-mc.cpp @@ -31,9 +31,7 @@ #include "llvm/MC/MCSubtargetInfo.h" #include "llvm/MC/MCTargetOptionsCommandFlags.h" #include "llvm/MC/TargetRegistry.h" -#if LLVM_ENABLE_MCCAS #include "llvm/MCCAS/MCCASObjectV1.h" -#endif #include "llvm/Support/CommandLine.h" #include "llvm/Support/Compression.h" #include "llvm/Support/FileUtilities.h" @@ -681,7 +679,6 @@ int main(int argc, char **argv) { MCCodeEmitter *CE = TheTarget->createMCCodeEmitter(*MCII, Ctx); MCAsmBackend *MAB = TheTarget->createMCAsmBackend(*STI, *MRI, MCOptions); -#if LLVM_ENABLE_MCCAS // BEGIN MCCAS std::unique_ptr CASBackendWriter; bool UseCASBackend = UseMCCASBackend || @@ -712,10 +709,6 @@ int main(int argc, char **argv) { CasIDOS ? &CasIDOS->os() : nullptr); } // END MCCAS -#else - bool UseCASBackend = false; - std::unique_ptr CASBackendWriter; -#endif Str.reset(TheTarget->createMCObjectStreamer( TheTriple, Ctx, std::unique_ptr(MAB), UseCASBackend ? std::move(CASBackendWriter) // MCCAS