]> granicus.if.org Git - clang/log
clang
12 years agoProcess attributes in the order they appear in the source code. This make clang
Rafael Espindola [Mon, 7 May 2012 23:58:18 +0000 (23:58 +0000)]
Process attributes in the order they appear in the source code. This make clang
match gcc behavior for two conflicting visibilities in the same decl. It also
makes handling of dllimport/dllexport more natural.

As a bonus we now warn on the dllimport in

void __attribute__((dllimport)) foo13();
void __attribute__((dllexport)) foo13();

as does gcc.

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

12 years ago[analyzer]Turn on MallocSizeOfChecker by default; shorten the diagnostic
Anna Zaks [Mon, 7 May 2012 23:30:29 +0000 (23:30 +0000)]
[analyzer]Turn on MallocSizeOfChecker by default; shorten the diagnostic

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

12 years ago[libclang] Actually commit the changes to make libclang's RecursiveASTVisitor
Argyrios Kyrtzidis [Mon, 7 May 2012 23:23:03 +0000 (23:23 +0000)]
[libclang] Actually commit the changes to make libclang's RecursiveASTVisitor
data-recursive for statements.

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

12 years ago[libclang] Put the RecursiveASTVisitor in libclang in a cxindex namespace.
Argyrios Kyrtzidis [Mon, 7 May 2012 22:22:58 +0000 (22:22 +0000)]
[libclang] Put the RecursiveASTVisitor in libclang in a cxindex namespace.

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

12 years agoUn-revert r156142, "[libclang] Bring back BodyIndexer::TraverseCXXOperatorCallExpr".
Argyrios Kyrtzidis [Mon, 7 May 2012 22:16:49 +0000 (22:16 +0000)]
Un-revert r156142, "[libclang] Bring back BodyIndexer::TraverseCXXOperatorCallExpr".

It was reverted on r156253.

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

12 years ago[libclang] Use a copy of the data-recursive RecursiveASTVisitor inside libclang.
Argyrios Kyrtzidis [Mon, 7 May 2012 22:16:46 +0000 (22:16 +0000)]
[libclang] Use a copy of the data-recursive RecursiveASTVisitor inside libclang.

This is temporary until we settle on how to make the main RecursiveASTVisitor safe.
There are some modifications on the original version, to avoid extreme memory usage
when compiling for release.

rdar://11179167

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

12 years agoRemove the 'intrin.h' builtin header file and its tests for now.
Chandler Carruth [Mon, 7 May 2012 20:46:58 +0000 (20:46 +0000)]
Remove the 'intrin.h' builtin header file and its tests for now.

After discussion with several people, including Doug Gregor, we've
decided to change our approach here. If you have questions about this
header file, the commit removing it, etc., please reach out to me
off-list.

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

12 years agomake this test a little more useful. I'll add more tests for bound checking once...
Nuno Lopes [Mon, 7 May 2012 20:23:03 +0000 (20:23 +0000)]
make this test a little more useful. I'll add more tests for bound checking once -fbounds-checking patch gets in

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

12 years ago[analyzer] Fix a crash in triggered by OSAtomicChecker.
Anna Zaks [Mon, 7 May 2012 19:40:49 +0000 (19:40 +0000)]
[analyzer] Fix a crash in triggered by OSAtomicChecker.

SValBuilder should return an UnknownVal() when comparison of int and ptr
fails. Previous to this commit, it went on assuming that we are dealing
with pointer arithmetic.

PR12509, radar://11390991

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

12 years ago[analyzer] Fixup for r155244: PurgeDeadSymbols should subclass StmtPoint
Anna Zaks [Mon, 7 May 2012 18:40:26 +0000 (18:40 +0000)]
[analyzer] Fixup for r155244: PurgeDeadSymbols should subclass StmtPoint

To solve the inconsistency pointed out in Erik's review, refactor class
hierarchy of ProgramPoints so that PreStmtPurgeDeadSymbols and
PostStmtPurgeDeadSymbols both subclass from StmtPoint instead of
PostStmt.

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

12 years agoremove code to add bound checks for simple array accesses, since those are already...
Nuno Lopes [Mon, 7 May 2012 17:57:00 +0000 (17:57 +0000)]
remove code to add bound checks for simple array accesses, since those are already covered by the check with the objectsize builtin
remove the comparison of objectsize with -1. since it's an unsigned comparison, it will always succeed if objectsize returns -1, which is enough to have the check removed

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

12 years ago[analyzer]Fixup r156215: use StopTracking summary instead of ScratchArgs
Anna Zaks [Mon, 7 May 2012 17:47:09 +0000 (17:47 +0000)]
[analyzer]Fixup r156215: use StopTracking summary instead of ScratchArgs

As per Jordy's and Ted's comment, use the default StopTracking summary
instead of adding all arguments to ScratchArs.

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

12 years agoRevert r156097, which appears to be causing some breakage.
Douglas Gregor [Mon, 7 May 2012 14:17:47 +0000 (14:17 +0000)]
Revert r156097, which appears to be causing some breakage.

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

12 years agoFix includes for unices that don't have chdir declared transitively.
Manuel Klimek [Mon, 7 May 2012 10:02:55 +0000 (10:02 +0000)]
Fix includes for unices that don't have chdir declared transitively.

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

12 years agoIncludes direct.h for windows compilation.
Manuel Klimek [Mon, 7 May 2012 09:45:46 +0000 (09:45 +0000)]
Includes direct.h for windows compilation.

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

12 years agoFixes resolution of relative paths when running clang tools.
Manuel Klimek [Mon, 7 May 2012 09:17:48 +0000 (09:17 +0000)]
Fixes resolution of relative paths when running clang tools.

The chdir is not the perfect fix, as it is thread hostile. The
real fix will be to make -working-dir work correctly, which will
take time to implement. Before that, the tooling library cannot
be used concurrently.

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

12 years agoFixed UserDefinedLiteral source locations.
Abramo Bagnara [Mon, 7 May 2012 09:06:16 +0000 (09:06 +0000)]
Fixed UserDefinedLiteral source locations.

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

12 years agoWhen we suppress an error due to SFINAE, stash the diagnostic away with the
Richard Smith [Mon, 7 May 2012 09:03:25 +0000 (09:03 +0000)]
When we suppress an error due to SFINAE, stash the diagnostic away with the
overload candidate, and include its message in any subsequent 'candidate not
viable due to substitution failure' note we may produce.

To keep the note small (since the 'overload resolution failed' diagnostics are
often already very verbose), the text of the SFINAE diagnostic is included as
part of the text of the note, and any notes which were attached to it are
discarded.

There happened to be spare space in OverloadCandidate into which a
PartialDiagnosticAt could be squeezed, and this patch goes to lengths to avoid
unnecessary PartialDiagnostic copies, resulting in no slowdown that I could
measure. (Removal in passing of some PartialDiagnostic copies has resulted in a
slightly smaller clang binary overall.) Even on a torture test, I was unable to
measure a memory increase of above 0.2%.

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

12 years agoConvert AVX non-temporal store builtins to LLVM-native IR. This was previously done...
Craig Topper [Mon, 7 May 2012 06:25:45 +0000 (06:25 +0000)]
Convert AVX non-temporal store builtins to LLVM-native IR. This was previously done for SSE builtins.

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

12 years agoChange how we suppress access control in explicit instantiations
John McCall [Mon, 7 May 2012 06:16:58 +0000 (06:16 +0000)]
Change how we suppress access control in explicit instantiations
so that we actually accumulate all the delayed diagnostics.  Do
this so that we can restore those diagnostics to good standing
if it turns out that we were wrong to suppress, e.g. if the
tag specifier is actually an elaborated type specifier and not
a declaration.

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

12 years agoThere is no reason for these methods to be out-of-line.
John McCall [Mon, 7 May 2012 06:16:49 +0000 (06:16 +0000)]
There is no reason for these methods to be out-of-line.

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

12 years agoRefactor DelayedDiagnostics so that it keeps diagnostics in
John McCall [Mon, 7 May 2012 06:16:41 +0000 (06:16 +0000)]
Refactor DelayedDiagnostics so that it keeps diagnostics in
separate pools owned by the RAII objects that keep pushing
decl state.  This gives us quite a bit more flexibility.

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

12 years ago- Adding lexical_parent and semantic_parent properties to clang.cindex.Cursor
Manuel Klimek [Mon, 7 May 2012 05:56:03 +0000 (05:56 +0000)]
- Adding lexical_parent and semantic_parent properties to clang.cindex.Cursor
- Two new tests (one for each property), require libclang built from r155858 or later to pass
- New test utility function (get_cursors) that gets all the nodes with a specific spelling.

Patch by Evan Pipho.

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

12 years agoUpdating the test case based on previous patch
Aaron Ballman [Mon, 7 May 2012 01:10:33 +0000 (01:10 +0000)]
Updating the test case based on previous patch

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

12 years agoA union can have a constexpr defaulted default constructor, if it has an
Richard Smith [Mon, 7 May 2012 01:07:30 +0000 (01:07 +0000)]
A union can have a constexpr defaulted default constructor, if it has an
in-class initializer for one of its fields. Value-initialization of such
a type should use the in-class initializer!

The former was just a bug, the latter is a (reported) standard defect.

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

12 years agoRemove variable made unused by r156270.
David Blaikie [Mon, 7 May 2012 00:53:51 +0000 (00:53 +0000)]
Remove variable made unused by r156270.

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

12 years agoDetecting illegal instantiations of abstract types when using a function-style cast...
Aaron Ballman [Mon, 7 May 2012 00:02:00 +0000 (00:02 +0000)]
Detecting illegal instantiations of abstract types when using a function-style cast.  Fixed PR12658.

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

12 years ago[analyzer] Reduce parallel code paths in SimpleSValBuilder::evalBinOpNN, and handle...
Jordy Rose [Sun, 6 May 2012 23:40:02 +0000 (23:40 +0000)]
[analyzer] Reduce parallel code paths in SimpleSValBuilder::evalBinOpNN, and handle mixed-type operations more generally.

The logical change is that the integers in SymIntExprs may not have the same type as the symbols they are paired with. This was already the case with taint-propagation expressions created by SValBuilder::makeSymExprValNN, but I think those integers may never have been used. SimpleSValBuilder should be able to handle mixed-integer-type SymIntExprs fine now, though, and the constraint managers were already being defensive (though not entirely correct). All existing tests pass.

The logic in evalBinOpNN has been simplified so that conversion is done as late as possible. As a result, most of the switch cases have been reduced to do the minimal amount of work, delegating to another case when they can by substituting ConcreteInts and (as before) reversing the left and right arguments when useful.

Comparisons require special handling in two places (building SymIntExprs and evaluating constant-constant operations) because we don't /know/ the best type for comparing the two values. I've approximated the rules in Sema [C99 6.3.1.8]  but it'd be nice to refactor Sema's actual algorithm into ASTContext.

This is also groundwork for handling mixed-type constraints better than we do now.

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

12 years agoSplit mergeAvailabilityAttr out of handleAvailabilityAttr. This is important
Rafael Espindola [Sun, 6 May 2012 19:56:25 +0000 (19:56 +0000)]
Split mergeAvailabilityAttr out of handleAvailabilityAttr. This is important
for having a uniform logic for adding attributes to a decl. This in turn
is needed to fix the FIXME:

  // FIXME: This needs to happen before we merge declarations. Then,
  // let attribute merging cope with attribute conflicts.
  ProcessDeclAttributes(S, NewFD, D,
                        /*NonInheritable=*/false, /*Inheritable=*/true);

The idea is that mergeAvailabilityAttr will become a method. Once attributes
are processed before merging, it will be called from handleAvailabilityAttr to
handle multiple attributes in one decl:

void f(int) __attribute__((availability(ios,deprecated=3.0),
                           availability(ios,introduced=2.0)));

and from SemaDecl.cpp to handle multiple decls:

void f(int) __attribute__((availability(ios,deprecated=3.0)));
void f(int) __attribute__((availability(ios,introduced=2.0)));

As a bonus, use the new structure to diagnose incompatible availability
attributes added to different decls (see included testcases).

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

12 years agoPut the availability warnings in a group.
Rafael Espindola [Sun, 6 May 2012 16:49:20 +0000 (16:49 +0000)]
Put the availability warnings in a group.

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

12 years agoSimple typo fix (syntex to syntax). Fixes PR12735
Aaron Ballman [Sun, 6 May 2012 16:07:45 +0000 (16:07 +0000)]
Simple typo fix (syntex to syntax).  Fixes PR12735

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

12 years agoRevert r156142, "[libclang] Bring back BodyIndexer::TraverseCXXOperatorCallExpr which"
NAKAMURA Takumi [Sun, 6 May 2012 08:24:34 +0000 (08:24 +0000)]
Revert r156142, "[libclang] Bring back BodyIndexer::TraverseCXXOperatorCallExpr which"

It caused test/Index/index-many-call-ops.cpp to fail in stage2 c-index-test on selfhosting i686-cygwin and x86_64-linux since r156229 (Reverting making RecursiveASTVisitor data recursive).

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

12 years agoA conversion operator in a base class shouldn't hide another conversion operator
Richard Smith [Sun, 6 May 2012 00:04:32 +0000 (00:04 +0000)]
A conversion operator in a base class shouldn't hide another conversion operator
in the same class, even if they convert to the same type. Fixes PR12712.

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

12 years agoRevert r156141 (making RecursiveASTVisitor data recursive). It is causing clang...
Ted Kremenek [Sat, 5 May 2012 04:35:20 +0000 (04:35 +0000)]
Revert r156141 (making RecursiveASTVisitor data recursive).  It is causing clang to blow up in memory usage on -O2 when compiling itself,
which is leading to swapping in some cases when it didn't before.  We need to see if we can make this change
without leading to a massive compile-time bloat.

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

12 years agoUse raw_ostream in TypePrinter and eliminate uses of temporary std::strings.
Argyrios Kyrtzidis [Sat, 5 May 2012 04:20:37 +0000 (04:20 +0000)]
Use raw_ostream in TypePrinter and eliminate uses of temporary std::strings.

Part of rdar://10796159

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

12 years agoMake BuiltinType::getName return a StringRef and introduce BuiltinType::getNameAsCString
Argyrios Kyrtzidis [Sat, 5 May 2012 04:20:28 +0000 (04:20 +0000)]
Make BuiltinType::getName return a StringRef and introduce BuiltinType::getNameAsCString
to get a const char* if necessary.

This avoids unnecessary conversions when we want to use the result of getName as
a StringRef.

Part of rdar://10796159

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

12 years agoMove Sema::VerifyIntegerConstantExpression() and
Douglas Gregor [Fri, 4 May 2012 22:38:52 +0000 (22:38 +0000)]
Move Sema::VerifyIntegerConstantExpression() and
Sema::ConvertToIntegralOrEnumerationType() from PartialDiagnostics to
abstract "diagnoser" classes. Not much of a win here, but we're
-several PartialDiagnostics.

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

12 years ago[analyzer] RetainCountChecker: Allow objects to escape through callbacks
Anna Zaks [Fri, 4 May 2012 22:18:39 +0000 (22:18 +0000)]
[analyzer] RetainCountChecker: Allow objects to escape through callbacks

Fixes radar://10973977.

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

12 years ago[analyzer] One more pointer escape test.
Anna Zaks [Fri, 4 May 2012 22:18:36 +0000 (22:18 +0000)]
[analyzer] One more pointer escape test.

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

12 years agoExplicitly model capturing variables for blocks in the static analyzer. Fixes <rdar...
Ted Kremenek [Fri, 4 May 2012 21:48:42 +0000 (21:48 +0000)]
Explicitly model capturing variables for blocks in the static analyzer.  Fixes <rdar://problem/11125868>.

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

12 years agoremove something that is really old and out of date.
Chris Lattner [Fri, 4 May 2012 21:11:08 +0000 (21:11 +0000)]
remove something that is really old and out of date.

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

12 years agoInhibit ObjC format warning only in system headers (NSLocalizedString).
Jean-Daniel Dupas [Fri, 4 May 2012 21:08:08 +0000 (21:08 +0000)]
Inhibit ObjC format warning only in system headers (NSLocalizedString).
Add a test case for the related NSAssert workaround.

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

12 years agoRemove DiagGroups from notes, and add a TableGen assertion to catch them.
Richard Smith [Fri, 4 May 2012 19:05:50 +0000 (19:05 +0000)]
Remove DiagGroups from notes, and add a TableGen assertion to catch them.

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

12 years agoAdd more comments for Lexer::makeFileCharRange.
Argyrios Kyrtzidis [Fri, 4 May 2012 18:33:19 +0000 (18:33 +0000)]
Add more comments for Lexer::makeFileCharRange.

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

12 years agoSynchronize the representations of DeclarationName and Selector so
Douglas Gregor [Fri, 4 May 2012 18:24:37 +0000 (18:24 +0000)]
Synchronize the representations of DeclarationName and Selector so
that bridging between the two is free. Saves ~4k of code size,
although I don't see any measurable performance difference
(unfortunately).

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

12 years agoIsTailPaddedMemberArray uses a FieldDecl's
Sean Callanan [Fri, 4 May 2012 18:22:53 +0000 (18:22 +0000)]
IsTailPaddedMemberArray uses a FieldDecl's
getTypeSourceInfo() without checking for NULL.
FieldDecls may have NULL TypeSourceInfo, and in
fact some FieldDecls generated by Clang -- and
all FieldDecls generated by LLDB -- have no
TypeSourceInfo.

This patch makes IsTailPaddedMemberArray check
for NULL.

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

12 years ago[PCH] Use DenseMap instead of std::map to keep track of SwitchCases.
Argyrios Kyrtzidis [Fri, 4 May 2012 18:17:30 +0000 (18:17 +0000)]
[PCH] Use DenseMap instead of std::map to keep track of SwitchCases.

Part of rdar://11353109.

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

12 years ago[analyzer]Fixup r156134: Handle the case when FunctionDecl isn't avail.
Anna Zaks [Fri, 4 May 2012 17:37:16 +0000 (17:37 +0000)]
[analyzer]Fixup r156134: Handle the case when FunctionDecl isn't avail.

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

12 years agoMove Sema::RequireNonAbstractType() off of PartialDiagnostic.
Douglas Gregor [Fri, 4 May 2012 17:09:59 +0000 (17:09 +0000)]
Move Sema::RequireNonAbstractType() off of PartialDiagnostic.

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

12 years agoSwitch RequireLiteralType() off of PartialDiagnostic.
Douglas Gregor [Fri, 4 May 2012 16:48:41 +0000 (16:48 +0000)]
Switch RequireLiteralType() off of PartialDiagnostic.

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

12 years agoMove Sema::RequireCompleteType() and Sema::RequireCompleteExprType()
Douglas Gregor [Fri, 4 May 2012 16:32:21 +0000 (16:32 +0000)]
Move Sema::RequireCompleteType() and Sema::RequireCompleteExprType()
off PartialDiagnostic. PartialDiagnostic is rather heavyweight for
something that is in the critical path and is rarely used. So, switch
over to an abstract-class-based callback mechanism that delays most of
the work until a diagnostic is actually produced. Good for ~11k code
size reduction in the compiler and 1% speedup in -fsyntax-only on the
code in <rdar://problem/11004361>.

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

12 years agoThread safety analysis: check for LOCKABLE attribute on base classes.
DeLesley Hutchins [Fri, 4 May 2012 16:28:38 +0000 (16:28 +0000)]
Thread safety analysis: check for LOCKABLE attribute on base classes.

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

12 years agoStringRefize code because we're good even when we crash.
Chad Rosier [Fri, 4 May 2012 15:32:05 +0000 (15:32 +0000)]
StringRefize code because we're good even when we crash.
Patch by Jordy Rose.

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

12 years agoAdd a predefine __WINT_UNSIGNED__, similar to __WCHAR_UNSIGNED__, and test them both...
James Molloy [Fri, 4 May 2012 11:23:40 +0000 (11:23 +0000)]
Add a predefine __WINT_UNSIGNED__, similar to __WCHAR_UNSIGNED__, and test them both for ARM and X86.

Use this to fully fix Sema/format-strings.c for non-x86 platforms.

Reviewed by Chandler on IRC.

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

12 years agoFix handling of wint_t - we can't assume wint_t is purely an integer promotion of...
James Molloy [Fri, 4 May 2012 10:55:22 +0000 (10:55 +0000)]
Fix handling of wint_t - we can't assume wint_t is purely an integer promotion of wchar_t - they may differ in signedness.

Teach ASTContext about WIntType, and have it taken from TargetInfo like WCharType. Should fix test/Sema/format-strings.c for ARM, with the exception of one subtest which will fail if wint_t and wchar_t are the same size and wint_t is signed, wchar_t is unsigned.

There'll be a followup commit to fix that.

Reviewed by Chandler and Hans at http://llvm.org/reviews/r/8

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

12 years agoFix -Wlarge-by-value-copy option handling in the driver.
Jean-Daniel Dupas [Fri, 4 May 2012 08:08:37 +0000 (08:08 +0000)]
Fix -Wlarge-by-value-copy option handling in the driver.
CC1 supports only the joined format.

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

12 years agoThis patch adds a new Clang compiler flag "-gline-tables-only".
Alexey Samsonov [Fri, 4 May 2012 07:39:27 +0000 (07:39 +0000)]
This patch adds a new Clang compiler flag "-gline-tables-only".
It reduces the amount of emitted debug information:
1) DIEs in .debug_info have types DW_TAG_compile_unit, DW_TAG_subprogram,
DW_TAG_inlined_subroutine (for opt builds) and DW_TAG_lexical_block only.
2) .debug_str contains only function names.
3) No debug data for types/namespaces/variables is emitted.
4) The data in .debug_line is enough to produce valid stack traces with
function names and line numbers.

Reviewed by Eric Christopher.

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

12 years agotest/PCH/remap-file-from-pch.cpp: Fix expression for DOS pathsep.
NAKAMURA Takumi [Fri, 4 May 2012 03:42:28 +0000 (03:42 +0000)]
test/PCH/remap-file-from-pch.cpp: Fix expression for DOS pathsep.

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

12 years agoRemove obsolete code for finding a fallback iOS SDK. <rdar://problem/11378535>
Bob Wilson [Fri, 4 May 2012 03:09:46 +0000 (03:09 +0000)]
Remove obsolete code for finding a fallback iOS SDK.  <rdar://problem/11378535>

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

12 years agoSkip checking for infinite for-loops if there are global or static variables
Richard Trieu [Fri, 4 May 2012 03:01:54 +0000 (03:01 +0000)]
Skip checking for infinite for-loops if there are global or static variables
in the conditional.

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

12 years ago[PCH] Really, pinky swear, fix for PR12689
Argyrios Kyrtzidis [Fri, 4 May 2012 01:49:36 +0000 (01:49 +0000)]
[PCH] Really, pinky swear, fix for PR12689

rdar://11353109

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

12 years ago[libclang] Bring back BodyIndexer::TraverseCXXOperatorCallExpr which
Argyrios Kyrtzidis [Fri, 4 May 2012 01:00:38 +0000 (01:00 +0000)]
[libclang] Bring back BodyIndexer::TraverseCXXOperatorCallExpr which
was removed in r155969 to address a deficiency of RecursiveASTVisitor
prior to recent changes on it.

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

12 years agoMake RecursiveASTVisitor fully data recursive on Stmts, with
Argyrios Kyrtzidis [Fri, 4 May 2012 01:00:35 +0000 (01:00 +0000)]
Make RecursiveASTVisitor fully data recursive on Stmts, with
minimal disruption on its clients.

Unlike the previous data-recursive scheme, Traverse*Stmt methods are
always getting called. The base methods of RecursiveASTVisitor will enqueue
the sub-statements instead of calling TraverseStmt on them.

Clients that override a Traverse*Stmt method and call TraverseStmt will
still function as function-recursive traversal; if a client wants to
enqueue a sub-statement in its override method it can do it like this:

[inside the override method]
StmtQueueAction StmtQueue(*this);
StmtQueue.queue(Stmt->getSubStmt());

Should address rdar://11179167.

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

12 years ago[analyzer] Assume pointer escapes when a callback is passed inside
Anna Zaks [Thu, 3 May 2012 23:50:33 +0000 (23:50 +0000)]
[analyzer] Assume pointer escapes when a callback is passed inside
a struct.

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

12 years ago[analyzer] Allow pointers escape through calls containing callback args.
Anna Zaks [Thu, 3 May 2012 23:50:28 +0000 (23:50 +0000)]
[analyzer] Allow pointers escape through calls containing callback args.

(Since we don't have a generic pointer escape callback, modify
ExprEngineCallAndReturn as well as the malloc checker.)

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

12 years agoFix non-deterministic iteration order when walking the specializations
Chandler Carruth [Thu, 3 May 2012 23:49:05 +0000 (23:49 +0000)]
Fix non-deterministic iteration order when walking the specializations
of templates by using the newly introduce FoldingSetVector. This
preserves insertion order for all iteration of specializations.

I've also included a somewhat terrifying testcase that rapidly builds up
a large number of functions. This is enough that any system with ASLR
will have non-deterministic debug information generated for the test
case without the fix here as the debug information is generated in part
by walking these specializations.

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

12 years agoAdd a test for r156092.
Bob Wilson [Thu, 3 May 2012 23:38:51 +0000 (23:38 +0000)]
Add a test for r156092.

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

12 years agoInline DenseMapInfo<clang::DeclarationName>::getHashValue() for a 0.4% speedup on...
Douglas Gregor [Thu, 3 May 2012 23:28:32 +0000 (23:28 +0000)]
Inline DenseMapInfo<clang::DeclarationName>::getHashValue() for a 0.4% speedup on <rdar://problem/11004361>

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

12 years agoobjc modern translator: fix up attribute for dynamic property in a category.
Fariborz Jahanian [Thu, 3 May 2012 23:19:33 +0000 (23:19 +0000)]
objc modern translator: fix up attribute for  dynamic property in a category.
// rdar://11095151

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

12 years agoSplit DeclarationName::getFETokenInfoAsVoid() into hot/cold paths and
Douglas Gregor [Thu, 3 May 2012 23:18:44 +0000 (23:18 +0000)]
Split DeclarationName::getFETokenInfoAsVoid() into hot/cold paths and
(trivially) make DeclContext::lookup()'s const version inlinable. Good
for 0.3% on <rdar://problem/11004361>.

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

12 years agomodern objc translator: support for default property
Fariborz Jahanian [Thu, 3 May 2012 22:52:13 +0000 (22:52 +0000)]
modern objc translator: support for default property
synthesis translation. // rdar://11374235 - wip.

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

12 years agoAdd support for full-width 128-bit integer literals.
Stephen Canon [Thu, 3 May 2012 22:49:43 +0000 (22:49 +0000)]
Add support for full-width 128-bit integer literals.

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

12 years ago[driver - crash diagnostics] Convert the flags back to an array of strings and use
Chad Rosier [Thu, 3 May 2012 22:38:00 +0000 (22:38 +0000)]
[driver - crash diagnostics] Convert the flags back to an array of strings and use
array_lengthof.  Also, append the new filename with correct preprocessed suffix.
Last part of rdar://11285725

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

12 years agoUse the standard values for the __cplusplus macro, even when in GNU mode. GCC
Richard Smith [Thu, 3 May 2012 22:18:20 +0000 (22:18 +0000)]
Use the standard values for the __cplusplus macro, even when in GNU mode. GCC
dropped its prior behavior of always defining __cplusplus to 1 in GNU mode in
version 4.7.

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

12 years ago[PCH] When validating that the files coming from PCH did not change, also
Argyrios Kyrtzidis [Thu, 3 May 2012 21:50:39 +0000 (21:50 +0000)]
[PCH] When validating that the files coming from PCH did not change, also
validate that we didn't override the contents of any of such files.

If this is detected, emit a diagnostic error and recover gracefully
by using the contents of the original file that the PCH was built from.

Part of rdar://11305263

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

12 years agomodern objc translator: used size_t in couple
Fariborz Jahanian [Thu, 3 May 2012 21:44:12 +0000 (21:44 +0000)]
modern objc translator: used size_t in couple
of places. // rdar://11375908

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

12 years agoUse array_lengthof instead of sizeof trickery.
Chad Rosier [Thu, 3 May 2012 21:25:34 +0000 (21:25 +0000)]
Use array_lengthof instead of sizeof trickery.

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

12 years agoDo not keep track of the set of visited Objective-C containers when
Douglas Gregor [Thu, 3 May 2012 21:25:24 +0000 (21:25 +0000)]
Do not keep track of the set of visited Objective-C containers when
performing the search for overridden methods. We very rarely see the
same container twice, and in those rare cases we still have the
fallback of the second SmallPtrSet to eliminate duplicates. Good for
~1.5% -fsyntax-only speedup on the code in <rdar://problem/11004361>.

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

12 years agomodern objc translation. objc_getClass() and objc_getMetaClass()
Fariborz Jahanian [Thu, 3 May 2012 20:23:37 +0000 (20:23 +0000)]
modern objc translation.  objc_getClass() and objc_getMetaClass()
prototypes should both return  `struct objc_class *`.
// rdar://11375495

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

12 years ago[driver - crash diagnostics] Only write the failing command in the script.
Chad Rosier [Thu, 3 May 2012 20:17:15 +0000 (20:17 +0000)]
[driver - crash diagnostics] Only write the failing command in the script.
Part of rdar://11285725

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

12 years agoFix typo and avoid layout issue with almost-but-not-quite-fixed-width fonts.
Richard Smith [Thu, 3 May 2012 20:10:41 +0000 (20:10 +0000)]
Fix typo and avoid layout issue with almost-but-not-quite-fixed-width fonts.

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

12 years agoMinor copy-edits to clang::fallthrough attribute documentation.
Richard Smith [Thu, 3 May 2012 20:05:46 +0000 (20:05 +0000)]
Minor copy-edits to clang::fallthrough attribute documentation.

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

12 years agoCanonicalize loop.
Chad Rosier [Thu, 3 May 2012 19:50:25 +0000 (19:50 +0000)]
Canonicalize loop.

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

12 years agoDisable -Wformat-extra-args for arguments defined in system headers.
Bob Wilson [Thu, 3 May 2012 19:47:19 +0000 (19:47 +0000)]
Disable -Wformat-extra-args for arguments defined in system headers.

Some of the NSAssert macros in OS X 10.7 are implemented in a way that
adds extra arguments that trigger the -Wformat-extra-args warning.
Earlier versions of clang failed to detect those -Wformat issues, but now
that clang is reporting those problems, we need to quiet them since there's
nothing to be done to fix them.  <rdar://problem/11317765>

I don't know how to write a testcase for this.  Suggestions welcome.
Patch by Ted Kremenek!

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

12 years agoSilence unused-variable warning when assertions are disabled.
Kaelyn Uhrain [Thu, 3 May 2012 19:46:38 +0000 (19:46 +0000)]
Silence unused-variable warning when assertions are disabled.

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

12 years agoHonour CLANG_BUILD_EXAMPLES correctly, by setting the directory's
Peter Collingbourne [Thu, 3 May 2012 19:11:45 +0000 (19:11 +0000)]
Honour CLANG_BUILD_EXAMPLES correctly, by setting the directory's
EXCLUDE_FROM_ALL property.

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

12 years ago[analyzer] When promoting constant integers in a comparison, use the larger width...
Jordy Rose [Thu, 3 May 2012 19:05:48 +0000 (19:05 +0000)]
[analyzer] When promoting constant integers in a comparison, use the larger width of the two to avoid truncation.

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

12 years agoRemove diagnostic groups and DefaultIgnore from notes.
Richard Smith [Thu, 3 May 2012 18:38:45 +0000 (18:38 +0000)]
Remove diagnostic groups and DefaultIgnore from notes.

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

12 years agoAdd -Wimplicit-fallthrough warning flag, which warns on fallthrough between
Richard Smith [Thu, 3 May 2012 18:27:39 +0000 (18:27 +0000)]
Add -Wimplicit-fallthrough warning flag, which warns on fallthrough between
cases in switch statements. Also add a [[clang::fallthrough]] attribute, which
can be used to suppress the warning in the case of intentional fallthrough.

Patch by Alexander Kornienko!

The handling of C++11 attribute namespaces in this patch is temporary, and will
be replaced with a cleaner mechanism in a subsequent patch.

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

12 years ago[analyzer] CString Checker: Do not split the path unless the user
Anna Zaks [Thu, 3 May 2012 18:21:28 +0000 (18:21 +0000)]
[analyzer] CString Checker: Do not split the path unless the user
specifically checks for equality to null.

Enforcing this general practice, which keeps the analyzer less
noisy, in the CString Checker. This change suppresses "Assigned value is
garbage or undefined" warning in the added test case.

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

12 years agoFix a couple of cases of (innocuous) unmarked fallthrough. At least one of these
Richard Smith [Thu, 3 May 2012 17:56:49 +0000 (17:56 +0000)]
Fix a couple of cases of (innocuous) unmarked fallthrough. At least one of these
was unintentional. Found by -Wimplicit-fallthrough, patch by Alexander Kornienko!

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

12 years agoIn StringLiteralParser::init, make sure we emit an error when
Argyrios Kyrtzidis [Thu, 3 May 2012 17:50:32 +0000 (17:50 +0000)]
In StringLiteralParser::init, make sure we emit an error when
failing to lex the string, as suggested by Eli.

Part of rdar://11305263.

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

12 years ago[driver crash diagnostics] Remove more flags that reference absolute paths that
Chad Rosier [Thu, 3 May 2012 17:07:55 +0000 (17:07 +0000)]
[driver crash diagnostics] Remove more flags that reference absolute paths that
aren't necessary to reproduce the clang crash.
Part of rdar://11285725

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

12 years agoobjective-c: warn for properties being default synthesized
Fariborz Jahanian [Thu, 3 May 2012 16:43:30 +0000 (16:43 +0000)]
objective-c: warn for properties being default synthesized
under -Wobjc-missing-property-synthesis which must be
opted-in. // rdar://11295716

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

12 years agoCorrectly constify clang::CXXMemberCallExpr::getRecordDecl()
David Blaikie [Thu, 3 May 2012 16:25:49 +0000 (16:25 +0000)]
Correctly constify clang::CXXMemberCallExpr::getRecordDecl()

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

12 years agoTest case Clang::Driver/debug-options-as.c depends on the integrated assembler. Turn...
Simon Atanasyan [Thu, 3 May 2012 13:57:00 +0000 (13:57 +0000)]
Test case Clang::Driver/debug-options-as.c depends on the integrated assembler. Turn it on explicitly on all platforms by the "-integrated-as" option.

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

12 years ago[analyzer] Equality ops are like relational ops in that the arguments shouldn't be...
Jordy Rose [Thu, 3 May 2012 07:34:01 +0000 (07:34 +0000)]
[analyzer] Equality ops are like relational ops in that the arguments shouldn't be converted to the result type. Fixes PR12206 and dupe PR12510.

This was probably the original intent of r133041 (also me, a year ago).

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

12 years ago[analyzer] Fix RUN line and general cleanup for additive folding tests.
Jordy Rose [Thu, 3 May 2012 07:33:56 +0000 (07:33 +0000)]
[analyzer] Fix RUN line and general cleanup for additive folding tests.

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

12 years agoRip out old code for finding libraries in GCC's directories.
Bob Wilson [Thu, 3 May 2012 05:23:52 +0000 (05:23 +0000)]
Rip out old code for finding libraries in GCC's directories.

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

12 years ago[PCH] Clear switch case IDs when deserializing a objc method body.
Argyrios Kyrtzidis [Thu, 3 May 2012 02:26:32 +0000 (02:26 +0000)]
[PCH] Clear switch case IDs when deserializing a objc method body.

Fixes rdar://11353109 & http://llvm.org/bugs/show_bug.cgi?id=12689

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