that builds the following additional llvm/clang tools: - bugpoint - llc - lli - llvm-ar - llvm-as - llvm-bcanalyzer - llvm-diff - llvm-dis - llvm-extract - llvm-ld - llvm-link - llvm-mc - llvm-nm - llvm-objdump - llvm-prof - llvm-ranlib - llvm-rtdyld - llvm-stub - macho-dump - opt These tools are mainly useful for people that want to manipulate llvm bitcode (.bc) and llvm assembly language (.ll) files, or want to tinker with llvm and clang themselves. MFC after: 2 weeks
54 lines
1.8 KiB
C++
54 lines
1.8 KiB
C++
//===-- DiffLog.h - Difference Log Builder and accessories ------*- C++ -*-===//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file is distributed under the University of Illinois Open Source
|
|
// License. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
//
|
|
// This header defines the interface to the LLVM difference log builder.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#include "DiffLog.h"
|
|
#include "DiffConsumer.h"
|
|
|
|
#include "llvm/Instructions.h"
|
|
#include "llvm/ADT/SmallVector.h"
|
|
#include "llvm/ADT/StringRef.h"
|
|
|
|
using namespace llvm;
|
|
|
|
LogBuilder::~LogBuilder() {
|
|
consumer.logf(*this);
|
|
}
|
|
|
|
StringRef LogBuilder::getFormat() const { return Format; }
|
|
|
|
unsigned LogBuilder::getNumArguments() const { return Arguments.size(); }
|
|
Value *LogBuilder::getArgument(unsigned I) const { return Arguments[I]; }
|
|
|
|
DiffLogBuilder::~DiffLogBuilder() { consumer.logd(*this); }
|
|
|
|
void DiffLogBuilder::addMatch(Instruction *L, Instruction *R) {
|
|
Diff.push_back(DiffRecord(L, R));
|
|
}
|
|
void DiffLogBuilder::addLeft(Instruction *L) {
|
|
// HACK: VS 2010 has a bug in the stdlib that requires this.
|
|
Diff.push_back(DiffRecord(L, DiffRecord::second_type(0)));
|
|
}
|
|
void DiffLogBuilder::addRight(Instruction *R) {
|
|
// HACK: VS 2010 has a bug in the stdlib that requires this.
|
|
Diff.push_back(DiffRecord(DiffRecord::first_type(0), R));
|
|
}
|
|
|
|
unsigned DiffLogBuilder::getNumLines() const { return Diff.size(); }
|
|
|
|
DiffChange DiffLogBuilder::getLineKind(unsigned I) const {
|
|
return (Diff[I].first ? (Diff[I].second ? DC_match : DC_left)
|
|
: DC_right);
|
|
}
|
|
Instruction *DiffLogBuilder::getLeft(unsigned I) const { return Diff[I].first; }
|
|
Instruction *DiffLogBuilder::getRight(unsigned I) const { return Diff[I].second; }
|