[cfe-commits] r59494 - in /cfe/trunk: include/clang/Analysis/PathDiagnostic.h include/clang/Analysis/PathSensitive/BugReporter.h include/clang/Basic/Diagnostic.h include/clang/Driver/TextDiagnosticBuffer.h include/clang/Driver/TextDiagnosticPrinter.h lib/Analysis/PathDiagnostic.cpp lib/Basic/Diagnostic.cpp lib/CodeGen/CodeGenModule.cpp lib/Driver/TextDiagnosticBuffer.cpp lib/Driver/TextDiagnosticPrinter.cpp lib/Lex/Preprocessor.cpp lib/Parse/DeclSpec.cpp lib/Parse/Parser.cpp lib/Sema/Sema.cpp
Chris Lattner
sabre at nondot.org
Mon Nov 17 20:56:44 PST 2008
Author: lattner
Date: Mon Nov 17 22:56:44 2008
New Revision: 59494
URL: http://llvm.org/viewvc/llvm-project?rev=59494&view=rev
Log:
Change the diagnostics interface to take an array of pointers to
strings instead of array of strings. This reduces string copying
in some not-very-important cases, but paves the way for future
improvements.
Modified:
cfe/trunk/include/clang/Analysis/PathDiagnostic.h
cfe/trunk/include/clang/Analysis/PathSensitive/BugReporter.h
cfe/trunk/include/clang/Basic/Diagnostic.h
cfe/trunk/include/clang/Driver/TextDiagnosticBuffer.h
cfe/trunk/include/clang/Driver/TextDiagnosticPrinter.h
cfe/trunk/lib/Analysis/PathDiagnostic.cpp
cfe/trunk/lib/Basic/Diagnostic.cpp
cfe/trunk/lib/CodeGen/CodeGenModule.cpp
cfe/trunk/lib/Driver/TextDiagnosticBuffer.cpp
cfe/trunk/lib/Driver/TextDiagnosticPrinter.cpp
cfe/trunk/lib/Lex/Preprocessor.cpp
cfe/trunk/lib/Parse/DeclSpec.cpp
cfe/trunk/lib/Parse/Parser.cpp
cfe/trunk/lib/Sema/Sema.cpp
Modified: cfe/trunk/include/clang/Analysis/PathDiagnostic.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Analysis/PathDiagnostic.h?rev=59494&r1=59493&r2=59494&view=diff
==============================================================================
--- cfe/trunk/include/clang/Analysis/PathDiagnostic.h (original)
+++ cfe/trunk/include/clang/Analysis/PathDiagnostic.h Mon Nov 17 22:56:44 2008
@@ -201,7 +201,7 @@
Diagnostic::Level DiagLevel,
FullSourceLoc Pos,
diag::kind ID,
- const std::string *Strs,
+ const std::string **Strs,
unsigned NumStrs,
const SourceRange *Ranges,
unsigned NumRanges);
Modified: cfe/trunk/include/clang/Analysis/PathSensitive/BugReporter.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Analysis/PathSensitive/BugReporter.h?rev=59494&r1=59493&r2=59494&view=diff
==============================================================================
--- cfe/trunk/include/clang/Analysis/PathSensitive/BugReporter.h (original)
+++ cfe/trunk/include/clang/Analysis/PathSensitive/BugReporter.h Mon Nov 17 22:56:44 2008
@@ -307,7 +307,7 @@
Diagnostic::Level DiagLevel,
FullSourceLoc Pos,
diag::kind ID,
- const std::string *Strs,
+ const std::string **Strs,
unsigned NumStrs,
const SourceRange *Ranges,
unsigned NumRanges) {
@@ -322,7 +322,7 @@
R.addRange(*Ranges);
for ( ; NumStrs ; --NumStrs, ++Strs)
- R.addString(*Strs);
+ R.addString(**Strs);
}
// Iterators.
Modified: cfe/trunk/include/clang/Basic/Diagnostic.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/Diagnostic.h?rev=59494&r1=59493&r2=59494&view=diff
==============================================================================
--- cfe/trunk/include/clang/Basic/Diagnostic.h (original)
+++ cfe/trunk/include/clang/Basic/Diagnostic.h Mon Nov 17 22:56:44 2008
@@ -165,7 +165,7 @@
/// Report - Issue the message to the client. DiagID is a member of the
/// diag::kind enum.
void Report(FullSourceLoc Pos, unsigned DiagID,
- const std::string *Strs = 0, unsigned NumStrs = 0,
+ const std::string **Strs = 0, unsigned NumStrs = 0,
const SourceRange *Ranges = 0, unsigned NumRanges = 0) {
Report(NULL, Pos, DiagID, Strs, NumStrs, Ranges, NumRanges);
}
@@ -173,7 +173,7 @@
/// Report - Issue the message to the client. DiagID is a member of the
/// diag::kind enum.
void Report(unsigned DiagID,
- const std::string *Strs = 0, unsigned NumStrs = 0,
+ const std::string **Strs = 0, unsigned NumStrs = 0,
const SourceRange *Ranges = 0, unsigned NumRanges = 0) {
Report(FullSourceLoc(), DiagID, Strs, NumStrs, Ranges, NumRanges);
}
@@ -181,7 +181,7 @@
/// Report - Issue the message to the specified client.
/// DiagID is a member of the diag::kind enum.
void Report(DiagnosticClient* C, FullSourceLoc Pos, unsigned DiagID,
- const std::string *Strs = 0, unsigned NumStrs = 0,
+ const std::string **Strs = 0, unsigned NumStrs = 0,
const SourceRange *Ranges = 0, unsigned NumRanges = 0);
};
@@ -191,8 +191,7 @@
protected:
std::string FormatDiagnostic(Diagnostic &Diags, Diagnostic::Level Level,
diag::kind ID,
- const std::string *Strs,
- unsigned NumStrs);
+ const std::string **Strs, unsigned NumStrs);
public:
virtual ~DiagnosticClient();
@@ -202,7 +201,7 @@
Diagnostic::Level DiagLevel,
FullSourceLoc Pos,
diag::kind ID,
- const std::string *Strs,
+ const std::string **Strs,
unsigned NumStrs,
const SourceRange *Ranges,
unsigned NumRanges) = 0;
Modified: cfe/trunk/include/clang/Driver/TextDiagnosticBuffer.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Driver/TextDiagnosticBuffer.h?rev=59494&r1=59493&r2=59494&view=diff
==============================================================================
--- cfe/trunk/include/clang/Driver/TextDiagnosticBuffer.h (original)
+++ cfe/trunk/include/clang/Driver/TextDiagnosticBuffer.h Mon Nov 17 22:56:44 2008
@@ -43,7 +43,7 @@
Diagnostic::Level DiagLevel,
FullSourceLoc Pos,
diag::kind ID,
- const std::string *Strs,
+ const std::string **Strs,
unsigned NumStrs,
const SourceRange *Ranges,
unsigned NumRanges);
Modified: cfe/trunk/include/clang/Driver/TextDiagnosticPrinter.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Driver/TextDiagnosticPrinter.h?rev=59494&r1=59493&r2=59494&view=diff
==============================================================================
--- cfe/trunk/include/clang/Driver/TextDiagnosticPrinter.h (original)
+++ cfe/trunk/include/clang/Driver/TextDiagnosticPrinter.h Mon Nov 17 22:56:44 2008
@@ -45,7 +45,7 @@
Diagnostic::Level DiagLevel,
FullSourceLoc Pos,
diag::kind ID,
- const std::string *Strs,
+ const std::string **Strs,
unsigned NumStrs,
const SourceRange *Ranges,
unsigned NumRanges);
Modified: cfe/trunk/lib/Analysis/PathDiagnostic.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Analysis/PathDiagnostic.cpp?rev=59494&r1=59493&r2=59494&view=diff
==============================================================================
--- cfe/trunk/lib/Analysis/PathDiagnostic.cpp (original)
+++ cfe/trunk/lib/Analysis/PathDiagnostic.cpp Mon Nov 17 22:56:44 2008
@@ -24,7 +24,7 @@
Diagnostic::Level DiagLevel,
FullSourceLoc Pos,
diag::kind ID,
- const std::string *Strs,
+ const std::string **Strs,
unsigned NumStrs,
const SourceRange *Ranges,
unsigned NumRanges) {
Modified: cfe/trunk/lib/Basic/Diagnostic.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/Diagnostic.cpp?rev=59494&r1=59493&r2=59494&view=diff
==============================================================================
--- cfe/trunk/lib/Basic/Diagnostic.cpp (original)
+++ cfe/trunk/lib/Basic/Diagnostic.cpp Mon Nov 17 22:56:44 2008
@@ -214,7 +214,7 @@
/// DiagID is a member of the diag::kind enum.
void Diagnostic::Report(DiagnosticClient* C,
FullSourceLoc Loc, unsigned DiagID,
- const std::string *Strs, unsigned NumStrs,
+ const std::string **Strs, unsigned NumStrs,
const SourceRange *Ranges, unsigned NumRanges) {
// Figure out the diagnostic level of this message.
@@ -260,7 +260,7 @@
std::string DiagnosticClient::FormatDiagnostic(Diagnostic &Diags,
Diagnostic::Level Level,
diag::kind ID,
- const std::string *Strs,
+ const std::string **Strs,
unsigned NumStrs) {
std::string Msg = Diags.getDescription(ID);
@@ -269,7 +269,7 @@
if (Msg[i] == '%' && isdigit(Msg[i + 1])) {
unsigned StrNo = Msg[i + 1] - '0';
Msg = std::string(Msg.begin(), Msg.begin() + i) +
- (StrNo < NumStrs ? Strs[StrNo] : "<<<INTERNAL ERROR>>>") +
+ (StrNo < NumStrs ? *Strs[StrNo] : "<<<INTERNAL ERROR>>>") +
std::string(Msg.begin() + i + 2, Msg.end());
}
}
Modified: cfe/trunk/lib/CodeGen/CodeGenModule.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenModule.cpp?rev=59494&r1=59493&r2=59494&view=diff
==============================================================================
--- cfe/trunk/lib/CodeGen/CodeGenModule.cpp (original)
+++ cfe/trunk/lib/CodeGen/CodeGenModule.cpp Mon Nov 17 22:56:44 2008
@@ -108,8 +108,9 @@
"cannot codegen this %0 yet");
SourceRange Range = S->getSourceRange();
std::string Msg = Type;
+ const std::string *Strs[] = { &Msg };
getDiags().Report(Context.getFullLoc(S->getLocStart()), DiagID,
- &Msg, 1, &Range, 1);
+ Strs, 1, &Range, 1);
}
/// ErrorUnsupported - Print out an error that codegen doesn't support the
@@ -121,8 +122,8 @@
unsigned DiagID = getDiags().getCustomDiagID(Diagnostic::Error,
"cannot codegen this %0 yet");
std::string Msg = Type;
- getDiags().Report(Context.getFullLoc(D->getLocation()), DiagID,
- &Msg, 1);
+ const std::string *Strs[] = { &Msg };
+ getDiags().Report(Context.getFullLoc(D->getLocation()), DiagID, Strs, 1);
}
/// setGlobalVisibility - Set the visibility for the given LLVM
Modified: cfe/trunk/lib/Driver/TextDiagnosticBuffer.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/TextDiagnosticBuffer.cpp?rev=59494&r1=59493&r2=59494&view=diff
==============================================================================
--- cfe/trunk/lib/Driver/TextDiagnosticBuffer.cpp (original)
+++ cfe/trunk/lib/Driver/TextDiagnosticBuffer.cpp Mon Nov 17 22:56:44 2008
@@ -21,7 +21,7 @@
Diagnostic::Level Level,
FullSourceLoc Pos,
diag::kind ID,
- const std::string *Strs,
+ const std::string **Strs,
unsigned NumStrs,
const SourceRange *,
unsigned) {
Modified: cfe/trunk/lib/Driver/TextDiagnosticPrinter.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/TextDiagnosticPrinter.cpp?rev=59494&r1=59493&r2=59494&view=diff
==============================================================================
--- cfe/trunk/lib/Driver/TextDiagnosticPrinter.cpp (original)
+++ cfe/trunk/lib/Driver/TextDiagnosticPrinter.cpp Mon Nov 17 22:56:44 2008
@@ -96,7 +96,7 @@
Diagnostic::Level Level,
FullSourceLoc Pos,
diag::kind ID,
- const std::string *Strs,
+ const std::string **Strs,
unsigned NumStrs,
const SourceRange *Ranges,
unsigned NumRanges) {
Modified: cfe/trunk/lib/Lex/Preprocessor.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Lex/Preprocessor.cpp?rev=59494&r1=59493&r2=59494&view=diff
==============================================================================
--- cfe/trunk/lib/Lex/Preprocessor.cpp (original)
+++ cfe/trunk/lib/Lex/Preprocessor.cpp Mon Nov 17 22:56:44 2008
@@ -124,14 +124,16 @@
void Preprocessor::Diag(SourceLocation Loc, unsigned DiagID,
const std::string &Msg) {
- Diags.Report(getFullLoc(Loc), DiagID, &Msg, 1);
+ const std::string *Strs[] = { &Msg };
+ Diags.Report(getFullLoc(Loc), DiagID, Strs, 1);
}
void Preprocessor::Diag(SourceLocation Loc, unsigned DiagID,
const std::string &Msg,
const SourceRange &R1, const SourceRange &R2) {
+ const std::string *Strs[] = { &Msg };
SourceRange R[] = {R1, R2};
- Diags.Report(getFullLoc(Loc), DiagID, &Msg, 1, R, 2);
+ Diags.Report(getFullLoc(Loc), DiagID, Strs, 1, R, 2);
}
Modified: cfe/trunk/lib/Parse/DeclSpec.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Parse/DeclSpec.cpp?rev=59494&r1=59493&r2=59494&view=diff
==============================================================================
--- cfe/trunk/lib/Parse/DeclSpec.cpp (original)
+++ cfe/trunk/lib/Parse/DeclSpec.cpp Mon Nov 17 22:56:44 2008
@@ -311,6 +311,7 @@
}
void DeclSpec::Diag(Diagnostic &D, SourceLocation Loc, SourceManager& SrcMgr,
- unsigned DiagID, const std::string &info) {
- D.Report(FullSourceLoc(Loc,SrcMgr), DiagID, &info, 1);
+ unsigned DiagID, const std::string &Info) {
+ const std::string *Strs[] = { &Info };
+ D.Report(FullSourceLoc(Loc,SrcMgr), DiagID, Strs, 1);
}
Modified: cfe/trunk/lib/Parse/Parser.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Parse/Parser.cpp?rev=59494&r1=59493&r2=59494&view=diff
==============================================================================
--- cfe/trunk/lib/Parse/Parser.cpp (original)
+++ cfe/trunk/lib/Parse/Parser.cpp Mon Nov 17 22:56:44 2008
@@ -43,13 +43,15 @@
bool Parser::Diag(SourceLocation Loc, unsigned DiagID,
const std::string &Msg) {
- Diags.Report(FullSourceLoc(Loc,PP.getSourceManager()), DiagID, &Msg, 1);
+ const std::string *Strs[] = { &Msg };
+ Diags.Report(FullSourceLoc(Loc,PP.getSourceManager()), DiagID, Strs, 1);
return true;
}
bool Parser::Diag(SourceLocation Loc, unsigned DiagID, const std::string &Msg,
const SourceRange& Range) {
- Diags.Report(PP.getFullLoc(Loc), DiagID, &Msg, 1, &Range,1);
+ const std::string *Strs[] = { &Msg };
+ Diags.Report(PP.getFullLoc(Loc), DiagID, Strs, 1, &Range,1);
return true;
}
Modified: cfe/trunk/lib/Sema/Sema.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/Sema.cpp?rev=59494&r1=59493&r2=59494&view=diff
==============================================================================
--- cfe/trunk/lib/Sema/Sema.cpp (original)
+++ cfe/trunk/lib/Sema/Sema.cpp Mon Nov 17 22:56:44 2008
@@ -176,13 +176,14 @@
}
bool Sema::Diag(SourceLocation Loc, unsigned DiagID, const std::string &Msg) {
- PP.getDiagnostics().Report(PP.getFullLoc(Loc), DiagID, &Msg, 1);
+ const std::string *Strs[] = { &Msg };
+ PP.getDiagnostics().Report(PP.getFullLoc(Loc), DiagID, Strs, 1);
return true;
}
bool Sema::Diag(SourceLocation Loc, unsigned DiagID, const std::string &Msg1,
const std::string &Msg2) {
- std::string MsgArr[] = { Msg1, Msg2 };
+ const std::string *MsgArr[] = { &Msg1, &Msg2 };
PP.getDiagnostics().Report(PP.getFullLoc(Loc), DiagID, MsgArr, 2);
return true;
}
@@ -194,21 +195,22 @@
bool Sema::Diag(SourceLocation Loc, unsigned DiagID, const std::string &Msg,
const SourceRange& Range) {
- PP.getDiagnostics().Report(PP.getFullLoc(Loc), DiagID, &Msg, 1, &Range,1);
+ const std::string *Strs[] = { &Msg };
+ PP.getDiagnostics().Report(PP.getFullLoc(Loc), DiagID, Strs, 1, &Range,1);
return true;
}
bool Sema::Diag(SourceLocation Loc, unsigned DiagID, const std::string &Msg1,
const std::string &Msg2, const SourceRange& Range) {
- std::string MsgArr[] = { Msg1, Msg2 };
+ const std::string *MsgArr[] = { &Msg1, &Msg2 };
PP.getDiagnostics().Report(PP.getFullLoc(Loc), DiagID, MsgArr, 2, &Range, 1);
return true;
}
bool Sema::Diag(SourceLocation Loc, unsigned DiagID, const std::string &Msg1,
const std::string &Msg2, const std::string &Msg3,
- const SourceRange& R1) {
- std::string MsgArr[] = { Msg1, Msg2, Msg3 };
+ const SourceRange &R1) {
+ const std::string *MsgArr[] = { &Msg1, &Msg2, &Msg3 };
PP.getDiagnostics().Report(PP.getFullLoc(Loc), DiagID, MsgArr, 3, &R1, 1);
return true;
}
@@ -223,14 +225,15 @@
bool Sema::Diag(SourceLocation Loc, unsigned DiagID, const std::string &Msg,
const SourceRange& R1, const SourceRange& R2) {
SourceRange RangeArr[] = { R1, R2 };
- PP.getDiagnostics().Report(PP.getFullLoc(Loc), DiagID, &Msg, 1, RangeArr, 2);
+ const std::string *Strs[] = { &Msg };
+ PP.getDiagnostics().Report(PP.getFullLoc(Loc), DiagID, Strs, 1, RangeArr, 2);
return true;
}
bool Sema::Diag(SourceLocation Range, unsigned DiagID, const std::string &Msg1,
const std::string &Msg2, const SourceRange& R1,
const SourceRange& R2) {
- std::string MsgArr[] = { Msg1, Msg2 };
+ const std::string *MsgArr[] = { &Msg1, &Msg2 };
SourceRange RangeArr[] = { R1, R2 };
PP.getDiagnostics().Report(PP.getFullLoc(Range),DiagID, MsgArr,2,RangeArr, 2);
return true;
More information about the cfe-commits
mailing list