[llvm] 69c6f6b - Revert "[IRSim] Adding basic implementation of llvm-sim."

Andrew Litteken via llvm-commits llvm-commits at lists.llvm.org
Fri Sep 25 14:18:59 PDT 2020


Author: Andrew Litteken
Date: 2020-09-25T16:18:48-05:00
New Revision: 69c6f6be07e4db11f2aca91ad7bbc0db1e9044d6

URL: https://github.com/llvm/llvm-project/commit/69c6f6be07e4db11f2aca91ad7bbc0db1e9044d6
DIFF: https://github.com/llvm/llvm-project/commit/69c6f6be07e4db11f2aca91ad7bbc0db1e9044d6.diff

LOG: Revert "[IRSim] Adding basic implementation of llvm-sim."

This reverts commit 15645d044bcfe2a0f63156048b302f997a717688.

Added: 
    

Modified: 
    llvm/tools/LLVMBuild.txt

Removed: 
    llvm/test/tools/llvm-sim/Inputs/sim1.ll
    llvm/test/tools/llvm-sim/fail-cases.test
    llvm/test/tools/llvm-sim/single-sim-file.test
    llvm/test/tools/llvm-sim/single-sim.test
    llvm/tools/llvm-sim/CMakeLists.txt
    llvm/tools/llvm-sim/LLVMBuild.txt
    llvm/tools/llvm-sim/llvm-sim.cpp


################################################################################
diff  --git a/llvm/test/tools/llvm-sim/Inputs/sim1.ll b/llvm/test/tools/llvm-sim/Inputs/sim1.ll
deleted file mode 100644
index facc27d285b0..000000000000
--- a/llvm/test/tools/llvm-sim/Inputs/sim1.ll
+++ /dev/null
@@ -1,27 +0,0 @@
-define void @similar_func1() {
-entry:
-  %a = alloca i32, align 4
-  %b = alloca i32, align 4
-  %c = alloca i32, align 4
-  store i32 2, i32* %a, align 4
-  store i32 3, i32* %b, align 4
-  store i32 4, i32* %c, align 4
-  %al = load i32, i32* %a
-  %bl = load i32, i32* %b
-  %cl = load i32, i32* %c
-  ret void
-}
-
-define void @similar_func2() {
-entry:
-  %a = alloca i32, align 4
-  %b = alloca i32, align 4
-  %c = alloca i32, align 4
-  store i32 2, i32* %a, align 4
-  store i32 3, i32* %b, align 4
-  store i32 4, i32* %c, align 4
-  %al = load i32, i32* %a
-  %bl = load i32, i32* %b
-  %cl = load i32, i32* %c
-  ret void
-}

diff  --git a/llvm/test/tools/llvm-sim/fail-cases.test b/llvm/test/tools/llvm-sim/fail-cases.test
deleted file mode 100644
index a8b3afabb976..000000000000
--- a/llvm/test/tools/llvm-sim/fail-cases.test
+++ /dev/null
@@ -1,8 +0,0 @@
-# RUN: not llvm-sim %s 2>&1 | FileCheck %s
-# RUN: not llvm-sim %s.2 2>&1 | FileCheck %s -check-prefix=EXIST
-
-# File reading error messaging tests.
-
-# CHECK: error: expected top-level entity
-
-# EXIST: error: Could not open input file: No such file or directory

diff  --git a/llvm/test/tools/llvm-sim/single-sim-file.test b/llvm/test/tools/llvm-sim/single-sim-file.test
deleted file mode 100644
index 1167537c7e6c..000000000000
--- a/llvm/test/tools/llvm-sim/single-sim-file.test
+++ /dev/null
@@ -1,57 +0,0 @@
-# RUN: llvm-sim -o %t %S/Inputs/sim1.ll
-# RUN: cat %t | FileCheck %s
-
-# Checking the output of a single module test.
-
-# CHECK: {
-# CHECK-NEXT:  "1": [
-# CHECK-NEXT:   {
-# CHECK-NEXT:    "start": 8,
-# CHECK-NEXT:    "end": 9
-# CHECK-NEXT:   },
-# CHECK-NEXT:   {
-# CHECK-NEXT:    "start": 18,
-# CHECK-NEXT:    "end": 19
-# CHECK-NEXT:   }
-# CHECK-NEXT:  ],
-# CHECK-NEXT:  "2": [
-# CHECK-NEXT:   {
-# CHECK-NEXT:    "start": 7,
-# CHECK-NEXT:    "end": 9
-# CHECK-NEXT:   },
-# CHECK-NEXT:   {
-# CHECK-NEXT:    "start": 17,
-# CHECK-NEXT:    "end": 19
-# CHECK-NEXT:   }
-# CHECK-NEXT:  ],
-# CHECK-NEXT:  "3": [
-# CHECK-NEXT:   {
-# CHECK-NEXT:    "start": 6,
-# CHECK-NEXT:    "end": 9
-# CHECK-NEXT:   },
-# CHECK-NEXT:   {
-# CHECK-NEXT:    "start": 16,
-# CHECK-NEXT:    "end": 19
-# CHECK-NEXT:   }
-# CHECK-NEXT:  ],
-# CHECK-NEXT:  "4": [
-# CHECK-NEXT:   {
-# CHECK-NEXT:    "start": 5,
-# CHECK-NEXT:    "end": 9
-# CHECK-NEXT:   },
-# CHECK-NEXT:   {
-# CHECK-NEXT:    "start": 15,
-# CHECK-NEXT:    "end": 19
-# CHECK-NEXT:   }
-# CHECK-NEXT:  ],
-# CHECK-NEXT:  "5": [
-# CHECK-NEXT:   {
-# CHECK-NEXT:    "start": 4,
-# CHECK-NEXT:    "end": 9
-# CHECK-NEXT:   },
-# CHECK-NEXT:   {
-# CHECK-NEXT:    "start": 14,
-# CHECK-NEXT:    "end": 19
-# CHECK-NEXT:   }
-# CHECK-NEXT:  ]
-# CHECK-NEXT: }

diff  --git a/llvm/test/tools/llvm-sim/single-sim.test b/llvm/test/tools/llvm-sim/single-sim.test
deleted file mode 100644
index 4e04682e294e..000000000000
--- a/llvm/test/tools/llvm-sim/single-sim.test
+++ /dev/null
@@ -1,56 +0,0 @@
-# RUN: llvm-sim -o - %S/Inputs/sim1.ll | FileCheck %s
-
-# Checking the output of a single module test.
-
-# CHECK: {
-# CHECK-NEXT:  "1": [
-# CHECK-NEXT:   {
-# CHECK-NEXT:    "start": 8,
-# CHECK-NEXT:    "end": 9
-# CHECK-NEXT:   },
-# CHECK-NEXT:   {
-# CHECK-NEXT:    "start": 18,
-# CHECK-NEXT:    "end": 19
-# CHECK-NEXT:   }
-# CHECK-NEXT:  ],
-# CHECK-NEXT:  "2": [
-# CHECK-NEXT:   {
-# CHECK-NEXT:    "start": 7,
-# CHECK-NEXT:    "end": 9
-# CHECK-NEXT:   },
-# CHECK-NEXT:   {
-# CHECK-NEXT:    "start": 17,
-# CHECK-NEXT:    "end": 19
-# CHECK-NEXT:   }
-# CHECK-NEXT:  ],
-# CHECK-NEXT:  "3": [
-# CHECK-NEXT:   {
-# CHECK-NEXT:    "start": 6,
-# CHECK-NEXT:    "end": 9
-# CHECK-NEXT:   },
-# CHECK-NEXT:   {
-# CHECK-NEXT:    "start": 16,
-# CHECK-NEXT:    "end": 19
-# CHECK-NEXT:   }
-# CHECK-NEXT:  ],
-# CHECK-NEXT:  "4": [
-# CHECK-NEXT:   {
-# CHECK-NEXT:    "start": 5,
-# CHECK-NEXT:    "end": 9
-# CHECK-NEXT:   },
-# CHECK-NEXT:   {
-# CHECK-NEXT:    "start": 15,
-# CHECK-NEXT:    "end": 19
-# CHECK-NEXT:   }
-# CHECK-NEXT:  ],
-# CHECK-NEXT:  "5": [
-# CHECK-NEXT:   {
-# CHECK-NEXT:    "start": 4,
-# CHECK-NEXT:    "end": 9
-# CHECK-NEXT:   },
-# CHECK-NEXT:   {
-# CHECK-NEXT:    "start": 14,
-# CHECK-NEXT:    "end": 19
-# CHECK-NEXT:   }
-# CHECK-NEXT:  ]
-# CHECK-NEXT: }

diff  --git a/llvm/tools/LLVMBuild.txt b/llvm/tools/LLVMBuild.txt
index a4f43e1604cd..8f9aaa5349ea 100644
--- a/llvm/tools/LLVMBuild.txt
+++ b/llvm/tools/LLVMBuild.txt
@@ -51,7 +51,6 @@ subdirectories =
  llvm-rc
  llvm-reduce
  llvm-rtdyld
- llvm-sim
  llvm-size
  llvm-split
  llvm-undname

diff  --git a/llvm/tools/llvm-sim/CMakeLists.txt b/llvm/tools/llvm-sim/CMakeLists.txt
deleted file mode 100644
index 6e218f1cf545..000000000000
--- a/llvm/tools/llvm-sim/CMakeLists.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-set(LLVM_LINK_COMPONENTS core support object coverage AsmParser IRReader TransformUtils ipo)
-
-add_llvm_tool(llvm-sim
-  llvm-sim.cpp
-)

diff  --git a/llvm/tools/llvm-sim/LLVMBuild.txt b/llvm/tools/llvm-sim/LLVMBuild.txt
deleted file mode 100644
index d0a272ccd1bb..000000000000
--- a/llvm/tools/llvm-sim/LLVMBuild.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-;===- ./tools/llvm-sim/LLVMBuild.txt ---------------------------*- Conf -*--===;
-;
-; Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
-; See https://llvm.org/LICENSE.txt for license information.
-; SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-;
-;===------------------------------------------------------------------------===;
-;
-; This is an LLVMBuild description file for the components in this subdirectory.
-;
-; For more information on the LLVMBuild system, please see:
-;
-;   http://llvm.org/docs/LLVMBuild.html
-;
-;===------------------------------------------------------------------------===;
-
-[component_0]
-type = Tool
-name = llvm-sim
-parent = Tools
-required_libraries = Core Support AsmParser IRReader IPO

diff  --git a/llvm/tools/llvm-sim/llvm-sim.cpp b/llvm/tools/llvm-sim/llvm-sim.cpp
deleted file mode 100644
index 26e370ff30f1..000000000000
--- a/llvm/tools/llvm-sim/llvm-sim.cpp
+++ /dev/null
@@ -1,149 +0,0 @@
-//===-- llvm-sim.cpp - Find  similar sections of programs -------*- C++ -*-===//
-//
-// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
-// See https://llvm.org/LICENSE.txt for license information.
-// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-//
-//===----------------------------------------------------------------------===//
-//
-// This program finds similar sections of a Module, and exports them as a JSON
-// file.
-//
-// To find similarities contained across multiple modules, please use llvm-link
-// first to merge the modules.
-//
-//===----------------------------------------------------------------------===//
-
-#include "llvm/Analysis/IRSimilarityIdentifier.h"
-#include "llvm/IRReader/IRReader.h"
-#include "llvm/Support/CommandLine.h"
-#include "llvm/Support/FileSystem.h"
-#include "llvm/Support/InitLLVM.h"
-#include "llvm/Support/JSON.h"
-#include "llvm/Support/SourceMgr.h"
-#include "llvm/Support/ToolOutputFile.h"
-
-using namespace llvm;
-using namespace IRSimilarity;
-
-static cl::opt<std::string> OutputFilename("o", cl::desc("Output Filename"),
-                                           cl::init("-"),
-                                           cl::value_desc("filename"));
-
-static cl::opt<std::string> InputSourceFile(cl::Positional,
-                                            cl::desc("<Source file>"),
-                                            cl::init("-"),
-                                            cl::value_desc("filename"));
-
-/// Retrieve the unique number \p I was mapped to in parseBitcodeFile.
-///
-/// \param I - The Instruction to find the instruction number for.
-/// \param LLVMInstNum - The mapping of Instructions to their location in the
-/// module represented by an unsigned integer.
-/// \returns The instruction number for \p I if it exists.
-Optional<unsigned>
-getPositionInModule(const Instruction *I,
-                    const DenseMap<Instruction *, unsigned> &LLVMInstNum) {
-  assert(I && "Instruction is nullptr!");
-  DenseMap<Instruction *, unsigned>::const_iterator It = LLVMInstNum.find(I);
-  if (It == LLVMInstNum.end())
-    return None;
-  return It->second;
-}
-
-/// Exports the given SimilarityGroups to a JSON file at \p FilePath.
-///
-/// \param FilePath - The path to the output location.
-/// \param SimSections - The similarity groups to process.
-/// \param LLVMInstNum - The mapping of Instructions to their location in the
-/// module represented by an unsigned integer.
-/// \returns A nonzero error code if there was a failure creating the file.
-std::error_code
-exportToFile(const StringRef FilePath,
-             const SimilarityGroupList &SimSections,
-             const DenseMap<Instruction *, unsigned> &LLVMInstNum) {
-  std::error_code EC;
-  std::unique_ptr<ToolOutputFile> Out(
-      new ToolOutputFile(FilePath, EC, sys::fs::OF_None));
-  if (EC)
-    return EC;
-
-  json::OStream J(Out->os(), 1);
-  J.objectBegin();
-
-  unsigned SimOption = 1;
-  // Process each list of SimilarityGroups organized by the Module.
-  for (const SimilarityGroup &G : SimSections) {
-    std::string SimOptionStr = std::to_string(SimOption);
-    J.attributeBegin(SimOptionStr);
-    J.arrayBegin();
-    // For each file there is a list of the range where the similarity
-    // exists.
-    for (const IRSimilarityCandidate &C : G) {
-      Optional<unsigned> Start =
-          getPositionInModule((*C.front()).Inst, LLVMInstNum);
-      Optional<unsigned> End =
-          getPositionInModule((*C.back()).Inst, LLVMInstNum);
-
-      assert(Start.hasValue() &&
-             "Could not find instruction number for first instruction");
-      assert(End.hasValue() &&
-             "Could not find instruction number for last instruction");
-
-      J.object([&] {
-        J.attribute("start", Start.getValue());
-        J.attribute("end", End.getValue());
-      });
-    }
-    J.arrayEnd();
-    J.attributeEnd();
-    SimOption++;
-  }
-  J.objectEnd();
-
-  Out->keep();
-
-  return EC;
-}
-
-int main(int argc, const char *argv[]) {
-  InitLLVM X(argc, argv);
-
-  cl::ParseCommandLineOptions(argc, argv, "LLVM IR Similarity Visualizer\n");
-
-  LLVMContext CurrContext;
-  SMDiagnostic Err;
-  std::unique_ptr<Module> ModuleToAnalyze =
-      parseIRFile(InputSourceFile, Err, CurrContext);
-
-  if (!ModuleToAnalyze) {
-    Err.print(argv[0], errs());
-    return 1;
-  }
-
-  // Mapping from an Instruction pointer to its occurrence in a sequential
-  // list of all the Instructions in a Module.
-  DenseMap<Instruction *, unsigned> LLVMInstNum;
-
-  // We give each instruction a number, which gives us a start and end value
-  // for the beginning and end of each IRSimilarityCandidate.
-  unsigned InstructionNumber = 1;
-  for (Function &F : *ModuleToAnalyze)
-    for (BasicBlock &BB : F)
-      for (Instruction &I : BB.instructionsWithoutDebug())
-        LLVMInstNum[&I]= InstructionNumber++;
-
-  // The similarity identifier we will use to find the similar sections.
-  IRSimilarityIdentifier SimIdent;
-  SimilarityGroupList SimilaritySections =
-      SimIdent.findSimilarity(*ModuleToAnalyze);
-
-  std::error_code E =
-      exportToFile(OutputFilename, SimilaritySections, LLVMInstNum);
-  if (E) {
-    errs() << argv[0] << ": " << E.message() << '\n';
-    return 2;
-  }
-
-  return 0;
-}


        


More information about the llvm-commits mailing list