]> granicus.if.org Git - clang/log
clang
12 years agostatic functions have a need for mangled name debug information too.
Eric Christopher [Thu, 12 Apr 2012 00:35:06 +0000 (00:35 +0000)]
static functions have a need for mangled name debug information too.
The mangler doesn't like non-prototyped functions so only use a mangled
name for prototyped functions.

rdar://11079003

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

12 years agoThe copy and destroy helper functions aren't prototyped, don't call them
Eric Christopher [Thu, 12 Apr 2012 00:35:04 +0000 (00:35 +0000)]
The copy and destroy helper functions aren't prototyped, don't call them
so.

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

12 years agoImplement clang_getDiagnosticCategoryText() to provide a way for a client of libclang...
Ted Kremenek [Thu, 12 Apr 2012 00:03:31 +0000 (00:03 +0000)]
Implement clang_getDiagnosticCategoryText() to provide a way for a client of libclang to accurately
get the diagnostic category name from a serialized diagnostic when the version of libclang used
to read the diagnostic file is newer than the clang that emitted the diagnostic file.

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

12 years agomodern objective-c translator. Fixes a mis-translation when
Fariborz Jahanian [Wed, 11 Apr 2012 23:57:12 +0000 (23:57 +0000)]
modern objective-c translator. Fixes a mis-translation when
of a __block struct object. // rdar://11230308

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

12 years agoAdd test for a construct we currently reject, constant-evaluating a load from a const...
Eli Friedman [Wed, 11 Apr 2012 23:32:29 +0000 (23:32 +0000)]
Add test for a construct we currently reject, constant-evaluating a load from a constant string.  Given that gcc doesn't accept this, we should continue to not accept it, even though it was accidentally supported by clang for a brief period.

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

12 years ago[analyzer] Another dynamic_cast false positive/negative.
Anna Zaks [Wed, 11 Apr 2012 22:29:38 +0000 (22:29 +0000)]
[analyzer] Another dynamic_cast false positive/negative.

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

12 years ago[analyzer] dynamic_cast Simplify null value generation.
Anna Zaks [Wed, 11 Apr 2012 22:20:07 +0000 (22:20 +0000)]
[analyzer] dynamic_cast Simplify null value generation.

As per Jordy's review. Creating a symbol here is more flexible; however
I could not come up with an example where it was needed. (What
constrains can be added on of the symbol constrained to 0?)

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

12 years ago[analyzer] Better test cases for explaining where tracking types of
Anna Zaks [Wed, 11 Apr 2012 22:20:05 +0000 (22:20 +0000)]
[analyzer] Better test cases for explaining where tracking types of
symbolic regions would help.

Thanks to Richard Smith.

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

12 years agomodern objective-c translator. Fixes a translation bug when
Fariborz Jahanian [Wed, 11 Apr 2012 21:12:36 +0000 (21:12 +0000)]
modern objective-c translator. Fixes a translation bug when
first ivar in the list is a bitfield.
// rdar://11229770

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

12 years agoPart of PR10101: after a parse error in a declaration, try harder to find the
Richard Smith [Wed, 11 Apr 2012 20:59:20 +0000 (20:59 +0000)]
Part of PR10101: after a parse error in a declaration, try harder to find the
right place to pick up parsing. In C++, this had a tendency to skip everything
declared within headers if the TU starts with garbage.

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

12 years ago[libclang] Apparently it's important to build in C89, sigh..
Argyrios Kyrtzidis [Wed, 11 Apr 2012 19:54:09 +0000 (19:54 +0000)]
[libclang] Apparently it's important to build in C89, sigh..

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

12 years ago[libclang] Introduce a couple of functions to make it convenient
Argyrios Kyrtzidis [Wed, 11 Apr 2012 19:32:19 +0000 (19:32 +0000)]
[libclang] Introduce a couple of functions to make it convenient
to get at the parameters (and their types) of a function or objc method cursor.

int clang_Cursor_getNumArguments(CXCursor C);
CXCursor clang_Cursor_getArgument(CXCursor C, unsigned i);

rdar://11201527

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

12 years ago[libclang] In cxloc::translateSourceRange make sure to handle locations in macro...
Argyrios Kyrtzidis [Wed, 11 Apr 2012 18:15:01 +0000 (18:15 +0000)]
[libclang] In cxloc::translateSourceRange make sure to handle locations in macro arguments
correctly. clang diagnostics can provide fixits inside a macro argument now.

rdar://11014346

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

12 years agoUpdate recently-added test to use new __c11_ form of atomic builtins.
Richard Smith [Wed, 11 Apr 2012 18:00:46 +0000 (18:00 +0000)]
Update recently-added test to use new __c11_ form of atomic builtins.

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

12 years agoProvide, and document, a set of __c11_atomic_* intrinsics to implement C11's
Richard Smith [Wed, 11 Apr 2012 17:55:32 +0000 (17:55 +0000)]
Provide, and document, a set of __c11_atomic_* intrinsics to implement C11's
<stdatomic.h> header.

In passing, fix LanguageExtensions to note that C11 and C++11 are no longer
"upcoming standards" but are now actually standardized.

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

12 years agoMake __atomic_init() (soon to be __c11_atomic_init()) work with non-scalar types.
David Chisnall [Wed, 11 Apr 2012 17:24:05 +0000 (17:24 +0000)]
Make __atomic_init() (soon to be __c11_atomic_init()) work with non-scalar types.

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

12 years agoClean up last commit as per dgregor's comments.
David Chisnall [Wed, 11 Apr 2012 16:08:14 +0000 (16:08 +0000)]
Clean up last commit as per dgregor's comments.

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

12 years agoAllow c++ initialisers to initialise _Atomic fields.
David Chisnall [Wed, 11 Apr 2012 15:29:15 +0000 (15:29 +0000)]
Allow c++ initialisers to initialise _Atomic fields.

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

12 years agoAdd a triple to this test.
Eric Christopher [Wed, 11 Apr 2012 07:08:37 +0000 (07:08 +0000)]
Add a triple to this test.

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

12 years agoTry to fix the windows buildbots by making this test a little less
Eric Christopher [Wed, 11 Apr 2012 06:09:33 +0000 (06:09 +0000)]
Try to fix the windows buildbots by making this test a little less
dependent upon metadata ordering.

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

12 years agoEnable debug info for objective c implementations that may not have
Eric Christopher [Wed, 11 Apr 2012 05:56:05 +0000 (05:56 +0000)]
Enable debug info for objective c implementations that may not have
an explicit instance variable.

rdar://10590352

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

12 years agoSupport C++11 attributes at the start of a parameter-declaration.
Richard Smith [Wed, 11 Apr 2012 04:01:28 +0000 (04:01 +0000)]
Support C++11 attributes at the start of a parameter-declaration.

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

12 years ago[libclang] Fix "error: conflicts with new declaration with ā€˜Cā€™ linkage" that gcc
Argyrios Kyrtzidis [Wed, 11 Apr 2012 03:52:18 +0000 (03:52 +0000)]
[libclang] Fix "error: conflicts with new declaration with ā€˜Cā€™ linkage" that gcc
emits but not clang.

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

12 years ago[libclang] If displayDiagnostics is set (when calling clang_createIndex), make sure to
Argyrios Kyrtzidis [Wed, 11 Apr 2012 02:11:16 +0000 (02:11 +0000)]
[libclang] If displayDiagnostics is set (when calling clang_createIndex), make sure to
output the errors that occurred even if we did not get an AST (e.g. because the
PCH failed to load).

Also honor displayDiagnostics in clang_indexSourceFile().

rdar://11203489

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

12 years ago[analyzer] Don't crash even when the system functions are redefined.
Anna Zaks [Tue, 10 Apr 2012 23:41:11 +0000 (23:41 +0000)]
[analyzer] Don't crash even when the system functions are redefined.
(Applied changes to CStringAPI, Malloc, and Taint.)

This might almost never happen, but we should not crash even if it does.
This fixes a crash on the internal analyzer buildbot, where postgresql's
configure was redefining memmove (radar://11219852).

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

12 years agoAtomicExpr: make ASTStmtReader a friend and remove setters. Also fix saving
Richard Smith [Tue, 10 Apr 2012 22:49:28 +0000 (22:49 +0000)]
AtomicExpr: make ASTStmtReader a friend and remove setters. Also fix saving
of an uninitialized Stmt* in serialization of __atomic_init and add a test of
atomics serialization.

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

12 years agoFix quoting to allow shell expansion to occur for shell variables
Kaelyn Uhrain [Tue, 10 Apr 2012 22:27:27 +0000 (22:27 +0000)]
Fix quoting to allow shell expansion to occur for shell variables
introduced by the test harness' expansion of %t.

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

12 years agomodern objective-c translation: writing container
Fariborz Jahanian [Tue, 10 Apr 2012 22:06:54 +0000 (22:06 +0000)]
modern objective-c translation: writing container
subscripting. // rdar://11203853

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

12 years ago[analyzer] dynamic_cast: Better model cast from a reference.
Anna Zaks [Tue, 10 Apr 2012 21:29:03 +0000 (21:29 +0000)]
[analyzer] dynamic_cast: Better model cast from a reference.

Generate a sink when the dynamic_cast from a reference fails to
represent a thrown exception.

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

12 years ago[libclang] For clang_getOverriddenCursors make sure to report overridden objc methods
Argyrios Kyrtzidis [Tue, 10 Apr 2012 21:01:03 +0000 (21:01 +0000)]
[libclang] For clang_getOverriddenCursors make sure to report overridden objc methods
for methods in categories of super classes. rdar://11220358

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

12 years ago[analyzer] Add support for C++ dynamic_cast.
Anna Zaks [Tue, 10 Apr 2012 20:59:00 +0000 (20:59 +0000)]
[analyzer] Add support for C++ dynamic_cast.

Simulate the C++ dynamic_cast in the analyzer.

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

12 years ago[analyzer] + comments
Anna Zaks [Tue, 10 Apr 2012 20:58:55 +0000 (20:58 +0000)]
[analyzer] + comments

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

12 years agoWhen we determine that an initialization sequence failed due to an
Douglas Gregor [Tue, 10 Apr 2012 20:43:46 +0000 (20:43 +0000)]
When we determine that an initialization sequence failed due to an
incomplete type, keep track of the actual type that was
incomplete. Otherwise, we might fail to produce a diagnostic. Fixes
PR12498.

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

12 years agoImprove the printing of __PRETTY_FUNCTION__ more provide more
Douglas Gregor [Tue, 10 Apr 2012 20:14:15 +0000 (20:14 +0000)]
Improve the printing of __PRETTY_FUNCTION__ more provide more
information and more closely match GCC's, from Nikola Smiljanic!

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

12 years agoAdd a query macro for C++11 N3276, decltype does not require complete
Douglas Gregor [Tue, 10 Apr 2012 20:00:33 +0000 (20:00 +0000)]
Add a query macro for C++11 N3276, decltype does not require complete
return types, from Michel Morin!

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

12 years agoImprove diagnostics in C++11 when a non-type template argument for a
Douglas Gregor [Tue, 10 Apr 2012 19:03:30 +0000 (19:03 +0000)]
Improve diagnostics in C++11 when a non-type template argument for a
non-type template parameter of pointer type is not a constant expression.

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

12 years agoThis test actually needs label names.
Eric Christopher [Tue, 10 Apr 2012 18:36:52 +0000 (18:36 +0000)]
This test actually needs label names.

PR9796

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

12 years agoInclude the Objective-C parameter- and return-passing qualifiers when
Douglas Gregor [Tue, 10 Apr 2012 18:35:07 +0000 (18:35 +0000)]
Include the Objective-C parameter- and return-passing qualifiers when
providing code completions for Objective-C method declarations. Fixes
<rdar://problem/11164498>.

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

12 years agoFor debug and coverage analysis if we're not optimizing go ahead
Eric Christopher [Tue, 10 Apr 2012 18:20:19 +0000 (18:20 +0000)]
For debug and coverage analysis if we're not optimizing go ahead
and emit a relatively empty block for a plain break statement. This
enables us to track where we went through a switch.

PR9796 & rdar://11215207

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

12 years agoDon't include the ':' following code-completion suggestions for
Douglas Gregor [Tue, 10 Apr 2012 17:56:28 +0000 (17:56 +0000)]
Don't include the ':' following code-completion suggestions for
'public', 'private', or 'protected', unless code completion patterns
are enabled. Fixes <rdar://problem/11189132>.

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

12 years agoobjective-c: remove IsConstProperty as it does not
Fariborz Jahanian [Tue, 10 Apr 2012 17:30:10 +0000 (17:30 +0000)]
objective-c: remove IsConstProperty as it does not
seem to get called any more. Also add an assert in
isModifiableLvalue.

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

12 years agoAdd a target triple to test/Index/complete-synthesized.m.
Argyrios Kyrtzidis [Tue, 10 Apr 2012 17:23:51 +0000 (17:23 +0000)]
Add a target triple to test/Index/complete-synthesized.m.

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

12 years ago[code-complete] Introduce CodeCompletionTUInfo which will be used for caching
Argyrios Kyrtzidis [Tue, 10 Apr 2012 17:23:48 +0000 (17:23 +0000)]
[code-complete] Introduce CodeCompletionTUInfo which will be used for caching
code-completion related strings specific to a translation unit (ASTContext and related data)

CodeCompletionAllocator does such limited caching, by caching the name assigned
to a DeclContext*, but that is not the appropriate place since that object has
a lifetime that can extend beyond that of an ASTContext.

Introduce CodeCompletionTUInfo which will be always tied to a translation unit
to do this kind of caching and move the caching of CodeCompletionAllocator into this
object, and propagate it to all the places where it will be needed.

The plan is to extend the caching where appropriate, using CodeCompletionTUInfo,
to avoid re-calculating code-completion strings.

Part of rdar://10796159.

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

12 years agoRework implementation of null non-type template arguments based on
Douglas Gregor [Tue, 10 Apr 2012 17:08:25 +0000 (17:08 +0000)]
Rework implementation of null non-type template arguments based on
Richard's feedback, to properly catch non-constant expressions and
type mismatches. Finishes <rdar://problem/11193097>.

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

12 years agoobjective-c: add an assertion for property
Fariborz Jahanian [Tue, 10 Apr 2012 16:44:52 +0000 (16:44 +0000)]
objective-c: add an assertion for property
expression enterring IsConstProperty function.

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

12 years agoFix GCC's pedantic return-type warning -- this enum is fully covered.
Chandler Carruth [Tue, 10 Apr 2012 16:03:08 +0000 (16:03 +0000)]
Fix GCC's pedantic return-type warning -- this enum is fully covered.

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

12 years agoFix tautological FileCheck by moving the CHECK to an extra line.
Manuel Klimek [Tue, 10 Apr 2012 12:12:33 +0000 (12:12 +0000)]
Fix tautological FileCheck by moving the CHECK to an extra line.

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

12 years agoDon't link lib[std]c++ when -nostdlib is specified (Solaris driver).
David Chisnall [Tue, 10 Apr 2012 11:49:50 +0000 (11:49 +0000)]
Don't link lib[std]c++ when -nostdlib is specified (Solaris driver).

Patch by Dmitri Shubin!

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

12 years agoPass -march, -mcpu, -mfpu to linuxtools assembler.
Evgeniy Stepanov [Tue, 10 Apr 2012 09:05:40 +0000 (09:05 +0000)]
Pass -march, -mcpu, -mfpu to linuxtools assembler.

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

12 years agoExpress the number of ULPs in fpaccuracy metadata as a real rather than a
Duncan Sands [Tue, 10 Apr 2012 08:23:07 +0000 (08:23 +0000)]
Express the number of ULPs in fpaccuracy metadata as a real rather than a
rational number, eg as 2.5 rather than 5, 2.  OK'd by Peter Collingbourne.

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

12 years agoEmitStopPoint already checks if we have debug info.
Eric Christopher [Tue, 10 Apr 2012 05:04:07 +0000 (05:04 +0000)]
EmitStopPoint already checks if we have debug info.

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

12 years agoTidy.
Eric Christopher [Tue, 10 Apr 2012 05:04:04 +0000 (05:04 +0000)]
Tidy.

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

12 years agoParsing of C++11 attributes:
Richard Smith [Tue, 10 Apr 2012 03:25:07 +0000 (03:25 +0000)]
Parsing of C++11 attributes:
 * Alternative tokens (such as 'compl') are treated as identifiers in
   attribute names.
 * An attribute-list can start with a comma.
 * An ellipsis may not be used with either of our currently-supported
   C++11 attributes.

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

12 years agoDisambiguation of '[[':
Richard Smith [Tue, 10 Apr 2012 01:32:12 +0000 (01:32 +0000)]
Disambiguation of '[[':
 * In C++11, '[[' is ill-formed unless it starts an attribute-specifier. Reject
   array sizes and array indexes which begin with a lambda-expression. Recover by
   parsing the lambda as a lambda.
 * In Objective-C++11, either '[' could be the start of a message-send.
   Fully disambiguate this case: it turns out that the grammars of message-sends,
   lambdas and attributes do not actually overlap. Accept any occurrence of '[['
   where either '[' starts a message send, but reject a lambda in an array index
   just like in C++11 mode.

Implement a couple of changes to the attribute wording which occurred after our
attributes implementation landed:
 * In a function-declaration, the attributes go after the exception specification,
   not after the right paren.
 * A reference type can have attributes applied.
 * An 'identifier' in an attribute can also be a keyword. Support for alternative
   tokens (iso646 keywords) in attributes to follow.

And some bug fixes:
 * Parse attributes after declarator-ids, even if they are not simple identifiers.
 * Do not accept attributes after a parenthesized declarator.
 * Accept attributes after an array size in a new-type-id.
 * Partially disamiguate 'delete' followed by a lambda. More work is required
   here for the case where the lambda-introducer is '[]'.

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

12 years agoFix the testcase :-(
Rafael Espindola [Tue, 10 Apr 2012 00:13:42 +0000 (00:13 +0000)]
Fix the testcase :-(

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

12 years agoobjective-c modern translator: rewriting specific
Fariborz Jahanian [Tue, 10 Apr 2012 00:08:18 +0000 (00:08 +0000)]
objective-c modern translator: rewriting specific
implicit casts which is needed to produce good c++
code. // rdar://11202764

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

12 years agoFix an annoying little bug I found while debugging another LTO issue. Gold
Rafael Espindola [Mon, 9 Apr 2012 23:53:34 +0000 (23:53 +0000)]
Fix an annoying little bug I found while debugging another LTO issue. Gold
requires the -plugin to come before any -plugin-opt options, we were passing
them the other way around. With this one can run (for example):

clang -o foo foo.c -O4 -Wl,-plugin-opt=generate-api-file

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

12 years agoRemove -fobjc-default-synthesize-properties as the option
Fariborz Jahanian [Mon, 9 Apr 2012 22:17:37 +0000 (22:17 +0000)]
Remove  -fobjc-default-synthesize-properties as the option
to c-index-test.

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

12 years agoMy original patch missed the virtual-base case for destroying
John McCall [Mon, 9 Apr 2012 21:51:56 +0000 (21:51 +0000)]
My original patch missed the virtual-base case for destroying
base-class subojects.

Incidentally, thinking about virtual bases makes it clear to me that
we're not appropriately computing the access to the virtual base's
member because we're not computing the best possible access to the
virtual base at all;  in fact, we're basically assuming it's public.
I'll file a separate PR about that.

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

12 years agoFix the access check performed as part of the determination of whether
John McCall [Mon, 9 Apr 2012 20:53:23 +0000 (20:53 +0000)]
Fix the access check performed as part of the determination of whether
to define a special member function as deleted so that it properly
establishes an object context for the accesses to the base subobject
members.

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

12 years agoAuthor: Daniel Dunbar <daniel@zuster.org>
Daniel Dunbar [Mon, 9 Apr 2012 20:40:11 +0000 (20:40 +0000)]
Author: Daniel Dunbar <daniel@zuster.org>
--- log message follows this test ---
[tests] Fixup some tests to work in "CLANG_IS_PRODUCTION" mode.

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

12 years agoImplementing a test for the use of PWD to base finding the
Manuel Klimek [Mon, 9 Apr 2012 19:10:04 +0000 (19:10 +0000)]
Implementing a test for the use of PWD to base finding the
correct compile commands on, based on an idea by Jordan Rose.

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

12 years agoobjective-c: remove -fobjc-default-synthesize-properties from the driver.
Fariborz Jahanian [Mon, 9 Apr 2012 18:58:55 +0000 (18:58 +0000)]
objective-c: remove -fobjc-default-synthesize-properties from the driver.
cc1 option remains though to invoke default property synthesis.
// rdar://11209719

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

12 years agoobjective-c: Remove -fno-objc-default-synthesize-properties
Fariborz Jahanian [Mon, 9 Apr 2012 18:20:28 +0000 (18:20 +0000)]
objective-c: Remove -fno-objc-default-synthesize-properties
as the driver option.
// rdar://11209719

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

12 years agoFixes a fix to finding the current directory:
Manuel Klimek [Mon, 9 Apr 2012 18:08:23 +0000 (18:08 +0000)]
Fixes a fix to finding the current directory:
We currently want to look whether PWD is available - if PWD is available it will
get us the non-resolved current path, while fs::current_path will resolve
symlinks. The long term fix is to not rely on that behavior any more.

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

12 years agoRevert r154321, pending more discussion.
David Chisnall [Mon, 9 Apr 2012 17:25:11 +0000 (17:25 +0000)]
Revert r154321, pending more discussion.

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

12 years agoFix bugs found by -Wconstant-conversion improvements currently under review.
David Blaikie [Mon, 9 Apr 2012 16:37:11 +0000 (16:37 +0000)]
Fix bugs found by -Wconstant-conversion improvements currently under review.

Specifically, using a an integer outside [0, 1] as a boolean constant seems to
be an easy mistake to make with things like "x == a || b" where the author
intended "x == a || x == b".

The bug caused by calling SkipUntil with three token kinds was also identified
by a VC diagnostic & reported by Francois Pichet as review feedback for my
commit r154163. I've included test cases to verify the error recovery that was
broken/poorly implemented due to this bug.

The other fix (lib/Sema/SemaExpr.cpp) seems like that code was never actually
reached in any of Clang's tests & is related to Objective C features I'm not
familiar with, so I've not been able to construct a test case for it. Perhaps
someone else can.

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

12 years agoAdd -fobjc-trace to emit a call before and after each Objective-C message send
David Chisnall [Mon, 9 Apr 2012 15:42:15 +0000 (15:42 +0000)]
Add -fobjc-trace to emit a call before and after each Objective-C message send
for hooking in code flow visualisation applications.

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

12 years agoFactor out ARM floating ABI determination to new routine
Anton Korobeynikov [Mon, 9 Apr 2012 13:38:30 +0000 (13:38 +0000)]
Factor out ARM floating ABI determination to new routine

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

12 years agoMake a modern Objective-C runtime the default target for *BSD. Don't yet change...
David Chisnall [Mon, 9 Apr 2012 12:33:41 +0000 (12:33 +0000)]
Make a modern Objective-C runtime the default target for *BSD.  Don't yet change this on GNU/Linux, where the GCC runtime still tends to be used.

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

12 years agoWire up -fpie and -fPIE to LLVM's newly added TargetOptions. No test
Chandler Carruth [Sun, 8 Apr 2012 21:09:51 +0000 (21:09 +0000)]
Wire up -fpie and -fPIE to LLVM's newly added TargetOptions. No test
case as we don't currently have any way of dumping target options or
otherwise observing this. Another small step toward fixing PR12380. With
this we generate TLS accesses using the static model instead of the
dynamic model, but we're still generating suboptimal code under the
mistaken assumption that the TLS offset might be greater than 2^32, and
therefor not viable as an immediate offset of a segment register.

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

12 years agoTeach Clang about PIE compilations. This is the first step of PR12380.
Chandler Carruth [Sun, 8 Apr 2012 16:40:35 +0000 (16:40 +0000)]
Teach Clang about PIE compilations. This is the first step of PR12380.

First, this patch cleans up the parsing of the PIC and PIE family of
options in the driver. The existing logic failed to claim arguments all
over the place resulting in kludges that marked the options as unused.
Instead actually walk all of the arguments and claim them properly.

We now treat -f{,no-}{pic,PIC,pie,PIE} as a single set, accepting the
last one on the commandline. Previously there were lots of ordering bugs
that could creep in due to the nature of the parsing. Let me know if
folks would like weird things such as "-fPIE -fno-pic" to turn on PIE,
but disable full PIC. This doesn't make any sense to me, but we could in
theory support it.

Options that seem to have intentional "trump" status (-static, -mkernel,
etc) continue to do so and are commented as such.

Next, a -pie-level flag is threaded into the frontend, rigged to
a language option, and handled preprocessor, setting up the appropriate
defines. We'll now have the correct defines when compiling with -fpie.

The one place outside of the preprocessor that was inspecting the PIC
level (as opposed to the relocation model, which is set and handled
separately, yay!) is in the GNU ObjC runtime. I changed it to exactly
preserve existing behavior. If folks want to change its behavior in the
face of PIE, they can do that in a separate patch.

Essentially the only functionality changed here is the preprocessor
defines and bug-fixes to the argument management.

Tests have been updated and extended to test all of this a bit more
thoroughly.

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

12 years agoRephrase the preprocessor test to directly use CC1 and not bother
Chandler Carruth [Sun, 8 Apr 2012 16:40:31 +0000 (16:40 +0000)]
Rephrase the preprocessor test to directly use CC1 and not bother
testing any of the strange driver behavior. We already have some tiny
tests for the driver behavior, and I'm going to expand them greatly in
the next commit.

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

12 years agoFileCheck-ize this test.
Chandler Carruth [Sun, 8 Apr 2012 16:40:30 +0000 (16:40 +0000)]
FileCheck-ize this test.

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

12 years agoDon't forget to evaluate the subexpression in a null pointer cast. If we're
Richard Smith [Sun, 8 Apr 2012 08:02:07 +0000 (08:02 +0000)]
Don't forget to evaluate the subexpression in a null pointer cast. If we're
converting from std::nullptr_t, the subexpression might have side-effects.

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

12 years agoext_reserved_user_defined_literal must not default to Error in MicrosoftMode. Hence...
Francois Pichet [Sat, 7 Apr 2012 23:09:23 +0000 (23:09 +0000)]
ext_reserved_user_defined_literal must not default to Error in MicrosoftMode. Hence create ext_ms_reserved_user_defined_literal that doesn't default to Error; otherwise MSVC headers won't parse.

Fixes PR12383.

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

12 years agoMIPS: Pass -mabi option to the assmbler when compile MIPS targets.
Simon Atanasyan [Sat, 7 Apr 2012 22:31:29 +0000 (22:31 +0000)]
MIPS: Pass -mabi option to the assmbler when compile MIPS targets.

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

12 years agoMIPS: Move code calculates CPU and ABI names to the separate function to reuse this...
Simon Atanasyan [Sat, 7 Apr 2012 22:09:23 +0000 (22:09 +0000)]
MIPS: Move code calculates CPU and ABI names to the separate function to reuse this function later.

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

12 years ago[Cygwin] Work around to flush stdout in a thread, or stdout in threads won't be flush...
NAKAMURA Takumi [Sat, 7 Apr 2012 06:59:28 +0000 (06:59 +0000)]
[Cygwin] Work around to flush stdout in a thread, or stdout in threads won't be flushed at exit.

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

12 years agoFix several problems with protected access control:
John McCall [Sat, 7 Apr 2012 03:04:20 +0000 (03:04 +0000)]
Fix several problems with protected access control:
  - The [class.protected] restriction is non-trivial for any instance
    member, even if the access lacks an object (for example, if it's
    a pointer-to-member constant).  In this case, it is equivalent to
    requiring the naming class to equal the context class.
  - The [class.protected] restriction applies to accesses to constructors
    and destructors.  A protected constructor or destructor can only be
    used to create or destroy a base subobject, as a direct result.
  - Several places were dropping or misapplying object information.

The standard could really be much clearer about what the object type is
supposed to be in some of these accesses.  Usually it's easy enough to
find a reasonable answer, but still, the standard makes a very confident
statement about accesses to instance members only being possible in
either pointer-to-member literals or member access expressions, which
just completely ignores concepts like constructor and destructor
calls, using declarations, unevaluated field references, etc.

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

12 years agotest/lit.cfg: Please pass %INCLUDE% to clang.exe on Win32. MS-compatible clang may...
NAKAMURA Takumi [Sat, 7 Apr 2012 01:02:53 +0000 (01:02 +0000)]
test/lit.cfg: Please pass %INCLUDE% to clang.exe on Win32. MS-compatible clang may refer to %INCLUDE%. It fixes r154188.

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

12 years ago[driver] In general, the driver claims redundant args and uses the last arg.
Chad Rosier [Sat, 7 Apr 2012 00:01:31 +0000 (00:01 +0000)]
[driver] In general, the driver claims redundant args and uses the last arg.
However, the '-x' option has special handling and wasn't following this
paradigm.  Fix it to do so by claiming the arg as we parse the '-x' option.
rdar://11203340

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

12 years agoRemove "parse error" in favor of more descriptive diagnostics.
David Blaikie [Fri, 6 Apr 2012 23:33:59 +0000 (23:33 +0000)]
Remove "parse error" in favor of more descriptive diagnostics.

In a few cases clang emitted a rather content-free diagnostic: 'parse error'.
This change replaces two actual cases (template parameter parsing and K&R
parameter declaration parsing) with more specific diagnostics and removes a
third dead case of this in the BalancedDelimiterTracker (the ctor already
checked the invariant necessary to ensure that the diag::parse_error was never
actually used).

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

12 years agomore testing of objc's dictionary literal translation.
Fariborz Jahanian [Fri, 6 Apr 2012 22:51:48 +0000 (22:51 +0000)]
more testing of objc's dictionary literal translation.

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

12 years agoImplement support for null non-type template arguments for non-type
Douglas Gregor [Fri, 6 Apr 2012 22:40:38 +0000 (22:40 +0000)]
Implement support for null non-type template arguments for non-type
template parameters of pointer, pointer-to-member, or nullptr_t
type in C++11. Fixes PR9700 / <rdar://problem/11193097>.

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

12 years agomodern objective-c translation: support for
Fariborz Jahanian [Fri, 6 Apr 2012 22:29:36 +0000 (22:29 +0000)]
modern objective-c translation: support for
dictionary literals. This concludes // rdar://10803676

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

12 years agoRework ExprEngine::evalLoad and clients (e.g. VisitBinaryOperator) so that when we...
Ted Kremenek [Fri, 6 Apr 2012 22:10:18 +0000 (22:10 +0000)]
Rework ExprEngine::evalLoad and clients (e.g. VisitBinaryOperator) so that when we generate a new ExplodedNode
we use the same Expr* as the one being currently visited.  This is preparation for transitioning to having
ProgramPoints refer to CFGStmts.

This required a bit of trickery.  We wish to keep the old Expr* bindings in the Environment intact,
as plenty of logic relies on it and there is no reason to change it, but we sometimes want the Stmt* for
the ProgramPoint to be different than the Expr* being used for bindings.  This requires adding an extra
argument for some functions (e.g., evalLocation).  This looks a bit strange for some clients, but
it will look a lot cleaner when were start using CFGStmt* in the appropriate places.

As some fallout, the diagnostics arrows are a bit difference, since some of the node locations have changed.
I have audited these, and they look reasonable.

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

12 years agoSourceManager: Vectorize ComputeLineNumbers for SSE2.
Benjamin Kramer [Fri, 6 Apr 2012 20:49:55 +0000 (20:49 +0000)]
SourceManager: Vectorize ComputeLineNumbers for SSE2.

This method is very hot, it is called when emitting diagnostics, in -E mode
and for many #pragma handlers. It scans through the whole source file to
count newlines, records and caches them in a vector.

The speedup from vectorization isn't very large, as we fall back to bytewise
scanning when we hit a newline. There might be a way to avoid leaving the sse
loop but everything I tried didn't work out because a call to push_back
clobbers xmm registers.

About 2% speedup on average on "clang -E > /dev/null" of all .cpp files in
clang's lib/Sema.

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

12 years agoMIPS: Provide a correct path to the dynamic linker when build for MIPS 64-bit targets.
Simon Atanasyan [Fri, 6 Apr 2012 20:14:27 +0000 (20:14 +0000)]
MIPS: Provide a correct path to the dynamic linker when build for MIPS 64-bit targets.

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

12 years agoThread safety analysis: downgraded requirement that mutex expressions refer to a...
DeLesley Hutchins [Fri, 6 Apr 2012 20:02:30 +0000 (20:02 +0000)]
Thread safety analysis: downgraded requirement that mutex expressions refer to a lockable type from error to warning.

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

12 years agomodern objective-c translator: translate array literal
Fariborz Jahanian [Fri, 6 Apr 2012 19:47:36 +0000 (19:47 +0000)]
modern objective-c translator: translate array literal
expressions. // rdar://10803676

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

12 years agoMIPS: Pass -EB/-EL argument to the assembler according to selected endian when compil...
Simon Atanasyan [Fri, 6 Apr 2012 19:15:24 +0000 (19:15 +0000)]
MIPS: Pass -EB/-EL argument to the assembler according to selected endian when compile for MIPS targets.

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

12 years ago[analyzer] Check that the arguments to NSOrderedSet creation methods are valid ObjC...
Jordy Rose [Fri, 6 Apr 2012 19:06:01 +0000 (19:06 +0000)]
[analyzer] Check that the arguments to NSOrderedSet creation methods are valid ObjC objects.

Patch by Sean McBride!

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

12 years agoTest for r154189/PR12481
Matt Beaumont-Gay [Fri, 6 Apr 2012 18:47:27 +0000 (18:47 +0000)]
Test for r154189/PR12481

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

12 years agoUse atexit when __cxa_atexit isn't available instead of adding a
John McCall [Fri, 6 Apr 2012 18:21:06 +0000 (18:21 +0000)]
Use atexit when __cxa_atexit isn't available instead of adding a
global destructor entry.  For some reason this isn't enabled for
apple-kexts;  it'd be good to have documentation for that.

Based on a patch by Nakamura Takumi!

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

12 years agoRename GenerateCXXGlobalDtorFunc to GenerateCXXGlobalDtorsFunc.
John McCall [Fri, 6 Apr 2012 18:21:03 +0000 (18:21 +0000)]
Rename GenerateCXXGlobalDtorFunc to GenerateCXXGlobalDtorsFunc.

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

12 years agoFix a Sema invariant bug that I recently introduced involving
John McCall [Fri, 6 Apr 2012 18:20:53 +0000 (18:20 +0000)]
Fix a Sema invariant bug that I recently introduced involving
the template instantiation of statement-expressions.

I think it was jyasskin who had a crashing testcase in this area;
hopefully this fixes it and he can find his testcase and check it in.

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

12 years agoClear environment variables that might affect Clang before running tests.
Jordy Rose [Fri, 6 Apr 2012 18:14:01 +0000 (18:14 +0000)]
Clear environment variables that might affect Clang before running tests.

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

12 years agoAdded a new attribute, objc_root_class, which informs the compiler when a root class...
Patrick Beard [Fri, 6 Apr 2012 18:12:22 +0000 (18:12 +0000)]
Added a new attribute, objc_root_class, which informs the compiler when a root class is intentionally declared.
The warning this inhibits, -Wobjc-root-class, is opt-in for now. However, all clang unit tests that would trigger
the warning have been updated to use -Wno-objc-root-class. <rdar://problem/7446698>

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

12 years agoMIPS: Move tests check float ABI macros definitions to the more appropriate place.
Simon Atanasyan [Fri, 6 Apr 2012 17:51:49 +0000 (17:51 +0000)]
MIPS: Move tests check float ABI macros definitions to the more appropriate place.

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