]> granicus.if.org Git - clang/log
clang
11 years agoTests and status for DR51-99.
Richard Smith [Sun, 26 May 2013 22:03:53 +0000 (22:03 +0000)]
Tests and status for DR51-99.

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

11 years agoFormatter/ObjC: In dictionary literals, break after ':', not before it.
Nico Weber [Sun, 26 May 2013 05:39:26 +0000 (05:39 +0000)]
Formatter/ObjC: In dictionary literals, break after ':', not before it.

Before:
  @{ NSFontAttributeNameeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
     : regularFont, };

Now:
  @{ NSFontAttributeNameeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee :
     regularFont, };

':'s in dictionary literals (and the corresponding {}s) are now marked as
TT_ObjCDictLiteral too, which makes further improvements to dict literal
layout possible.

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

11 years agoFix linkage computation for derived types in inline functions.
Rafael Espindola [Sat, 25 May 2013 17:16:20 +0000 (17:16 +0000)]
Fix linkage computation for derived types in inline functions.

John noticed that the fix for pr15930 (r181981) didn't handle indirect
uses of local types. For example, a pointer to local struct, or a
function that returns it.

One way to implement this would be to recursively look for local
types. This would look a lot like the linkage computation itself for
types.

To avoid code duplication and utilize the existing linkage cache, this
patch just makes the computation of "type with no linkage but
externally visible because it is from an inline function"  part of the
linkage computation itself.

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

11 years agoFix comment type pointed out by Kim Gräsman.
Duncan Sands [Sat, 25 May 2013 02:22:10 +0000 (02:22 +0000)]
Fix comment type pointed out by Kim Gräsman.

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

11 years ago[Preprocessor] Prevent expansion of y in x ## y when x is empty
Argyrios Kyrtzidis [Sat, 25 May 2013 01:35:18 +0000 (01:35 +0000)]
[Preprocessor] Prevent expansion of y in x ## y when x is empty

When x is empty, x ## is suppressed, and when y gets expanded, the fact that it follows ## is not
available in the macro expansion result. The macro definition can be checked instead, the ## will
be available there regardless of what x expands to.

Fixes http://llvm.org/PR12767

Patch by Harald van Dijk!

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

11 years agoMake isBeforeInTranslationUnit consistent in the face of failures to get a valid...
Argyrios Kyrtzidis [Sat, 25 May 2013 01:03:03 +0000 (01:03 +0000)]
Make isBeforeInTranslationUnit consistent in the face of failures to get a valid FileID (V2).

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

11 years agoIncrease the portability of this script a bit: use /usr/bin/env to find bash,
Richard Smith [Fri, 24 May 2013 23:54:21 +0000 (23:54 +0000)]
Increase the portability of this script a bit: use /usr/bin/env to find bash,
rather than assuming it lives in the path. Patch by Eitan Adler!

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

11 years agoMake isBeforeInTranslationUnit consistent in the face of failures to get a valid...
Argyrios Kyrtzidis [Fri, 24 May 2013 23:47:43 +0000 (23:47 +0000)]
Make isBeforeInTranslationUnit consistent in the face of failures to get a valid FileID.

Suggested by Jordan.

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

11 years agoWarn on va_start() when called with a reference parameter.
Nico Weber [Fri, 24 May 2013 23:31:57 +0000 (23:31 +0000)]
Warn on va_start() when called with a reference parameter.

http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1905.pdf 18.7p3
explicitly calls this (and some other things) out as undefined.

Also move 2 other existing warnings behind the new -Wvarargs flag.

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

11 years ago[libclang] Add logging for clang_createTranslationUnit.
Argyrios Kyrtzidis [Fri, 24 May 2013 22:24:07 +0000 (22:24 +0000)]
[libclang] Add logging for clang_createTranslationUnit.

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

11 years agoAdd some safety checks in a couple of SourceManager functions.
Argyrios Kyrtzidis [Fri, 24 May 2013 22:24:04 +0000 (22:24 +0000)]
Add some safety checks in a couple of SourceManager functions.

This is to address crash in rdar://13932308

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

11 years ago[analyzer] Fix test for r182677.
Jordan Rose [Fri, 24 May 2013 21:49:58 +0000 (21:49 +0000)]
[analyzer] Fix test for r182677.

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

11 years ago[analyzer] Treat analyzer-synthesized function bodies like implicit bodies.
Jordan Rose [Fri, 24 May 2013 21:43:11 +0000 (21:43 +0000)]
[analyzer] Treat analyzer-synthesized function bodies like implicit bodies.

When generating path notes, implicit function bodies are shown at the call
site, so that, say, copying a POD type in C++ doesn't jump you to a header
file. This is especially important when the synthesized function itself
calls another function (or block), in which case we should try to jump the
user around as little as possible.

By checking whether a called function has a body in the AST, we can tell
if the analyzer synthesized the body, and if we should therefore collapse
the call down to the call site like a true implicitly-defined function.

<rdar://problem/13978414>

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

11 years ago[analyzer; new edges] Properly set location after exiting an inlined call.
Jordan Rose [Fri, 24 May 2013 21:43:05 +0000 (21:43 +0000)]
[analyzer; new edges] Properly set location after exiting an inlined call.

The new edge algorithm would keep track of the previous location in each
location context, so that it could draw arrows coming in and out of each
inlined call. However, it tried to access the location of the call before
it was actually set (at the CallEnter node). This only affected
unterminated calls at the end of a path; calls with visible exit nodes
already had a valid location.

This patch ditches the location context map, since we're processing the
nodes in order anyway, and just unconditionally updates the PrevLoc
variable after popping out of an inlined call.

<rdar://problem/13983470>

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

11 years agoReplace Count{Leading,Trailing}Zeros_{32,64} with count{Leading,Trailing}Zeros.
Michael J. Spencer [Fri, 24 May 2013 21:42:04 +0000 (21:42 +0000)]
Replace Count{Leading,Trailing}Zeros_{32,64} with count{Leading,Trailing}Zeros.

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

11 years agoDebugInfo: Rename CreatePointerType to getOrCreateTypeDeclaration
David Blaikie [Fri, 24 May 2013 21:33:22 +0000 (21:33 +0000)]
DebugInfo: Rename CreatePointerType to getOrCreateTypeDeclaration

To make this more consistent with 'getOrCreateType' & clarify the
distinction between the two. The only thing I couldn't quite communicate
in the name is that getOrCreateTypeDeclaration may actually produce a
full definition (in -fno-limit-debug-info) but the point is to call it
whenever only a declaration is needed & the implementation can choose
whether to provide a declaration or definition.

(also, unfortunately, getOrCreateType can produce declarations too - we
should sure this up by making it not do that - any caller that can
tolerate a declaration should be calling getOrCreateTypeDeclaration
instead)

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

11 years agoPR16091: Error when attempting to emit debug info for undeduced auto return types
David Blaikie [Fri, 24 May 2013 21:24:35 +0000 (21:24 +0000)]
PR16091: Error when attempting to emit debug info for undeduced auto return types

Perhaps we should just suppress this, rather than erroring, but since we
have the infrastructure for it I figured I'd use it - if this is
determined to be not the right thing we should probably remove that
infrastructure entirely. I guess it's lying around from the early days
of implementing debug info support.

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

11 years ago[PATCH] Generate cold attribute for functions marked __atribute__((cold))
Diego Novillo [Fri, 24 May 2013 20:18:15 +0000 (20:18 +0000)]
[PATCH] Generate cold attribute for functions marked __atribute__((cold))

This removes a FIXME in CodeGenModule::SetLLVMFunctionAttributesForDefinition.
When a function is declared cold we can now generate the IR attribute in
addition to marking the function to be optimized for size.

I tried adding a separate CHECK in the existing test, but it was
failing.  I suppose CHECK matches one line exactly once?  This would be
a problem if the attributes are listed in a different order, though they
seem to be sorted.

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

11 years agotypo.
Adrian Prantl [Fri, 24 May 2013 18:38:08 +0000 (18:38 +0000)]
typo.

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

11 years ago[ms-inline asm] Don't diagnose an empty lookup for inline assmebly. This happen
Chad Rosier [Fri, 24 May 2013 18:32:55 +0000 (18:32 +0000)]
[ms-inline asm] Don't diagnose an empty lookup for inline assmebly.  This happen
for labels in inline assembly that aren't in the lookup tables.  E.g.,

  __asm {
   a:
   jmp a
  }

rdar://13983623

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

11 years agoIgnore contents of #if 0 blocks.
Alexander Kornienko [Fri, 24 May 2013 18:24:24 +0000 (18:24 +0000)]
Ignore contents of #if 0 blocks.

Summary:
Added stack of preprocessor branching directives, and ignore all tokens
inside #if 0 except for preprocessor directives.

Reviewers: klimek, djasper

Reviewed By: klimek

CC: cfe-commits
Differential Revision: http://llvm-reviews.chandlerc.com/D855

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

11 years agoFix printing CXXTemporaryObjectExpr with default args.
Rafael Espindola [Fri, 24 May 2013 16:11:44 +0000 (16:11 +0000)]
Fix printing CXXTemporaryObjectExpr with default args.

Patch by Will Wilson.

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

11 years agoSuffixing #pragma comment(lib) library names with .lib if necessary. This matches...
Aaron Ballman [Fri, 24 May 2013 15:06:56 +0000 (15:06 +0000)]
Suffixing #pragma comment(lib) library names with .lib if necessary.  This matches MSVC behavior, as well as allows us to properly link libraries such as the ones provided by the MSDN examples.

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

11 years agoAdd -lrt to sanitizer link arguments.
Evgeniy Stepanov [Fri, 24 May 2013 14:28:03 +0000 (14:28 +0000)]
Add -lrt to sanitizer link arguments.

Sanitizer runtime intercepts functions from librt. Not doing this will fail
if the librt dependency is not present at program startup (ex. comes from a
dlopen()ed library).

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

11 years agoFix comment typo pointed out by maslen on IRC.
Duncan Sands [Fri, 24 May 2013 13:41:43 +0000 (13:41 +0000)]
Fix comment typo pointed out by maslen on IRC.

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

11 years agoUser correct case for 'FileCheck'.
Argyrios Kyrtzidis [Fri, 24 May 2013 05:54:31 +0000 (05:54 +0000)]
User correct case for 'FileCheck'.

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

11 years ago[modules] If we hit a failure while loading a PCH/module, abort parsing instead of...
Argyrios Kyrtzidis [Fri, 24 May 2013 05:44:08 +0000 (05:44 +0000)]
[modules] If we hit a failure while loading a PCH/module, abort parsing instead of trying to continue in an invalid state.

Also don't let libclang create a PCH with such an error.

Fixes rdar://13953768

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

11 years agoUpdate static analyzer build to checker-275.
Ted Kremenek [Fri, 24 May 2013 00:50:01 +0000 (00:50 +0000)]
Update static analyzer build to checker-275.

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

11 years agoFix crash-on-invalid if list-initialization works, but we bail out when
Richard Smith [Thu, 23 May 2013 23:20:04 +0000 (23:20 +0000)]
Fix crash-on-invalid if list-initialization works, but we bail out when
building the resulting expression because it invokes a deleted constructor.

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

11 years agoConstify the 'dump' method so that it can be called by a const object.
Bill Wendling [Thu, 23 May 2013 23:10:23 +0000 (23:10 +0000)]
Constify the 'dump' method so that it can be called by a const object.

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

11 years agoFix assert on temporary std::initializer_list.
Richard Smith [Thu, 23 May 2013 21:54:14 +0000 (21:54 +0000)]
Fix assert on temporary std::initializer_list.

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

11 years agoMore tests and a fix for braced init lists.
Daniel Jasper [Thu, 23 May 2013 21:35:49 +0000 (21:35 +0000)]
More tests and a fix for braced init lists.

Before: f(new vector<int> { 1, 2, 3 });
After:  f(new vector<int>{ 1, 2, 3 });

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

11 years ago[analyzer; alternate edges] Add a new test case file to regression test the new arrow...
Ted Kremenek [Thu, 23 May 2013 21:33:12 +0000 (21:33 +0000)]
[analyzer; alternate edges] Add a new test case file to regression test the new arrows algorithm.

This essentially combines the tests in plist-output.m and plist-alternate-output.m.

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

11 years agoFix aligning of comments.
Manuel Klimek [Thu, 23 May 2013 20:46:07 +0000 (20:46 +0000)]
Fix aligning of comments.

Previously we started sequences to align for single line comments when
the previous line had a trailing comment, but the sequence was broken
for other reasons.

Now we re-format:
// a
 // b
f(); // c
to:
// a
// b
f(); // c

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

11 years agoFix aligning of comments that are at the start of the line.
Manuel Klimek [Thu, 23 May 2013 19:54:43 +0000 (19:54 +0000)]
Fix aligning of comments that are at the start of the line.

Now correctly leaves:
f(); // comment
// comment
g(); // comment
... alone if the middle comment was aligned with g() before formatting.

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

11 years agoAdd caveat to __builtin_readcyclecounter documentation.
Tim Northover [Thu, 23 May 2013 19:14:12 +0000 (19:14 +0000)]
Add caveat to __builtin_readcyclecounter documentation.

The ARM cycle-counter can be restricted by the operating system; it's
worth warning potential users of this issue.

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

11 years agoIncrease test coverage for braced init lists.
Daniel Jasper [Thu, 23 May 2013 18:29:16 +0000 (18:29 +0000)]
Increase test coverage for braced init lists.

Also fix a minor bug for constructor initializers with braced init lists.

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

11 years agoImprove formatting of braced lists.
Daniel Jasper [Thu, 23 May 2013 18:05:18 +0000 (18:05 +0000)]
Improve formatting of braced lists.

Before: vector<int> v{ -1};
After:  vector<int> v{-1};

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

11 years agoclang-format integration for git.
Daniel Jasper [Thu, 23 May 2013 17:53:42 +0000 (17:53 +0000)]
clang-format integration for git.

Put this somewhere on your path and use:

git clang-format

Awesome work by Mark Lodato. Many thanks!

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

11 years agoMake helper functions static.
Benjamin Kramer [Thu, 23 May 2013 15:53:44 +0000 (15:53 +0000)]
Make helper functions static.

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

11 years agoStop aligning trailing comments which are aligned with the next line.
Manuel Klimek [Thu, 23 May 2013 11:42:52 +0000 (11:42 +0000)]
Stop aligning trailing comments which are aligned with the next line.

Previously we would align:
f(); // comment
     // other comment
g();

Even if // other comment was at the start of the line. Now we do not
align trailing comments if they have been already aligned correctly
with the next line.

Thus,
f(); // comment
// other comment
g();
will not be changed, while:
f(); // comment
  // other commment
g();
will lead to the two trailing comments being aligned.

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

11 years agoUse a SourceRange for the whitespace location in FormatToken.
Manuel Klimek [Thu, 23 May 2013 10:56:37 +0000 (10:56 +0000)]
Use a SourceRange for the whitespace location in FormatToken.

Replaces the use of WhitespaceStart + WhitspaceLength.
This made a bug in the formatter obvous where we would incorrectly
calculate the next column.

FIXME: There's a similar bug left regarding TokenLength. We should
probably also move to have a TokenRange instead.

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

11 years agoImprove formatting of braced lists.
Daniel Jasper [Thu, 23 May 2013 10:15:45 +0000 (10:15 +0000)]
Improve formatting of braced lists.

Before:
vector<int> x { 1, 2, 3 };
After:
vector<int> x{ 1, 2, 3 };

Also add a style option to remove the spaces inside braced lists,
so that the above becomes:
std::vector<int> v{1, 2, 3};

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

11 years agoFix no-assert compiles.
Manuel Klimek [Thu, 23 May 2013 10:02:51 +0000 (10:02 +0000)]
Fix no-assert compiles.

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

11 years agoExpand parsing of braced init lists.
Manuel Klimek [Thu, 23 May 2013 09:41:43 +0000 (09:41 +0000)]
Expand parsing of braced init lists.

Allows formatting of C++11 braced init list constructs, like:
vector<int> v { 1, 2, 3 };
f({ 1, 2 });

This involves some changes of how tokens are handled in the
UnwrappedLineFormatter. Note that we have a plan to evolve the
design of the token flow into one where we create all tokens
up-front and then annotate them in the various layers (as we
currently already have to create all tokens at once anyway, the
current abstraction does not help). Thus, this introduces
FIXMEs towards that goal.

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

11 years ago[analyzer;alternate edges] fix type that was causing the wrong path piece to get...
Ted Kremenek [Thu, 23 May 2013 06:41:58 +0000 (06:41 +0000)]
[analyzer;alternate edges] fix type that was causing the wrong path piece to get removed.

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

11 years agoFix bitcode desynchronization when loading a PCH containing a class template
Richard Smith [Thu, 23 May 2013 01:49:11 +0000 (01:49 +0000)]
Fix bitcode desynchronization when loading a PCH containing a class template
specialization with modules enabled. Just don't merge them at all for now;
we'll revisit this when support for template merging is added.

In passing, make Decl::dump() a little safer to use with PCH/modules, by making
it not deserialize any additional declarations. From a debugger you can call
decls_begin() or similar first if you want to dump all child decls.

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

11 years agoPR14772: Support constant expression evaluation for _Atomic types.
Richard Smith [Thu, 23 May 2013 00:30:41 +0000 (00:30 +0000)]
PR14772: Support constant expression evaluation for _Atomic types.
 * Treat _Atomic(T) as a literal type if T is a literal type.
 * Evaluate expressions of this type properly.
 * Fix a lurking bug where we built completely bogus ASTs for converting to
   _Atomic types in C++ in some cases, caught by the tests for this change.

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

11 years agoAdding in parsing and the start of semantic support for __sptr and __uptr pointer...
Aaron Ballman [Wed, 22 May 2013 23:25:32 +0000 (23:25 +0000)]
Adding in parsing and the start of semantic support for __sptr and __uptr pointer type qualifiers.  This patch also fixes the correlated __ptr32 and __ptr64 pointer qualifiers so that they are truly type attributes instead of declaration attributes.

For more information about __sptr and __uptr, see MSDN: http://msdn.microsoft.com/en-us/library/aa983399.aspx

Patch reviewed by Richard Smith.

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

11 years agoDebug Info: Handle function/method types using the most specific type
David Blaikie [Wed, 22 May 2013 23:22:42 +0000 (23:22 +0000)]
Debug Info: Handle function/method types using the most specific type

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

11 years agoComment and cleanup.
Adrian Prantl [Wed, 22 May 2013 21:37:49 +0000 (21:37 +0000)]
Comment and cleanup.

rdar://problem/13359718

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

11 years agoInsert explicit casts to try appease overload resolution in the buildbots
Pete Cooper [Wed, 22 May 2013 21:02:38 +0000 (21:02 +0000)]
Insert explicit casts to try appease overload resolution in the buildbots

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

11 years agoUse scope-resolution operator to hopefully unbreak Windows builds.
Ted Kremenek [Wed, 22 May 2013 20:01:35 +0000 (20:01 +0000)]
Use scope-resolution operator to hopefully unbreak Windows builds.

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

11 years agoSimplifiy code using return value of erase().
Ted Kremenek [Wed, 22 May 2013 19:25:03 +0000 (19:25 +0000)]
Simplifiy code using return value of erase().

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

11 years ago[analyzer; alternate edges] remove redundant adjacent "events" with the same text.
Ted Kremenek [Wed, 22 May 2013 19:10:41 +0000 (19:10 +0000)]
[analyzer; alternate edges] remove redundant adjacent "events" with the same text.

Fixes <rdar://problem/13949982>

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

11 years agoBugfix for r181629:
Adrian Prantl [Wed, 22 May 2013 19:10:15 +0000 (19:10 +0000)]
Bugfix for r181629:
- The return type should be a pointer to the class type.
- Make the condition more specific.

rdar://problem/13359718

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

11 years ago[analyzer;alternate edges] remove puny edges on the same line that span less than...
Ted Kremenek [Wed, 22 May 2013 18:52:35 +0000 (18:52 +0000)]
[analyzer;alternate edges] remove puny edges on the same line that span less than 3 columns.

These are legitimate control-flow edges, but visually they add
no value.

Implements <rdar://problem/13941325>.

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

11 years agoRemove unnecessary assignment.
Ted Kremenek [Wed, 22 May 2013 18:52:32 +0000 (18:52 +0000)]
Remove unnecessary assignment.

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

11 years agoRemove unused #include <map>
Reid Kleckner [Wed, 22 May 2013 18:46:02 +0000 (18:46 +0000)]
Remove unused #include <map>

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

11 years agoscan-build: use the xcodebuild specified by the user.
Jordan Rose [Wed, 22 May 2013 18:09:57 +0000 (18:09 +0000)]
scan-build: use the xcodebuild specified by the user.

This is important if the user has multiple Xcodes installed on their
system -- we use xcodebuild to do a version check, and therefore we need
to make sure we match the actual build command.

Reported by Howard Ling!

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

11 years ago[analyzer] Don't crash if a block doesn't have a type signature.
Jordan Rose [Wed, 22 May 2013 18:09:44 +0000 (18:09 +0000)]
[analyzer] Don't crash if a block doesn't have a type signature.

Currently, blocks instantiated in templates lose their "signature as
written"; it's not clear if this is intentional. Change the analyzer's
use of BlockDecl::getSignatureAsWritten to check whether or not the
signature is actually there.

<rdar://problem/13954714>

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

11 years agoUse StringMap in MicrosoftMangle to resolve FIXME.
Reid Kleckner [Wed, 22 May 2013 17:16:39 +0000 (17:16 +0000)]
Use StringMap in MicrosoftMangle to resolve FIXME.

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

11 years agoFix uninitialized access error found by valgrind.
Manuel Klimek [Wed, 22 May 2013 14:01:08 +0000 (14:01 +0000)]
Fix uninitialized access error found by valgrind.

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

11 years ago[NVPTX] Add entire list of supported builtins
Justin Holewinski [Wed, 22 May 2013 12:58:29 +0000 (12:58 +0000)]
[NVPTX] Add entire list of supported builtins

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

11 years agoMakes whitespace management more consistent.
Manuel Klimek [Wed, 22 May 2013 12:51:29 +0000 (12:51 +0000)]
Makes whitespace management more consistent.

Instead of selectively storing some changes and directly generating
replacements for others, we now notify the WhitespaceManager of the
whitespace before every token (and optionally with more changes inside
tokens).

Then, we run over all whitespace in the very end in original source
order, where we have all information available to correctly align
comments and escaped newlines.

The future direction is to pull more of the comment alignment
implementation that is now in the BreakableToken into the
WhitespaceManager.

This fixes a bug when aligning comments or escaped newlines in unwrapped
lines that are handled out of order:
  #define A \
    f({     \
      g();  \
    });
... now gets correctly layouted.

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

11 years agoImprove clang-format's stream formatting.
Daniel Jasper [Wed, 22 May 2013 09:13:26 +0000 (09:13 +0000)]
Improve clang-format's stream formatting.

clang-format was a bit too aggressive when trying to keep labels and
values on the same line.

Before:
    llvm::outs()
         << "aaaaaaaaaaaaaaaaaaa: " << aaaaaaaaaaaaa(
                                           aaaaaaaaaaaaaaaaaaaaaaaaaaaa);
After:
  llvm::outs() << "aaaaaaaaaaaaaaaaaaa: "
               << aaaaaaaaaaaaa(aaaaaaaaaaaaaaaaaaaaaaaaaaaa);

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

11 years agoFix function declaration behavior.
Daniel Jasper [Wed, 22 May 2013 08:55:55 +0000 (08:55 +0000)]
Fix function declaration behavior.

This only affects styles that prevent bin packing. There, a break after
a template declaration also forced a line break after the function name.

Before:
template <class SomeType, class SomeOtherType>
SomeType
SomeFunction(SomeType Type, SomeOtherType OtherType) {}

After:
template <class SomeType, class SomeOtherType>
SomeType SomeFunction(SomeType Type, SomeOtherType OtherType) {}

This fixes llvm.org/PR16072.

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

11 years agoImprove handling of trailing 'const'.
Daniel Jasper [Wed, 22 May 2013 08:28:26 +0000 (08:28 +0000)]
Improve handling of trailing 'const'.

Reduce the preference for breaking before a trailing 'const' according
to review comments on r182362.

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

11 years agoCut-off clang-format analysis.
Daniel Jasper [Wed, 22 May 2013 05:27:42 +0000 (05:27 +0000)]
Cut-off clang-format analysis.

If clang-format is confronted with long and deeply nested lines (e.g.
complex static initializers or function calls), it can currently try too
hard to find the optimal solution and never finish. The reason is that
the memoization does not work effectively for deeply nested lines.

This patch removes an earlier workaround and instead opts for
accepting a non-optimal solution in rare cases. However, it only does
so only in cases where it would have to analyze an excessive number of
states (currently set to 10000 - the most complex line in Format.cpp
requires ~800 states) so this should not change the behavior in a
relevant way.

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

11 years ago[analyzer] Do not assert on reports ending in calls within macros.
Anna Zaks [Wed, 22 May 2013 01:54:34 +0000 (01:54 +0000)]
[analyzer] Do not assert on reports ending in calls within macros.

The crash is triggered by the newly added option (-analyzer-config report-in-main-source-file=true) introduced in r182058.

Note, ideally, we’d like to report the issue within the main source file here as well.
For now, just do not crash.

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

11 years agoFix crash-on-invalid: only use TransformAddressOfOperand when transforming the
Richard Smith [Tue, 21 May 2013 23:29:46 +0000 (23:29 +0000)]
Fix crash-on-invalid: only use TransformAddressOfOperand when transforming the
operand of a unary address-of expression, not for *all* expressions!

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

11 years agoPR16090: C++1y: treat undeduced 'auto' as a literal type, so that constexpr
Richard Smith [Tue, 21 May 2013 22:29:20 +0000 (22:29 +0000)]
PR16090: C++1y: treat undeduced 'auto' as a literal type, so that constexpr
function templates can use it as a return type.

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

11 years agoPR16094: I should have known Obj-C init-capture disambiguation couldn't be
Richard Smith [Tue, 21 May 2013 22:21:19 +0000 (22:21 +0000)]
PR16094: I should have known Obj-C init-capture disambiguation couldn't be
*that* easy...

Try a bit harder to disambiguate. This is mostly straightforward, but for
=-style initializers, we actually need to know where an expression ends:

  [foo = bar baz]

is a message send, whereas

  [foo = bar + baz]

is a lambda-introducer. Handle this by parsing the expression eagerly, and
replacing it with an annotation token. By chance, we use the *exact same*
parsing rules in both cases (except that we need to assume we're inside a
message send for the parse, to turn off various forms of inapplicable
error recovery).

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

11 years ago[analyzer;alternate edges] prune out extra edges to a subexpression where we dive...
Ted Kremenek [Tue, 21 May 2013 21:38:05 +0000 (21:38 +0000)]
[analyzer;alternate edges] prune out extra edges to a subexpression where we dive-in and out of a subexpression.

Fixes <rdar://problem/13941891>.

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

11 years ago[analyzer; alternated edges] look through expressions just like Environment does.
Ted Kremenek [Tue, 21 May 2013 21:38:02 +0000 (21:38 +0000)]
[analyzer; alternated edges] look through expressions just like Environment does.

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

11 years agoObjective-C arc: don't count use of __weak
Fariborz Jahanian [Tue, 21 May 2013 21:20:26 +0000 (21:20 +0000)]
Objective-C arc: don't count use of __weak
variables when they are used in such unevaluated
contexts as __typeof, etc. // rdar://13942025

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

11 years agoRefactor places which perform contextual implicit conversions to go through a
Richard Smith [Tue, 21 May 2013 19:05:48 +0000 (19:05 +0000)]
Refactor places which perform contextual implicit conversions to go through a
common function. The C++1y contextual implicit conversion rules themselves are
not yet implemented, however.

This also fixes a subtle bug where template instantiation context notes were
dropped for diagnostics coming from conversions for integral constant
expressions -- we were implicitly slicing a SemaDiagnosticBuilder into a
DiagnosticBuilder when producing these diagnostics, and losing their context
notes in the process.

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

11 years agoDebug Info: Simplify the code changed in r182403 to reduce indent & avoid a duplicate...
David Blaikie [Tue, 21 May 2013 18:29:40 +0000 (18:29 +0000)]
Debug Info: Simplify the code changed in r182403 to reduce indent & avoid a duplicate lookup in the insertion case

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

11 years agoDebug Info: don't bother reinserting elements into maps we just retrieved them from
David Blaikie [Tue, 21 May 2013 18:08:19 +0000 (18:08 +0000)]
Debug Info: don't bother reinserting elements into maps we just retrieved them from

(no intended behavior change)

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

11 years agoFix whitespace
David Blaikie [Tue, 21 May 2013 17:58:54 +0000 (17:58 +0000)]
Fix whitespace

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

11 years agoFix off-by-one error in clang-format's emacs integration.
Daniel Jasper [Tue, 21 May 2013 17:05:40 +0000 (17:05 +0000)]
Fix off-by-one error in clang-format's emacs integration.

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

11 years agoFix behavior of clang-format's -cursor flag.
Daniel Jasper [Tue, 21 May 2013 14:21:46 +0000 (14:21 +0000)]
Fix behavior of clang-format's -cursor flag.

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

11 years agoLet clang-format move the cursor appropriately.
Daniel Jasper [Tue, 21 May 2013 12:21:39 +0000 (12:21 +0000)]
Let clang-format move the cursor appropriately.

With this patch, clang-format will try to keep the cursor at the
original code position in editor integrations (implemented for emacs and
vim). This means, after formatting, clang-format will try to keep the
cursor on the same character of the same token.

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

11 years agoRemove unused diagnostics.
Benjamin Kramer [Tue, 21 May 2013 10:57:36 +0000 (10:57 +0000)]
Remove unused diagnostics.

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

11 years agoAllow breaking before a trailing const.
Daniel Jasper [Tue, 21 May 2013 09:16:31 +0000 (09:16 +0000)]
Allow breaking before a trailing const.

Before:
void someLongFunction(
    int someLongParameter) const;

After:
void someLongFunction(int someLongParameter)
    const;

Also slightly cleanup tests.

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

11 years agoIn -ast-dump, only dump comments when dumping the actual Decl to which they
Richard Smith [Tue, 21 May 2013 05:24:00 +0000 (05:24 +0000)]
In -ast-dump, only dump comments when dumping the actual Decl to which they
attach, rather than merging all comments on the declaration chain. This gives a
more faithful dump, and has the side benefit of unbreaking uses of dump() from
within AST deserialization (where the redeclaration chain may not be sane).

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

11 years ago[analyzer; alternate edges] optimize edges for ObjC fast enumeration loops.
Ted Kremenek [Tue, 21 May 2013 00:34:40 +0000 (00:34 +0000)]
[analyzer; alternate edges] optimize edges for ObjC fast enumeration loops.

Fixes <rdar://problem/13942300>.

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

11 years agodoc. parsing. HeaderDoc documentaton allows use of
Fariborz Jahanian [Mon, 20 May 2013 23:40:39 +0000 (23:40 +0000)]
doc. parsing. HeaderDoc documentaton allows use of
@class command on an @interface declaration. Turn off
the warning for this case. // rdar://13927330

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

11 years agoRevert r182331, these checks should be based on the target not the host.
Richard Smith [Mon, 20 May 2013 23:40:27 +0000 (23:40 +0000)]
Revert r182331, these checks should be based on the target not the host.

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

11 years agoMove two Darwin-specific hacks into #ifdef __APPLE__. These were stat'ing
Richard Smith [Mon, 20 May 2013 23:17:08 +0000 (23:17 +0000)]
Move two Darwin-specific hacks into #ifdef __APPLE__. These were stat'ing
nonexistent Darwin-specific files on every module build.

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

11 years agoPR14606: Debug Info for namespace aliases/DW_TAG_imported_module
David Blaikie [Mon, 20 May 2013 22:50:41 +0000 (22:50 +0000)]
PR14606: Debug Info for namespace aliases/DW_TAG_imported_module

This resolves the last of the PR14606 failures in the GDB 7.5 test
suite. (but there are still unresolved issues in the imported_decl case
- we need to implement optional/lazy decls for functions & variables
like we already do for types)

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

11 years agoWarn on and drop dllimport attrs from variable definitions
Reid Kleckner [Mon, 20 May 2013 21:53:29 +0000 (21:53 +0000)]
Warn on and drop dllimport attrs from variable definitions

AsmPrinter::EmitLinkage() does not handle dllimport linkage.  The LLVM
verifier should also be fixed to reject this.

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

11 years agoObjective-C [qoi]: When an class conforms to multiple
Fariborz Jahanian [Mon, 20 May 2013 21:20:24 +0000 (21:20 +0000)]
Objective-C [qoi]: When an class conforms to multiple
protocols that declare the same property of incompatible
types, issue a warning when class implementation synthesizes
the property. // rdar://13075400

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

11 years agoMake this const since it never changes (and should never change).
Eric Christopher [Mon, 20 May 2013 19:59:06 +0000 (19:59 +0000)]
Make this const since it never changes (and should never change).

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

11 years agoThread safety analysis: fix use after free bug reported by Evgeniy Stepanov.
DeLesley Hutchins [Mon, 20 May 2013 17:57:55 +0000 (17:57 +0000)]
Thread safety analysis: fix use after free bug reported by Evgeniy Stepanov.

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

11 years agoReleaseNotes.rst: typo
Hans Wennborg [Mon, 20 May 2013 15:59:04 +0000 (15:59 +0000)]
ReleaseNotes.rst: typo

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

11 years agoMinor fix: don't crash on empty configuration file, consider empty configuration...
Alexander Kornienko [Mon, 20 May 2013 15:18:01 +0000 (15:18 +0000)]
Minor fix: don't crash on empty configuration file, consider empty configuration files invalid.

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

11 years agoReleaseNotes: add note about ASTContext::WCharTy and WideCharTy
Hans Wennborg [Mon, 20 May 2013 14:53:06 +0000 (14:53 +0000)]
ReleaseNotes: add note about ASTContext::WCharTy and WideCharTy

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

11 years agoNuke build of static ASan runtime on Mac OS - clang part
Alexey Samsonov [Mon, 20 May 2013 14:33:20 +0000 (14:33 +0000)]
Nuke build of static ASan runtime on Mac OS - clang part

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

11 years ago[ms-cxxabi] Look up operator delete() at every virtual dtor declaration.
Peter Collingbourne [Mon, 20 May 2013 14:12:25 +0000 (14:12 +0000)]
[ms-cxxabi] Look up operator delete() at every virtual dtor declaration.

While the C++ standard requires that this lookup take place only at the
definition point of a virtual destructor (C++11 [class.dtor]p12), the
Microsoft ABI may require the compiler to emit a deleting destructor
for any virtual destructor declared in the TU, including ones without
a body, requiring an operator delete() lookup for every virtual
destructor declaration.  The result of the lookup should be the same
no matter which declaration is used (except in weird corner cases).

This change will cause us to reject some valid TUs in Microsoft ABI
mode, e.g.:

struct A {
  void operator delete(void *);
};

struct B {
  void operator delete(void *);
};

struct C : A, B {
  virtual ~C();
};

As Richard points out, every virtual function declared in a TU
(including this virtual destructor) is odr-used, so it must be defined
in any program which declares it, or the program is ill formed, no
diagnostic required.  Because we know that any definition of this
destructor will cause the lookup to fail, the compiler can choose to
issue a diagnostic here.

Differential Revision: http://llvm-reviews.chandlerc.com/D822

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