Chris Lattner
5b9241b2a6
Fix the atomics sema code to convert operands to the argument types
...
of the underlying _N builtin, not the the type of the pointee of the
actual type. This ensures that atomics involving pointers end up
using the correct integer type when they are resolved, avoiding
aborts in codegen.
llvm-svn: 71218
2009-05-08 15:36:58 +00:00
Ted Kremenek
062c14ba24
Remove experimental ownership attributes from Clang.
...
llvm-svn: 71216
2009-05-08 15:19:25 +00:00
Chris Lattner
dc04654697
reimplement __sync_* builtins to be variadic and to follow the same
...
semantic rules that gcc and icc use. This implements the variadic
and concrete versions as builtins and has sema do the
disambiguation. There are probably a bunch of details to finish up
but this seems like a large monotonic step forward :)
llvm-svn: 71212
2009-05-08 06:58:22 +00:00
Mike Stump
5580bdcaa2
Add a warning for a missing copy attribute on a property that is a
...
block pointer. Radar 6441502
llvm-svn: 71190
2009-05-07 23:06:50 +00:00
Mike Stump
5e16a0d9e7
Allow qualifiers on blocks. Radar 6441502
...
llvm-svn: 71183
2009-05-07 21:56:17 +00:00
Ted Kremenek
ba53fe98e7
More attribute renaming:
...
- Rename 'ns_returns_owned' -> 'ns_returns_retained'.
- Rename 'cf_returns_owned' -> 'cf_returns_retained'.
llvm-svn: 71182
2009-05-07 21:49:45 +00:00
Fariborz Jahanian
0d451813f9
a forward class declaration matching a typedef name of a class
...
refers to the underlying class.
This is radar 6859726. Steve, please read the radar for my rational.
llvm-svn: 71181
2009-05-07 21:49:26 +00:00
Mike Stump
f70bcf7d1a
Tighten up relationals with blocks and ints. Radar 6441502
...
llvm-svn: 71171
2009-05-07 18:43:07 +00:00
Sebastian Redl
fb23ddf661
Fix a FIXME in new expression checking.
...
llvm-svn: 71163
2009-05-07 16:14:23 +00:00
Douglas Gregor
ae1e53c87b
Compute the canonical template name when building a template
...
specialization type for a dependent template name.
llvm-svn: 71153
2009-05-07 06:49:52 +00:00
Douglas Gregor
6bc50585e3
Start canonicalizing template names. This is not yet complete, but it
...
improves type identity with dependent types.
llvm-svn: 71152
2009-05-07 06:41:52 +00:00
Mike Stump
1b821b4fc5
Improve semantic checking for blocks. Radar 6441502
...
llvm-svn: 71145
2009-05-07 03:14:14 +00:00
Sebastian Redl
f08aa62c80
Back out r70506 (exception spec in AST) again. We won't have exception specs until we've had a lot more discussion.
...
llvm-svn: 71125
2009-05-06 23:27:55 +00:00
Ted Kremenek
213ff5a98e
Implement attribute 'ns_autorelease'.
...
llvm-svn: 70990
2009-05-05 18:44:20 +00:00
Fariborz Jahanian
3baaffba6b
Issue a warning in odd case of instance method used
...
in a 'Class' receiver which is not a root instance
method.
llvm-svn: 70987
2009-05-05 18:34:37 +00:00
Douglas Gregor
b8420464c6
Turns out that Sebastian already implemented the logic to compute the
...
composite pointer type, and his is better! Updated relational- and
equality-operator checking accordingly.
llvm-svn: 70963
2009-05-05 04:50:50 +00:00
Ted Kremenek
94c464ef22
Implement attribute 'cf_returns_owned' (mirrors 'ns_returns_owned').
...
llvm-svn: 70952
2009-05-05 00:46:09 +00:00
Ted Kremenek
de1aa1e4dd
Rename ownership attributes:
...
ns_ownership_returns -> ns_returns_owned
ns_ownership_retain -> ns_retains
ns_ownership_release -> ns_releases
cf_ownership_retain -> cf_retains
cf_ownership_release -> cf_releases
llvm-svn: 70949
2009-05-05 00:21:59 +00:00
Ted Kremenek
bbec22d2b2
Rename attribute 'ns_ownership_returns' to 'ns_returns_ownership'.
...
llvm-svn: 70941
2009-05-04 23:52:59 +00:00
Ted Kremenek
6bdfcf47ad
Remove experimental attribute 'ns_ownership_make_collectable.'
...
llvm-svn: 70940
2009-05-04 23:46:06 +00:00
Fariborz Jahanian
60637985de
ignore weak_import attribute on objc method decls.
...
llvm-svn: 70901
2009-05-04 19:35:12 +00:00
Ted Kremenek
0836a19931
Rename attributes 'objc_ownership...' to 'ns_ownership...'.
...
llvm-svn: 70897
2009-05-04 19:10:19 +00:00
Ted Kremenek
5dbfa3fadd
Rename attributes:
...
'objc_ownership_cfretain' -> 'cf_ownership_retain'
'objc_ownership_cfrelease' -> 'cf_ownership_release'
Motivation: Core Foundation objects can be used in isolation from Objective-C,
and this forces users to reason about the separate semantics of CF objects. More
Sema support pending.
llvm-svn: 70884
2009-05-04 17:29:57 +00:00
Ted Kremenek
bc76c72f94
Remove support for ObjCMethodDecl attributes that appear between the
...
return type and the selector. This is inconsistent with C functions
(where such attributes would be placed on the return type, not the the
FunctionDecl), and is inconsistent with what people are use to seeing.
llvm-svn: 70878
2009-05-04 17:04:30 +00:00
Douglas Gregor
5b07c7ec05
Implement support for comparing pointers with <, >, <=, >=, ==, and !=
...
in C++, taking into account conversions to the "composite pointer
type" so that we can compare, e.g., a pointer to a derived class to a
pointer to a base class.
Also, upgrade the "comparing distinct pointer types" from a warning to
an error for C++, since this is clearly an error. Turns out that we
hadn't gone through and audited this code for C++, ever.
Fixes <rdar://problem/6816420>.
llvm-svn: 70829
2009-05-04 06:07:12 +00:00
Eli Friedman
b8c4fd8cfd
PR2524: downgrade taking address of expression of type 'void' to an
...
extension warning.
llvm-svn: 70805
2009-05-03 22:36:05 +00:00
Eli Friedman
8469bc7c73
Fix/re-enable test.
...
llvm-svn: 70800
2009-05-03 21:22:18 +00:00
Douglas Gregor
f9aa5260a9
One can use "class" and "struct" interchangeably to refer to a class
...
in C++. Fixes <rdar://problem/6815995>.
llvm-svn: 70784
2009-05-03 17:18:57 +00:00
Chris Lattner
cc1cde9c57
allow references to the larger value in a tied constraint
...
from the asm string, but reject references to the smaller one.
llvm-svn: 70679
2009-05-03 08:32:32 +00:00
Chris Lattner
97de21f754
code cleanup, avoid shadowing i.
...
llvm-svn: 70678
2009-05-03 08:24:16 +00:00
Eli Friedman
47e785783c
Don't insert an extra ParenExpr around asm operands.
...
llvm-svn: 70673
2009-05-03 07:49:42 +00:00
Chris Lattner
cb66c73a48
If we have mismatched integer tied operands, but the operand
...
number is not mentioned in the asm string, let it past sema.
Right now these are currently rejected by the llvm code generator
but this will be fixed next.
llvm-svn: 70670
2009-05-03 07:04:21 +00:00
Chris Lattner
28b05c8249
avoid a crash when we encounter a implicit cast of the paren expr due to
...
promotions. This should be fixed by not modeling asm operands (which
require the ()'s according to the grammar) as not being paren exprs.
llvm-svn: 70668
2009-05-03 06:50:40 +00:00
Eli Friedman
c97d014a9a
Fix silly mistake that was breaking tests. Sorry for any inconvenience.
...
llvm-svn: 70664
2009-05-03 06:04:26 +00:00
Chris Lattner
2c295cfee8
rename some variables, improve comments.
...
llvm-svn: 70663
2009-05-03 05:59:17 +00:00
Chris Lattner
34b51e88ec
refactor matched operand type checking to happen after the AsmStmt is created,
...
no functionality change.
llvm-svn: 70662
2009-05-03 05:55:43 +00:00
Eli Friedman
eed8ad2057
Add Sema support for __builtin_setjmp/__builtin_longjmp. The primary
...
reason for adding these is to error out in CodeGen when trying to generate
them instead of silently emitting a call to a non-existent function.
(Note that it is not valid to lower these to setjmp/longjmp; in addition
to that lowering being different from the intent, setjmp and longjmp
require a larger buffer.)
llvm-svn: 70658
2009-05-03 04:46:36 +00:00
Daniel Dunbar
bdb23a1f56
Fix invalid error about duplicate declaration of padding bit field in
...
an interface.
llvm-svn: 70652
2009-05-03 01:08:28 +00:00
Anders Carlsson
38ebcaa8c8
Fix a thinko and a test.
...
llvm-svn: 70637
2009-05-02 18:36:10 +00:00
Anders Carlsson
8b98d02976
Downgrade the invalid offsetof error to a warning.
...
llvm-svn: 70634
2009-05-02 17:45:47 +00:00
Douglas Gregor
71235ecb7f
When determining whether an expression refers to a bit-field, look
...
into the left-hand side of an assignment expression. This completes
most of PR3500; the only remaining part is to deal with the
GCC-specific implementation-defined behavior for "unsigned long" (and
other) bit-fields.
llvm-svn: 70623
2009-05-02 02:18:30 +00:00
Douglas Gregor
d2c2d172da
Fix bitfield promotions in several more cases. We don't seem to work hard enough at determining whether an expression is a bitfield or not, yet.
...
llvm-svn: 70613
2009-05-02 00:36:19 +00:00
Mike Stump
a71286315f
Add Sema checking for __block on vm declarations. Radar 6441502
...
llvm-svn: 70601
2009-05-01 23:41:47 +00:00
Anders Carlsson
2bbb86b02e
It's an error to call offsetof on a non-POD type.
...
llvm-svn: 70595
2009-05-01 23:20:30 +00:00
Douglas Gregor
8d9c509975
Implement bit-field promotion rules for C99. Fixes PR3500.
...
llvm-svn: 70571
2009-05-01 20:41:21 +00:00
Fariborz Jahanian
07b7165b50
Check for method type conflict between declaration in
...
class/protocol and implementation which could be
an imm. implementation or down in the inheritance
hierarchy.
llvm-svn: 70568
2009-05-01 20:07:12 +00:00
Anders Carlsson
b781bcdc30
Replace more release+static_cast with takeAs.
...
llvm-svn: 70567
2009-05-01 19:49:17 +00:00
Anders Carlsson
3cbc85985a
Replace a bunch of static_cast + release with takeAs.
...
llvm-svn: 70566
2009-05-01 19:30:39 +00:00
Anders Carlsson
bfdea0f136
Get rid of the implicit deref call when calling member functions where the base is a pointer.
...
llvm-svn: 70562
2009-05-01 18:34:30 +00:00
Douglas Gregor
f16a8a7443
Finish a thought in CheckVariableDeclaration's comment. No functionality change
...
llvm-svn: 70544
2009-05-01 15:47:09 +00:00