aboutsummaryrefslogtreecommitdiff
path: root/lib/Format/Format.cpp
diff options
context:
space:
mode:
authorManuel Klimek <klimek@google.com>2013-01-15 16:41:02 +0000
committerManuel Klimek <klimek@google.com>2013-01-15 16:41:02 +0000
commit19132303666ca434aefae2e725d76f9c57336e44 (patch)
tree6151f0b25593daaf14a885df989d02fcead2cb22 /lib/Format/Format.cpp
parent407a31afffc936291d719665b9edb72532c0ed3b (diff)
Do not traverse the break-state when we know we cannot break anyway.
This is an optimization that djasper spottet. For now, we do not format anything after the first token that belongs to such an implicit string literal. All our state is not made for handling that anyway, so we'll revisit this if we find a problem. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@172537 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Format/Format.cpp')
-rw-r--r--lib/Format/Format.cpp11
1 files changed, 6 insertions, 5 deletions
diff --git a/lib/Format/Format.cpp b/lib/Format/Format.cpp
index a6b9e2031d..445a4064b4 100644
--- a/lib/Format/Format.cpp
+++ b/lib/Format/Format.cpp
@@ -253,6 +253,12 @@ public:
// Start iterating at 1 as we have correctly formatted of Token #0 above.
while (State.NextToken != NULL) {
+ if (State.NextToken->Type == TT_ImplicitStringLiteral)
+ // We will not touch the rest of the white space in this
+ // \c UnwrappedLine. The returned value can also not matter, as we
+ // cannot continue an top-level implicit string literal on the next
+ // line.
+ return 0;
if (FitsOnALine) {
addTokenToState(false, false, State);
} else {
@@ -374,11 +380,6 @@ private:
assert(State.Stack.size());
unsigned ParenLevel = State.Stack.size() - 1;
- if (Current.Type == TT_ImplicitStringLiteral) {
- moveStateToNextToken(State);
- return;
- }
-
if (Newline) {
unsigned WhitespaceStartColumn = State.Column;
if (Current.is(tok::r_brace)) {