[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