Commit Graph

27693 Commits

Author SHA1 Message Date
Argyrios Kyrtzidis b26a24cca2 [libclang] Introduce clang_Cursor_getReceiverType which returns the CXType for
the receiver of an ObjC message expression.

rdar://12578643

llvm-svn: 167201
2012-11-01 02:01:34 +00:00
Jordan Rose 40bb1249eb [analyzer] Fix typo in r167186.
llvm-svn: 167189
2012-11-01 00:25:15 +00:00
Jordan Rose 2b213720f9 [analyzer] Minor cleanup in SimpleStreamChecker's class definition.
No functionality change.

llvm-svn: 167187
2012-11-01 00:18:41 +00:00
Jordan Rose 14fe9f3631 [analyzer] Rename ConditionTruthVal::isTrue to isConstrainedTrue.
(and the same for isFalse)

No functionality change.

llvm-svn: 167186
2012-11-01 00:18:27 +00:00
Eli Friedman 1e95d4bb1e Correctly reject gotos in function-level try blocks. PR14225.
llvm-svn: 167184
2012-10-31 23:55:28 +00:00
Anna Zaks a57e8ffdba [analyzer] Fix a bug in SimpleStreamChecker - return after sink.
Thanks Ted.

llvm-svn: 167176
2012-10-31 22:17:48 +00:00
Chad Rosier 37756b0714 [driver] Remove an extra space with the -iprefix option, so that
matching works correctly.
Part of rdar://12329974

llvm-svn: 167173
2012-10-31 21:08:30 +00:00
Argyrios Kyrtzidis d7c16b2543 [PCH] Remove the stat cache from the PCH file.
The stat cache became essentially useless ever since we started
validating all file entries in the PCH.
But the motivating reason for removing it now is that it also affected
correctness in this situation:

-You have a header without include guards (using "#pragma once" or #import)
-When creating the PCH:
  -The same header is referenced in an #include with different filename cases.
  -In the PCH, of course, we record only one file entry for the header file
  -But we cache in the PCH file the stat info for both filename cases

-Then the source files are updated and the header file is updated in a way that
 its size and modification time are the same but its inode changes

-When using the PCH:
  -We validate the headers, we check that header file and we create a file entry with its current inode
  -There's another #include with a filename with different case than the previously created file entry
  -In order to get its stat info we go through the cached stat info of the PCH and we receive the old inode
  -because of the different inodes, we think they are different files so we go ahead and include its contents.

Removing the stat cache will potentially break clients that are attempting to use the stat cache
as a way of avoiding having the actual input files available. If that use case is important, patches are welcome
to bring it back in a way that will actually work correctly (i.e., emit a PCH that is self-contained, coping with
literal strings, line/column computations, etc.).

This fixes rdar://5502805

llvm-svn: 167172
2012-10-31 20:59:50 +00:00
Chad Rosier 2933d05033 [driver] Remove an extra space with the -internal-externc-isystem option, so
that matching works correctly.
Part of rdar://12329974

llvm-svn: 167161
2012-10-31 19:28:55 +00:00
Manman Ren b505d33a5c ARM AAPCS-VFP: fix tracking of allocated VFP registers.
According to the spec, we can backfill VFP registers that were skipped due
to alignment constraints.

llvm-svn: 167159
2012-10-31 19:02:26 +00:00
Rafael Espindola dcbf698dde getArchTypeForDarwinArchName is only used in the clang driver, copy it there.
I will remove it from llvm in the next commit.

llvm-svn: 167156
2012-10-31 18:51:07 +00:00
Alexander Kornienko 0360d1edee Fix for -ast-dump-filter
Summary:
-ast-dump-filter implementation used to stop AST traversal after traversing a NULL Decl node.

Added test and fixed.

Reviewers: djasper, klimek, rsmith

Reviewed By: djasper

CC: cfe-commits

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

llvm-svn: 167155
2012-10-31 18:46:31 +00:00
Chad Rosier 83f16bf445 [driver] Completely rework how superfluous options are stripped out of the crash
diagnostics script.

This addresses the FIXME pertaining to quoted arguments.  We also delineate
between those flags that have an argument (e.g., -D macro, -MF file) and
those that do not (e.g., -M, -MM, -MG).  Finally, we add the -dwarf-debug-flags
to the list of flags to be removed.
rdar://12329974

llvm-svn: 167152
2012-10-31 18:31:33 +00:00
Ulrich Weigand 9936f137eb Add "static" to some functions in altivec.c where it was missing.
llvm-svn: 167148
2012-10-31 18:17:07 +00:00
Argyrios Kyrtzidis 289e4a37ee If skipping bodies is enabled outside code-completion, just skip the body directly
without using tentative parsing.

llvm-svn: 167142
2012-10-31 17:29:28 +00:00
Argyrios Kyrtzidis 3a6c8141f9 Decouple code-completion for the SkipFunctionBodies frontend option and
add a test to make sure code-completion skips bodies.

llvm-svn: 167141
2012-10-31 17:29:22 +00:00
Jordan Rose 417591fba7 [analyzer] Let ConstraintManager subclasses provide a more efficient checkNull.
Previously, every call to a ConstraintManager's isNull would do a full
assumeDual to test feasibility. Now, ConstraintManagers can override
checkNull if they have a cheaper way to do the same thing.
RangeConstraintManager can do this in less than half the work.

<rdar://problem/12608209>

llvm-svn: 167138
2012-10-31 16:44:55 +00:00
Simon Atanasyan a47ba2958f Fix if-else braces layout accordingly to the style guide.
llvm-svn: 167118
2012-10-31 14:39:28 +00:00
Simon Atanasyan 86bdab7468 Extend -Bprefix functionality and make it closer to gcc. If the "prefix"
is not a directory, Driver::GetProgramPath() routine does not try to append
the program name as a "path component" to it. It just joins the "prefix" with
the program name and checks the resulting path existence.

The patch reviewed by Rafael Espindola.

llvm-svn: 167114
2012-10-31 12:01:53 +00:00
Anna Zaks 1e80d8b49c [analyzer] SimpleStreamChecker - remove evalAssume and other refinements
llvm-svn: 167099
2012-10-31 02:32:41 +00:00
Rafael Espindola 69aa04dd8f Remove the -ccc-no-clang option.
llvm-svn: 167093
2012-10-31 01:21:20 +00:00
Anna Zaks 7bd0674dea [analyzer]Don't invalidate const arguments when there is no
IdentifierInfo.

Ee: C++ copy constructors.
llvm-svn: 167092
2012-10-31 01:18:26 +00:00
Anna Zaks 408f7d0144 Address Jordan's review: comments, spaces.
llvm-svn: 167091
2012-10-31 01:18:22 +00:00
Seth Cantrell 4902e033b5 isLegalUTF8() was giving the wrong answer
invalid but not caught by isLegalUTF8(): 0xED 0x75 0x84

llvm-svn: 167063
2012-10-30 23:50:26 +00:00
Rafael Espindola 74c5fd93b9 Remove ccc-no-clang-cpp, which is also dead now.
llvm-svn: 167062
2012-10-30 23:49:11 +00:00
David Blaikie a0613170b4 Handle string encoding diagnostics when there are too many invalid ranges.
llvm-svn: 167059
2012-10-30 23:22:22 +00:00
Manman Ren 2a523d864d ARM AAPCS-VFP: fix handling of homogeneous aggreate.
If HA can only partially fit into VFP registers, we add padding to make sure
HA will be on stack and later VFP CPRCs will be on stack as well.

llvm-svn: 167058
2012-10-30 23:21:41 +00:00
Chad Rosier 616e8a5c0b [driver] Older versions of ld expect '-L<dir>' not '-L <dir>'. In Xcode4 and
later, '-L <dir>' is allowed, but rewrite these in the driver as '-L<dir>' to
maintain backward compatibility.  The same is true for the -I option.
rdar://12366753

llvm-svn: 167054
2012-10-30 21:42:09 +00:00
Fariborz Jahanian 39319c480e objective-C arc/mrr: Another patch for the new captured block variable
layout meta-data.  It is currently off (so no tests). This is wip.

llvm-svn: 167047
2012-10-30 20:05:29 +00:00
Quentin Colombet 7bba3f14bf Change ForceSizeOpt attribute into MinSize attribute
llvm-svn: 167021
2012-10-30 16:33:19 +00:00
Daniel Jasper 6fc3433b15 Implement descendant matchers for NestedNamespecifiers
This implements has(), hasDescendant(), forEach() and
forEachDescendant() for NestedNameSpecifier and NestedNameSpecifierLoc
matchers.

Review: http://llvm-reviews.chandlerc.com/D86
llvm-svn: 167017
2012-10-30 15:42:00 +00:00
Seth Cantrell ee2effd264 remove duplicate data array
llvm-svn: 167007
2012-10-30 06:13:52 +00:00
Seth Cantrell 2939416871 fix calculation of end pointer
llvm-svn: 167006
2012-10-30 06:13:50 +00:00
Ted Kremenek 8de92c0fd4 Trim #includes.
llvm-svn: 167002
2012-10-30 04:43:51 +00:00
Anna Zaks 92d96604d5 [analyzer]SimpleStreamChecker: add a TODO for better leak report.
llvm-svn: 167001
2012-10-30 04:18:21 +00:00
Anna Zaks 302da83fc2 [analyzer] Fix a bug in REGISTER_MAP_WITH_PROGRAMSTATE
The ImmutableMap should not be the key into the GDM map as there could
be several entries with the same map type. Thanks, Jordan.

This complicates the usage of the macro a bit. When we want to retrieve
the whole map, we need to use another name. Currently, I set it to be
Name ## Ty as in "type of the map we are storing in the ProgramState".

llvm-svn: 167000
2012-10-30 04:17:40 +00:00
Anna Zaks 4afaaf228c [analyzer] Rename REGISTER_MAP_WITH_GDM ->REGISTER_MAP_WITH_PROGRAMSTATE
llvm-svn: 166999
2012-10-30 04:17:18 +00:00
Jordan Rose 9e068aaa6f [analyzer] Warn about reallocf with an allocation size of 0, like realloc.
Patch by Sean McBride!

llvm-svn: 166995
2012-10-30 01:37:16 +00:00
Jordan Rose 3c2f65a73d [analyzer] New checker for missing super calls in UIViewController subclasses.
This is a syntactic checker aimed at helping iOS programmers correctly
subclass and override the methods of UIViewController. While this should
eventually be covered by the 'objc_requires_super' attribute, this
checker can be used with the existing iOS SDKs without any header changes.

This new checker is currently named 'alpha.osx.cocoa.MissingSuperCall'.
Patch by Julian Mayer!

llvm-svn: 166993
2012-10-30 01:21:35 +00:00
Eli Friedman fb9c49e250 Don't crash on bad atomic operations. PR14176.
llvm-svn: 166992
2012-10-30 01:15:28 +00:00
Rafael Espindola fd5e756ad0 getOriginalSourceFileName and getOriginalSourceFile can return a StringRef.
MaybeAddSystemRootToFilename doesn't need to return anything, it modifies
its argument.

llvm-svn: 166988
2012-10-30 00:38:13 +00:00
Argyrios Kyrtzidis efaa54a5a8 [PCH] The diagnostic state points can refer to previously created
diagnostic states; make sure the ASTReader sets the diagnostic state
properly instead of always recreating it.

Fixes rdar://12581618 & http://llvm.org/PR14181

llvm-svn: 166987
2012-10-30 00:27:21 +00:00
Rafael Espindola 84619411eb In the past "production" clang builds would not be used for c++, and
we had the -ccc-clang-cxx and -ccc-no-clang-cxx options to force them
on or off for testing.

Clang c++ support is now production quality and these options are dead.

llvm-svn: 166986
2012-10-30 00:13:16 +00:00
Rafael Espindola 077bc8bdaa Remove a bit of dead code.
llvm-svn: 166983
2012-10-29 23:41:43 +00:00
Rafael Espindola e878343c12 Move getOriginalSourceFileName inline. Patch by Laszlo Nagy.
llvm-svn: 166981
2012-10-29 23:26:40 +00:00
Anna Zaks 58a2c4e453 [analyzer] Malloc checker cleanup/refactor
No need for the auxiliary flag. No need to generate a leak node when
there is no error.

llvm-svn: 166977
2012-10-29 22:51:54 +00:00
Anna Zaks be70d4d0b4 [analyzer] Add SimpleStreamChecker.
This is an example checker for catching fopen fclose API misuses.

llvm-svn: 166976
2012-10-29 22:51:50 +00:00
Anna Zaks 2ab0321b0d [analyzer] Add checker helpers to CheckerContext.
- Adding Immutable Map to GDM and getIdentifierInfo helper method.

llvm-svn: 166975
2012-10-29 22:51:44 +00:00
Quentin Colombet ee3e0fb632 Revert commit r166946
llvm-svn: 166957
2012-10-29 18:28:57 +00:00
Richard Smith bf83009c7f Partially roll back r166898; it exposed a bug in the standard.
The problem is as follows: C++11 has contexts which are not
potentially-evaluated, and yet in which we are required or encouraged to
perform constant evaluation. In such contexts, we are not permitted to
implicitly define special member functions for literal types, therefore
we cannot evalaute those constant expressions.

Punt on this in one more context for now by skipping checking constexpr
variable initializers if they occur in dependent contexts.

llvm-svn: 166956
2012-10-29 18:26:47 +00:00