Commit Graph

34010 Commits

Author SHA1 Message Date
Anna Zaks a1b56e2aa3 [analyzer] Testing: support for regenerate reference output
Change the flow of the SATestAdd so that it could be used for regenerating
the reference output without exiting with an error.

llvm-svn: 144141
2011-11-08 22:41:22 +00:00
Argyrios Kyrtzidis e4a38a73fd [arcmt] Now that readonly properties are strong-by-default, do not add redundant 'strong'.
llvm-svn: 144136
2011-11-08 22:10:58 +00:00
Douglas Gregor 9bd86daa95 Fix comment typos
llvm-svn: 144120
2011-11-08 21:07:04 +00:00
Fariborz Jahanian b1ac0813a6 objc-arc: 'readonly' property of retainable object
type is strong by default too. // rdar://10410903

llvm-svn: 144118
2011-11-08 20:58:53 +00:00
Ted Kremenek da3cfc9fef Sort contents of exports file. No functionality change.
llvm-svn: 144116
2011-11-08 20:42:13 +00:00
Ted Kremenek cc88d264eb serialized diagnostics: serialize the version info in a separate meta block.
llvm-svn: 144115
2011-11-08 20:27:29 +00:00
Anna Zaks 0d58033bdb [analyzer] Remove redundant check from DivZeroChecker
Analysis by Ted:
"
    if (stateZero && !stateNotZero) {

is checking to see if:

  (A)  "it is possible for the value to be zero"   (stateZero)

    AND

  (B) "it is not possible for the value to be non-zero"  (!stateNotZero)

That said, the only way for both B to be true AND A to be false is if the path is completely infeasible by the time we reach the divide-by-zero check.  For the most part (all cases?), such cases should automatically get pruned out at branches (i.e., an infeasible path gets dropped), which is the case in our tests.  So the question is whether or not such an infeasible path might not get dropped earlier?  I can't envision any right now.

Indeed, the rest of the checker assumes that if the bug condition didn't fire then 'stateNotZero' is non-NULL:

    C.addTransition(stateNotZero);
"

llvm-svn: 144114
2011-11-08 19:56:35 +00:00
Anna Zaks 767d356f87 [analyzer] Testing: Display the number of reported differences in the main log.
llvm-svn: 144113
2011-11-08 19:56:31 +00:00
Eli Friedman 1307652185 This test isn't portable to non-x86 platforms; specify a triple.
llvm-svn: 144112
2011-11-08 19:55:32 +00:00
Douglas Gregor 6ea1d665a7 Mark the overloaded atomic builtins as having custom type checking,
which they do. This avoids all of the default argument promotions that
we (1) don't want, and (2) undo during that custom type checking, and
makes sure that we don't run into trouble during template
instantiation. Fixes PR11320.

llvm-svn: 144110
2011-11-08 19:45:38 +00:00
Eli Friedman 27b8c4f3fb Misc fixes for clang driver on Mips Linux. Patch by Simon Atanasyan.
llvm-svn: 144108
2011-11-08 19:43:37 +00:00
Axel Naumann fbc7b98e58 From Vassil Vassilev: add checks for removing Decls for more use cases.
llvm-svn: 144094
2011-11-08 18:21:06 +00:00
Chandler Carruth 475ab6ad7b Add a default system include of '/include'. This isn't particularly
useful when using Clang as a system-compiler, but its harmless. When
using Clang as a cross-compiler, this can be very handy as quite a few
toolchains ship their libc headers here rather than under
'/usr/include'.

For reference, this is the beginning of my work to also make the Clang
driver more suitable as a cross-compiler.

llvm-svn: 144089
2011-11-08 17:19:47 +00:00
Argyrios Kyrtzidis dbe077a89d [arcmt] Now that properties are strong by default, avoid adding redundant '(strong)'
property attribute.

llvm-svn: 144078
2011-11-08 05:56:11 +00:00
Argyrios Kyrtzidis 3befb8cd8a [arcmt] NSViewController does not support weak.
llvm-svn: 144077
2011-11-08 05:56:08 +00:00
Bob Wilson e4d7723b87 Check pointer types for arguments of Neon load/store macros. rdar://9958031
The Neon load/store intrinsics need to be implemented as macros to avoid
hiding alignment attributes on the pointer arguments, and the macros can
only evaluate those pointer arguments once (in case they have side effects),
so it has been hard to get the right type checking for those pointers.
I tried various alternatives in the arm_neon.h header, but it's much more
straightforward to just check directly in Sema.

llvm-svn: 144075
2011-11-08 05:04:11 +00:00
Eli Friedman 9586cdb01e Misc fixes to pcmp*stri.
llvm-svn: 144073
2011-11-08 04:13:51 +00:00
John McCall 0153cd3027 Fix the layout of vb-tables and vf-tables in the MS C++ ABI.
Based on work by Dmitry Sokolov!

llvm-svn: 144072
2011-11-08 04:01:03 +00:00
NAKAMURA Takumi dabda6b839 lib/CodeGen/CGBuiltin.cpp: Tweak the identifier "Type" to appease msvc.
llvm-svn: 144065
2011-11-08 03:27:04 +00:00
Peter Collingbourne 5ad3ebaefd TypePrinter: print OpenCL address space names. Patch by Richard
Membarth, test case by myself.

llvm-svn: 144063
2011-11-08 02:52:58 +00:00
Peter Collingbourne 32fab902de DeclPrinter: print the declaration's storage class specifier as
written, instead of the resolved storage class, which might not be
legal to specify on the declaration (such as out-of-line definitions
of static class members in C++, and __local variables in OpenCL).
Initial patch by Richard Membarth.

llvm-svn: 144062
2011-11-08 02:52:52 +00:00
Richard Smith ad45a8681d Some tests missed from r144056.
llvm-svn: 144060
2011-11-08 02:18:13 +00:00
Argyrios Kyrtzidis 2519a0801f [arcmt] When we already removed a __weak, don't try to change it to __unsafe_unretained
later on, or we will end up with a redundant '__unsafe_unretained'.

llvm-svn: 144059
2011-11-08 02:02:38 +00:00
Matt Beaumont-Gay fb3cb9a861 Revert r143972, which didn't actually compile under -Wnon-virtual-dtor.
(TIL: -Wnon-virtual-dtor is not in -Wall.)

llvm-svn: 144058
2011-11-08 01:53:17 +00:00
Richard Smith ec8dcd2716 Fix a cluster of related issues involving value-dependence and constant
expression evaluation:
 - When folding a non-value-dependent expression, we may try to use the
   initializer of a value-dependent variable. If that happens, give up.
 - In C++98, actually check that a const, non-volatile DeclRefExpr inside an ICE
   is of integral or enumeration type (a reference isn't OK!)
 - In C++11, DeclRefExprs for objects of const literal type initialized with
   value-dependent expressions are themselves value-dependent.
 - So are references initialized with value-dependent expressions (though this
   case is missing from the C++11 standard, along with many others).

llvm-svn: 144056
2011-11-08 01:31:09 +00:00
Bob Wilson 98bc98caa8 Clean up type flags for overloaded Neon builtins. No functional change.
This patch just adds a simple NeonTypeFlags class to replace the various
hardcoded constants that had been used until now.  Unfortunately I couldn't
figure out a good way to avoid duplicating that class between clang and
TableGen, but since it's small and rarely changes, that's not so bad.

llvm-svn: 144054
2011-11-08 01:16:11 +00:00
Anna Zaks ae9d54bcf3 [analyzer] Testing infrastructure: flush the output between projects.
llvm-svn: 144051
2011-11-08 00:27:56 +00:00
John McCall cfef546d40 There are some crazy cases that LookupMethodInReceiverType
doesn't duplicate, but they all surface as implicit
properties.  It's also a useful optimization to not
duplicate the implicit getter lookup.  So, trust the
getter lookup that was already done in these cases.

llvm-svn: 144031
2011-11-07 22:49:50 +00:00
Anna Zaks 9fed084503 [analyzer] Make sure scan-build catches all clang failures.
scan-build ignores clang failures in some cases, which might lead to
silent failure suppression. For example, if clang command line
argument is wrong. (Addresses radar://10406598)

llvm-svn: 144029
2011-11-07 22:38:10 +00:00
Richard Smith eda3c84698 constexpr: static data members declared constexpr are required to have an
initializer; all other constexpr variables are merely required to be
initialized. In particular, a user-provided constexpr default constructor can be
used for such initialization.

llvm-svn: 144028
2011-11-07 22:16:17 +00:00
Douglas Gregor 5d1b4e3d1f When we notice that a member function is defined with "= delete" or "=
default", make a note of which is used when creating the
initial declaration. Previously, we would wait until later to handle
default/delete as a definition, but this is too late: when adding the
declaration, we already treated the declaration as "user-provided"
when in fact it was merely "user-declared".

Fixes PR10861 and PR10442, along with a bunch of FIXMEs.

llvm-svn: 144011
2011-11-07 20:56:01 +00:00
Chad Rosier 8fe3b115cd Whitespace.
llvm-svn: 144002
2011-11-07 19:52:29 +00:00
Chad Rosier 1746e37cb8 Tablegenify -g options.
llvm-svn: 144001
2011-11-07 19:51:54 +00:00
Richard Trieu 09d3af4c2b Remove test with int128 printing since it breaks on some platforms.
llvm-svn: 143997
2011-11-07 19:30:35 +00:00
Douglas Gregor 80357c6227 Add missing part of test
llvm-svn: 143985
2011-11-07 18:54:12 +00:00
Douglas Gregor 61d63d0fd7 ASTConsumer::handleTopLevelDecl will end up getting called for
function template instantiations. Fixes <rdar://problem/10398005> / PR11312.

llvm-svn: 143984
2011-11-07 18:53:57 +00:00
Argyrios Kyrtzidis d569791c44 [arcmt] Fix handling NSMakeCollectable inside an objc method.
llvm-svn: 143980
2011-11-07 18:46:50 +00:00
Argyrios Kyrtzidis 722d21c646 [arcmt] In GC, handle (assign) @properties.
-Move __strong/__weak added to a property type to the property attribute,
e.g.  "@property (assign) __weak Foo *prop;" --> "@property (weak) Foo *prop;"

-Remove (assign) in a property so that it becomes strong-by-default in ARC.

llvm-svn: 143979
2011-11-07 18:46:46 +00:00
Argyrios Kyrtzidis 0dd98a4c51 [arcmt] Map property decls to their GC attributes.
llvm-svn: 143978
2011-11-07 18:40:32 +00:00
Richard Trieu 8b626ba6de Add support for printing integer literals of type short, unsigned short,
__int128_t and __uint128_t.  Short and unsigned short integer literals support
is only to work around a crasher as reported in PR11179 and will be removed
once Clang no longer builds short integer literals.

llvm-svn: 143977
2011-11-07 18:40:31 +00:00
Argyrios Kyrtzidis e80d4f228c [arcmt] In GC, change '__weak' -> '__unsafe_unretained' when applied
to objects of classes that don't support ARC weak

llvm-svn: 143976
2011-11-07 18:40:29 +00:00
Argyrios Kyrtzidis fed29142ba When applying ARC __weak to a non-objc pointer, do not give error that
__weak is unsupported by the deployment target, since it is going to be
ignored anyway.

Makes it easier for incremental migration from GC.

llvm-svn: 143975
2011-11-07 18:40:21 +00:00
Matt Beaumont-Gay 50da84bdb9 Better fix for -Wnon-virtual-dtor
llvm-svn: 143972
2011-11-07 18:30:47 +00:00
Matt Beaumont-Gay 4703a29e4a Remove duplicate listings for core.DivideZero
llvm-svn: 143969
2011-11-07 18:00:03 +00:00
Douglas Gregor 4109afa1f1 Drastically simplify the mapping from the declaration corresponding to
the injected-class-name of a class (or class template) to the
declaration that results from substituting the given template
arguments. Previously, we would actually perform a substitution into
the injected-class-name type and then retrieve the resulting
declaration. However, in certain, rare circumstances involving
deeply-nested member templates, we would get the wrong substitution
arguments.

This new approach just matches up the declaration with a declaration
that's part of the current context (or one of its parents), which will
either be an instantiation (during template instantiation) or the
declaration itself (during the definition of the template). This is
both more efficient (we're avoiding a substitution) and more correct
(we can't get the template arguments wrong in the member-template
case). 

Fixes <rdar://problem/9676205>.

Reinstated, now that we have the fix in r143967.

llvm-svn: 143968
2011-11-07 17:43:18 +00:00
Douglas Gregor df593fbeda Tighten up the conditions under which we consider ourselves to be
entering the context of a nested-name-specifier. Fixes
<rdar://problem/10397846>.

llvm-svn: 143967
2011-11-07 17:33:42 +00:00
Matt Beaumont-Gay 43e15ff357 Appease -Wnon-virtual-dtor
llvm-svn: 143965
2011-11-07 17:16:31 +00:00
Benjamin Kramer f5fbe436bc Fix an unsafe use of Twine.
llvm-svn: 143962
2011-11-07 16:02:25 +00:00
Richard Smith f3e9e43da4 Constant expression evaluation: support for arrays.
llvm-svn: 143922
2011-11-07 09:22:26 +00:00
Chandler Carruth a62ba81682 Rip out one of the features I added for the driver-include-management.
We don't actually need a separate flag for non-sysrooted paths as the
driver has to manage the sysroot anyways. The driver is not infrequently
adding paths to the header search based on their existence on the
filesystem. For that, it has to add the sysroot anyways, we should pass
it on down to CC1 already joined. More importantly, the driver cannot in
all cases distinguish between sysrooted paths and paths that are
relative to the Clang binary's installation directory. Essentially, we
always need to ignore the system root for these internal header search
options. It turns out in most of the places we were already providing
the system root in the driver, and then another one in CC1 so this fixes
several bugs.

llvm-svn: 143917
2011-11-07 09:17:31 +00:00
Chandler Carruth f470173e46 Fix Linux libc++ usage. Somehow this slipped through during the port.
Test cases for this and all the rest of the port are still in the works,
but will wait for a fixed computer and post 3.0 merging...

llvm-svn: 143916
2011-11-07 09:01:17 +00:00
Richard Smith bcb4eb2813 Fix 32-bit build bots and remove some casting-away-const warnings.
llvm-svn: 143914
2011-11-07 07:31:09 +00:00
David Blaikie 103a3a03a2 Colorize. (this is consistent with the coloring in diagnostics.html, but perhaps that's a bit out of date because it doesn't look like current clang behavior)
llvm-svn: 143913
2011-11-07 06:28:33 +00:00
Anna Zaks 82a5b7bd25 [analyzer] Add the Checker Developer Manual to the menu.
It's still under construction but has enough info to be useful.

llvm-svn: 143912
2011-11-07 05:40:51 +00:00
Anna Zaks 5259086b8e [analyzer] Add overview and checker registration to the checker developer manual.
llvm-svn: 143911
2011-11-07 05:36:29 +00:00
John McCall ffc8ca2d84 Rip out CK_GetObjCProperty.
llvm-svn: 143910
2011-11-07 05:09:54 +00:00
Richard Smith 8081560048 Constant expression evaluation: preserve subobject designator when flattening a
core constant value down to an APValue.

llvm-svn: 143909
2011-11-07 05:07:52 +00:00
John McCall c109a259d2 Rip the ObjCPropertyRef l-value kind out of IR-generation.
llvm-svn: 143908
2011-11-07 03:59:57 +00:00
David Blaikie 8c045bcf9d Remove duplicate word & unnecessary conditional.
llvm-svn: 143907
2011-11-07 03:30:03 +00:00
David Blaikie b06c68d320 Move tests to the appropriate directory to match the spec hierarchy.
llvm-svn: 143906
2011-11-07 03:27:58 +00:00
Richard Smith a08acd8588 Allow constexpr variables' initializers to be folded in C++11 mode. This
partially undoes the revert in r143491, but does not introduce any new instances
of the underlying issue (which is not yet fixed) in code which does not use
the 'constexpr' keyword.

llvm-svn: 143905
2011-11-07 03:22:51 +00:00
Chandler Carruth efad16ad6b Begin lifting some of the one-off checking logic into generic helper
routines on the base toolchain class.

llvm-svn: 143900
2011-11-06 23:39:37 +00:00
Chandler Carruth 4c90fba23e Move the GCC installation detection logic down into the Generic_GCC
toolchain. The logic is mostly generic already, and where possible
should be made more generic. Also, it has no impact other than to expose
a set of methods which each toolchain can then query to setup their
desired configuration. These should be available to toolchains beyond
just Linux.

llvm-svn: 143899
2011-11-06 23:39:34 +00:00
Chandler Carruth 0c0981ee47 Remove an old OpenSUSE hack that is no longer needed -- it is exactly
the same as a directory added further down in the new logic.

llvm-svn: 143897
2011-11-06 23:10:49 +00:00
Chandler Carruth d0b93d6daf Remove the HasMultilib check. It was essentially useless. The driver now
looks for evidence of a multilib installation, and adds the appropriate
bits to the search paths.

llvm-svn: 143896
2011-11-06 23:09:05 +00:00
David Blaikie 876657b9c8 Correcting grammar.
llvm-svn: 143894
2011-11-06 22:28:03 +00:00
Benjamin Kramer 44f91da8cc Use StringRef's case transformation methods.
llvm-svn: 143889
2011-11-06 20:36:48 +00:00
Argyrios Kyrtzidis f233dac67c [arcmt] In GC, error for __strong/__weak on non-objc pointers.
llvm-svn: 143887
2011-11-06 18:58:23 +00:00
Argyrios Kyrtzidis 0c233fa23e [arcmt] In GC, clear redundant __strong's.
llvm-svn: 143886
2011-11-06 18:58:17 +00:00
Argyrios Kyrtzidis b458ffb226 Make sure when setting AttributesAsWritten of a property that they do not
include ownership qualifiers from the type.

llvm-svn: 143885
2011-11-06 18:58:12 +00:00
Argyrios Kyrtzidis aa421ea8af [arcmt] Make PropertiesRewriter::getPropertyType return the unqualified type.
llvm-svn: 143884
2011-11-06 18:58:07 +00:00
Argyrios Kyrtzidis e43ae79038 [arcmt] Collect all the places where GC attributes __strong/__weak occur.
llvm-svn: 143883
2011-11-06 18:58:03 +00:00
Argyrios Kyrtzidis aaa999660b [arcmt] Refactor PropertiesRewriter to use MigrationContext.
llvm-svn: 143882
2011-11-06 18:57:57 +00:00
NAKAMURA Takumi 04d581665e test/Driver/crash-cleanup.c: Remove "XFAIL: mingw32" corresponding to r143876.
llvm-svn: 143877
2011-11-06 16:59:41 +00:00
Chandler Carruth 0ad080e720 The version objects need to actually store the version strings; they
aren't guaranteed to live long enough otherwise.

llvm-svn: 143875
2011-11-06 10:51:30 +00:00
Chandler Carruth f5d4df9e44 Throw the switch and move all Linux header search over to the GCC
detection system that is providing the library paths and crt object
files.

This, modulo any bugs that need to be shaken out, resolves numerous bugs
with how we handle header paths. Here are a few that I know of:
- We no longer need to enumerate all GCC versions searched.
- OpenSUSE searched GCC versions in the wrong order.
- There were typos when selecting various patterns, etc.
- We aren't stating quite some many directories now.
- SysRoot didn't always work in a reasonable way.

I'm working on tests for this, but the tests are making me and Lit sad.
The real testing for this type of driver change is to try it out on
various distributions. I'll hit the common ones right away, and start
more thorough testing tomorrow after some sleep.

llvm-svn: 143874
2011-11-06 10:31:01 +00:00
Chandler Carruth 7e62da2845 Add a missing triple spotted by inspecting and testing of the include
path triples. Also order the 32-bit triples a bit more reasonably.

llvm-svn: 143873
2011-11-06 10:30:58 +00:00
Benjamin Kramer 5c29d69588 Unbreak gcc build.
For some reason clang and msvc accept this, but gcc doesn't.

llvm-svn: 143872
2011-11-06 09:50:13 +00:00
Chandler Carruth d95843aa8a Lift the GCCVersion type into the header file and start persisting it in
the detected GCC installation. This allows us to expose another aspect
of what we detected: the GCC version. This will be used shortly.

llvm-svn: 143871
2011-11-06 09:39:46 +00:00
Benjamin Kramer 867e40135a Make format string 64 bit safe.
llvm-svn: 143870
2011-11-06 09:34:11 +00:00
Chandler Carruth 4be70dd963 Switch some of these interfaces from std::string to StringRef and Twine.
This will facilitate further use and recombinations of them.

llvm-svn: 143869
2011-11-06 09:21:54 +00:00
NAKAMURA Takumi aee36a196a test/Driver/crash-cleanup.c: Mark as XFAIL: mingw32, for investigating.
"XFAIL: msys" has no effect, due to XFAIL inspects triplet, and msys build does not use *-msys-* but *-mingw32.

llvm-svn: 143868
2011-11-06 09:11:35 +00:00
John McCall fe96e0b6be Change the AST representation of operations on Objective-C
property references to use a new PseudoObjectExpr
expression which pairs a syntactic form of the expression
with a set of semantic expressions implementing it.
This should significantly reduce the complexity required
elsewhere in the compiler to deal with these kinds of
expressions (e.g. IR generation's special l-value kind,
the static analyzer's Message abstraction), at the lower
cost of specifically dealing with the odd AST structure
of these expressions.  It should also greatly simplify
efforts to implement similar language features in the
future, most notably Managed C++'s properties and indexed
properties.

Most of the effort here is in dealing with the various
clients of the AST.  I've gone ahead and simplified the
ObjC rewriter's use of properties;  other clients, like
IR-gen and the static analyzer, have all the old
complexity *and* all the new complexity, at least
temporarily.  Many thanks to Ted for writing and advising
on the necessary changes to the static analyzer.

I've xfailed a small diagnostics regression in the static
analyzer at Ted's request.

llvm-svn: 143867
2011-11-06 09:01:30 +00:00
Chandler Carruth 5b77c6c618 Take a better approach to detecting and selecting multiarch include
directories. This way we stop at the first multiarch directory found on
the system. This achieves the real intended result of pruning
non-existent directories.

llvm-svn: 143866
2011-11-06 08:21:07 +00:00
Chandler Carruth 5da43e83d2 Revert r143864, as the problem I was actually looking at can be solved
a better way. The more I think about it the more worried I am that this
hammer is simply too large. We should only be reaching out to the
filesystem when doing interesting "detection" things, not gratuitously.

Original commit message:
Start pruning down the set of flags passed to CC1 for header search.
This cleans up the CC1 invocations, and reduces the overhead there.
We're still hammering the filesystem looking for the C++ standard
libraries though.

The only reservation I have about this policy is the case of virtualized
files inside of CC1, but it's not clear what the best way to solve that
is. The Driver consistently queries the actual filesystem to make its
decisions. Changing that would be a very large undertaking. It might be
worthwhile, but it's not an immediate goal.

llvm-svn: 143865
2011-11-06 08:21:04 +00:00
Chandler Carruth 28e39d4b17 Start pruning down the set of flags passed to CC1 for header search.
This cleans up the CC1 invocations, and reduces the overhead there.
We're still hammering the filesystem looking for the C++ standard
libraries though.

The only reservation I have about this policy is the case of virtualized
files inside of CC1, but it's not clear what the best way to solve that
is. The Driver consistently queries the actual filesystem to make its
decisions. Changing that would be a very large undertaking. It might be
worthwhile, but it's not an immediate goal.

llvm-svn: 143864
2011-11-06 07:31:36 +00:00
Chandler Carruth 996cb8ad84 This test was assuming that /usr/include was in the system header search
path. That assumption should never have been true, but it was until
I fixed it. Now that its fixed, add a triple here to get correct
behavior even on Windows.

llvm-svn: 143863
2011-11-06 06:59:15 +00:00
Peter Collingbourne ae6b2f44c3 XFAIL crash-cleanup.c only on Darwin and msys.
llvm-svn: 143858
2011-11-06 04:32:01 +00:00
Chad Rosier 7533488f62 XFAIL test until Peter has a chance to investigate.
llvm-svn: 143857
2011-11-06 03:42:36 +00:00
David Blaikie a54e9643ef Fixing -g break caused by a dead reference to a temporary introduced in r143732.
llvm-svn: 143856
2011-11-06 01:53:39 +00:00
Peter Collingbourne 9b515cb0ec Add the depfile as a result file so that it is deleted if we crash,
and prevent the diagnostic preprocessor run from writing a depfile.

llvm-svn: 143846
2011-11-06 00:40:05 +00:00
Chandler Carruth 34146d8ca7 Switch Lit to directly query the driver for the builtin inclue path.
Thanks to Peter for pointing out how easy this is to do. I'm now much
happier with this solution.

llvm-svn: 143842
2011-11-05 23:29:28 +00:00
Chandler Carruth bff1e8d53d Enhance the GCC version parsing and comparison logic to handle some more
edge cases and have better behavior. Specifically, we should actually
prefer the general '4.6' version string over the '4.6.1' string, as
'4.6.2' should be able to replace it without breaking rpaths or any
other place that these paths have been embedded. Debian-based
distributions are already using a path structure with symlinks to
achieve in-place upgrades for patch versions. Now our parsing reflects
this and we select the shorter paths instead of the longer paths.

A separate issue was that we would not parse a leading patch version
number even in the presence of a suffix. The above change makes this
more problematic as it would cause a suffix being added to make us treat
the entire thing as patch-version-agnostic, which it isn't. This changes
the logic to distinguish between '4.4.x' and 4.4.1-x', and retain that
the latter has *some* patch number information. Currently, we always
bias toward the shorter and more canonical version strings. If it
becomes important we can add more Debian like rules to produce sequences
such as '4.4.1b' > '4.4.1' > '4.4.1-rc3' > '4.4.1-rc2' > '4.4.1-pre5',
but I'm very doubtful this will ever matter or be desirable.

I've made the tests for this logic a bit more interesting, and added
some specific tests for logic that is now different.

llvm-svn: 143841
2011-11-05 23:24:30 +00:00
Chandler Carruth 4dfcf4ccf4 Remove a pointless member. I have no idea why I made this not a local
variable to begin with... As I'm planning to add include root
information to this object, this would have caused confusion. It didn't
even *actually* hold the include root by the time we were done with it.

llvm-svn: 143840
2011-11-05 22:23:14 +00:00
Chandler Carruth 2a750a0801 Remove a no-longer needed helper function. Thanks for implementing this
Michael!

llvm-svn: 143839
2011-11-05 22:23:11 +00:00
Chandler Carruth 14dd5ffcbf Move the GCC installation detection helper a member of the Linux
toolchain instead of merely using it in the constructor. This will allow
us to query it when building include paths as well as the file search
paths built in the constructor. I've lifted as little of it as I could
into the header file.

Eventually this will likely sink down into some of the Generic
toolchains and be used on more platforms, but I'm starting on Linux so
I can work out all the APIs needed there, where it is easiest to test
and we have the most pressing need.

llvm-svn: 143838
2011-11-05 22:07:51 +00:00
Chandler Carruth a95f344b3e Remove support for Gentoo subversion-ebuild installed llvm-gcc libstdc++
headers. As llvm-gcc is dead, and I have no idea if this ever really
worked, I think it's time for it to go. More importantly, it makes it
harder to generalize the include search logic. If someone really wants
these to work, they can set the CPLUS_INCLUDE_PATH environment variable.

llvm-svn: 143836
2011-11-05 21:26:18 +00:00
Chandler Carruth 2837f667e0 Teach lit to ask the Clang it is running what version string to use
rather than presuming that it is 3.0. This is extra important as the
version should be 3.1, but CMake hasn't caught up with the times.
That'll be fixed in a separate commit.

llvm-svn: 143823
2011-11-05 20:55:50 +00:00
Chandler Carruth a796f53821 Move the Linux header searching from the Frontend to the Driver. This is
the first (and diff-noisiest) step to making Linux header searching
tremendously more principled and less brittle. Note that this step
should have essentially no functional impact. We still search the exact
same set of paths in the exact same order. The only change here is where
the code implementing such a search lives.

This has one obvious negative impact -- we now pass a ludicrous number
of flags to the CC1 layer. That should go away as I re-base this logic
on the logic to detect a GCC installation. I want to do this in two
phases so the bots can tell me if this step alone breaks something, and
so that the diffs of the refactoring make more sense.

llvm-svn: 143822
2011-11-05 20:17:13 +00:00
Benjamin Kramer 6ff181ef3c Try to reduce the nastiness that creeps in through Windows.h a bit.
llvm-svn: 143816
2011-11-05 17:43:55 +00:00
Chad Rosier cda5732e52 [driver] If we're only linking, don't warn about unused arguments which are
obviously only used during compilation.
rdar://10386708

llvm-svn: 143813
2011-11-05 15:56:33 +00:00
Chandler Carruth afd2441f60 Compute the path properly on different platforms. Specifically, compute
it the exact same way that the Clang code computes this path.

Hopefully with this, the MSVC bots will actually come back to life.

llvm-svn: 143807
2011-11-05 10:41:42 +00:00
Chandler Carruth 979272c01c Change this test to reflect the state we are moving in. The Clang
builtin headers are no longer going to receive the old 'implicit extern
"C" block' semantics. This hint is actually ignored by both Clang and
GCC at this point, and Clang's own builtin headers can simply be changed
if there is any issue with this. Clang should be free to include these
however it wants, and so shorter and simpler is better.

Note: *nothing* is changing about the *system* stddef.h include. That
should always have the exact same include semantics, whether with Clang
or GCC or any other compiler. Only the compiler-builtin header search
path is changing.

If anyone knows of some risk that this introduces that I've not thought
of, please chime in. So far, only Windows has switched to the Brave New
World, but others should be switching soon.

llvm-svn: 143806
2011-11-05 10:15:33 +00:00
Chandler Carruth e3fcb6981f Switch these two tests to use the Clang driver instead of CC1. They want
to do "realistic" includes, and so need the header search logic now in
the driver. This in turn requires switching the CC1 options to the
actual driver options, and passing -Xclang where there is no analogy.

llvm-svn: 143805
2011-11-05 10:15:30 +00:00
Chandler Carruth c0b1b86ff4 Teach Lit to pass the CC1 invocation the builtin include directory. This
is a pretty gross hack, but I don't have any significantly cleaner ideas
for this. There are several things obviously gross about it:

1) Lit shouldn't know that Clang needs this. This really that bad, as
   Lit already knows about CC1 and other internal details.
2) This hard codes the '3.0' version number, which is pretty lame.
3) This hard codes every other aspect of the resource dir structure
   which is less lame than the version number, but still not great.

However, it should bring the MSVC tests back to life, and it should
unblock the rest of the move from Frontend to Driver, so I think it's
worth a bit of grossness that is isolated in our testing infrastructure
while we figure out the best long term approach. I have the following
ideas, some of which only solve part of the problem (and thus might need
to be combined with other ideas):

a) Create a symlink or other convenience path instead of a version
   number.
b) Run 'clang' directly in the lit.cfg, look at its resource dir, and use
   that.
c) Switch all the tests to use the driver instead of CC1.
d) Hack the frontend to synthesize builtin include directories when none
   are provided by the driver.

I don't like (d) because it feels very hackish and likely to break. We
can only solve a small part of the problem with (a). I wanted to vote
for (c), but lots of the tests in this bucket are really heavily using
internal-only flags like -verify and -triple. I'm loath to complicate
them with the full driver layer. Also, switching them to the driver adds
more than just builtin headers, but all of the rest of the system
headers!

This leaves me with (b). If others like (b), I'll switch to it, but it
felt a bit icky. Nothing concrete, and the other options look
significantly worse, but I felt icky enough that I wanted to start with
a more brain-dead patch to stop the bleeding, and gauge others' feelings
here.

llvm-svn: 143804
2011-11-05 10:15:27 +00:00
Benjamin Kramer 1c9e158120 Fix markup weirdness.
llvm-svn: 143803
2011-11-05 10:11:36 +00:00
Chandler Carruth d9e10ecb68 Fix a significant oversight in my move of MSVC includes to the driver:
actually manage the builtin header file includes as well as the system
ones.

This one is actually debatable whether it belongs in the driver or not,
as the builtin includes are really an internal bit of implementation
goop for Clang. However, they must be included at *exactly* the right
point in the sequence of header files, which makes it essentially
impossible to have this be managed by the Frontend and the rest by the
Driver. I have terrible ideas that would "work", but I think they're
worse than putting this in the driver and making the Frontend library
even more ignorant of the environment and system on which it is being
run.

Also fix the fact that we weren't properly respecting the flags which
suppress standard system include directories.

Note that this still leaves all of the Clang tests which run CC1
directly and include builtin header files broken on Windows. I'm working
on a followup patch to address that.

llvm-svn: 143801
2011-11-05 09:24:44 +00:00
Benjamin Kramer 96ad717226 Now that we have a portable 64 bit format string use it to make this simple again.
llvm-svn: 143800
2011-11-05 09:02:52 +00:00
Chandler Carruth 611cb64453 Add two flags to the CC1 layer that I was hoping to avoid. We need to
encode the *exact* semantics which the header search paths internally
built by the Frontend layer have had, which is both non-user-provided,
and at times adding the implicit extern "C" bit to the directory entry.

There are lots of CC1 options that are very close, but none do quite
this, and they are all already overloaded for other purposes. In some
senses this makes the command lines more clean as it clearly indicates
which flags are exclusively used to implement internal detection of
"standard" header search paths.

Lots of the implementation of this is really crufty, due to the
surrounding cruft. It doesn't seem worth investing lots of time cleaning
this up as it isn't new, and hopefully *lots* of this code will melt
away as header search inside of the frontend becomes increasingly
trivial.

llvm-svn: 143798
2011-11-05 08:30:29 +00:00
Ted Kremenek 977e30d1c4 Tweak LookThroughStmt() in LiveVariables to properly look through alternativing ParenExprs and OpaqueValueExprs. Thanks to Anna and Argiris for iterating on this function. My original patch embarssingly didn't even pass the Clang tests.
llvm-svn: 143797
2011-11-05 07:34:28 +00:00
Argyrios Kyrtzidis c843fd2afb LookThroughStmt GM release.
llvm-svn: 143796
2011-11-05 07:09:40 +00:00
Argyrios Kyrtzidis e2cbe86dc4 LookThroughStmt v4.6.3
llvm-svn: 143795
2011-11-05 07:06:54 +00:00
Argyrios Kyrtzidis 6b4fa1b4d6 Simplify LookThroughStmt in LiveVariables.cpp
llvm-svn: 143794
2011-11-05 07:03:54 +00:00
Bob Wilson c9b97cc1da Fix vector macros to correctly check argument types. <rdar://problem/10261670>
llvm-svn: 143792
2011-11-05 06:08:06 +00:00
Daniel Dunbar b3675dd660 tests: Remove some stray and unused -cc1 flags. These tests appear to be written
to go through the driver.

llvm-svn: 143791
2011-11-05 05:41:57 +00:00
Anna Zaks 04994959a3 Another correction to the LiveVariables commit (r143767, r143780).
Make test/Analysis/misc-ps.c test pass.

llvm-svn: 143790
2011-11-05 05:20:59 +00:00
Anna Zaks 84726dd72c [analyzer] Relax the cmp criteria for analyzer reports.
Until we find out a way to easily find out what changed by looking at the logs.

llvm-svn: 143789
2011-11-05 05:20:56 +00:00
Anna Zaks 2ad0b0f815 [analyzer] Add the list of available checkers to the website.
llvm-svn: 143788
2011-11-05 05:20:54 +00:00
Anna Zaks 62c650f477 [analyzer] There should be a space between "expect" and "only"
llvm-svn: 143787
2011-11-05 05:20:51 +00:00
Anna Zaks 4720a730f6 [analyzer] Add support for testing with individual preprocessed files.
llvm-svn: 143786
2011-11-05 05:20:48 +00:00
Argyrios Kyrtzidis 3c89fdae03 Fix infinite loop in LiveVariables due to a misplaced 'break' (it would break out of
switch statement, not the while loop).

llvm-svn: 143780
2011-11-05 04:03:43 +00:00
Argyrios Kyrtzidis 8c25804ce1 [libclang] For "c-index-test -index-file", print out the names of the callbacks.
llvm-svn: 143779
2011-11-05 04:03:35 +00:00
Peter Collingbourne 4a089ad86d On Linux, enable the gold plugin if we are using LTO.
llvm-svn: 143778
2011-11-05 03:47:53 +00:00
Peter Collingbourne 62c219809c Correct the grammar for __builtin_astype.
llvm-svn: 143777
2011-11-05 03:47:48 +00:00
Ted Kremenek d89a827b5c serialized diagnostics: include FixIt information in serialized diagnostics.
llvm-svn: 143776
2011-11-05 03:34:23 +00:00
Akira Hatanaka 8cc2e865bc Move definitions of SizeType and PtrDiffType to Mips32TargetInfoBase.
llvm-svn: 143775
2011-11-05 01:48:34 +00:00
Eli Friedman ce6733a542 Fix test so that it XFAILs consistently.
llvm-svn: 143771
2011-11-05 00:49:47 +00:00
Michael J. Spencer 85da676885 Fix MSVC build.
llvm-svn: 143770
2011-11-05 00:46:46 +00:00
Eli Friedman 20554708fb Fix one last place where we weren't writing into a string literal consistently.
llvm-svn: 143769
2011-11-05 00:41:04 +00:00
Eli Friedman 5b08d9adf5 Fix incorrect format string in debug output.
llvm-svn: 143768
2011-11-05 00:38:30 +00:00
Ted Kremenek 5717049d8e Teach LiveVariables to look through OpaqueValueExprs for extending Stmt liveness.
llvm-svn: 143767
2011-11-05 00:26:53 +00:00
Ted Kremenek 04268232df Per discussion with John McCall, don't add OpaqueValueExprs to the CFG.
llvm-svn: 143766
2011-11-05 00:10:15 +00:00
Ted Kremenek f264a20721 serialized diagnostics: pull emission of filenames into diagnostic block.
llvm-svn: 143765
2011-11-05 00:10:11 +00:00
Ted Kremenek 0a49dae7f7 serialized diagnostics: pull emission of diagnostic flag string into diagnostics block.
llvm-svn: 143764
2011-11-05 00:10:07 +00:00
Ted Kremenek 31921506b4 Serialized diagnostics: pull category name serialization into diagnostic blocks. The goal is to remove BLOCK_STRINGS so that the bitcode file can potentially be streamed.
llvm-svn: 143763
2011-11-05 00:10:04 +00:00
Ted Kremenek 59f1025ca0 serialized diagnostics: emit source ranges.
llvm-svn: 143762
2011-11-05 00:10:01 +00:00
Ted Kremenek 337cd2a8e2 Move definition of record/block IDs for serialized diagnostics to public header.
llvm-svn: 143761
2011-11-05 00:09:57 +00:00
Ted Kremenek 868504ab99 Serialized diagnostics: encode a 24 bit version number as part of the "magic number" of serialized diagnostics.
llvm-svn: 143760
2011-11-05 00:09:53 +00:00
Ted Kremenek 2724b1ffc1 serialized diagnostics: unique warning strings when emitting serialized diagnostics.
llvm-svn: 143759
2011-11-05 00:09:50 +00:00
Ted Kremenek f67bbca1a4 Serialized diagnostics: serialize "notes" as sub diagnostics of warnings and errors.
llvm-svn: 143758
2011-11-05 00:09:47 +00:00
Ted Kremenek fce371acb4 Also include file modification time and size in output of SerializedDiagnosticPrinter.
llvm-svn: 143757
2011-11-05 00:09:43 +00:00
Argyrios Kyrtzidis aed9bd7cc1 [arcmt] Fix an assertion hit in rdar://10336125; a bit too complicated to reduce.
llvm-svn: 143754
2011-11-05 00:02:26 +00:00
Chandler Carruth df52783e32 Begin the migration of header search logic to the driver, starting with
Windows. There are still FIXMEs and lots of problems with this code.
Some of them will be addressed shortly by my follow-up patches, but most
are going to wait until we isolate this code and can fix it properly.
This version should be no worse than what we had before.

llvm-svn: 143752
2011-11-04 23:49:05 +00:00
Chandler Carruth 814db37f7d Switch the C++ include interface in the ToolChain to use the same naming
as the system include interface before I start adding implementations of
it to individual ToolChain implementations.

llvm-svn: 143751
2011-11-04 23:49:01 +00:00
Argyrios Kyrtzidis 088789caa6 Check for invalid after calling getSLocEntry, for safety.
llvm-svn: 143748
2011-11-04 23:43:06 +00:00
Argyrios Kyrtzidis 6b2d47d829 [arcmt] In GC, error out when there is a call that returns a pointer to
GC managed non-objc object memory.

llvm-svn: 143747
2011-11-04 23:43:03 +00:00
Argyrios Kyrtzidis d979df9e18 In ARC, when applying an ownership to a non-objc pointer, instead of ignoring it
create an attributed type with same type as the original type.

We effectively retain the source info that an ownership attribute was present but the attribute
is ignored by not modifying the type that it was applied to.

llvm-svn: 143736
2011-11-04 20:37:24 +00:00
Devang Patel 384dfa4f10 Enable -flimit-debug-info by default. Now, clang lazily emits debug info for structs. Original behavior can be restored using -fno-limit-debug-info.
llvm-svn: 143733
2011-11-04 20:05:58 +00:00
Chad Rosier c2bf338d35 [driver] Don't blindly accept all -g options.
rdar://10383444

llvm-svn: 143732
2011-11-04 19:28:44 +00:00
Devang Patel 2ccf84e3a5 Revert r143551. It is causing g++.dg/template/crash52.C test failure.
llvm-svn: 143725
2011-11-04 18:52:43 +00:00
Fariborz Jahanian 37c6417949 objc: fixed enum type is supported in objc mode.
Fixes a bug where enumerator type is not this
fixed type. // rdar://10381507

llvm-svn: 143724
2011-11-04 18:51:24 +00:00
Richard Smith fe5354b945 Clean up C++11 constant expression testing.
llvm-svn: 143720
2011-11-04 18:32:57 +00:00
Devang Patel 45124500bb Add new test.
llvm-svn: 143706
2011-11-04 17:12:03 +00:00
Devang Patel f1faeefb32 Add new test.
llvm-svn: 143704
2011-11-04 16:57:26 +00:00
Argyrios Kyrtzidis d2b9112354 [arcmt] For GC, cleanup and turn -finalize to -dealloc.
llvm-svn: 143701
2011-11-04 15:58:22 +00:00
Argyrios Kyrtzidis d8cdfbc905 [arcmt] In GC, error for use of CFMakeCollectable because it will leak the
object that it receives in ARC.

llvm-svn: 143700
2011-11-04 15:58:17 +00:00
Argyrios Kyrtzidis 3eaa22af57 In C++ keep unavailable function calls in the AST, like in C/ObjC.
This allows the migrator to visit and fix them.

llvm-svn: 143699
2011-11-04 15:58:13 +00:00
Argyrios Kyrtzidis d208ef95aa [arcmt] In GC, transform NSMakeCollectable to CFBridgingRelease.
llvm-svn: 143698
2011-11-04 15:58:08 +00:00
Benjamin Kramer 62144477eb Remove unused variables.
llvm-svn: 143696
2011-11-04 15:05:51 +00:00
Chandler Carruth 4c81dfacbb Sink the strange '-stdlib=...' flag handling into the C++ include
handling logic of the generic ToolChain. This flag, despite its name,
has *nothing* to do with the GCC flag '-nostdlib' that relates
(exclusively) to the linking behavior. It is a most unfortunate name in
that regard...

It is used to tell InitHeaderSearch.cpp *which* set of C++ standard
library header search paths to use -- those for libstdc++ from GCC's
installation, or those from a libc++ installation. As this logic is
hoisted out of the Frontend, and into the Driver as part of this
ToolChain, the generic method will be overridden for the platform, where
it can implement this logic directly. As such, hiding the CC1 option
passing in the generic space is a natural fit despite the odd naming.

Also, expand on the comments to clarify whats going on, and tidy up the
Tools.cpp code now that its simpler.

llvm-svn: 143687
2011-11-04 07:43:33 +00:00
Chandler Carruth 491db32444 Sink the handling of -fobjc-arc-cxxlib to live with the other -fobjc-arc
implementation in the driver. This cleans up the signature and semantics
of the include flag adding component of the toolchain. Another step to
ready it for holding all the InitHeaderSearch logic.

llvm-svn: 143686
2011-11-04 07:34:47 +00:00
Chandler Carruth 9802c1406f Add a FIXME to cleanup the CPATH handling. It's currently burried with
the rest of the mess in InitHeaderSearch.cpp. We could hoist it into the
driver profitably, removing more noise from the driver -> frontend
communication.

llvm-svn: 143685
2011-11-04 07:12:58 +00:00
Chandler Carruth 6bfd84f25d Add a system include management interface to the toolchain, and call it
and the C++ include management routine from the proper place when
forming preprocessor options in the driver. This is the first step to
teaching the driver to manage all of the header search paths. Currently,
these methods remain just stubs in the abstract toolchain. Subsequent
patches will flesh them out with implementations for various toolchains
based on the current code in InitHeaderSearch.cpp.

llvm-svn: 143684
2011-11-04 07:12:53 +00:00
Richard Smith ed5165ff52 Constant expression evaluation: refactor to start the groundwork for coping with
initializations which refer indirectly to elements of the object being
initialized.

llvm-svn: 143680
2011-11-04 05:33:44 +00:00
Richard Smith 96e0c101fe Constant expression evaluation: track the manner in which an lvalue was written,
to allow us to implement the C++11 rule that a non-active union member can't be
read, and use it to implement subobject access for string literals.

llvm-svn: 143677
2011-11-04 02:25:55 +00:00
Richard Smith e9e20dd302 Constant expression evaluation: although we don't know whether a literal will
be at the same address as another object, we do know it won't alias a null
pointer.

llvm-svn: 143674
2011-11-04 01:10:57 +00:00
Richard Trieu 364ee42ee8 In the AST dump, add a space between the type and value for CharacterLiteral.
llvm-svn: 143667
2011-11-03 23:56:23 +00:00
Akira Hatanaka f3879ee666 Use a single integer type for a sub-doubleword part of a byval structure.
llvm-svn: 143666
2011-11-03 23:31:00 +00:00
Eli Friedman 3d9f47fe6f Fix alignment on alloca's for parameters using ABIArgInfo::Expand.
llvm-svn: 143658
2011-11-03 21:39:02 +00:00
Chad Rosier 52d00e4815 Parse the warning options twice. The first pass sets diagnostic state, while
the second pass reports warnings/errors.  This has the effect that we follow 
the more canonical "last option wins" paradigm when there are conflicting 
options.
rdar://10383776

Previously, we parsed the warning options in order.  This caused non-intuitive
behavior:

1) clang test.c -Wnosuchwarning -Wno-unknown-warning-option
Before:
warning: unknown warning option '-Wnosuchwarning' [-Wunknown-warning-option]
1 warning generated.
After:
[0 warning generated.]

2) clang test.c -Wnosuchwarning -Werror=unknown-warning-option
Before:
warning: unknown warning option '-Wnosuchwarning' [-Wunknown-warning-option]
1 warning generated.
After:
error: unknown warning option '-Wnosuchwarning' [-Werror,-Wunknown-warning-option]

3) clang test.c -Werror=unknown-warning-option -Wnosuchwarning -Wno-error=unknown-warning-option -Wnosuchwarning
Before:
error: unknown warning option '-Wnosuchwarning' [-Werror,-Wunknown-warning-option]
warning: unknown warning option '-Wnosuchwarning' [-Wunknown-warning-option]
After:
warning: unknown warning option '-Wnosuchwarning' [-Wunknown-warning-option]
warning: unknown warning option '-Wnosuchwarning' [-Wunknown-warning-option]
2 warnings generated.

4) clang test.c -Werror=unknown-warning-option -Wnosuchwarning -Wno-error=unknown-warning-option -Wno-unknown-warning-option -Wnosuchwarning
Before:
error: unknown warning option '-Wnosuchwarning' [-Werror,-Wunknown-warning-option]

After:
[0 warning generated.]

llvm-svn: 143657
2011-11-03 21:23:39 +00:00
Argyrios Kyrtzidis 462ff35d44 After resetting the diagnostic state, set the number of warning occurring in the preamble.
llvm-svn: 143647
2011-11-03 20:57:33 +00:00
Eli Friedman eadd3e81a0 Fix the alignment on scalar parameter variables so that it matches what the AST thinks it should be. Per report on cfe-dev.
llvm-svn: 143645
2011-11-03 20:31:28 +00:00
Argyrios Kyrtzidis f50f7b2c65 [libclang] Fix crash when a #pragma diagnostic is included in the preamble.
A PCH file keeps track of #pragma diagnostics state; when loading the preamble, they conflicted
with the #pragma diagnostic state already present in the DiagnosticsEngine object due to
parsing the preamble.

Fix this by clearing the state of the DiagnosticsEngine object.
Fixes rdar://10363572 && http://llvm.org/PR11254.

llvm-svn: 143644
2011-11-03 20:28:19 +00:00
Douglas Gregor 7f763f1018 Force test to use the non-fragile ABI
llvm-svn: 143642
2011-11-03 19:58:50 +00:00
Argyrios Kyrtzidis 52d87a6f82 [libclang] Move CursorVisitor to its own header.
llvm-svn: 143639
2011-11-03 19:02:34 +00:00
Argyrios Kyrtzidis 04cf92fe7c [libclang] Make sure pointing inside the #include of the fields will return the struct.
llvm-svn: 143638
2011-11-03 19:02:30 +00:00
Argyrios Kyrtzidis 3cefc9d742 [libclang] Use CursorVisitor::Visit instead of invoking the visitor directly.
llvm-svn: 143637
2011-11-03 19:02:28 +00:00
Argyrios Kyrtzidis deb47d17dd [libclang] Add a test for "targeting" a field inside an #include that only
contains fields.

llvm-svn: 143636
2011-11-03 19:01:07 +00:00
Douglas Gregor 21ceb18429 Extend IsSimplyAccessible to check for Objective-C instance variable
accessibility. Fixes <rdar://problem/3727335>.

llvm-svn: 143635
2011-11-03 19:00:24 +00:00
Douglas Gregor f8b02cabca Fix grammaro
llvm-svn: 143633
2011-11-03 18:33:01 +00:00
Douglas Gregor 3c2404b31b Teach the ASTImporter to import DefinitionData bits.
llvm-svn: 143631
2011-11-03 18:07:07 +00:00
Douglas Gregor 3b52b69ccd Class can't be null in this context
llvm-svn: 143618
2011-11-03 17:41:55 +00:00
Douglas Gregor 03ba1887f0 Refactor Sema::IsSimplyAccessible slightly, to work on a DeclContext rather than a class
llvm-svn: 143615
2011-11-03 16:51:37 +00:00
Douglas Gregor dd847baadd When we're checking a friend function template in an out-of-line class
definition, we may not have a scope corresponding to the namespace
where that friend function template actually lives. Work around this
issue by faking up a scope with the appropriate DeclContext.

This is a bit of a hack, but it fixes <rdar://problem/10204947>.

llvm-svn: 143614
2011-11-03 16:37:14 +00:00
Argyrios Kyrtzidis 7ca77357ce [libclang] Add missing return in clang_getExpansionLocation that resulted in that function
always returning a null file/line/column.

Also add at least one use of clang_getExpansionLocation inside c-index-test that would have
made the tests to catch that.

llvm-svn: 143606
2011-11-03 02:20:36 +00:00
Argyrios Kyrtzidis e968152564 [libclang] Add infrastructure to be able to only deserialize decls in a file region and
use it for clang_getCursor.

llvm-svn: 143605
2011-11-03 02:20:32 +00:00
Argyrios Kyrtzidis cb373e3f31 [libclang] For c-index-test disable caching of code completion results if
the CINDEXTEST_COMPLETION_NO_CACHING environment variable is present.

llvm-svn: 143604
2011-11-03 02:20:25 +00:00
Jan Wen Voung 180319f72d Do not add "byval" attribute to records with non-trivial copy constructors
and destructors in the DefaultABIInfo.

llvm-svn: 143601
2011-11-03 00:59:44 +00:00
Douglas Gregor 2e10cf9620 Add a printing policy flag to suppress printing "<anonymous>::" prior
to types. Enable this flag for code completion, where knowing whether
something is in an anonymous or inline namespace is actually not
useful, since you don't have to type it anyway. Fixes
<rdar://problem/10208818>.

llvm-svn: 143599
2011-11-03 00:16:13 +00:00
Akira Hatanaka 756ce7f9ab Set MinABIStackAlignInBytes to 8 if ABI is N32/64.
llvm-svn: 143597
2011-11-03 00:05:50 +00:00
Akira Hatanaka 101f70da7c Convert the type of a structure passed by value if it has double precision
fields in order to ease handling of such structures in backend. 

llvm-svn: 143596
2011-11-02 23:54:49 +00:00
Douglas Gregor e7f0675672 Test code completion for constructor initializers within the class
definition. This already worked; <rdar://problem/10208871>.

llvm-svn: 143595
2011-11-02 23:39:56 +00:00
Akira Hatanaka 1437852c38 Return function results whose size is smaller than 128-bits in registers if ABI
is N32/64.

llvm-svn: 143589
2011-11-02 23:14:57 +00:00
Eli Friedman d1370791c2 Use native endianness for writing out character escapes to the result buffer for string literal parsing. No functional change on little-endian architectures; should fix test failures on PPC.
llvm-svn: 143585
2011-11-02 23:06:23 +00:00
Douglas Gregor 10f939c3db Don't build member initializers for zero-length or incomplete arrays,
and don't try to destroy them, either. Fixes
<rdar://problem/10228639>.

llvm-svn: 143584
2011-11-02 23:04:16 +00:00
Fariborz Jahanian 10317eaa28 back out changes in r143399 and r143475.
rvale-references are captured by reference
in blocks. // rdar://9971124.

llvm-svn: 143583
2011-11-02 22:53:43 +00:00
Douglas Gregor 324dbd3b83 Don't encourage bug reports to the Clang mailing list. We have a bug
report link for that.

llvm-svn: 143581
2011-11-02 22:49:47 +00:00
Chad Rosier cdb008d117 In addition to dumping preprocessed source, dump a script with the command line
arguments that caused clang to crash.
rdar://8314451

llvm-svn: 143573
2011-11-02 21:29:05 +00:00
Douglas Gregor 07216d174e Fix various minor issues find via unreachable code warnings, from
Ahmed Charles!

llvm-svn: 143569
2011-11-02 20:52:01 +00:00
Anna Zaks 42a4463091 [analyzer] Tweak the test script
Rename the pre_run_static_analyzer script into cleanup_run_static_analyzer
and use it to clean up after the reference build - which is done as part of
adding a new project to the system.

llvm-svn: 143568
2011-11-02 20:46:50 +00:00