Use StringRef to simplify code. No functional change.

llvm-svn: 210751
This commit is contained in:
Craig Topper 2014-06-12 05:32:35 +00:00
parent e47535041c
commit 3aa4fb3b8b
5 changed files with 26 additions and 35 deletions

View File

@ -36,10 +36,8 @@ namespace clang {
void FormatASTNodeDiagnosticArgument( void FormatASTNodeDiagnosticArgument(
DiagnosticsEngine::ArgumentKind Kind, DiagnosticsEngine::ArgumentKind Kind,
intptr_t Val, intptr_t Val,
const char *Modifier, StringRef Modifier,
unsigned ModLen, StringRef Argument,
const char *Argument,
unsigned ArgLen,
ArrayRef<DiagnosticsEngine::ArgumentValue> PrevArgs, ArrayRef<DiagnosticsEngine::ArgumentValue> PrevArgs,
SmallVectorImpl<char> &Output, SmallVectorImpl<char> &Output,
void *Cookie, void *Cookie,

View File

@ -323,8 +323,7 @@ private:
/// This is a hack to avoid a layering violation between libbasic and libsema. /// This is a hack to avoid a layering violation between libbasic and libsema.
typedef void (*ArgToStringFnTy)( typedef void (*ArgToStringFnTy)(
ArgumentKind Kind, intptr_t Val, ArgumentKind Kind, intptr_t Val,
const char *Modifier, unsigned ModifierLen, StringRef Modifier, StringRef Argument,
const char *Argument, unsigned ArgumentLen,
ArrayRef<ArgumentValue> PrevArgs, ArrayRef<ArgumentValue> PrevArgs,
SmallVectorImpl<char> &Output, SmallVectorImpl<char> &Output,
void *Cookie, void *Cookie,
@ -617,14 +616,12 @@ public:
/// \brief Converts a diagnostic argument (as an intptr_t) into the string /// \brief Converts a diagnostic argument (as an intptr_t) into the string
/// that represents it. /// that represents it.
void ConvertArgToString(ArgumentKind Kind, intptr_t Val, void ConvertArgToString(ArgumentKind Kind, intptr_t Val,
const char *Modifier, unsigned ModLen, StringRef Modifier, StringRef Argument,
const char *Argument, unsigned ArgLen,
ArrayRef<ArgumentValue> PrevArgs, ArrayRef<ArgumentValue> PrevArgs,
SmallVectorImpl<char> &Output, SmallVectorImpl<char> &Output,
ArrayRef<intptr_t> QualTypeVals) const { ArrayRef<intptr_t> QualTypeVals) const {
ArgToStringFn(Kind, Val, Modifier, ModLen, Argument, ArgLen, ArgToStringFn(Kind, Val, Modifier, Argument, PrevArgs, Output,
PrevArgs, Output, ArgToStringCookie, ArgToStringCookie, QualTypeVals);
QualTypeVals);
} }
void SetArgToStringFn(ArgToStringFnTy Fn, void *Cookie) { void SetArgToStringFn(ArgToStringFnTy Fn, void *Cookie) {

View File

@ -256,10 +256,8 @@ static bool FormatTemplateTypeDiff(ASTContext &Context, QualType FromType,
void clang::FormatASTNodeDiagnosticArgument( void clang::FormatASTNodeDiagnosticArgument(
DiagnosticsEngine::ArgumentKind Kind, DiagnosticsEngine::ArgumentKind Kind,
intptr_t Val, intptr_t Val,
const char *Modifier, StringRef Modifier,
unsigned ModLen, StringRef Argument,
const char *Argument,
unsigned ArgLen,
ArrayRef<DiagnosticsEngine::ArgumentValue> PrevArgs, ArrayRef<DiagnosticsEngine::ArgumentValue> PrevArgs,
SmallVectorImpl<char> &Output, SmallVectorImpl<char> &Output,
void *Cookie, void *Cookie,
@ -295,12 +293,12 @@ void clang::FormatASTNodeDiagnosticArgument(
// Attempting to do a template diff on non-templates. Set the variables // Attempting to do a template diff on non-templates. Set the variables
// and continue with regular type printing of the appropriate type. // and continue with regular type printing of the appropriate type.
Val = TDT.PrintFromType ? TDT.FromType : TDT.ToType; Val = TDT.PrintFromType ? TDT.FromType : TDT.ToType;
ModLen = 0; Modifier = StringRef();
ArgLen = 0; Argument = StringRef();
// Fall through // Fall through
} }
case DiagnosticsEngine::ak_qualtype: { case DiagnosticsEngine::ak_qualtype: {
assert(ModLen == 0 && ArgLen == 0 && assert(Modifier.empty() && Argument.empty() &&
"Invalid modifier for QualType argument"); "Invalid modifier for QualType argument");
QualType Ty(QualType::getFromOpaquePtr(reinterpret_cast<void*>(Val))); QualType Ty(QualType::getFromOpaquePtr(reinterpret_cast<void*>(Val)));
@ -309,13 +307,12 @@ void clang::FormatASTNodeDiagnosticArgument(
break; break;
} }
case DiagnosticsEngine::ak_declarationname: { case DiagnosticsEngine::ak_declarationname: {
if (ModLen == 9 && !memcmp(Modifier, "objcclass", 9) && ArgLen == 0) if (Modifier == "objcclass" && Argument.empty())
OS << '+'; OS << '+';
else if (ModLen == 12 && !memcmp(Modifier, "objcinstance", 12) else if (Modifier == "objcinstance" && Argument.empty())
&& ArgLen==0)
OS << '-'; OS << '-';
else else
assert(ModLen == 0 && ArgLen == 0 && assert(Modifier.empty() && Argument.empty() &&
"Invalid modifier for DeclarationName argument"); "Invalid modifier for DeclarationName argument");
OS << DeclarationName::getFromOpaqueInteger(Val); OS << DeclarationName::getFromOpaqueInteger(Val);
@ -323,10 +320,10 @@ void clang::FormatASTNodeDiagnosticArgument(
} }
case DiagnosticsEngine::ak_nameddecl: { case DiagnosticsEngine::ak_nameddecl: {
bool Qualified; bool Qualified;
if (ModLen == 1 && Modifier[0] == 'q' && ArgLen == 0) if (Modifier == "q" && Argument.empty())
Qualified = true; Qualified = true;
else { else {
assert(ModLen == 0 && ArgLen == 0 && assert(Modifier.empty() && Argument.empty() &&
"Invalid modifier for NamedDecl* argument"); "Invalid modifier for NamedDecl* argument");
Qualified = false; Qualified = false;
} }

View File

@ -24,8 +24,7 @@
using namespace clang; using namespace clang;
static void DummyArgToStringFn(DiagnosticsEngine::ArgumentKind AK, intptr_t QT, static void DummyArgToStringFn(DiagnosticsEngine::ArgumentKind AK, intptr_t QT,
const char *Modifier, unsigned ML, StringRef Modifier, StringRef Argument,
const char *Argument, unsigned ArgLen,
ArrayRef<DiagnosticsEngine::ArgumentValue> PrevArgs, ArrayRef<DiagnosticsEngine::ArgumentValue> PrevArgs,
SmallVectorImpl<char> &Output, SmallVectorImpl<char> &Output,
void *Cookie, void *Cookie,
@ -827,8 +826,8 @@ FormatDiagnostic(const char *DiagStr, const char *DiagEnd,
case DiagnosticsEngine::ak_declcontext: case DiagnosticsEngine::ak_declcontext:
case DiagnosticsEngine::ak_attr: case DiagnosticsEngine::ak_attr:
getDiags()->ConvertArgToString(Kind, getRawArg(ArgNo), getDiags()->ConvertArgToString(Kind, getRawArg(ArgNo),
Modifier, ModifierLen, StringRef(Modifier, ModifierLen),
Argument, ArgumentLen, StringRef(Argument, ArgumentLen),
FormattedArgs, FormattedArgs,
OutStr, QualTypeVals); OutStr, QualTypeVals);
break; break;
@ -851,8 +850,8 @@ FormatDiagnostic(const char *DiagStr, const char *DiagEnd,
TDT.PrintFromType = true; TDT.PrintFromType = true;
TDT.PrintTree = true; TDT.PrintTree = true;
getDiags()->ConvertArgToString(Kind, val, getDiags()->ConvertArgToString(Kind, val,
Modifier, ModifierLen, StringRef(Modifier, ModifierLen),
Argument, ArgumentLen, StringRef(Argument, ArgumentLen),
FormattedArgs, FormattedArgs,
Tree, QualTypeVals); Tree, QualTypeVals);
// If there is no tree information, fall back to regular printing. // If there is no tree information, fall back to regular printing.
@ -874,8 +873,8 @@ FormatDiagnostic(const char *DiagStr, const char *DiagEnd,
TDT.PrintTree = false; TDT.PrintTree = false;
TDT.PrintFromType = true; TDT.PrintFromType = true;
getDiags()->ConvertArgToString(Kind, val, getDiags()->ConvertArgToString(Kind, val,
Modifier, ModifierLen, StringRef(Modifier, ModifierLen),
Argument, ArgumentLen, StringRef(Argument, ArgumentLen),
FormattedArgs, FormattedArgs,
OutStr, QualTypeVals); OutStr, QualTypeVals);
if (!TDT.TemplateDiffUsed) if (!TDT.TemplateDiffUsed)
@ -888,8 +887,8 @@ FormatDiagnostic(const char *DiagStr, const char *DiagEnd,
// Append second type // Append second type
TDT.PrintFromType = false; TDT.PrintFromType = false;
getDiags()->ConvertArgToString(Kind, val, getDiags()->ConvertArgToString(Kind, val,
Modifier, ModifierLen, StringRef(Modifier, ModifierLen),
Argument, ArgumentLen, StringRef(Argument, ArgumentLen),
FormattedArgs, FormattedArgs,
OutStr, QualTypeVals); OutStr, QualTypeVals);
if (!TDT.TemplateDiffUsed) if (!TDT.TemplateDiffUsed)

View File

@ -2101,7 +2101,7 @@ llvm::Constant *CodeGenFunction::EmitCheckTypeDescriptor(QualType T) {
SmallString<32> Buffer; SmallString<32> Buffer;
CGM.getDiags().ConvertArgToString(DiagnosticsEngine::ak_qualtype, CGM.getDiags().ConvertArgToString(DiagnosticsEngine::ak_qualtype,
(intptr_t)T.getAsOpaquePtr(), (intptr_t)T.getAsOpaquePtr(),
nullptr, 0, nullptr, 0, None, Buffer, StringRef(), StringRef(), None, Buffer,
ArrayRef<intptr_t>()); ArrayRef<intptr_t>());
llvm::Constant *Components[] = { llvm::Constant *Components[] = {