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

Justin Bogner via llvm-commits llvm-commits at lists.llvm.org
Wed Sep 30 12:09:00 PDT 2020


Andrew Litteken via llvm-commits <llvm-commits at lists.llvm.org> writes:
> 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.

When reverting in the future, please include a brief mention of why
you're reverting the change in the body of the commit message.

>
> 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;
> -}
>
>
>         
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits


More information about the llvm-commits mailing list