Skip to content

Commit

Permalink
Convert Arg, ArgList, and Option to dump() to dbgs() rather than errs().
Browse files Browse the repository at this point in the history
Also add print() functions.

Patch by Justin Lebar!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@256010 91177308-0d34-0410-b5e6-96231b3b80d8
  • Loading branch information
echristo committed Dec 18, 2015
1 parent 8281fa7 commit 96e80fc
Show file tree
Hide file tree
Showing 6 changed files with 38 additions and 26 deletions.
1 change: 1 addition & 0 deletions include/llvm/Option/Arg.h
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,7 @@ class Arg {
/// when rendered as a input (e.g., Xlinker).
void renderAsInput(const ArgList &Args, ArgStringList &Output) const;

void print(raw_ostream &O) const;
void dump() const;

/// \brief Return a formatted version of the argument and
Expand Down
1 change: 1 addition & 0 deletions include/llvm/Option/ArgList.h
Original file line number Diff line number Diff line change
Expand Up @@ -306,6 +306,7 @@ class ArgList {
const char *GetOrMakeJoinedArgString(unsigned Index, StringRef LHS,
StringRef RHS) const;

void print(raw_ostream &O) const;
void dump() const;

/// @}
Expand Down
1 change: 1 addition & 0 deletions include/llvm/Option/Option.h
Original file line number Diff line number Diff line change
Expand Up @@ -195,6 +195,7 @@ class Option {
/// start.
Arg *accept(const ArgList &Args, unsigned &Index, unsigned ArgSize) const;

void print(raw_ostream &O) const;
void dump() const;
};

Expand Down
21 changes: 12 additions & 9 deletions lib/Option/Arg.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
#include "llvm/Option/ArgList.h"
#include "llvm/Option/Option.h"
#include "llvm/Support/raw_ostream.h"
#include "llvm/Support/Debug.h"

using namespace llvm;
using namespace llvm::opt;
Expand Down Expand Up @@ -43,23 +44,25 @@ Arg::~Arg() {
}
}

void Arg::dump() const {
llvm::errs() << "<";
void Arg::print(raw_ostream& O) const {
O << "<";

llvm::errs() << " Opt:";
Opt.dump();
O << " Opt:";
Opt.print(O);

llvm::errs() << " Index:" << Index;
O << " Index:" << Index;

llvm::errs() << " Values: [";
O << " Values: [";
for (unsigned i = 0, e = Values.size(); i != e; ++i) {
if (i) llvm::errs() << ", ";
llvm::errs() << "'" << Values[i] << "'";
if (i) O << ", ";
O << "'" << Values[i] << "'";
}

llvm::errs() << "]>\n";
O << "]>\n";
}

LLVM_DUMP_METHOD void Arg::dump() const { print(dbgs()); }

std::string Arg::getAsString(const ArgList &Args) const {
SmallString<256> Res;
llvm::raw_svector_ostream OS(Res);
Expand Down
9 changes: 6 additions & 3 deletions lib/Option/ArgList.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
#include "llvm/ADT/Twine.h"
#include "llvm/Option/Arg.h"
#include "llvm/Option/Option.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/raw_ostream.h"

using namespace llvm;
Expand Down Expand Up @@ -328,13 +329,15 @@ const char *ArgList::GetOrMakeJoinedArgString(unsigned Index,
return MakeArgString(LHS + RHS);
}

LLVM_DUMP_METHOD void ArgList::dump() const {
void ArgList::print(raw_ostream &O) const {
for (Arg *A : *this) {
llvm::errs() << "* ";
A->dump();
O << "* ";
A->print(O);
}
}

LLVM_DUMP_METHOD void ArgList::dump() const { print(dbgs()); }

//

void InputArgList::releaseMemory() {
Expand Down
31 changes: 17 additions & 14 deletions lib/Option/Option.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
#include "llvm/ADT/Twine.h"
#include "llvm/Option/Arg.h"
#include "llvm/Option/ArgList.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/raw_ostream.h"
#include <algorithm>
Expand All @@ -35,10 +36,10 @@ Option::Option(const OptTable::Info *info, const OptTable *owner)
}
}

void Option::dump() const {
llvm::errs() << "<";
void Option::print(raw_ostream &O) const {
O << "<";
switch (getKind()) {
#define P(N) case N: llvm::errs() << #N; break
#define P(N) case N: O << #N; break
P(GroupClass);
P(InputClass);
P(UnknownClass);
Expand All @@ -54,33 +55,35 @@ void Option::dump() const {
}

if (Info->Prefixes) {
llvm::errs() << " Prefixes:[";
for (const char * const *Pre = Info->Prefixes; *Pre != nullptr; ++Pre) {
llvm::errs() << '"' << *Pre << (*(Pre + 1) == nullptr ? "\"" : "\", ");
O << " Prefixes:[";
for (const char *const *Pre = Info->Prefixes; *Pre != nullptr; ++Pre) {
O << '"' << *Pre << (*(Pre + 1) == nullptr ? "\"" : "\", ");
}
llvm::errs() << ']';
O << ']';
}

llvm::errs() << " Name:\"" << getName() << '"';
O << " Name:\"" << getName() << '"';

const Option Group = getGroup();
if (Group.isValid()) {
llvm::errs() << " Group:";
Group.dump();
O << " Group:";
Group.print(O);
}

const Option Alias = getAlias();
if (Alias.isValid()) {
llvm::errs() << " Alias:";
Alias.dump();
O << " Alias:";
Alias.print(O);
}

if (getKind() == MultiArgClass)
llvm::errs() << " NumArgs:" << getNumArgs();
O << " NumArgs:" << getNumArgs();

llvm::errs() << ">\n";
O << ">\n";
}

void Option::dump() const { print(dbgs()); }

bool Option::matches(OptSpecifier Opt) const {
// Aliases are never considered in matching, look through them.
const Option Alias = getAlias();
Expand Down

0 comments on commit 96e80fc

Please sign in to comment.