]> granicus.if.org Git - clang/log
clang
11 years agoRemove unneeded test. We have plenty of subgroup relations between warnings,
Ted Kremenek [Wed, 6 Feb 2013 19:24:28 +0000 (19:24 +0000)]
Remove unneeded test.  We have plenty of subgroup relations between warnings,
and for those we care about we should have a general way of testing them.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174531 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoAccept and ignore the -fextended-identifiers option.
Jordan Rose [Wed, 6 Feb 2013 18:15:40 +0000 (18:15 +0000)]
Accept and ignore the -fextended-identifiers option.

This was GCC's option to turn on UCN support, which we always have on now
in C99 and C++ modes.

Additionally, mark the -fno-extended-identifiers option as unsupported,
since we don't support disabling UCNs in C99 and C++ modes.

PR11538

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174530 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoEliminate a race condition with the global module index.
Douglas Gregor [Wed, 6 Feb 2013 18:08:37 +0000 (18:08 +0000)]
Eliminate a race condition with the global module index.

Essentially, a module file on disk could change size between the time
we stat() it and the time we open it, and we need to be robust against
such a problem.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174529 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoFormatter: Correctly detect ObjC message expressions preceded by a comment.
Nico Weber [Wed, 6 Feb 2013 16:54:35 +0000 (16:54 +0000)]
Formatter: Correctly detect ObjC message expressions preceded by a comment.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174521 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoFix handling of comments in macros.
Manuel Klimek [Wed, 6 Feb 2013 16:40:56 +0000 (16:40 +0000)]
Fix handling of comments in macros.

We now correctly format:
 // Written as a macro, it is reformatted from:
 #define foo(a)                                                                \
   do {                                                                        \
     /* Initialize num to zero. */                                             \
     int num = 10;                                                             \
     /* This line ensures a is never zero. */                                  \
     int i = a == 0 ? 1 : a;                                                   \
     i = num / i; /* This division is OK. */                                   \
     return i;                                                                 \
   } while (false)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174517 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoMuch semicolon after namespaces.
Manuel Klimek [Wed, 6 Feb 2013 16:08:09 +0000 (16:08 +0000)]
Much semicolon after namespaces.

We now leave the semicolon in the line of the closing brace in:
namespace {
...
};

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174514 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoFix formatting of ObjC method calls.
Daniel Jasper [Wed, 6 Feb 2013 16:00:26 +0000 (16:00 +0000)]
Fix formatting of ObjC method calls.

This fixes llvm.org/PR15165.

We now correctly align:
  [image_rep drawInRect:drawRect
               fromRect:NSZeroRect
              operation:NSCompositeCopy
               fraction:1.0
             ssssssssdd:NO
                  hints:nil];

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174513 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoParse record declarations with token pasted identifiers.
Manuel Klimek [Wed, 6 Feb 2013 15:57:54 +0000 (15:57 +0000)]
Parse record declarations with token pasted identifiers.

This is pretty common in macros:
 #define A(X, Y) class X##Y {};

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174512 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoFix a formatting bug caused by comments in expressions.
Daniel Jasper [Wed, 6 Feb 2013 15:23:09 +0000 (15:23 +0000)]
Fix a formatting bug caused by comments in expressions.

This fixes llvm.org/PR15162.

Before:
    bool aaaaaaaaaaaaa =  // comment
        aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa || aaaaaaaaaaaaaaaaaaaaaaaaaaaa ||
                          aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ||
                          aaaaaaaaaaaaaaaaaaaaaaaaaaaaa;

After:
    bool aaaaaaaaaaaaa =  // comment
        aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa || aaaaaaaaaaaaaaaaaaaaaaaaaaaa ||
        aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa || aaaaaaaaaaaaaaaaaaaaaaaaaaaaa;

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174508 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoOptionally derive formatting information from the input file.
Daniel Jasper [Wed, 6 Feb 2013 14:22:40 +0000 (14:22 +0000)]
Optionally derive formatting information from the input file.

With this patch, clang-format can analyze the input file for two
properties:
1. Is "int *a" or "int* a" more common.
2. Are non-C++03 constructs used, e.g. A<A<A>>.

With Google-style, clang-format will now use the more common style for
(1) and format C++03 compatible, unless it finds C++11 constructs in the
input.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174504 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoFix an issue with the formatting of stars in default values.
Daniel Jasper [Wed, 6 Feb 2013 10:57:42 +0000 (10:57 +0000)]
Fix an issue with the formatting of stars in default values.

Before: void f(int *a = d *e, int b = 0);
After:  void f(int *a = d * e, int b = 0);

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174500 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoAdds a convenience function selectFirst to simplify matching.
Manuel Klimek [Wed, 6 Feb 2013 10:33:21 +0000 (10:33 +0000)]
Adds a convenience function selectFirst to simplify matching.

A very common use case is to search for the first occurrence of
a certain node that is a descendant of another node. In that
case, selectFirst significantly simplifies the code at the client side.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174499 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoHandle nested ObjC calls.
Daniel Jasper [Wed, 6 Feb 2013 10:05:46 +0000 (10:05 +0000)]
Handle nested ObjC calls.

Properly handle annotation contexts while calculating extra information
for each token. This enable nested ObjC calls and thus solves (most of)
llvm.org/PR15164. E.g., we can now format:

[contentsContainer replaceSubview:[subviews objectAtIndex:0]
                             with:contentsNativeView];

Also fix a problem with the formatting of types in casts as this was
trivial now.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174498 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoFormatter: No space after & and * in front of ObjC message expressions.
Nico Weber [Wed, 6 Feb 2013 06:20:11 +0000 (06:20 +0000)]
Formatter: No space after & and * in front of ObjC message expressions.

1. let determineStarAmp() check of unary operators before checking for
   "is next '['". That check was added in r173150, and the test from that
   revision passes either way.

2. change determineStarAmp() to categorize '*' and '&' after '=' as unary
   operator.

3. don't let parseSquare() overwrite the type of a '*' or '&' before the start
   of an objc message expression if has the role of unary operator.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174489 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoDon't check whether a friend declaration is correctly formed when instantiating,
Nick Lewycky [Wed, 6 Feb 2013 05:59:33 +0000 (05:59 +0000)]
Don't check whether a friend declaration is correctly formed when instantiating,
we already checked it when parsing.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174486 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoUse a dyn_cast to avoid a crash when the TypeLoc is not a ConstantArrayTypeLoc.
Chad Rosier [Wed, 6 Feb 2013 00:58:34 +0000 (00:58 +0000)]
Use a dyn_cast to avoid a crash when the TypeLoc is not a ConstantArrayTypeLoc.
rdar://13153516

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174477 91177308-0d34-0410-b5e6-96231b3b80d8

11 years ago[Headers] Use standard builtin defines instead of typeof trickery.
Daniel Dunbar [Wed, 6 Feb 2013 00:38:13 +0000 (00:38 +0000)]
[Headers] Use standard builtin defines instead of typeof trickery.

 - The trickery can confuse more basic source processors, in particular the
   Unix conformance tool that wants to scan headers.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174475 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoAdded test for r174461 that checks that the desired behavior also occurs in ObjC...
Michael Gottesman [Wed, 6 Feb 2013 00:14:48 +0000 (00:14 +0000)]
Added test for r174461 that checks that the desired behavior also occurs in ObjC++ alongside ObjC.

\end paranoia.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174471 91177308-0d34-0410-b5e6-96231b3b80d8

11 years ago[analyzer]Revert part of r161511; suppresses leak false positives in C++
Anna Zaks [Wed, 6 Feb 2013 00:01:14 +0000 (00:01 +0000)]
[analyzer]Revert part of r161511; suppresses leak false positives in C++

This is a "quick fix".

The underlining issue is that when a const pointer to a struct is passed
into a function, we do not invalidate the pointer fields. This results
in false positives that are common in C++ (since copy constructors are
prevalent). (Silences two llvm false positives.)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174468 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoAdding armv7l default to cortex-a8
Renato Golin [Tue, 5 Feb 2013 23:42:01 +0000 (23:42 +0000)]
Adding armv7l default to cortex-a8

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174466 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoChanged CGObjCMac.cpp to add the marker externally_initialized to SELECTOR_REFERENCES...
Michael Gottesman [Tue, 5 Feb 2013 23:08:45 +0000 (23:08 +0000)]
Changed CGObjCMac.cpp to add the marker externally_initialized to SELECTOR_REFERENCES in both the fragile and non-fragile API.

This is to ensure that GlobalOpt in LLVM does not attempt to look through a
selector reference to a method var name at compile time.

I also added a test/updated old tests that need to recognize the new keyword.

rdar://12580965.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174461 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoAdd note why we used a switch.
Ted Kremenek [Tue, 5 Feb 2013 22:03:14 +0000 (22:03 +0000)]
Add note why we used a switch.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174449 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoMinor tweak to install docs
Douglas Gregor [Tue, 5 Feb 2013 22:01:16 +0000 (22:01 +0000)]
Minor tweak to install docs

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174448 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoChange subexpressions to be visited in the CFG from left-to-right.
Ted Kremenek [Tue, 5 Feb 2013 22:00:19 +0000 (22:00 +0000)]
Change subexpressions to be visited in the CFG from left-to-right.

This is a more natural order of evaluation, and it is very important
for visualization in the static analyzer.  Within Xcode, the arrows
will not jump from right to left, which looks very visually jarring.
It also provides a more natural location for dataflow-based diagnostics.

Along the way, we found a case in the analyzer diagnostics where we
needed to indicate that a variable was "captured" by a block.

-fsyntax-only timings on sqlite3.c show no visible performance change,
although this is just one test case.

Fixes <rdar://problem/13016513>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174447 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoRemove an uninteresting note
Douglas Gregor [Tue, 5 Feb 2013 21:13:55 +0000 (21:13 +0000)]
Remove an uninteresting note

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174441 91177308-0d34-0410-b5e6-96231b3b80d8

11 years ago[analyzer] Teach the analyzer to use a symbol for p when evaluating
Anna Zaks [Tue, 5 Feb 2013 19:52:28 +0000 (19:52 +0000)]
[analyzer] Teach the analyzer to use a symbol for p when evaluating
(void*)p.

Addresses the false positives similar to the test case.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174436 91177308-0d34-0410-b5e6-96231b3b80d8

11 years ago[analyzer] add comment
Anna Zaks [Tue, 5 Feb 2013 19:52:26 +0000 (19:52 +0000)]
[analyzer] add comment

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174435 91177308-0d34-0410-b5e6-96231b3b80d8

11 years ago[analyzer] Fix typo, better doxygen as per Jordan's feedback.
Anna Zaks [Tue, 5 Feb 2013 19:52:24 +0000 (19:52 +0000)]
[analyzer] Fix typo, better doxygen as per Jordan's feedback.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174434 91177308-0d34-0410-b5e6-96231b3b80d8

11 years ago[analyzer] Add a doc describing the internals of RegionStore.
Jordan Rose [Tue, 5 Feb 2013 17:31:34 +0000 (17:31 +0000)]
[analyzer] Add a doc describing the internals of RegionStore.

This is a text file with Markdown-ish formatting because we haven't decided
where analyzer internal documents should go, but it's probably better to
have this in source control than sitting on my local drive forever.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174398 91177308-0d34-0410-b5e6-96231b3b80d8

11 years ago[arcmt] Make sure the objc migrators work fine when used with a PCH.
Argyrios Kyrtzidis [Tue, 5 Feb 2013 16:37:00 +0000 (16:37 +0000)]
[arcmt] Make sure the objc migrators work fine when used with a PCH.

rdar://13140508

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174386 91177308-0d34-0410-b5e6-96231b3b80d8

11 years ago[frontend] Don't put a PCH/PTH filename into the set of includes in the preprocessor...
Argyrios Kyrtzidis [Tue, 5 Feb 2013 16:36:52 +0000 (16:36 +0000)]
[frontend] Don't put a PCH/PTH filename into the set of includes in the preprocessor options;
since only one of them is allowed in command-line, process them separately.

Otherwise, if more than one is specified in the command-line, one is processed normally
and the others are going to be treated and included as header files.

Related to radar://13140508

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174385 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoFormatter: Detect ObjC method expressions after unary operators.
Nico Weber [Tue, 5 Feb 2013 16:21:00 +0000 (16:21 +0000)]
Formatter: Detect ObjC method expressions after unary operators.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174384 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoInitial support for formatting ObjC method declarations/calls.
Daniel Jasper [Tue, 5 Feb 2013 10:07:47 +0000 (10:07 +0000)]
Initial support for formatting ObjC method declarations/calls.

We can now format stuff like:
- (void)doSomethingWith:(GTMFoo *)theFoo
                   rect:(NSRect)theRect
               interval:(float)theInterval {
  [myObject doFooWith:arg1 //
                 name:arg2
                error:arg3];

}

This seems to fix everything mentioned in llvm.org/PR14939.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174364 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoFix some linebreak decisions in Google format.
Daniel Jasper [Tue, 5 Feb 2013 09:41:21 +0000 (09:41 +0000)]
Fix some linebreak decisions in Google format.

Before:
f(aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +
  aaaaaaaaaaaaaaaaaaaa);
aaaaaaa(aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa(aaaaaaaaaaaaaaaaa,
                                                    aaaaaaaaaaaaaaaa));

After:
f(aaaaaaaaaaaaaaaaaaaa,
  aaaaaaaaaaaaaaaaaaaa,
  aaaaaaaaaaaaaaaaaaaa + aaaaaaaaaaaaaaaaaaaa);
aaaaaaa(aaaaaaaaaaaaa,
        aaaaaaaaaaaaa,
        aaaaaaaaaaaaa(aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa));

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174363 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoFix formatting regression introduced by r174307.
Daniel Jasper [Tue, 5 Feb 2013 09:34:14 +0000 (09:34 +0000)]
Fix formatting regression introduced by r174307.

In preprocessor definitions, we would not parse all the tokens and thus
not annotate them anymore. This led to a wrong formatting of comments
in google style:

  #endif // HEADER_GUARD  -- requires two spaces

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174361 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoFix typo in comment
Arnaud A. de Grandmaison [Tue, 5 Feb 2013 09:06:17 +0000 (09:06 +0000)]
Fix typo in comment

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174359 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoTextDiagnostic.cpp: Suppress a warning to use ptrdiff_t on i686-clang. [-Wsign-compare]
NAKAMURA Takumi [Tue, 5 Feb 2013 07:37:07 +0000 (07:37 +0000)]
TextDiagnostic.cpp: Suppress a warning to use ptrdiff_t on i686-clang. [-Wsign-compare]

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174353 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoDriver and option support for -gsplit-dwarf. This is a part of
Eric Christopher [Tue, 5 Feb 2013 07:29:57 +0000 (07:29 +0000)]
Driver and option support for -gsplit-dwarf. This is a part of
the DWARF5 split dwarf proposal.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174349 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoSpaces instead of tabs.
Eric Christopher [Tue, 5 Feb 2013 07:29:49 +0000 (07:29 +0000)]
Spaces instead of tabs.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174348 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoRevert "Remove sparse text on diagnostic options. These are not really documented...
Ted Kremenek [Tue, 5 Feb 2013 06:33:47 +0000 (06:33 +0000)]
Revert "Remove sparse text on diagnostic options.  These are not really documented anywhere, and they really aren't for normal users."

I changed my mind.  We should just document these in the man page.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174344 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoRemove dead code related to the now defunct PCH stat cache.
Ted Kremenek [Tue, 5 Feb 2013 06:21:59 +0000 (06:21 +0000)]
Remove dead code related to the now defunct PCH stat cache.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174342 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoTest for virtual instead of pure here. It has the exact same effect, and John
Nick Lewycky [Tue, 5 Feb 2013 06:20:31 +0000 (06:20 +0000)]
Test for virtual instead of pure here. It has the exact same effect, and John
claims it will improve performance.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174341 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoPR15095: Use more correct source locations for the InitListExpr we fake up for
Richard Smith [Tue, 5 Feb 2013 05:55:57 +0000 (05:55 +0000)]
PR15095: Use more correct source locations for the InitListExpr we fake up for
vector initialization. Patch by John Stratton!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174339 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoRemove sparse text on diagnostic options. These are not really documented anywhere...
Ted Kremenek [Tue, 5 Feb 2013 05:55:21 +0000 (05:55 +0000)]
Remove sparse text on diagnostic options.  These are not really documented anywhere, and they really aren't for normal users.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174338 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoAdd some missing diagnostics for C++11 narrowing conversions.
Richard Smith [Tue, 5 Feb 2013 05:52:24 +0000 (05:52 +0000)]
Add some missing diagnostics for C++11 narrowing conversions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174337 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoImplements the convenience matcher findAll.
Manuel Klimek [Mon, 4 Feb 2013 10:59:20 +0000 (10:59 +0000)]
Implements the convenience matcher findAll.

We found that findAll has been implemented incorrectly multiple times
by various people using the matchers. To prevent further wasted
development effort, it makes sense to add it as convenience matcher
implemented as eachOf(m, forEachDescendant(m)).

This patch also updates the docs with the new matchers.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174320 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoAdd an eachOf matcher.
Manuel Klimek [Mon, 4 Feb 2013 09:42:38 +0000 (09:42 +0000)]
Add an eachOf matcher.

eachOf gives closure on the forEach and forEachDescendant matchers.
Before, it was impossible to implement a findAll matcher, as matching
the node or any of its descendants was not expressible (since anyOf
only triggers the first match).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174315 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoImprove handling of trailing block comments
Daniel Jasper [Mon, 4 Feb 2013 08:34:57 +0000 (08:34 +0000)]
Improve handling of trailing block comments

This is a follow up to r174309 to actually make it work.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174314 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoImprove formatting of stream operators.
Daniel Jasper [Mon, 4 Feb 2013 07:34:48 +0000 (07:34 +0000)]
Improve formatting of stream operators.

If there are string literals on either side of a '<<', chances are
high that they represent logically separate concepts. Otherwise,
the author could just have just a single literal (possible split
over multiple lines).

So, we can now nicely format things like:
cout << "somepacket = {\n"
     << "  val a = " << ValueA << "\n"
     << "  val b = " << ValueB << "\n"
     << "}";

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174310 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoImprove handling of trailing block comments.
Daniel Jasper [Mon, 4 Feb 2013 07:32:14 +0000 (07:32 +0000)]
Improve handling of trailing block comments.

We can now (even in non-bin-packing modes) format:
someFunction(1, /* comment 1 */
             2, /* comment 2 */
             3, /* comment 3 */
             aaa);

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174309 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoFix an error in formatting of for-loops.
Daniel Jasper [Mon, 4 Feb 2013 07:30:30 +0000 (07:30 +0000)]
Fix an error in formatting of for-loops.

Two minor changes:
* Slight penalty for breaking at "," as opposed to ";".
* Don't apply bin-packing rules to for-loops.

Before:
for (int aaaaaa = aaaaaaaaaa; aaaaaa < bbbbbbbb; ++aaaaaa,
         ++ccccccccccccccc) {}

After:
for (int aaaaaa = aaaaaaaaaa; aaaaaa < bbbbbbbb;
     ++aaaaaa, ++ccccccccccccccc) {}

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174308 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoRestructuring of token annotation for formatting.
Daniel Jasper [Mon, 4 Feb 2013 07:21:18 +0000 (07:21 +0000)]
Restructuring of token annotation for formatting.

This combines several changes:
* Calculation token type (e.g. for * and &) in the AnnotatingParser.
* Calculate the scope binding strength in the AnnotatingParser.
* Let <> and [] scopes bind stronger than () and {} scopes.
* Add minimal debugging output.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174307 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoclang/Analysis: Fix r174245, a valgrind error in AnalysisDeclContext::getBody(bool...
NAKAMURA Takumi [Mon, 4 Feb 2013 05:06:21 +0000 (05:06 +0000)]
clang/Analysis: Fix r174245, a valgrind error in AnalysisDeclContext::getBody(bool &IsAutosynthesized), to initialize IsAutosynthesized explicitly.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174303 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoDeclPrinter: fix CXXConstructExpr printing with implicit default argument
Dmitri Gribenko [Sun, 3 Feb 2013 23:02:47 +0000 (23:02 +0000)]
DeclPrinter: fix CXXConstructExpr printing with implicit default argument

This is an improvement of r173630, that handles the following case:

  struct VirualDestrClass
  {
    VirualDestrClass(int arg);
    virtual ~VirualDestrClass();
  };

  struct ConstrWithCleanupsClass
  {
    ConstrWithCleanupsClass(const VirualDestrClass& cplx = VirualDestrClass(42));
  };

  ConstrWithCleanupsClass cwcNoArg;

That was printed as:

  ConstrWithCleanupsClass cwcNoArg();

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174296 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoDrop value names from test to get -Asserts builds back to green.
Benjamin Kramer [Sun, 3 Feb 2013 20:22:35 +0000 (20:22 +0000)]
Drop value names from test to get -Asserts builds back to green.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174294 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoCodeGen: Implement hint values for dynamic_cast as described in the Itanium C++ ABI.
Benjamin Kramer [Sun, 3 Feb 2013 19:59:25 +0000 (19:59 +0000)]
CodeGen: Implement hint values for dynamic_cast as described in the Itanium C++ ABI.

This can yield dramatic speedups of dynamic_cast for simple inheritance trees,
at least with libsupc++. Neither libcxxabi nor libcxxrt make use of this
hint currently, it was never implemented because clang didn't support it.

There was some concern about the number of class hierarchy walks this change
introduces. If it turns out to be an issue we can add caching either at the cast
pair level or even deeper, but we also do a lot of walks in Sema so this
codepath is probably fairly optimized already.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174293 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoCodeGen: Remove unnecessary const_casts. No functionality change.
Benjamin Kramer [Sun, 3 Feb 2013 18:55:34 +0000 (18:55 +0000)]
CodeGen: Remove unnecessary const_casts. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174292 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoFix bug in formatting of nested initializers.
Daniel Jasper [Sun, 3 Feb 2013 18:07:15 +0000 (18:07 +0000)]
Fix bug in formatting of nested initializers.

We can now format:
SomeArrayOfSomeType a = { { { 1, 2, 3 } }, { { 1, 2, 3 } },
                          { { 111111111111111111111111111111,
                              222222222222222222222222222222,
                              333333333333333333333333333333 } },
                          { { 1, 2, 3 } }, { { 1, 2, 3 } } };

Before, we did strange things there.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174291 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoComment to XML conversion: replace string comparison with command ID comparison
Dmitri Gribenko [Sun, 3 Feb 2013 17:48:05 +0000 (17:48 +0000)]
Comment to XML conversion: replace string comparison with command ID comparison

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174290 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoCodeGen: Mark the runtime function __dynamic_cast as readonly & nounwind.
Benjamin Kramer [Sun, 3 Feb 2013 17:44:25 +0000 (17:44 +0000)]
CodeGen: Mark the runtime function __dynamic_cast as readonly & nounwind.

This allows the optimizer to CSE dynamic_casts.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174289 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoRemove unneeded const_casts
Dmitri Gribenko [Sun, 3 Feb 2013 16:10:26 +0000 (16:10 +0000)]
Remove unneeded const_casts

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174287 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agolibclang: wrap CXString implementation into 'namespace cxstring'
Dmitri Gribenko [Sun, 3 Feb 2013 13:54:26 +0000 (13:54 +0000)]
libclang: wrap CXString implementation into 'namespace cxstring'

This removes quite a few 'cxstring::' qualifications where they are obvious.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174286 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agolibclang: remove 'using namespace cxstring'
Dmitri Gribenko [Sun, 3 Feb 2013 13:52:47 +0000 (13:52 +0000)]
libclang: remove 'using namespace cxstring'

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174285 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agolibclang: migrate IndexingDeclVisitor to ConstDeclVisitor
Dmitri Gribenko [Sun, 3 Feb 2013 13:42:20 +0000 (13:42 +0000)]
libclang: migrate IndexingDeclVisitor to ConstDeclVisitor

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174284 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agolibclang: remove unneeded const_cast
Dmitri Gribenko [Sun, 3 Feb 2013 13:26:20 +0000 (13:26 +0000)]
libclang: remove unneeded const_cast

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174283 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoConstify ASTContext::getObjContainingInterface
Dmitri Gribenko [Sun, 3 Feb 2013 13:23:21 +0000 (13:23 +0000)]
Constify ASTContext::getObjContainingInterface

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174282 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agolibclang: migrate USRGenerator to ConstDeclVisitor
Dmitri Gribenko [Sun, 3 Feb 2013 13:21:23 +0000 (13:21 +0000)]
libclang: migrate USRGenerator to ConstDeclVisitor

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174281 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agolibclang: remove unneeded const_casts
Dmitri Gribenko [Sun, 3 Feb 2013 13:19:54 +0000 (13:19 +0000)]
libclang: remove unneeded const_casts

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174280 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoclang/test/CodeGenCXX/debug-info-class.cpp: Tweak to unbreak test for a few targets.
NAKAMURA Takumi [Sun, 3 Feb 2013 12:52:54 +0000 (12:52 +0000)]
clang/test/CodeGenCXX/debug-info-class.cpp: Tweak to unbreak test for a few targets.

  - Relax a expression for arm-gnueabi.
  - Exclude msvc to limit target triplets to add limited a few targets.
    Feel free to remove actions if guys thought they redundant.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174278 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoRevert "[analyzer] Model trivial copy/move ctors with an aggregate bind."
Jordan Rose [Sat, 2 Feb 2013 05:15:53 +0000 (05:15 +0000)]
Revert "[analyzer] Model trivial copy/move ctors with an aggregate bind."

...again. The problem has not been fixed and our internal buildbot is still
getting hangs.

This reverts r174212, originally applied in r173951, then reverted in r174069.
Will not re-apply until the entire project analyzes successfully on my
local machine.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174265 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agolibclang: introduce cxstring::{createRef,createDup} for StringRefs
Dmitri Gribenko [Sat, 2 Feb 2013 02:19:29 +0000 (02:19 +0000)]
libclang: introduce cxstring::{createRef,createDup} for StringRefs

Also migrate all clients from the old API.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174263 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoPR15132: Replace "address expression must be an lvalue or a function
Richard Smith [Sat, 2 Feb 2013 02:14:45 +0000 (02:14 +0000)]
PR15132: Replace "address expression must be an lvalue or a function
designator" diagnostic with more correct and more human-friendly "cannot take
address of rvalue of type 'T'".

For the case of & &T::f, provide a custom diagnostic, rather than unhelpfully
saying "cannot take address of rvalue of type '<overloaded function type>'".

For the case of &array_temporary, treat it just like a class temporary
(including allowing it as an extension); the existing diagnostic wording
for the class temporary case works fine.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174262 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoCorrectly classify T{} as an array temporary if T is an array of class type with...
Richard Smith [Sat, 2 Feb 2013 02:11:36 +0000 (02:11 +0000)]
Correctly classify T{} as an array temporary if T is an array of class type with nontrivial destructor.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174261 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoAdd some horrible Perl code to teach scan-build to recursively walk a directory for...
Ted Kremenek [Sat, 2 Feb 2013 01:52:41 +0000 (01:52 +0000)]
Add some horrible Perl code to teach scan-build to recursively walk a directory for HTML files.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174260 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoDon't forget to run destructors when we create an array temporary of class type.
Richard Smith [Sat, 2 Feb 2013 01:13:06 +0000 (01:13 +0000)]
Don't forget to run destructors when we create an array temporary of class type.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174257 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoRevert "Update checker build to checker-271."
Ted Kremenek [Sat, 2 Feb 2013 01:06:22 +0000 (01:06 +0000)]
Revert "Update checker build to checker-271."

Turns out we didn't update scan-build to work with HTML files in nested directories.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174256 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoFixed another whitespace issue... *sigh*.
Michael Gottesman [Sat, 2 Feb 2013 01:05:06 +0000 (01:05 +0000)]
Fixed another whitespace issue... *sigh*.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174255 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoFixed whitespace.
Michael Gottesman [Sat, 2 Feb 2013 01:03:01 +0000 (01:03 +0000)]
Fixed whitespace.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174254 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoOn platforms which do not support ARC natively, do not mark objc_retain/objc_release...
Michael Gottesman [Sat, 2 Feb 2013 00:57:44 +0000 (00:57 +0000)]
On platforms which do not support ARC natively, do not mark objc_retain/objc_release as "nonlazybind".

rdar://13108298.
rdar://13129783.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174253 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoUpdate checker build to checker-271.
Ted Kremenek [Sat, 2 Feb 2013 00:57:28 +0000 (00:57 +0000)]
Update checker build to checker-271.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174252 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoRevert r174246, accidentally committed.
David Blaikie [Sat, 2 Feb 2013 00:39:32 +0000 (00:39 +0000)]
Revert r174246, accidentally committed.

This reverts commit 1513eb9284c23acfd19cf742b95996fbb11ca741.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174249 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoSentenc-ify comment added in r174206.
David Blaikie [Sat, 2 Feb 2013 00:36:58 +0000 (00:36 +0000)]
Sentenc-ify comment added in r174206.

Based on post-commit review by Paul Robinson.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174248 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoGeneralize DebugInfo tests by avoiding explicit metadata numbers
David Blaikie [Sat, 2 Feb 2013 00:34:26 +0000 (00:34 +0000)]
Generalize DebugInfo tests by avoiding explicit metadata numbers

This addresses several (not all) debug info tests that use explicit metadata
numbers. Wherever the same number appeared more than once in a test I used
a named match to ensure the same number appeared in all those cases (this may
still be overly constraining test cases as they may not have actually cared
about that relationship). For one-off numbers I just replaced them with an
unnamed regex.

This may underconstrain poorly written test cases that were interested in
checking that certain metadata nodes were related but didn't actually match
on all the related nodes numbers.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174247 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoBasics
David Blaikie [Sat, 2 Feb 2013 00:34:16 +0000 (00:34 +0000)]
Basics

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174246 91177308-0d34-0410-b5e6-96231b3b80d8

11 years ago[analyzer] Always inline functions with bodies generated by BodyFarm.
Anna Zaks [Sat, 2 Feb 2013 00:30:04 +0000 (00:30 +0000)]
[analyzer] Always inline functions with bodies generated by BodyFarm.

Inlining these functions is essential for correctness. We often have
cases where we do not inline calls. For example, the shallow mode and
when reanalyzing previously inlined ObjC methods as top level.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174245 91177308-0d34-0410-b5e6-96231b3b80d8

11 years ago[analyzer] Print Inline mode with -analyzer-display-progress.
Anna Zaks [Sat, 2 Feb 2013 00:30:02 +0000 (00:30 +0000)]
[analyzer] Print Inline mode with -analyzer-display-progress.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174244 91177308-0d34-0410-b5e6-96231b3b80d8

11 years ago[analyzer] Fix typo.
Anna Zaks [Sat, 2 Feb 2013 00:29:59 +0000 (00:29 +0000)]
[analyzer] Fix typo.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174243 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoThis patch makes "&Cls::purevfn" not an odr use. This isn't what the standard
Nick Lewycky [Sat, 2 Feb 2013 00:25:55 +0000 (00:25 +0000)]
This patch makes "&Cls::purevfn" not an odr use. This isn't what the standard
says, but that's a defect (to be filed). "Cls::purevfn()" is still an odr use.

Also fixes a bug that caused us to not mark the function referenced just
because we didn't want to mark it odr used.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174242 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agolibclang: introduce cxstring::{createRef,createDup} for C strings
Dmitri Gribenko [Sat, 2 Feb 2013 00:02:12 +0000 (00:02 +0000)]
libclang: introduce cxstring::{createRef,createDup} for C strings

Also migrate all clients from the old API.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174238 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoMerge "special" types from different modules in the AST reader.
Douglas Gregor [Fri, 1 Feb 2013 23:45:03 +0000 (23:45 +0000)]
Merge "special" types from different modules in the AST reader.

Different modules may have different views of the various "special"
types in the AST, such as the redefinition type for "id". Merge those
types rather than only considering the redefinition types for the
first AST file loaded.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174234 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoclang/test/CodeGenCXX/debug-info-class.cpp: Fixup for -Asserts.
NAKAMURA Takumi [Fri, 1 Feb 2013 22:53:19 +0000 (22:53 +0000)]
clang/test/CodeGenCXX/debug-info-class.cpp: Fixup for -Asserts.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174229 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoConst'ify Preprocessor::getPredefinesFileID.
Argyrios Kyrtzidis [Fri, 1 Feb 2013 20:35:47 +0000 (20:35 +0000)]
Const'ify Preprocessor::getPredefinesFileID.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174218 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoUnbreak Makefile build after r174216
Dmitri Gribenko [Fri, 1 Feb 2013 20:30:26 +0000 (20:30 +0000)]
Unbreak Makefile build after r174216

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174217 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoComment parsing: improve the fidelity of XML output for many block commands
Dmitri Gribenko [Fri, 1 Feb 2013 20:23:57 +0000 (20:23 +0000)]
Comment parsing: improve the fidelity of XML output for many block commands

This change introduces a 'kind' attribute for the <Para> tag, that captures the
kind of the parent block command.

For example:

\todo Meow.

used to be just <Para>Meow.</Para>, but now it is
<Para kind="todo">Meow.</Para>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174216 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoAdd some missing PPC cpus
Bill Schmidt [Fri, 1 Feb 2013 20:23:10 +0000 (20:23 +0000)]
Add some missing PPC cpus

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174215 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoobjc: Provide correct fixit instruction when two mismatched
Fariborz Jahanian [Fri, 1 Feb 2013 20:04:49 +0000 (20:04 +0000)]
objc: Provide correct fixit instruction when two mismatched
nsstringis are compared without. // rdar://12716301

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174214 91177308-0d34-0410-b5e6-96231b3b80d8

11 years ago[analyzer] Explain why we have system-header-simulator*.h files.
Jordan Rose [Fri, 1 Feb 2013 19:50:01 +0000 (19:50 +0000)]
[analyzer] Explain why we have system-header-simulator*.h files.

Suggested by Csaba. Text based on an e-mail of mine on cfe-dev.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174213 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoRe-apply "[analyzer] Model trivial copy/move ctors with an aggregate bind."
Jordan Rose [Fri, 1 Feb 2013 19:49:59 +0000 (19:49 +0000)]
Re-apply "[analyzer] Model trivial copy/move ctors with an aggregate bind."

With the optimization in the previous commit, this should be safe again.

Originally applied in r173951, then reverted in r174069.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174212 91177308-0d34-0410-b5e6-96231b3b80d8

11 years ago[analyzer] Reuse a LazyCompoundVal if its type matches the new region.
Jordan Rose [Fri, 1 Feb 2013 19:49:57 +0000 (19:49 +0000)]
[analyzer] Reuse a LazyCompoundVal if its type matches the new region.

This allows us to keep from chaining LazyCompoundVals in cases like this:
  CGRect r = CGRectMake(0, 0, 640, 480);
  CGRect r2 = r;
  CGRect r3 = r2;

Previously we only made this optimization if the struct did not begin with
an aggregate member, to make sure that we weren't picking up an LCV for
the first field of the struct. But since LazyCompoundVals are typed, we can
make that inference directly by comparing types.

This is a pure optimization; the test changes are to guard against possible
future regressions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174211 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoFix exception handling line table problems introduced by r173593
David Blaikie [Fri, 1 Feb 2013 19:09:49 +0000 (19:09 +0000)]
Fix exception handling line table problems introduced by r173593

r173593 made us a little too eager to associate all code at the end of a
function with the user-written 'return' line. This caused problems with
breakpoints as they'd be set in exception handling code preceeding the
actual non-exception return handling code, leading to the breakpoint never
being hit in non-exceptional execution.

This change restores the pre-r173593 exception handling line information where
the cleanup code is associated with the '}' not the return line.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174206 91177308-0d34-0410-b5e6-96231b3b80d8