]> granicus.if.org Git - clang/log
clang
13 years agoVariadic templates: extend the Expr class with a bit that specifies
Douglas Gregor [Wed, 15 Dec 2010 01:34:56 +0000 (01:34 +0000)]
Variadic templates: extend the Expr class with a bit that specifies
whether the expression contains an unexpanded parameter pack, in the
same vein as the changes to the Type hierarchy. Compute this bit
within all of the Expr subclasses.

This change required a bunch of reshuffling of dependency
calculations, mainly to consolidate them inside the constructors and
to fuse multiple loops that iterate over arguments to determine type
dependence, value dependence, and (now) containment of unexpanded
parameter packs.

Again, testing is painfully sparse, because all of the diagnostics
will change and it is more important to test the to-be-written visitor
that collects unexpanded parameter packs.

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

13 years agoFunction types are compatible (in the C sense) if their regparms are identical.
John McCall [Wed, 15 Dec 2010 01:06:38 +0000 (01:06 +0000)]
Function types are compatible (in the C sense) if their regparms are identical.

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

13 years agoAdded missing IgnoreParens().
Abramo Bagnara [Tue, 14 Dec 2010 22:11:44 +0000 (22:11 +0000)]
Added missing IgnoreParens().

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

13 years agoRewrite ComplexExprEvaluator::VisitCastExpr to use cast kinds, and fix
John McCall [Tue, 14 Dec 2010 17:51:41 +0000 (17:51 +0000)]
Rewrite ComplexExprEvaluator::VisitCastExpr to use cast kinds, and fix
the basic casting logic to insert intermediate casts and preserve the
exact complex-cast design.  Fixes a crash in the test suite.

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

13 years agoMinor fix for clang-completion-mode, from Dve Abrahams
Douglas Gregor [Tue, 14 Dec 2010 16:52:29 +0000 (16:52 +0000)]
Minor fix for clang-completion-mode, from Dve Abrahams

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

13 years agoImprove some comments, shrink FunctionType::ExtInfo, and fix a bug found
John McCall [Tue, 14 Dec 2010 16:45:57 +0000 (16:45 +0000)]
Improve some comments, shrink FunctionType::ExtInfo, and fix a bug found
by valgrind where we were doing the wrong thing in the presence of invalid
exception specs.

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

13 years agoFix documentation typo, from nobled.
Douglas Gregor [Tue, 14 Dec 2010 16:21:49 +0000 (16:21 +0000)]
Fix documentation typo, from nobled.

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

13 years agoRestore r121752 without modification.
John McCall [Tue, 14 Dec 2010 08:05:40 +0000 (08:05 +0000)]
Restore r121752 without modification.

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

13 years agoPull out r121752 in case it's causing the selfhost breakage.
John McCall [Tue, 14 Dec 2010 07:30:51 +0000 (07:30 +0000)]
Pull out r121752 in case it's causing the selfhost breakage.

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

13 years agoFactor out most of the extra state in a FunctionProtoType into a separate
John McCall [Tue, 14 Dec 2010 06:51:39 +0000 (06:51 +0000)]
Factor out most of the extra state in a FunctionProtoType into a separate
class to be passed around.  The line between argument and return types and
everything else is kindof vague, but I think it's justifiable.

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

13 years agoGeneralize this test to work without instruction names.
Dan Gohman [Tue, 14 Dec 2010 01:33:14 +0000 (01:33 +0000)]
Generalize this test to work without instruction names.

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

13 years agoImplement CodeGen support for the may_alias attribute.
Dan Gohman [Mon, 13 Dec 2010 23:51:08 +0000 (23:51 +0000)]
Implement CodeGen support for the may_alias attribute.

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

13 years agoVariadic templates: extend Type, NestedNameSpecifier, TemplateName,
Douglas Gregor [Mon, 13 Dec 2010 22:49:22 +0000 (22:49 +0000)]
Variadic templates: extend Type, NestedNameSpecifier, TemplateName,
and TemplateArgument with an operation that determines whether there
are any unexpanded parameter packs within that construct. Use this
information to diagnose the appearance of the names of parameter packs
that have not been expanded (C++ [temp.variadic]p5). Since this
property is checked often (every declaration, ever expression
statement, etc.), we extend Type and Expr with a bit storing the
result of this computation, rather than walking the AST each time to
determine whether any unexpanded parameter packs occur.

This commit is deficient in several ways, which will be remedied with
future commits:
  - Expr has a bit to store the presence of an unexpanded parameter
  pack, but it is never set.
  - The error messages don't point out where the unexpanded parameter
  packs were named in the type/expression, but they should.
  - We don't check for unexpanded parameter packs in all of the places
  where we should.
  - Testing is sparse, pending the resolution of the above three
  issues.

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

13 years agoSkip ParenType on function instantiations.
Abramo Bagnara [Mon, 13 Dec 2010 22:27:55 +0000 (22:27 +0000)]
Skip ParenType on function instantiations.

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

13 years agoRemove a type that got reduced away from this test case but not actually deleted.
Chandler Carruth [Mon, 13 Dec 2010 08:01:53 +0000 (08:01 +0000)]
Remove a type that got reduced away from this test case but not actually deleted.

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

13 years agoFix PR8774 by restricting when hasInit returns true. Previously, it
Chandler Carruth [Mon, 13 Dec 2010 07:40:47 +0000 (07:40 +0000)]
Fix PR8774 by restricting when hasInit returns true. Previously, it
would return true if the initializer pointer union had *any* non-null
pointer in it, even if the pointer wasn't one that would actually be
returned via getInit(). This makes it more accurately model the logic of
'getInit() != NULL'.

This still isn't completely satisfying. From a principled stance,
I suspect we should make hasInit() and getInit() *always* return false
and NULL (resp.) for ParmVarDecl. We shouldn't at the API level treat
initializers and default arguments as the same thing.

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

13 years agoReduce the number of builtin operator overload candidates added in certain
Chandler Carruth [Mon, 13 Dec 2010 01:44:01 +0000 (01:44 +0000)]
Reduce the number of builtin operator overload candidates added in certain
cases. First, omit all builtin overloads when no non-record type is in the set
of candidate types. Second, avoid arithmetic type overloads for non-arithmetic
or enumeral types (counting vector types as arithmetic due to Clang
extensions). When heavily using constructs such as STL's '<<' based stream
logging, this can have a significant impact. One logging-heavy test case's
compile time dropped by 10% with this. Self-host shows 1-2% improvement in
compile time, but that's likely in the noise.

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

13 years agoBasic, Sema: add support for CUDA launch_bounds attribute
Peter Collingbourne [Sun, 12 Dec 2010 23:03:07 +0000 (23:03 +0000)]
Basic, Sema: add support for CUDA launch_bounds attribute

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

13 years agoSema: diagnose kernel functions with non-void return type
Peter Collingbourne [Sun, 12 Dec 2010 23:02:57 +0000 (23:02 +0000)]
Sema: diagnose kernel functions with non-void return type

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

13 years agoMove the functionality to mark all vtables of key functions as used within
Chandler Carruth [Sun, 12 Dec 2010 21:36:11 +0000 (21:36 +0000)]
Move the functionality to mark all vtables of key functions as used within
a translation unit to the ActOnEndOfTranslationUnit function instead of doing
it at the start of DefineUsedVTables. The latter is now called *recursively*
during template instantiation, which causes an absolutely insane number of
walks of every record decl in the translation unit.

After this patch, an extremely template instantiation heavy test case's compile
time drops by 10x, and we see between 15% and 20% improvement in average
compile times across a project. This is just recovering a regression, it
doesn't make anything faster than it was several weeks ago.

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

13 years agoChange MBlaze target to have the same description string as its LLVM equivalent.
Wesley Peck [Sun, 12 Dec 2010 20:56:47 +0000 (20:56 +0000)]
Change MBlaze target to have the same description string as its LLVM equivalent.

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

13 years agoFinish cleaning up the static utility code for adding builtin operator overload
Chandler Carruth [Sun, 12 Dec 2010 10:35:00 +0000 (10:35 +0000)]
Finish cleaning up the static utility code for adding builtin operator overload
candidates. They're now wrapped in nice APIs which hide the tables, etc. Also
removes some repetitive code from clients.

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

13 years agoClean up the helpers used to compute the usual arithmetic conversions' result
Chandler Carruth [Sun, 12 Dec 2010 09:59:53 +0000 (09:59 +0000)]
Clean up the helpers used to compute the usual arithmetic conversions' result
type. Localize all of the logic within a single function rather than spreading
it throughout the class.

Also fixes a buglet where we failed to check for a RHS arithmetic type wider
than the LHS and return its canonical type. I've yet to produce a test case
that breaks because of this, but it was spotted by inspection by folks on the
IRC channel and is obviously correct now.

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

13 years agoAdd a comment to a helper function.
Chandler Carruth [Sun, 12 Dec 2010 09:22:45 +0000 (09:22 +0000)]
Add a comment to a helper function.

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

13 years agoSink the logic to suppress builtin operator overloads in the presence of
Chandler Carruth [Sun, 12 Dec 2010 09:14:11 +0000 (09:14 +0000)]
Sink the logic to suppress builtin operator overloads in the presence of
user-defined operator overloads on the same enumeral types to the one place
where it is used.

In theory this removes wasted computation from several paths through this code,
but I'm not aware of a case where it actually matters. This is mostly for
cleanliness.

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

13 years agoReorder the cases in the switch to be more logically grouped (to my mind). If
Chandler Carruth [Sun, 12 Dec 2010 08:51:33 +0000 (08:51 +0000)]
Reorder the cases in the switch to be more logically grouped (to my mind). If
others have another ordering they would prefer, I'm all ears, but this one made
it much easier for me to find the group of operators I'm interested in.

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

13 years agoRemove the final goto from this switch making it explict which overload set is
Chandler Carruth [Sun, 12 Dec 2010 08:45:02 +0000 (08:45 +0000)]
Remove the final goto from this switch making it explict which overload set is
added for binary operator&.

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

13 years agoFold away completely identical code with simple fallthrough.
Chandler Carruth [Sun, 12 Dec 2010 08:41:34 +0000 (08:41 +0000)]
Fold away completely identical code with simple fallthrough.

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

13 years agoMove and copy function calls around to remove the indirection through gotos
Chandler Carruth [Sun, 12 Dec 2010 08:39:38 +0000 (08:39 +0000)]
Move and copy function calls around to remove the indirection through gotos
from the switch statement.

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

13 years agoSimplify the flow through the switch by explicitly listing the added overloads
Chandler Carruth [Sun, 12 Dec 2010 08:32:28 +0000 (08:32 +0000)]
Simplify the flow through the switch by explicitly listing the added overloads
for a few cases.

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

13 years agoFix 80-column violations and reflowing some code to facilitate those fixes.
Chandler Carruth [Sun, 12 Dec 2010 08:17:55 +0000 (08:17 +0000)]
Fix 80-column violations and reflowing some code to facilitate those fixes.

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

13 years agoBegin the refactoring of how builtin operators are added to the overload
Chandler Carruth [Sun, 12 Dec 2010 08:11:30 +0000 (08:11 +0000)]
Begin the refactoring of how builtin operators are added to the overload
candidate set. This breaks apart a huge switch + goto system into distinct
methods on a class. It also places the current mess of tables and other static
state used in the process within that class.

This is still a work in progress. I did a few simplifications that jumped out
at me as I went, but I plan to iterate on this a bit before it's truly clean.
However, this is easily the most invasive chunk. I benchmarked it on
all-std-headers.cpp and an internal testcase that has a major hotspot in
overload resolution and saw no real performance impact.

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

13 years agoEnhance my implementation of //rdar ://8747333 in r121597 to allow
Fariborz Jahanian [Sat, 11 Dec 2010 18:39:37 +0000 (18:39 +0000)]
Enhance my implementation of //rdar ://8747333 in r121597 to allow
for declaration of property setter/getter in forward
class extensions and also skip over
propeties which are @dynamic.

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

13 years agoImproved complex constants evaluation.
Abramo Bagnara [Sat, 11 Dec 2010 16:05:48 +0000 (16:05 +0000)]
Improved complex constants evaluation.

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

13 years agoAny property declared in a class extension might have user
Fariborz Jahanian [Fri, 10 Dec 2010 23:36:33 +0000 (23:36 +0000)]
Any property declared in a class extension might have user
declared setter or getter in current class extension or one
of the other class extensions. Mark them as synthesized as
property will be synthesized when property with same name is
seen in the @implementation. This prevents bogus warning
about unimplemented methods to be issued for these methods.
Fixes // rdar://8747333

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

13 years agoAdd missing switch case for the quad-register version of the Neon vmul builtin.
Bob Wilson [Fri, 10 Dec 2010 23:09:09 +0000 (23:09 +0000)]
Add missing switch case for the quad-register version of the Neon vmul builtin.

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

13 years agoFix clang crashes on Neon vld[234]_dup intrinsics with 64-bit element types.
Bob Wilson [Fri, 10 Dec 2010 22:54:58 +0000 (22:54 +0000)]
Fix clang crashes on Neon vld[234]_dup intrinsics with 64-bit element types.
The 64-bit element vectors need to be handled as a special case.

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

13 years agoIntroduce ObjCMessageExpr::getReceiverRange() to get the source range of the receiver.
Argyrios Kyrtzidis [Fri, 10 Dec 2010 20:08:30 +0000 (20:08 +0000)]
Introduce ObjCMessageExpr::getReceiverRange() to get the source range of the receiver.

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

13 years agoKeep the source location of the selector in ObjCMessageExpr.
Argyrios Kyrtzidis [Fri, 10 Dec 2010 20:08:27 +0000 (20:08 +0000)]
Keep the source location of the selector in ObjCMessageExpr.

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

13 years agoMake RecursiveASTVisitor traverse a ObjCMethodDecl.
Argyrios Kyrtzidis [Fri, 10 Dec 2010 20:08:22 +0000 (20:08 +0000)]
Make RecursiveASTVisitor traverse a ObjCMethodDecl.

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

13 years agoDo not assert on shifts of Neon polynomial types.
Bob Wilson [Fri, 10 Dec 2010 19:45:06 +0000 (19:45 +0000)]
Do not assert on shifts of Neon polynomial types.
Most Neon shift intrinsics do not have variants for polynomial types, but
vsri_n and vsli_n do support them, and we need to properly range-check the
shift immediates for them.

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

13 years agoSilence a few more uninitialized-value warnings
Douglas Gregor [Fri, 10 Dec 2010 19:28:19 +0000 (19:28 +0000)]
Silence a few more uninitialized-value warnings

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

13 years agoSilence a GCC unitialized-value warning
Douglas Gregor [Fri, 10 Dec 2010 19:27:07 +0000 (19:27 +0000)]
Silence a GCC unitialized-value warning

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

13 years agoReplace two QualType::getTypePtrOrNull() calls with
Douglas Gregor [Fri, 10 Dec 2010 17:19:40 +0000 (17:19 +0000)]
Replace two QualType::getTypePtrOrNull() calls with
QualType::getTypePtr(). It turns out that
cast_or_null/dyn_cast_or_null don't actually use simplify_type, so
they're guaranteed to operator on non-NULL QualType or CanQualType
objects.

Good for a 0.6% win on 403.gcc's combine.c with -emit-llvm.

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

13 years agoDo not substitute template types if template has dependent context
Peter Collingbourne [Fri, 10 Dec 2010 17:08:53 +0000 (17:08 +0000)]
Do not substitute template types if template has dependent context

We should not substitute template types if the template has a dependent
context because the template argument stack is not yet fully formed.
Instead, defer substitution until the template has a non-dependent
context (i.e. instantiation of an outer template).

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

13 years agoFix a compiler warning.
Fariborz Jahanian [Fri, 10 Dec 2010 17:05:33 +0000 (17:05 +0000)]
Fix a compiler warning.

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

13 years agoEliminate the branching in QualType::getTypePtr() by providing a
Douglas Gregor [Fri, 10 Dec 2010 17:03:06 +0000 (17:03 +0000)]
Eliminate the branching in QualType::getTypePtr() by providing a
common base for ExtQuals and Type that stores the underlying type
pointer. This results in a 2% performance win for -emit-llvm on a
typical C file, with 1% memory growth in the AST.

Note that there is an API change in this optimization:
QualType::getTypePtr() can no longer be invoked on a NULL
QualType. If the QualType might be NULL, use
QualType::getTypePtrOrNull(). I've audited all uses of getTypePtr() in
the code base and changed the appropriate uses over to
getTypePtrOrNull().

A future optimization opportunity would be to distinguish between
cast/dyn_cast and cast_or_null/dyn_cast_or_null; for the former, we
could use getTypePtr() rather than getTypePtrOrNull(), to take another
branch out of the cast/dyn_cast implementation.

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

13 years agoAdded ParenType type node.
Abramo Bagnara [Fri, 10 Dec 2010 16:29:40 +0000 (16:29 +0000)]
Added ParenType type node.

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

13 years agoSilence GCC warning about comparisons between enumerators of different types
Douglas Gregor [Fri, 10 Dec 2010 15:40:48 +0000 (15:40 +0000)]
Silence GCC warning about comparisons between enumerators of different types

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

13 years agoAnother dummy commit to check GIT mirroring
Anton Korobeynikov [Fri, 10 Dec 2010 12:03:06 +0000 (12:03 +0000)]
Another dummy commit to check GIT mirroring

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

13 years agoIt's kindof silly that ExtQuals has an ASTContext&, and we can use that
John McCall [Fri, 10 Dec 2010 11:01:00 +0000 (11:01 +0000)]
It's kindof silly that ExtQuals has an ASTContext&, and we can use that
space better.  Remove this reference.  To make that work, change some APIs
(most importantly, getDesugaredType()) to take an ASTContext& if they
need to return a QualType.  Simultaneously, diminish the need to return a
QualType by introducing some useful APIs on SplitQualType, which is
just a std::pair<const Type *, Qualifiers>.

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

13 years agoUpdate ExtQuals comment to reflect the expansion of the fast qualifiers
Douglas Gregor [Fri, 10 Dec 2010 10:08:30 +0000 (10:08 +0000)]
Update ExtQuals comment to reflect the expansion of the fast qualifiers

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

13 years agoOptimize memory usage of FunctionProtoType on MSVC.
John McCall [Fri, 10 Dec 2010 09:12:16 +0000 (09:12 +0000)]
Optimize memory usage of FunctionProtoType on MSVC.

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

13 years agoMove the "volatile" bit into QualType's "fast" qualifier set,
Douglas Gregor [Fri, 10 Dec 2010 08:57:38 +0000 (08:57 +0000)]
Move the "volatile" bit into QualType's "fast" qualifier set,
increasing the required type alignment from 8 to 16. This provides a
2.5% speedup for -fsyntax-only on a token-cached Cocoa.h, while only
increasing memory consumption in the ASTContext by 0.8%.

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

13 years agoUse TypeAlignment constant rather than fixed alignment of 8
Douglas Gregor [Fri, 10 Dec 2010 08:12:03 +0000 (08:12 +0000)]
Use TypeAlignment constant rather than fixed alignment of 8

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

13 years agoFixed version of 121435.
Rafael Espindola [Fri, 10 Dec 2010 07:40:14 +0000 (07:40 +0000)]
Fixed version of 121435.

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

13 years agoIn clang_getCursor(), don't override a preprocessing cursor within
Douglas Gregor [Fri, 10 Dec 2010 07:23:11 +0000 (07:23 +0000)]
In clang_getCursor(), don't override a preprocessing cursor within
another preprocessing cursor, since we want the outermost one.

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

13 years agoAdd missing switch case to handle builtin for Neon vqnegq.
Bob Wilson [Fri, 10 Dec 2010 06:26:19 +0000 (06:26 +0000)]
Add missing switch case to handle builtin for Neon vqnegq.

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

13 years agoLLVM's intrinsics for vpaddl and vpadal have 2 overloaded types.
Bob Wilson [Fri, 10 Dec 2010 05:51:07 +0000 (05:51 +0000)]
LLVM's intrinsics for vpaddl and vpadal have 2 overloaded types.
Clang was only specifying the overloaded result type.  PR8483.

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

13 years agoRevert my previous patch to make the valgrind bots happy.
Rafael Espindola [Fri, 10 Dec 2010 04:01:05 +0000 (04:01 +0000)]
Revert my previous patch to make the valgrind bots happy.

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

13 years agoTreat visibility on an enclosing namespace as a non-explicit source of
John McCall [Fri, 10 Dec 2010 02:59:44 +0000 (02:59 +0000)]
Treat visibility on an enclosing namespace as a non-explicit source of
visibility.  Fixes PR8713.

I've disabled a test which was testing that you can #pragma pop visibility
to get out of a namespace's visibility attribute.  We should probably just
diagnose that as an error unless it's instrumental to someone's system
headers.

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

13 years agoAdd dependency to "make clang-test check-all".
NAKAMURA Takumi [Fri, 10 Dec 2010 02:58:03 +0000 (02:58 +0000)]
Add dependency to "make clang-test check-all".

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

13 years agoAnd more gzip goodness for clang.
Eric Christopher [Fri, 10 Dec 2010 01:59:28 +0000 (01:59 +0000)]
And more gzip goodness for clang.

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

13 years agoBind the result of a property fetch to a temporary.
John McCall [Fri, 10 Dec 2010 01:49:45 +0000 (01:49 +0000)]
Bind the result of a property fetch to a temporary.

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

13 years agoExtend libclang debugging output for clang_getCursor() to show the definition we...
Douglas Gregor [Fri, 10 Dec 2010 01:45:00 +0000 (01:45 +0000)]
Extend libclang debugging output for clang_getCursor() to show the definition we found

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

13 years agoNeon compare absolute LLVM intrinsics are not overloaded. PR8484.
Bob Wilson [Fri, 10 Dec 2010 01:11:38 +0000 (01:11 +0000)]
Neon compare absolute LLVM intrinsics are not overloaded.  PR8484.

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

13 years agoAdded remaining objective-c library builtins (as in gcc) to
Fariborz Jahanian [Fri, 10 Dec 2010 00:39:16 +0000 (00:39 +0000)]
Added remaining objective-c library builtins (as in gcc) to
clang. // rdar://8735023

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

13 years agoFix another obscure corner layout case.
Argyrios Kyrtzidis [Fri, 10 Dec 2010 00:11:00 +0000 (00:11 +0000)]
Fix another obscure corner layout case.

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

13 years agoUpdate clang for the API changes in the cfi patch.
Rafael Espindola [Thu, 9 Dec 2010 23:48:34 +0000 (23:48 +0000)]
Update clang for the API changes in the cfi patch.

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

13 years agoAdd Neon vreinterpret intrinsics for half-float (f16) types.
Bob Wilson [Thu, 9 Dec 2010 23:37:49 +0000 (23:37 +0000)]
Add Neon vreinterpret intrinsics for half-float (f16) types.

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

13 years agoDon't crash when code-completing after "#include <". It would be far
Douglas Gregor [Thu, 9 Dec 2010 23:35:36 +0000 (23:35 +0000)]
Don't crash when code-completing after "#include <". It would be far
better to actually produce a decent set of completions by checking the
system include paths, but not today. Fixes PR8744.

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

13 years agoRefactored/cleanedup ActOnFunctionDeclarator
Fariborz Jahanian [Thu, 9 Dec 2010 23:11:32 +0000 (23:11 +0000)]
Refactored/cleanedup ActOnFunctionDeclarator
and ActOnVariableDeclarator
No functionality change. // rdar://8751949

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

13 years agoEliminate duplicate code completions for properties.
Douglas Gregor [Thu, 9 Dec 2010 23:01:55 +0000 (23:01 +0000)]
Eliminate duplicate code completions for properties.

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

13 years agoDon't walk the translation unit context to produce protocol names when
Douglas Gregor [Thu, 9 Dec 2010 21:44:02 +0000 (21:44 +0000)]
Don't walk the translation unit context to produce protocol names when
global code completions are disabled (e.g., because they are
cached). Also, make sure that forward-declared protocols are visited
when we look for all visible names within a declaration context.

Previously, we would end up with duplicate completions for protocols.

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

13 years agoGather cached code completions after the first reparse, not after the
Douglas Gregor [Thu, 9 Dec 2010 21:27:43 +0000 (21:27 +0000)]
Gather cached code completions after the first reparse, not after the
second reparse.

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

13 years agoUpdate test.
Devang Patel [Thu, 9 Dec 2010 19:27:37 +0000 (19:27 +0000)]
Update test.
This test intends to catch invalid use of ".byte 256" in output. Now, the assert in MC will be triggered in such cases.

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

13 years agoFix type of last vector operand of Neon quad-register multiple-lane intrinsics.
Bob Wilson [Thu, 9 Dec 2010 18:58:31 +0000 (18:58 +0000)]
Fix type of last vector operand of Neon quad-register multiple-lane intrinsics.
The sensible thing would be to have these intrinsics take all quad-register
vector operands, but that's not what ARM did.  They made the last vector
operand always be a double-register type.  Since the lane number
must be a constant, the user can know which half of a quad-register contains
that lane, extract the high or low half of the vector, and adjust the lane
number accordingly.  The only advantage I can see for this is that it works
better when you want to multiply a quad-register value by a lane from a
double-register value, but I wouldn't have expected that to be the common
case.  Oh well -- at this point we just need to follow the spec.

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

13 years agoFix the names of the v[r]addhn and v[r]subhn Neon intrinsics.
Bob Wilson [Thu, 9 Dec 2010 18:31:16 +0000 (18:31 +0000)]
Fix the names of the v[r]addhn and v[r]subhn Neon intrinsics.
Their suffixes are supposed to reflect the source operand element type,
not the destination element type.  Radar 8746481.

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

13 years agoUse error_code instead of std::string* for MemoryBuffer.
Michael J. Spencer [Thu, 9 Dec 2010 17:36:38 +0000 (17:36 +0000)]
Use error_code instead of std::string* for MemoryBuffer.

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

13 years agoWhen an "inline" declaration was followed by a definition not marked
Douglas Gregor [Thu, 9 Dec 2010 16:59:22 +0000 (16:59 +0000)]
When an "inline" declaration was followed by a definition not marked
"inline", we weren't giving the definition weak linkage because the
"inline" bit wasn't propagated. This was a longstanding FIXME that,
somehow, hadn't triggered a bug in the wild. Fix this problem by
tracking whether any declaration was marked "inline", and clean up the
semantics of GNU's "extern inline" semantics calculation based on this
change.

Fixes <rdar://problem/8740363>.

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

13 years agoFix PR8760: IndirectFieldDecl Type was not updated during template instantiation.
Francois Pichet [Thu, 9 Dec 2010 10:07:54 +0000 (10:07 +0000)]
Fix PR8760: IndirectFieldDecl Type was not updated during template instantiation.

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

13 years agoAdd missing "s32" and "u32" variants of Neon vzip intrinsic.
Bob Wilson [Thu, 9 Dec 2010 07:01:08 +0000 (07:01 +0000)]
Add missing "s32" and "u32" variants of Neon vzip intrinsic.
Radar 8446277.

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

13 years agoAdd missing "p16" type variants for the Neon VREV32 intrinsics.
Bob Wilson [Thu, 9 Dec 2010 06:47:29 +0000 (06:47 +0000)]
Add missing "p16" type variants for the Neon VREV32 intrinsics.
Radar 8446277.

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

13 years agoFix another unnecessary-struct-padding issue.
Argyrios Kyrtzidis [Thu, 9 Dec 2010 02:47:58 +0000 (02:47 +0000)]
Fix another unnecessary-struct-padding issue.

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

13 years agoFix build.
Anders Carlsson [Thu, 9 Dec 2010 01:00:12 +0000 (01:00 +0000)]
Fix build.

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

13 years agoBefore determining the effect the alignment of base struct will have in the aligment...
Argyrios Kyrtzidis [Thu, 9 Dec 2010 00:35:20 +0000 (00:35 +0000)]
Before determining the effect the alignment of base struct will have in the aligment of the sub-struct,
take into account if the sub-struct is packed and its maximum field alignment.

Fixes rdar://8745206

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

13 years agoRemove extra namespace specifier.
Ted Kremenek [Thu, 9 Dec 2010 00:33:41 +0000 (00:33 +0000)]
Remove extra namespace specifier.

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

13 years agoRemove unused parameter. getContextDescriptor() and getOrCreateNameSpace().
Devang Patel [Thu, 9 Dec 2010 00:33:05 +0000 (00:33 +0000)]
Remove unused parameter. getContextDescriptor() and getOrCreateNameSpace().

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

13 years agoRemove unused parameter.
Devang Patel [Thu, 9 Dec 2010 00:25:29 +0000 (00:25 +0000)]
Remove unused parameter.

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

13 years agoTest case for r121323.
Devang Patel [Thu, 9 Dec 2010 00:11:12 +0000 (00:11 +0000)]
Test case for r121323.

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

13 years agoA typename specifier can end up referring to a unresolved using
Douglas Gregor [Thu, 9 Dec 2010 00:06:27 +0000 (00:06 +0000)]
A typename specifier can end up referring to a unresolved using
declaration that is a value in ill-formed code. Instead of crashing,
treat this as a dependent typename specifier and suggest that the
using add "typename" into the using declaration. Fixes <rdar://problem/8740998>.

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

13 years agoDenseMapInfo is a 'struct', not a 'class'.
Ted Kremenek [Thu, 9 Dec 2010 00:01:52 +0000 (00:01 +0000)]
DenseMapInfo is a 'struct', not a 'class'.

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

13 years agoAdd new libclang hooks for CXCursorSet, a
Ted Kremenek [Wed, 8 Dec 2010 23:43:14 +0000 (23:43 +0000)]
Add new libclang hooks for CXCursorSet, a
DenseMap-backed hashtable for doing client-side
management of CXCursors within a set.

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

13 years agoStart using DIBuilder. It provides cleaner interface.
Devang Patel [Wed, 8 Dec 2010 22:42:58 +0000 (22:42 +0000)]
Start using DIBuilder. It provides cleaner interface.

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

13 years agoStop using builtins for the "_lane" variants of saturating multiply intrinsics.
Bob Wilson [Wed, 8 Dec 2010 22:37:56 +0000 (22:37 +0000)]
Stop using builtins for the "_lane" variants of saturating multiply intrinsics.
Remove the "splat" parameter from the EmitNeonCall function, since it is no
longer needed.

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

13 years agoRemove the TypesCompatibleExprClass AST node. Merge its functionality into BinaryType...
Francois Pichet [Wed, 8 Dec 2010 22:35:30 +0000 (22:35 +0000)]
Remove the TypesCompatibleExprClass AST node. Merge its functionality into BinaryTypeTraitExpr.

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

13 years agoPut the "'typename' occurs outside of a template" and "'template'
Douglas Gregor [Wed, 8 Dec 2010 22:02:28 +0000 (22:02 +0000)]
Put the "'typename' occurs outside of a template" and "'template'
keyword occurs outside of a template" diagnostics under
-WC++0x-extensions.

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

13 years agoStop using clang builtins for Neon vabdl and vabal intrinsics.
Bob Wilson [Wed, 8 Dec 2010 21:39:47 +0000 (21:39 +0000)]
Stop using clang builtins for Neon vabdl and vabal intrinsics.

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

13 years agoDriver: M and MM should be grouped together, <rdar://problem/8744831>.
Daniel Dunbar [Wed, 8 Dec 2010 21:33:40 +0000 (21:33 +0000)]
Driver: M and MM should be grouped together, <rdar://problem/8744831>.

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

13 years agoStop using clang builtins for Neon vaba intrinsics.
Bob Wilson [Wed, 8 Dec 2010 20:09:54 +0000 (20:09 +0000)]
Stop using clang builtins for Neon vaba intrinsics.

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