]> granicus.if.org Git - clang/log
clang
13 years agoFix the rewriter, rdar://10234024.
Argyrios Kyrtzidis [Wed, 5 Oct 2011 19:37:56 +0000 (19:37 +0000)]
Fix the rewriter, rdar://10234024.

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

13 years agoExpose more statement, expression, and declaration kinds in libclang,
Douglas Gregor [Wed, 5 Oct 2011 19:00:14 +0000 (19:00 +0000)]
Expose more statement, expression, and declaration kinds in libclang,
from Manuel Holtgrewe!

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

13 years agoPTX: Set proper calling conventions for PTX in OpenCL mode.
Justin Holewinski [Wed, 5 Oct 2011 17:58:44 +0000 (17:58 +0000)]
PTX: Set proper calling conventions for PTX in OpenCL mode.

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

13 years agoSeriously ugly hack, part 2
Douglas Gregor [Wed, 5 Oct 2011 14:59:36 +0000 (14:59 +0000)]
Seriously ugly hack, part 2

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

13 years agoSeriously ugly hack to try to get the Windows builders back online
Douglas Gregor [Wed, 5 Oct 2011 14:58:46 +0000 (14:58 +0000)]
Seriously ugly hack to try to get the Windows builders back online

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

13 years agoIntroduce a simple file-based locking protocol for on-demand module
Douglas Gregor [Wed, 5 Oct 2011 14:53:30 +0000 (14:53 +0000)]
Introduce a simple file-based locking protocol for on-demand module
creation, so that only a single Clang instance will rebuild a given
module at once (and the others will wait).

We still don't clean up the lock files when we crash, which is a
rather unfortunate problem. I'll handle that next, and there is
certainly a *lot* of room for further improvements.

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

13 years agoAdded a flag to identify resolved overloaded function references.
Abramo Bagnara [Wed, 5 Oct 2011 07:56:41 +0000 (07:56 +0000)]
Added a flag to identify resolved overloaded function references.

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

13 years agoRefactor the analysis of C++ cast expressions so that even
John McCall [Wed, 5 Oct 2011 07:41:44 +0000 (07:41 +0000)]
Refactor the analysis of C++ cast expressions so that even
C-style and functional casts are built in SemaCXXCast.cpp.
Introduce a helper class to encapsulate most of the random
state being passed around, at least one level down.

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

13 years agoUse the InstalledDir correctly, and test it correctly as well. =/ Should
Chandler Carruth [Wed, 5 Oct 2011 06:38:03 +0000 (06:38 +0000)]
Use the InstalledDir correctly, and test it correctly as well. =/ Should
have noticed this previously, sorry.

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

13 years agoFix doxygen comment.
Eric Christopher [Wed, 5 Oct 2011 06:00:51 +0000 (06:00 +0000)]
Fix doxygen comment.

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

13 years agoTeach Clang to cope with GCC installations that have unusual patch
Chandler Carruth [Wed, 5 Oct 2011 03:09:51 +0000 (03:09 +0000)]
Teach Clang to cope with GCC installations that have unusual patch
"versions". Currently, these are just dropped on the floor, A concrete
version number will always win out.

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

13 years agoImplement the feature I was originally driving toward when I started
Chandler Carruth [Wed, 5 Oct 2011 01:01:57 +0000 (01:01 +0000)]
Implement the feature I was originally driving toward when I started
this saga. Teach the driver to detect a GCC installed along side Clang
using the existing InstalledDir support in the Clang driver. This makes
a lot of Clang's behavior more automatic when it is installed along side
GCC.

Also include the first test cases (more to come, honest) which test both
the install directory behavior, and the version sorting behavior to show
that we're actually searching for the best candidate GCC installation
now.

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

13 years agoc: assignment/init of a function pointer whose function(s)
Fariborz Jahanian [Wed, 5 Oct 2011 00:05:34 +0000 (00:05 +0000)]
c: assignment/init of a function pointer whose function(s)
return to one which does not return (has noreturn attribute)
should warn as it is an unsafe assignment. // rdar://10095762
c++ already handles this. This is the c version.

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

13 years agoDon't allow an rvalue reference to bind to the result of a calling a
Douglas Gregor [Tue, 4 Oct 2011 23:59:32 +0000 (23:59 +0000)]
Don't allow an rvalue reference to bind to the result of a calling a
conversion function whose result type is an lvalue reference. The
initialization code already handled this properly, but overload
resolution was allowing the binding. Fixes PR11003 /
<rdar://problem/10233078>.

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

13 years ago[analyzer] Removing more references to CheckerContext::getNodeBuilder(): ask CheckerC...
Anna Zaks [Tue, 4 Oct 2011 23:29:16 +0000 (23:29 +0000)]
[analyzer] Removing more references to CheckerContext::getNodeBuilder(): ask CheckerContext to generate the nodes.

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

13 years agoHoist the other messy part out of an inner loop and into a helper
Chandler Carruth [Tue, 4 Oct 2011 23:17:12 +0000 (23:17 +0000)]
Hoist the other messy part out of an inner loop and into a helper
function, cleaning up along the way.

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

13 years ago[analyzer] Refactor node generation to use less code.
Anna Zaks [Tue, 4 Oct 2011 23:12:04 +0000 (23:12 +0000)]
[analyzer] Refactor node generation to use less code.

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

13 years agoHoist the first chunk of this into a helper function. No functionality
Chandler Carruth [Tue, 4 Oct 2011 22:58:04 +0000 (22:58 +0000)]
Hoist the first chunk of this into a helper function. No functionality
change.

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

13 years ago[driver] Improve r141053 by only emitting the warning if the original input
Chad Rosier [Tue, 4 Oct 2011 22:35:48 +0000 (22:35 +0000)]
[driver] Improve r141053 by only emitting the warning if the original input
was assembly.  Otherwise, something like -save-temps causes the integrated
assembler to warn.

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

13 years agoFix Windows+MinGW which introduces noise into path separators.
Chandler Carruth [Tue, 4 Oct 2011 22:22:13 +0000 (22:22 +0000)]
Fix Windows+MinGW which introduces noise into path separators.

There should be a better solution to this; Michael and I are continuing
to discuss exactly what it should be. The one solution I'm very
uncomfortable with is making the FileCheck tests use a regex for each
path separator.

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

13 years agoNow that multiple prefixes are much cheaper to search for GCC
Chandler Carruth [Tue, 4 Oct 2011 21:22:42 +0000 (21:22 +0000)]
Now that multiple prefixes are much cheaper to search for GCC
installations, support them when installed directly under the system
root ('/lib/gcc/...' essentially).

With this, Clang can correctly detect and use a cross-compiling GCC
installation within a system root and use it.

Again, test cases will be coming in later commits, as I'm going to write
a few test cases that exercise nearly all of this logic.

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

13 years agoRework the search for a GCC installation still further. This combines
Chandler Carruth [Tue, 4 Oct 2011 21:22:33 +0000 (21:22 +0000)]
Rework the search for a GCC installation still further. This combines
two fundamental changes, as they ended up being interrelated.

The first is to walk from the root down through the filesystem so that
we prune subtrees which do not exist early. This greatly reduces the
filesystem traffic of this routine. We store the "best" GCC version we
encounter, and look at all of the GCC installations available.

Also, we look through GCC versions by scanning the directory rather than
using a hard-coded list of versions. This has several benefits. It makes
it much more efficient to locate a GCC installation even in the presence
of a large number of different options by simply reading the directory
once. It also future-proofs us as new GCC versions are released and
installed. We no longer have a hard coded list of version numbers, and
won't need to manually updated it. We can still filter out known-bad
versions as needed. Currently I've left in filtering for all GCC
installations prior to 4.1.1, as that was the first one supported
previously.

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

13 years agoBasic/Diagnostics: Apparently, #pragma ... diagnostic is intended to override
Daniel Dunbar [Tue, 4 Oct 2011 21:17:24 +0000 (21:17 +0000)]
Basic/Diagnostics: Apparently, #pragma ... diagnostic is intended to override
the command line options (at least according to GCC's documentation). GCC 4.2
didn't appear to actually do this, but it seems like that has been fixed in
later release, so we will follow the docs.

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

13 years ago[analyzer] Removing references to CheckerContext::getNodeBuilder(): checkers can...
Anna Zaks [Tue, 4 Oct 2011 20:43:05 +0000 (20:43 +0000)]
[analyzer] Removing references to CheckerContext::getNodeBuilder(): checkers can obtain block count directly from the Context.

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

13 years agoRemove a nonsensical bit of code from InitListChecker::getStructuredSubobjectInit...
Eli Friedman [Tue, 4 Oct 2011 20:31:48 +0000 (20:31 +0000)]
Remove a nonsensical bit of code from InitListChecker::getStructuredSubobjectInit which was increasing the reserved size for an init list past its maximum possible size. Fixes PR11056, a case where we were reserving a bunch of memory for arrays that was never actually used.

(No testcase because I don't think we have any way to actually write a testcase for this; the chosen value of NumElements has no effects on anything other than performance and memory usage.)

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

13 years agoobjc: Turn diagnostic on property type mismatch in
Fariborz Jahanian [Tue, 4 Oct 2011 18:44:26 +0000 (18:44 +0000)]
objc: Turn diagnostic on property type mismatch in
continuation class into warning. // rdar://10231514

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

13 years ago[analyzer] Remove unused methods, add comments to others.
Anna Zaks [Tue, 4 Oct 2011 18:34:40 +0000 (18:34 +0000)]
[analyzer] Remove unused methods, add comments to others.

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

13 years agoPlace diagnostic warn_atomic_property_rule under a -W flag. Fixes <rdar://problem...
Ted Kremenek [Tue, 4 Oct 2011 15:53:53 +0000 (15:53 +0000)]
Place diagnostic warn_atomic_property_rule under a -W flag.  Fixes <rdar://problem/10230631>.

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

13 years agoPlace diagnostic warn_ownin_getter_rule under a -W flag. Fixes <rdar://problem/10230...
Ted Kremenek [Tue, 4 Oct 2011 15:50:00 +0000 (15:50 +0000)]
Place diagnostic warn_ownin_getter_rule under a -W flag.  Fixes <rdar://problem/10230626>.

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

13 years agoPlace diagnostic ext_predef_outside_function under a -W flag. Fixes <rdar://problem...
Ted Kremenek [Tue, 4 Oct 2011 15:41:53 +0000 (15:41 +0000)]
Place diagnostic ext_predef_outside_function under a -W flag.  Fixes <rdar://problem/10226192>.

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

13 years agoFix include path detection on Fedora 15 with GCC 4.6.1. Patch by Arthur Haas.
Justin Holewinski [Tue, 4 Oct 2011 15:35:52 +0000 (15:35 +0000)]
Fix include path detection on Fedora 15 with GCC 4.6.1.  Patch by Arthur Haas.

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

13 years agoAdd bitmaps for strong / weak ivar layout (GNUstep runtime).
David Chisnall [Tue, 4 Oct 2011 15:35:30 +0000 (15:35 +0000)]
Add bitmaps for strong / weak ivar layout (GNUstep runtime).

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

13 years agoPlace warning warn_drv_no_debug_w_integrated_as under a -W flag.
Ted Kremenek [Tue, 4 Oct 2011 14:48:42 +0000 (14:48 +0000)]
Place warning warn_drv_no_debug_w_integrated_as under a -W flag.

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

13 years agoRevert r141060. We should NEVER add new warnings that aren't guarded by flag.
Ted Kremenek [Tue, 4 Oct 2011 14:48:38 +0000 (14:48 +0000)]
Revert r141060.  We should NEVER add new warnings that aren't guarded by flag.

This reverts commit 5383d065241b18e84232bc50d81523f2058ea62b.

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

13 years agoAdd a comment explaining that I have a better plan for implementing the
Chandler Carruth [Tue, 4 Oct 2011 09:58:21 +0000 (09:58 +0000)]
Add a comment explaining that I have a better plan for implementing the
GCC installation search that requires fewer filesystem operations.
Planning to implement that next as the current approcah while thorough
(and so far looks correct) does a very unfortunate number of filesystem
operations.

I'm motivated to fix this in no small part because I would like to
support a much larger space of triples and GCC versions, which would
explode the current algorithm.

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

13 years agoInvert the loop for detecting installed GCC trees. This make the loop
Chandler Carruth [Tue, 4 Oct 2011 09:47:17 +0000 (09:47 +0000)]
Invert the loop for detecting installed GCC trees. This make the loop
find the newest GCC available, among other goodness. It makes the entire
system much less prone to error from prefixes and/or system roots
pruning early the set of triples and GCC versions available.

Also, improve some comments and simplify the forms of some of the loops.

This causes the driver to stat directories more often than is strictly
necessary, but the alternatives which I looked at that still
accomplished this goal needed quite a bit more code and were likely not
much faster.

Test cases for this, now that our behavior here is significantly more
principled and predictable, should come tomorrow as I walk back through
VMs looking for edge cases that are missed after this.

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

13 years agoFuse the two halves of the GCC installation detection. This is
Chandler Carruth [Tue, 4 Oct 2011 08:32:14 +0000 (08:32 +0000)]
Fuse the two halves of the GCC installation detection. This is
significantly cleaner (IMO) and more principled. We now walk down each
layer of the directory hierarchy searching for the GCC install. This
change does in fact introduce a significant behavior change in theory,
although in practice I don't know of any distro that will be impacted by
it negatively, and Debian may (untested) get slightly better through it.

Specifically, the logic now looks exhaustively for patterns such as:

  /usr/lib/<triple>/gcc/<triple>

Previously, this would only be selected if there was *also*
a '/usr/lib/gcc/<triple>' directory, or if '<triple>' were the excat
DefaultHostTriple in the driver.

There is a 4-deep nested loop here, but it doesn't do terribly many
filesystem operations, as we skip at each layer of that layer's
directory doesn't exist.

There remains a significant FIXME in this logic: it would be much better
to first build up a set of candidate components for each of the four
layers with a bottom-up pruning such as this, but then select the final
installation using a top-down algorithm in order to find the newest GCC
installation available, regardless of which particular path leads to it.

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

13 years agoMark calls to objc_retainBlock that don't result from casts
John McCall [Tue, 4 Oct 2011 06:23:45 +0000 (06:23 +0000)]
Mark calls to objc_retainBlock that don't result from casts
to id so that we can still optimize them appropriately.

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

13 years agoRip out flags for controlling C++ "production mode" separately.
Bob Wilson [Tue, 4 Oct 2011 05:34:14 +0000 (05:34 +0000)]
Rip out flags for controlling C++ "production mode" separately.

This is old leftover cruft from the days when C++ was not yet ready
for prime time.

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

13 years agoSpecify -ccc-clang-archs for le32 targets which may not be supported by default.
Bob Wilson [Tue, 4 Oct 2011 05:18:19 +0000 (05:18 +0000)]
Specify -ccc-clang-archs for le32 targets which may not be supported by default.

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

13 years agoImprove location fidelity of objc decls.
Argyrios Kyrtzidis [Tue, 4 Oct 2011 04:48:02 +0000 (04:48 +0000)]
Improve location fidelity of objc decls.

-Add the location of the class name to all objc container decls, not just ObjCInterfaceDecl.
-Make objc decls consistent with the rest of the NamedDecls and have getLocation() point to the
 class name, not the location of '@'.

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

13 years agoUpdate testcase for r141053+r141055.
Chad Rosier [Tue, 4 Oct 2011 04:42:31 +0000 (04:42 +0000)]
Update testcase for r141053+r141055.

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

13 years agoFactor the data apart from the logic of locating various GCC
Chandler Carruth [Tue, 4 Oct 2011 02:28:41 +0000 (02:28 +0000)]
Factor the data apart from the logic of locating various GCC
installations. This first selects a set of prefixes and a set of
compatible triples for the current architecture. Once selected, we drive
the search with a single piece of code.

This code isn't particularly efficient as it stands, but its only
executed once. I'm hoping as I clean up the users of this information,
it will also slowly become both cleaner and more efficient.

This also changes the behavior slightly. Previously, we had an ad-hoc
list of prefixes and triples, and we only looked for some triples
beneath specific prefixes and vice versa. This has led to lots of
one-off patches to support triple X, or support lib dir Y. Even without
going to a fully universal driver, we can do better here. This patch
makes us always look first in either 'lib32' or 'lib64' on 32- or 64-bit
hosts (resp.). However, we *always* look in 'lib'.

Currently I have one lingering problem with this strategy. We might find
a newer or better GCC version under a different (but equally compatible)
triple. Fundamentally, this loop needs to be fused with the one below.
That's my next patch.

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

13 years ago[driver] Improve r141053 by only emitting the warning if the original input
Chad Rosier [Tue, 4 Oct 2011 01:53:36 +0000 (01:53 +0000)]
[driver] Improve r141053 by only emitting the warning if the original input
was assembly.  Otherwise, something like -save-temps causes the integrated
assembler to warn.

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

13 years ago[driver] Emit a warning if the user has requested debug information and we're
Chad Rosier [Tue, 4 Oct 2011 01:01:30 +0000 (01:01 +0000)]
[driver] Emit a warning if the user has requested debug information and we're
using the integrated assembler.
rdar://10216353

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

13 years agoWhen build a module on demand, run the module-building job on a
Douglas Gregor [Tue, 4 Oct 2011 00:21:21 +0000 (00:21 +0000)]
When build a module on demand, run the module-building job on a
separate thread with the "suitably large" stack, so we don't blow the
stack when building modules recursively.

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

13 years agoMake sure SourceManager::getFileIDLoaded doesn't hang in release build because of...
Argyrios Kyrtzidis [Mon, 3 Oct 2011 23:43:01 +0000 (23:43 +0000)]
Make sure SourceManager::getFileIDLoaded doesn't hang in release build because of invalid passed parameter.
rdar://10210140

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

13 years ago[analyzer] Remove redundant state (AnalysisContext pointer for every BinaryOperator...
Anna Zaks [Mon, 3 Oct 2011 23:07:13 +0000 (23:07 +0000)]
[analyzer] Remove redundant state (AnalysisContext pointer for every BinaryOperator tracked) from IdempotentOperationChecker.

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

13 years agoobjc arc: Suppress certain arc diagnostics on unavailable
Fariborz Jahanian [Mon, 3 Oct 2011 22:11:57 +0000 (22:11 +0000)]
objc arc: Suppress certain arc diagnostics on unavailable
functions. // rdar://10186536

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

13 years ago[analyzer] In UndefBranchChecker, use a node generator which does not create an edge...
Anna Zaks [Mon, 3 Oct 2011 21:55:56 +0000 (21:55 +0000)]
[analyzer] In UndefBranchChecker, use a node generator which does not create an edge/branching. (ExprEngine should be in charge of generating edges. The checkers should examine the condition and generate PostCondition node if needed.)

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

13 years ago[analyzer] Cleanup in UndefBranchChecker:
Anna Zaks [Mon, 3 Oct 2011 21:16:32 +0000 (21:16 +0000)]
[analyzer] Cleanup in UndefBranchChecker:
  - Remove unused FindUndefExpr::ProgramStateManager.
  - The Condition parameter of the callback is the terminator of the block, no need to retrieve it again.

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

13 years agoFixed source range for template implicit instantiations.
Abramo Bagnara [Mon, 3 Oct 2011 20:34:03 +0000 (20:34 +0000)]
Fixed source range for template implicit instantiations.

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

13 years agoFixed exapnsion range for # and ##.
Abramo Bagnara [Mon, 3 Oct 2011 18:39:03 +0000 (18:39 +0000)]
Fixed exapnsion range for # and ##.

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

13 years agoRefactor the detection of a GCC installation into a helper class. This
Chandler Carruth [Mon, 3 Oct 2011 18:16:54 +0000 (18:16 +0000)]
Refactor the detection of a GCC installation into a helper class. This
is designed to allow the detection to record more rich information about
the installation than just a single path.

Mostly, the functionality remains the same. This is primarily
a factoring change. However, the new factoring immediately fixes one
issue where on ubuntu we didn't walk up enough layers to reach the
parent lib path. I'll have a test tree for that once I finish making the
Ubuntu tree work reasonably.

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

13 years agoobjc++: Accessing explicit property of reference type need
Fariborz Jahanian [Mon, 3 Oct 2011 17:58:21 +0000 (17:58 +0000)]
objc++: Accessing explicit property of reference type need
not bind to a temporary. Fixes //rdar://10188258

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

13 years agoPTX: Add some basic support for OpenCL address spaces
Justin Holewinski [Mon, 3 Oct 2011 17:28:37 +0000 (17:28 +0000)]
PTX: Add some basic support for OpenCL address spaces

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

13 years agoDon't crash when trying to emit too many fixits. Also, keep some constants in
Matt Beaumont-Gay [Mon, 3 Oct 2011 16:26:56 +0000 (16:26 +0000)]
Don't crash when trying to emit too many fixits. Also, keep some constants in
sync between DiagnosticsEngine and PartialDiagnostic.

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

13 years agoPropagate __attribute__((returns_twice)) from C to IL.
Rafael Espindola [Mon, 3 Oct 2011 14:59:42 +0000 (14:59 +0000)]
Propagate __attribute__((returns_twice)) from C to IL.

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

13 years agoTest a multilib setup on a 64-bit host. This is the far more common
Chandler Carruth [Mon, 3 Oct 2011 09:08:26 +0000 (09:08 +0000)]
Test a multilib setup on a 64-bit host. This is the far more common
configuration, although the test still stubs out more directories than
are necessary or common in order to exercise all of the lookup paths
observed with upstream GCC.

This finishes testing the distribution-independent and
GCC-installation-independent parts of the library path search logic.
More testing is still needed for the triple detection, GCC-installation
detection, and handling distributions with unusual configurations.

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

13 years agoEnable generic multilib support on 32bit hosts. Previously this was only
Chandler Carruth [Mon, 3 Oct 2011 09:00:50 +0000 (09:00 +0000)]
Enable generic multilib support on 32bit hosts. Previously this was only
enabled for debian hosts, which is quite odd. I think all restriction on
when Clang attempts to use a multilib installation should go away. Clang
is fundamentally a cross compiler. It behaves more like GCC when built
as a cross compiler, and so it should just use multilib installs when
they are present on the system. However, there is a very specific
exemption for Exherbo, which I can't test on, so I'm leaving that in
place.

With this, check in a generic test tree for multilib on a 32-bit host.
This stubs out many directories that most distributions don't use but
that uptsream GCC supports. This is intended to be an agnostic test that
the driver behaves properly compared with the GCC driver it aims for
compatibility with.

Also, fix a bug in the driver that this testing exposed (see!) where it
was incorrectly testing the target architecture rather than the host
architecture.

If anyone is having trouble with the tree-structure stubs I'm creating
to test this, let me know and I can revisit the design. I chose this
over (for example) a tar-ball in order to make tests run faster at the
small, hopefully amortized VCS cost.

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

13 years agoRelax an assertion here a bit. This doesn't really matter, as we won't
Chandler Carruth [Mon, 3 Oct 2011 08:16:09 +0000 (08:16 +0000)]
Relax an assertion here a bit. This doesn't really matter, as we won't
include *any* path on crtbegin.o unless we actually find such a file via
one of the search paths. We still strictly check the search paths right
after this, so we'll catch any issues there.

The reason for this is that the driver does some normalization of the
path on the actual object file, and this changes the textual format of
the string on Windows. It no longer matches the textual format of the
sysroot flag.

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

13 years agoTest that we include a GCC-triple-prefixed tree. While I don't know of
Chandler Carruth [Mon, 3 Oct 2011 08:09:02 +0000 (08:09 +0000)]
Test that we include a GCC-triple-prefixed tree. While I don't know of
any distros that use this, building a multilib GCC from mainline will
install linker scripts here.

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

13 years agoTeach the logic for locating an installed GCC about the system root.
Chandler Carruth [Mon, 3 Oct 2011 08:02:58 +0000 (08:02 +0000)]
Teach the logic for locating an installed GCC about the system root.
This requires fixing a latent bug -- if we used the default host triple
instead of an autodetected triple to locate GCC's installation, we
didn't go back and fix the GCC triple. Correct that with a pile of
hacks. This entire routine needs a major refactoring which I'm saving
for a subsequent commit. Essentially, the detection of the GCC triple
should be hoisted into the same routine as we locate the GCC
installation: the first is intrinsically tied to the latter. Then the
routine will just return the triple and base directory.

Also start to bring the rest of the library search path logic under
test, including locating crtbegin.o. Still need to test the multilib and
other behaviors, but there are also bugs in the way of that.

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

13 years agoAdd initial support for applying the sysroot to library search paths.
Chandler Carruth [Mon, 3 Oct 2011 06:41:08 +0000 (06:41 +0000)]
Add initial support for applying the sysroot to library search paths.
This is still very much a WIP, but sysroot was completely broken before
this so we are moving closer to correctness.

The crux of this is that 'ld' (on Linux, the only place I'm touching
here) doesn't apply the sysroot to any flags given to it. Instead, the
driver must translate all the paths it adds to the link step with the
system root. This is easily observed by building a GCC that supports
sysroot, and checking its driver output.

This patch just fixes the non-multilib library search paths. We should
also use this in many other places, but first things first.

This also allows us to make the Linux 'ld' test independent of the host
system. This in turn will allow me to check in test tree configurations
based on various different distro's configuration. Again, WIP.

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

13 years agoAllow getting all source locations of selector identifiers in a ObjCMethodDecl.
Argyrios Kyrtzidis [Mon, 3 Oct 2011 06:37:04 +0000 (06:37 +0000)]
Allow getting all source locations of selector identifiers in a ObjCMethodDecl.

Instead of always storing all source locations for the selector identifiers
we check whether all the identifiers are in a "standard" position; "standard" position is

  -Immediately before the arguments: -(id)first:(int)x second:(int)y;
  -With a space between the arguments: -(id)first: (int)x second: (int)y;
  -For nullary selectors, immediately before ';': -(void)release;

In such cases we infer the locations instead of storing them.

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

13 years agoMove field in ObjCMessageExpr to avoid padding.
Argyrios Kyrtzidis [Mon, 3 Oct 2011 06:36:55 +0000 (06:36 +0000)]
Move field in ObjCMessageExpr to avoid padding.

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

13 years agoAllow getting all source locations of selector identifiers in a ObjCMessageExpr.
Argyrios Kyrtzidis [Mon, 3 Oct 2011 06:36:51 +0000 (06:36 +0000)]
Allow getting all source locations of selector identifiers in a ObjCMessageExpr.

Instead of always storing all source locations for the selector identifiers
we check whether all the identifiers are in a "standard" position; "standard" position is

  -Immediately before the arguments: [foo first:1 second:2]
  -With a space between the arguments: [foo first: 1 second: 2]
  -For nullary selectors, immediately before ']': [foo release]

In such cases we infer the locations instead of storing them.

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

13 years agoArrayRef'ize ObjCMessageExpr
Argyrios Kyrtzidis [Mon, 3 Oct 2011 06:36:45 +0000 (06:36 +0000)]
ArrayRef'ize ObjCMessageExpr

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

13 years agoAdd an assertion that we don't overflow the bitfield ObjCMessageExpr::NumArgs.
Argyrios Kyrtzidis [Mon, 3 Oct 2011 06:36:40 +0000 (06:36 +0000)]
Add an assertion that we don't overflow the bitfield ObjCMessageExpr::NumArgs.

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

13 years agoPass from the parser the locations of selector identifiers when creating
Argyrios Kyrtzidis [Mon, 3 Oct 2011 06:36:36 +0000 (06:36 +0000)]
Pass from the parser the locations of selector identifiers when creating
objc method decls.

They are not stored in the AST yet.

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

13 years agoDon't keep NumSelectorArgs in the ObjCMethodDecl, the number can be derived from...
Argyrios Kyrtzidis [Mon, 3 Oct 2011 06:36:29 +0000 (06:36 +0000)]
Don't keep NumSelectorArgs in the ObjCMethodDecl, the number can be derived from the selector.

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

13 years agoPass all the locations of the selector identifiers for a message expression from...
Argyrios Kyrtzidis [Mon, 3 Oct 2011 06:36:17 +0000 (06:36 +0000)]
Pass all the locations of the selector identifiers for a message expression from the parser.

They are not kept in the AST yet.

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

13 years agoRework the selection of builtin library search paths on Linux to
Chandler Carruth [Mon, 3 Oct 2011 05:28:29 +0000 (05:28 +0000)]
Rework the selection of builtin library search paths on Linux to
precisely match the pattern and logic used by the GCC driver on Linux as
of a recent SVN checkout.

This happens to follow a *much* more principled approach. There is
a strict hierarchy of paths examined, first with multilib-suffixing,
second without such suffixing. Any and all of these directories which
exist will be added to the library search path when using GCC.

There were many places where Clang followed different paths, omitted
critical entries, and worst of all (in terms of challenges to debugging)
got the entries in a subtly wrong order.

If this breaks Clang on a distro you use, please let me know, and I'll
work with you to figure out what is needed to work on that distro. I've
checked the behavior of the latest release of Ubuntu, OpenSUSE, Fedora,
and Gentoo. I'll be testing it on those as well as Debian stable and
unstable and ArchLinux. I may even dig out a Slackware install.

No real regression tests yet, those will follow once I add enough
support for sysroot to simulate various distro layouts in the testsuite.

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

13 years agoCUDA: diagnose invalid calls across targets
Peter Collingbourne [Sun, 2 Oct 2011 23:49:40 +0000 (23:49 +0000)]
CUDA: diagnose invalid calls across targets

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

13 years agoCUDA: add separate diagnostics for too few/many exec config args
Peter Collingbourne [Sun, 2 Oct 2011 23:49:29 +0000 (23:49 +0000)]
CUDA: add separate diagnostics for too few/many exec config args

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

13 years agoAdd ConvertArgumentsForCall diagnostics for at least/at most n args
Peter Collingbourne [Sun, 2 Oct 2011 23:49:20 +0000 (23:49 +0000)]
Add ConvertArgumentsForCall diagnostics for at least/at most n args

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

13 years agoCUDA: diagnose unconfigured calls to global functions
Peter Collingbourne [Sun, 2 Oct 2011 23:49:15 +0000 (23:49 +0000)]
CUDA: diagnose unconfigured calls to global functions

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

13 years agoSorry, I misunderstood the interaction here; the GNU runtime does
John McCall [Sun, 2 Oct 2011 20:27:18 +0000 (20:27 +0000)]
Sorry, I misunderstood the interaction here;  the GNU runtime does
support both a fragile and non-fragile ABI, and it can be selected at
runtime.  That driver option also works on Darwin (although obviously
the code is not necessarily usable if the system runtime is fragile)
so just do that.

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

13 years agoUse -fgnu-runtime to force the use of the non-fragile ABI;
John McCall [Sun, 2 Oct 2011 11:28:21 +0000 (11:28 +0000)]
Use -fgnu-runtime to force the use of the non-fragile ABI;
otherwise these tests would fail on hosts that happen to default
to that, since that affects whether default synthesis can happen.

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

13 years agoTemporarily XFAIL this test until John or someone else who works on ObjC
Chandler Carruth [Sun, 2 Oct 2011 09:52:36 +0000 (09:52 +0000)]
Temporarily XFAIL this test until John or someone else who works on ObjC
can look at it.

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

13 years agoSimplify this through the power of the ternary operator.
Chandler Carruth [Sun, 2 Oct 2011 07:28:34 +0000 (07:28 +0000)]
Simplify this through the power of the ternary operator.

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

13 years agoConsolidate the currently bizarre 32/64 multilib selection logic a bit.
Chandler Carruth [Sun, 2 Oct 2011 07:06:48 +0000 (07:06 +0000)]
Consolidate the currently bizarre 32/64 multilib selection logic a bit.

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

13 years agoFix another major performance regression in LiveVariables by not canonicalizing the...
Ted Kremenek [Sun, 2 Oct 2011 01:45:37 +0000 (01:45 +0000)]
Fix another major performance regression in LiveVariables by not canonicalizing the underlying ImmutableSets on every analyzed statement (just at merges).  Fixes <rdar://problem/10087538>.

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

13 years agoMake -fobjc-nonfragile-abi the -cc1 default, since it's the
John McCall [Sun, 2 Oct 2011 01:16:38 +0000 (01:16 +0000)]
Make -fobjc-nonfragile-abi the -cc1 default, since it's the
increasingly prevailing case to the point that new features
like ARC don't even support the fragile ABI anymore.

This required a little bit of reshuffling with exceptions
because a check was assuming that ObjCNonFragileABI was
only being set in ObjC mode, and that's actually a bit
obnoxious to do.

Most, though, it involved a perl script to translate a ton
of test cases.

Mostly no functionality change for driver users, although
there are corner cases with disabling language-specific
exceptions that we should handle more correctly now.

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

13 years agoFix LiveVariables analysis bug with MaterializeTemporaryExpr and fix handling in...
Ted Kremenek [Sun, 2 Oct 2011 00:54:48 +0000 (00:54 +0000)]
Fix LiveVariables analysis bug with MaterializeTemporaryExpr and fix handling in ExprEngine.  Fixes <rdar://problem/10201666>.

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

13 years agoWhen performing an @throw in ARC, retain + autorelease
John McCall [Sat, 1 Oct 2011 10:32:24 +0000 (10:32 +0000)]
When performing an @throw in ARC, retain + autorelease
the pointer, being sure to do so before running cleanups
associated with that full-expression.  rdar://10042689

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

13 years agoParse attributes written in an ObjC method parameter type as
John McCall [Sat, 1 Oct 2011 09:56:14 +0000 (09:56 +0000)]
Parse attributes written in an ObjC method parameter type as
attributes on the parameter declaration.

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

13 years agoAddress PR10616. The crash has already been fixed by Ted in r140725, so just refactor...
Anna Zaks [Sat, 1 Oct 2011 06:35:19 +0000 (06:35 +0000)]
Address PR10616. The crash has already been fixed by Ted in r140725, so just refactor to use existing API + test case.

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

13 years agoHey, maybe we shouldn't silently ignore decl attributes
John McCall [Sat, 1 Oct 2011 05:17:03 +0000 (05:17 +0000)]
Hey, maybe we shouldn't silently ignore decl attributes
on declarators written as types.

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

13 years agoAs I suspected, completely non-multilib machines just get no suffix.
Chandler Carruth [Sat, 1 Oct 2011 02:39:57 +0000 (02:39 +0000)]
As I suspected, completely non-multilib machines just get no suffix.
Make the suffixes optional everywhere, and just make sure they have the
right value. The suffixes aren't the interesting part of this test
anyways.

Sorry for the churn as I let the bots try out various patterns.

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

13 years agoconstexpr: semantic checking for constexpr functions and constructors. Based in
Richard Smith [Sat, 1 Oct 2011 02:31:28 +0000 (02:31 +0000)]
constexpr: semantic checking for constexpr functions and constructors. Based in
part on patches by Peter Collingbourne.

We diverge from the C++11 standard in a few areas, mostly related to checking
constexpr function declarations, and not just definitions. See WG21 paper
N3308=11-0078 for details.

Function invocation substitution is not available in this patch; constexpr
functions cannot yet be used from within constant expressions.

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

13 years agoTeach this test to cope with Windows suffixes so that msys builds can
Chandler Carruth [Sat, 1 Oct 2011 02:08:56 +0000 (02:08 +0000)]
Teach this test to cope with Windows suffixes so that msys builds can
run it.

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

13 years agoCorrect my failure at writing proper regex's for FileCheck. Thanks Nick.
Chandler Carruth [Sat, 1 Oct 2011 01:46:47 +0000 (01:46 +0000)]
Correct my failure at writing proper regex's for FileCheck. Thanks Nick.

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

13 years agoAllow for both 'lib' and 'lib32', as both seem to be in evidence. I've
Chandler Carruth [Sat, 1 Oct 2011 01:26:40 +0000 (01:26 +0000)]
Allow for both 'lib' and 'lib32', as both seem to be in evidence. I've
left a FIXME to go track down more distros and see if 'lib' is ever the
64-bit half.

This should hopefully appease the build bots.

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

13 years agoThere might be an 'ld' without any path prefix.
Chandler Carruth [Sat, 1 Oct 2011 01:03:45 +0000 (01:03 +0000)]
There might be an 'ld' without any path prefix.

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

13 years agoAllow the results of cf_returns_not_retained function
John McCall [Sat, 1 Oct 2011 01:01:08 +0000 (01:01 +0000)]
Allow the results of cf_returns_not_retained function
calls, or calls to audited functions without an explicit
return attribute, to be casted without a bridge cast.
Tie this mechanism in with the existing exceptions to
the cast restrictions.  State those restrictions more
correctly and generalize.

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

13 years agoTweak the interface for analyzing the CF conventions for a name
John McCall [Sat, 1 Oct 2011 00:48:56 +0000 (00:48 +0000)]
Tweak the interface for analyzing the CF conventions for a name
to take a FunctionDecl* instead of an llvm::StringRef.  Eventually
we might push more logic in there, like using slightly different
conventions for C++ methods.

Also, fix a bug where 'copy' and 'create' were being caught in
non-camel-cased strings.  We want copyFoo and CopyFoo and XCopy
but not Xcopy or xcopy.

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

13 years agoAdd a test that ensures we get the basic multilib '-L' flags to 'ld'
Chandler Carruth [Sat, 1 Oct 2011 00:37:39 +0000 (00:37 +0000)]
Add a test that ensures we get the basic multilib '-L' flags to 'ld'
invocations on Linux.

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

13 years agoRevert r140604: "Let -B work for ld paths on Linux."
Chandler Carruth [Sat, 1 Oct 2011 00:37:35 +0000 (00:37 +0000)]
Revert r140604: "Let -B work for ld paths on Linux."

This patch may do what it describes, it may not. It's hard to tell as
its completely unclear what this is supposed to do. There are also no
test cases. More importantly, this seems to have broken lots of linker
invocations on multilib Linux systems.

The manual pages for 'ld' on Linux mention translating a '=' at the
beginning of the path into a *configure time* sysroot prefix (this is,
I believe, distinct from the --sysroot flag which 'ld' also can
support). I tested this with a normal binutils 'ld', a binutils 'ld'
with the sysroot flag enabled, and gold with the sysroot flag enabled,
and all of them try to open the path '=/lib/../lib32', No translation
occurs.

I think at the very least inserting an '=' needs to be conditioned on
some indication that it is supported and desired. I'm also curious to
see what toolchain and whan environment cause it to actually make
a difference.

I'm going to add a test case for basic sanity of Linux 'ld' invocations
from Clang in a follow-up commit that would have caught this.

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

13 years agoEnable -Wstrlcpy-strlcat-size by default.
Ted Kremenek [Fri, 30 Sep 2011 22:52:22 +0000 (22:52 +0000)]
Enable -Wstrlcpy-strlcat-size by default.

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