Chris Lattner
e9d291c038
Fix rdar://6251437, references to enum constant decls in a block
...
don't need a BlockDeclRefExpr.
llvm-svn: 56766
2008-09-28 05:30:26 +00:00
Steve Naroff
e18f94c20d
Fix <rdar://problem/6252216> compare block to NULL.
...
llvm-svn: 56764
2008-09-28 01:11:11 +00:00
Steve Naroff
edec9ba58d
Fix <rdar://problem/6252226> parser thinks block argument is undefined identifier in NSServices.m
...
llvm-svn: 56761
2008-09-28 00:13:36 +00:00
Ted Kremenek
68d2190226
Enter a new scope for a @try block.
...
llvm-svn: 56668
2008-09-26 17:32:47 +00:00
Steve Naroff
ba756cb3fc
Tweak Expr::isModifiableLvalue() and Expr::isLvalue() to better deal with BlockDeclRef exprs.
...
This fixes <rdar://problem/6248392> clang: Error when using address of stack variable inside block.
llvm-svn: 56652
2008-09-26 14:41:28 +00:00
Ted Kremenek
a34ea3b9cf
Have @finally introduce a new scope.
...
Fixes: <rdar://problem/6248119> @finally doesn't introduce a new scope
llvm-svn: 56629
2008-09-26 00:31:16 +00:00
Steve Naroff
f17c232a9e
Downgrade incompatible block pointer error to a warning (to be consistent with incompatible pointer warnings in general).
...
llvm-svn: 56595
2008-09-24 23:31:10 +00:00
Steve Naroff
c60873ce44
Fix <rdar://problem/6243788> clang: Incorrect return statement for Blocks?
...
llvm-svn: 56590
2008-09-24 22:26:48 +00:00
Steve Naroff
3405a73ab8
Finish pushing blocks attribute through the clang attribute machinery.
...
Also added a couple simple tests from the "gcc.apple" test suite.
llvm-svn: 56309
2008-09-18 16:44:58 +00:00
Steve Naroff
a5629376e8
Fix http://llvm.org/bugs/show_bug.cgi?id=2760 .
...
llvm-svn: 56280
2008-09-17 14:05:40 +00:00
Steve Naroff
7a147c6a3c
Remove support for BlockExprExpr. For example...
...
^(expression) or ^(int arg1, float arg2)(expression)
...is no longer supported.
All block literals now require a compound statement.
llvm-svn: 56257
2008-09-16 23:11:46 +00:00
Steve Naroff
3b1e172d7e
Sema::ActOnBlockReturnStmt(): Need to perform the UsualUnaryConversions on the return type.
...
Sema::CheckReturnStackAddr(): Make sure we skip over implicit casts.
Added some more test cases...
llvm-svn: 56254
2008-09-16 22:25:10 +00:00
Steve Naroff
2752a17a00
More semantic analysis for blocks...
...
llvm-svn: 56064
2008-09-10 19:17:48 +00:00
Steve Naroff
3ef15b5c2a
Sema::ActOnIdentifierExpr(): Lookup block arguments.
...
llvm-svn: 56063
2008-09-10 18:33:00 +00:00
Steve Naroff
8de9c3affe
More type checking for blocks. Still incomplete (will hopefully finish up this weekend).
...
llvm-svn: 55862
2008-09-05 22:11:13 +00:00
Daniel Dunbar
0ff4192f3a
Set register storage class correctly for function parameters.
...
- PR2730
llvm-svn: 55739
2008-09-03 21:54:21 +00:00
Daniel Dunbar
20e5db77a3
Add two test cases for builtins (mostly related to object size
...
builtins).
llvm-svn: 55736
2008-09-03 21:17:21 +00:00
Nuno Lopes
dd30e2c677
add the other test case for completeness and to avoid regressions in the future
...
llvm-svn: 55629
2008-09-02 10:10:14 +00:00
Eli Friedman
de09ce03c4
Fix for PR2747: allow pointer->int casts with a null base; these are
...
offset-of-like expressions.
llvm-svn: 55627
2008-09-02 09:37:00 +00:00
Eli Friedman
7c9ba6a1e3
An extremely hacky version of transparent_union support; it isn't
...
anywhere near correct in terms of missing cases and missing
diagnostics, but it's good enough to handle the uses in the
Linux system headers, which are currently a constant pain for compiling
applications on Linux.
llvm-svn: 55621
2008-09-02 05:19:23 +00:00
Eli Friedman
e7175d83dc
Make sure to take the unqualified versions of the canonical types for
...
type-checking pointer subtraction; if the canonical types aren't used,
the qualifiers won't always get stripped off correctly.
llvm-svn: 55620
2008-09-02 05:09:35 +00:00
Nuno Lopes
4e630967fc
readd test as it passes correctly. nice, but weird
...
llvm-svn: 55615
2008-09-01 22:28:55 +00:00
Eli Friedman
4c55e2c4ed
Backing out r55607 due to logic errors and test regression.
...
I'll try to come up with a correct fix for the testcase sometime soon.
llvm-svn: 55614
2008-09-01 22:08:17 +00:00
Ted Kremenek
c4f6d90ba1
Tidy up sema processing of attribute "nonull":
...
- warn about nonnull being applied to functions with no pointer arguments
- continue processing argument list in the attribute when we encounter a non-pointer parameter being marked as nonnull
- when no argument list is specified, only mark pointers as nonnull. This fixes PR 2732 and radar 6188814.
llvm-svn: 55610
2008-09-01 19:57:52 +00:00
Nuno Lopes
2c5208c59f
fix one more this-is-not-a-constant error. test included
...
llvm-svn: 55609
2008-09-01 18:42:41 +00:00
Nuno Lopes
feac637074
make CheckArithmeticConstantExpression() aware of &foo and pointers
...
llvm-svn: 55607
2008-09-01 14:47:06 +00:00
Daniel Dunbar
8c8616377d
Fix isIntegerConstantExpr eval of __builtin_offsetof to return result
...
with correct width.
- PR2728.
Also, fix PR2727 test case.
llvm-svn: 55493
2008-08-28 18:42:20 +00:00
Daniel Dunbar
3e1888e8bd
Fix double-free error with sizeof applied to VLA types.
...
- PR2727.
Also, fix warning in CodeGenTypes for new BlockPointer type.
llvm-svn: 55479
2008-08-28 18:02:04 +00:00
Eli Friedman
0a2ba3f10b
Fix for PR2720; be a little bit more permissive in initializers for
...
casting pointers to integers.
Eventually, we should check whether we can evaluate an expression
using Expr::tryEvaluate, and this codepath should be tightened to only
handle standard-compliant cases.
llvm-svn: 55331
2008-08-25 20:46:57 +00:00
Daniel Dunbar
8d57244601
Add test case for function-pointer-cast-of-global as constant
...
expression.
llvm-svn: 55323
2008-08-25 20:08:27 +00:00
Argyrios Kyrtzidis
3d0f51d703
Move the rest of the Sema C++ tests into the SemaCXX test directory.
...
llvm-svn: 55178
2008-08-22 15:43:49 +00:00
Chris Lattner
ea71438a93
add a simple check to warn people who type "=+" when they probably meant
...
"+=".
llvm-svn: 55131
2008-08-21 18:04:13 +00:00
Eli Friedman
1be92d297a
Fix a regression from my fix to PR2631. Fixes PR2692.
...
llvm-svn: 55083
2008-08-20 22:17:17 +00:00
Eli Friedman
5dd15a3c45
Fix test failure on Linux.
...
llvm-svn: 55032
2008-08-20 01:05:41 +00:00
Chris Lattner
5caafe598f
add testcase we already handle.
...
llvm-svn: 54967
2008-08-19 00:58:40 +00:00
Daniel Dunbar
aa64b7e0a8
Support initialization of incomplete array with zero size (as
...
extension).
llvm-svn: 54946
2008-08-18 20:28:46 +00:00
Argyrios Kyrtzidis
3014572ea2
Move the C++ Sema tests into a separate SemaCXX directory.
...
llvm-svn: 54853
2008-08-16 20:53:59 +00:00
Steve Naroff
eaf5853004
InitListChecker::CheckListElementTypes(): Check for function types and issue an appropriate diagnostic.
...
llvm-svn: 54614
2008-08-10 16:05:48 +00:00
Steve Naroff
84e37356d6
Sema::CheckForFileScopedRedefinitions(): Make sure tentative decls of incomplete array types are completed (and diagnosed properly).
...
llvm-svn: 54612
2008-08-10 15:20:13 +00:00
Chris Lattner
28b4294ccf
wrap some long diagnostics, make 'initializer is not a constant' diagnostic
...
a bit more clear (rdar://5646070)
llvm-svn: 54606
2008-08-10 01:58:45 +00:00
Eli Friedman
a3b2f6f2af
Make sure to count the struct elements correctly; here, we want the
...
member count. The count returned by numStructUnionElements is the
number of initializers that will be consumed, not the number of members
to iterate through. Fixes PR2534.
llvm-svn: 54601
2008-08-09 23:45:45 +00:00
Eli Friedman
121ba0c4d3
Fix for PR2631; make va_arg work correctly on x86-64.
...
llvm-svn: 54600
2008-08-09 23:32:40 +00:00
Chris Lattner
572100b648
Fix PR2400 by more graceful handling of invalid decls. Don't try to layout
...
an invalid struct decl. Thanks to Martin Doucha for the
isIncompleteArrayType part of this patch.
llvm-svn: 54592
2008-08-09 21:35:13 +00:00
Argyrios Kyrtzidis
40e9e4828f
Implement support for the 'wchar_t' C++ type.
...
llvm-svn: 54585
2008-08-09 16:51:54 +00:00
Steve Naroff
239255d2a6
Fix Sema::MergeVarDecl() to better handle type compatibility. The previous code was trying to handle arrays specially (which didn't work for pointers to array). Removed local helper function areEquivalentArrayTypes(), replacing it's use with the more general ASTContext::typesAreCompatible() predicate.
...
Even though the test case this fixes is in "tentative-decls.c", this bug didn't have anything to do with our handling of tentative definitions (which is what I first expected). In any event, this is a tricky area of the spec.
llvm-svn: 54583
2008-08-09 16:04:40 +00:00
Steve Naroff
5bb8f2264b
Fix issues with C "tentative" definitions.
...
- Move checking from MergeVarDecl->FinializeDeclaratorGroup. Since MergeVarDecl is called before the initializer is attacted, it can't be done there (this removes a long standing FIXME).
- Add Sema::isTentativeDefinition() and Sema::CheckForFileScopedRedefinitions().
- Remove FIXME's and touch-up test case.
Still some more work to do (forthcoming)...
llvm-svn: 54533
2008-08-08 17:50:35 +00:00
Daniel Dunbar
da8b85b415
Add test for nested enum redefinition.
...
- <rdar://problem/6093889>
llvm-svn: 54470
2008-08-07 16:22:45 +00:00
Nuno Lopes
d86aa9340d
fix crash when printing diagnostics with tokens that span through more than one line
...
llvm-svn: 54365
2008-08-05 19:40:20 +00:00
Daniel Dunbar
81f7f2904c
Add EXTWARN Diagnostic class.
...
- Like EXTENSION but always generates a warning (even without
-pedantic).
- Updated ptr -> int, int -> ptr, and incompatible cast warnings to
be EXTWARN.
- Other EXTENSION level diagnostics should be audited for upgrade.
- Updated several test cases to fix code which produced unanticipated
warnings.
llvm-svn: 54335
2008-08-05 00:07:51 +00:00
Daniel Dunbar
b692ef405b
Fix several issues in checking of address-of expressions.
...
- clang was erroneously accepting address-of applied to lvalue
expressions involving pointer arithmetic.
- clang was erroneously rejecting address-of applied to deref
expressions of pointer-typed variables.
- Improved existing test case.
- Fixes: <rdar://problem/6113867>, <rdar://problem/6080158>
llvm-svn: 54326
2008-08-04 20:02:37 +00:00