Chris Lattner
4a80a59b6e
Fix va_arg handling to do argument decaying at the correct place. This
...
fixes problems handling references of va_list, which happens on x86_64.
This fixes PR2841 and rdar://6252231
llvm-svn: 56809
2008-09-29 22:28:25 +00:00
Steve Naroff
32d072ca45
Teach Sema::CheckAssignmentConstraints() to allow assignments between id and block pointer types (^{}).
...
llvm-svn: 56793
2008-09-29 18:10:17 +00:00
Steve Naroff
03fc762a02
Fix <rdar://problem/6251012> clang: Blocks are objects too.
...
llvm-svn: 56791
2008-09-29 16:51:41 +00:00
Steve Naroff
c2036d5da4
Fix <rdar://problem/6253149> property declaration doesn't declare getter and setter.
...
llvm-svn: 56785
2008-09-29 14:20:56 +00:00
Steve Naroff
8edb573a79
Fix <rdar://problem/6252129> implementation of method in category doesn't effectively declare it for methods below.
...
llvm-svn: 56771
2008-09-28 14:55:53 +00:00
Steve Naroff
4831c74d40
Fix <rdar://problem/6252108> assigning to argument passed to block should not require __block.
...
llvm-svn: 56770
2008-09-28 14:02:55 +00:00
Chris Lattner
037379d767
Fix rdar://6252231 - cannot call vsnprintf with va_list on x86_64,
...
by decaying __builtin_va_list's type when forming builtins. On
x86-64 (and other targets) __builtin_va_list is a typedef for
an array.
llvm-svn: 56768
2008-09-28 06:05:35 +00:00
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
Daniel Dunbar
53642c0160
Remove automagic substitution of %llvmgcc
...
- Is unused and somewhat unreliable.
llvm-svn: 56737
2008-09-27 00:47:03 +00:00
Daniel Dunbar
00e36f4c5c
Fix function-attributes test case to not rely on llvm-gcc.
...
llvm-svn: 56734
2008-09-27 00:44:01 +00:00
Daniel Dunbar
23b46ca198
Fix attributes test case to not run clang umpteen times.
...
llvm-svn: 56733
2008-09-27 00:39:13 +00:00
Ted Kremenek
f5e7e3ae26
Add more control-flow to test case.
...
llvm-svn: 56707
2008-09-26 23:05:47 +00:00
Ted Kremenek
d86d39cc9e
Add CFG support for implicit-control flow for VLA size expressions within an SizeOfAlignOfTypeExpr.
...
llvm-svn: 56706
2008-09-26 22:58:57 +00:00
Chris Lattner
6bea488c79
testcase for my previous patch.
...
llvm-svn: 56670
2008-09-26 18:07:51 +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
2ece64bbc4
Examine VLA size expressions when computing liveness information.
...
Fixes <rdar://problem/6248086>
llvm-svn: 56645
2008-09-26 05:52:45 +00:00
Daniel Dunbar
26e2ab4a37
Parser support for prefix __attribute__ on @protocol.
...
llvm-svn: 56642
2008-09-26 04:48:09 +00:00
Daniel Dunbar
c136e0ca43
Sema support for format and noreturn attributes on Objective-C methods.
...
llvm-svn: 56640
2008-09-26 04:12:28 +00:00
Daniel Dunbar
980c66946b
Add support for CFString in format attribute.
...
llvm-svn: 56639
2008-09-26 03:32:58 +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
Daniel Dunbar
3a28b9acbd
Add more testing of Obj-C property synthesis.
...
llvm-svn: 56564
2008-09-24 18:00:13 +00:00
Ted Kremenek
1f58ec6475
Updated test case.
...
llvm-svn: 56548
2008-09-24 06:40:03 +00:00
Daniel Dunbar
e8a06e619a
Implement type checking of Objective-C property attributes.
...
- readonly and readwrite are mutually exclusive.
- assign, copy, and retain are mutually exclusive.
- copy and retain are invalid on non-object types.
- Warn about using default 'assign' property on object types
(attempting to follow gcc behavior).
llvm-svn: 56507
2008-09-23 21:53:23 +00:00
Steve Naroff
87930ca38f
Teach block rewriter to replace '^' with '*' in VarDecls.
...
Since we don't have DeclGroup's and location information for types, there is some fancy footwork to do this fairly reliably.
O.K...it's a kludge. One day, we can use this as motivation to do this more gracefully:-)
llvm-svn: 56499
2008-09-23 19:24:41 +00:00
Ted Kremenek
81ec48a1d5
Added test case.
...
llvm-svn: 56493
2008-09-23 18:05:01 +00:00
Daniel Dunbar
c6fdac260b
Bug fix, result of isIntegerConstantExpr could be of incorrect width
...
for type.
- PR2817
llvm-svn: 56482
2008-09-22 23:53:24 +00:00
Steve Naroff
cd5e782bce
Fix http://llvm.org/bugs/show_bug.cgi?id=2816 .
...
llvm-svn: 56433
2008-09-22 10:28:57 +00:00
Ted Kremenek
8cdc71859c
Test case for transfer function logic of const casts.
...
llvm-svn: 56369
2008-09-19 20:53:52 +00:00
Ted Kremenek
34bfd8a490
Fixed logic error in BasicConstraintManager pointed out by Zhongxing Xu.
...
For checking if a symbol >= value, we need to check if symbol == value || symbol
> value. When checking symbol > value and we know that symbol != value, the path
is infeasible only if value == maximum integer.
For checking if a symbol <= value, we need to check if symbol == value || symbol
< value. When checking symbol < value and we know that symbol != value, the path
is infeasible only if value == minimum integer.
Updated test case exercising this logic: we only prune paths if the values are
unsigned.
llvm-svn: 56354
2008-09-19 18:00:36 +00:00
Chris Lattner
a7b034463e
Fix rdar://6222856: the receiver of a message expr is an
...
arbitrary expr, not just a assign expr. The grammar comment
was right, the code was just wrong.
llvm-svn: 56353
2008-09-19 17:44:00 +00:00
Ted Kremenek
55bec4d511
Added test case for PR 2600: proper use of NSError**
...
llvm-svn: 56332
2008-09-19 04:56:32 +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
Ted Kremenek
137fc0ea01
Added CFNumberCreate test case to illustrate a 32-bit/64-bit arch issue.
...
llvm-svn: 56295
2008-09-18 00:28:23 +00:00
Ted Kremenek
24bef31597
Add path-sensitivity test case.
...
llvm-svn: 56294
2008-09-17 22:24:13 +00:00
Daniel Dunbar
6ff95305e6
Another attempt to make test/Makefile return correct error code.
...
llvm-svn: 56285
2008-09-17 18:08:07 +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
Daniel Dunbar
86169d6d0d
Ignore XFAIL tests when checking for make failure in test/
...
llvm-svn: 56262
2008-09-16 23:43:13 +00:00
Ted Kremenek
025f83534c
Fix copy-paste error in test case.
...
llvm-svn: 56261
2008-09-16 23:25:28 +00:00
Ted Kremenek
8782716c4a
Minor pass-sensitivity improvement:
...
if we know that 'len != 0' and know that 'i == 0' then we know that
'i < len' must evaluate to true and cannot evaluate to false
llvm-svn: 56260
2008-09-16 23:24:45 +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
Douglas Gregor
aa1e21dcbd
Give string literals const element typesin C++, and cope with the deprecated C++ conversion from a string literal to a pointer-to-non-const-character
...
llvm-svn: 56137
2008-09-12 00:47:35 +00:00
Daniel Dunbar
484603be40
Iterate on sema for :? in Objective-C:
...
- Follow C99 behavior of using other operand type when one of
operands is a null pointer constant.
- Fix overenthusiastic devolving of any Objective-C types to id:
o If either operand has an Objective-C object type then:
- If both operands are interfaces and either operand can be
assigned to the other, use that type as the composite type.
- Otherwise, if either type is id, use id as the composite type.
- Otherwise, warn about incompatible types and use id as the
composite type.
- Return handling of qualified idea to separate test following
general pointer type checking.
o Upgraded from old code to allow devolving to id (without warning,
which matches GCC).
- <rdar://problem/6212771>
Add test case for issues fixed above, XFAIL though because it exposed
a new issue in property handling.
llvm-svn: 56135
2008-09-11 23:12:46 +00:00
Argyrios Kyrtzidis
176edb5490
Do implicit conversion to bool for the condition in a do-while statement.
...
llvm-svn: 56096
2008-09-11 05:16:22 +00:00
Argyrios Kyrtzidis
fea38016a9
Fix do-while scoping in C++.
...
llvm-svn: 56095
2008-09-11 04:46:46 +00:00
Daniel Dunbar
ce05c8eb49
Fix two bugs exposed by array passing assert:
...
(1) Additional arguments to variadic methods should have default
promotions applied.
(2) Additional arguments to non-variadic methods were allowed.
llvm-svn: 56084
2008-09-11 00:50:25 +00:00
Argyrios Kyrtzidis
996677e12d
In the 'condition.cpp' test case, make sure that condition declarations are local to the statement.
...
llvm-svn: 56077
2008-09-10 23:34:50 +00:00
Daniel Dunbar
b034bc71d4
Add XFAIL test case for:
...
<rdar://problem/6211479> [sema] array type invalid for Obj-C property
llvm-svn: 56075
2008-09-10 23:11:23 +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
Argyrios Kyrtzidis
07052350f0
Implement CodeGen support for the 'CXXConditionDeclExpr' expression node, which represents a 'condition' declaration, e.g: "if (int x=0) {...}".
...
llvm-svn: 56045
2008-09-10 02:36:38 +00:00
Argyrios Kyrtzidis
7620ee4550
Implement Sema support for the 'condition' part of C++ selection-statements and iteration-statements (if/switch/while/for).
...
llvm-svn: 56044
2008-09-10 02:17:11 +00:00
Argyrios Kyrtzidis
f602e427e9
Fix test case.
...
llvm-svn: 56012
2008-09-09 20:56:12 +00:00
Argyrios Kyrtzidis
2b4072fe55
Implement parser support for the 'condition' part of C++ selection-statements and iteration-statements (if/switch/while/for).
...
Add new 'ActOnCXXConditionDeclarationExpr' action, called when the 'condition' is a declaration instead of an expression.
llvm-svn: 56007
2008-09-09 20:38:47 +00:00
Daniel Dunbar
0beedc1684
Fix a number of issues w.r.t. emission of global for functions and
...
aliases.
- Attributes specific to a definition are only set when the
definition is seen.
- Alias generation is delayed until the end of the module; necessary
since the alias may reference forward.
- Fixes: PR2743, <rdr://6140807&6094512>
- Improves: <rdr://6095112> (added XFAIL)
Also, print module on verification failures.
llvm-svn: 55966
2008-09-08 23:44:31 +00:00
Daniel Dunbar
47be094138
Add missing RUN line
...
llvm-svn: 55934
2008-09-08 18:01:15 +00:00
Nuno Lopes
fc8c680b89
skip test if llvm-gcc is requires but not found on the path.
...
someone with llvm-gcc installed please test if the Codegen/function-attributes.c test isn't skip in your system. thanks.
llvm-svn: 55871
2008-09-06 16:42:14 +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
Argyrios Kyrtzidis
2545aeb710
Support "typeof unary-expression" (GNU C++ extension).
...
llvm-svn: 55833
2008-09-05 11:26:19 +00:00
Argyrios Kyrtzidis
91c3f526dc
Line endings: CRLF -> LF
...
llvm-svn: 55829
2008-09-05 08:53:53 +00:00
Daniel Dunbar
0335024c4a
Test case for previous commit (Workaround gcc bug causing crash on our
...
preprocessed outputs)
llvm-svn: 55826
2008-09-05 03:23:51 +00:00
Daniel Dunbar
2ffee610da
Set sext/zext on function result.
...
- <rdar://problem/6156739>
llvm-svn: 55815
2008-09-05 00:57:45 +00:00
Daniel Dunbar
98982ef954
Fix unintended use of doxygen comment strings.
...
llvm-svn: 55805
2008-09-04 21:54:53 +00:00
Ted Kremenek
72c06446bb
Added test case for the dead stores checker that was originally an FP reported in PR 2763.
...
llvm-svn: 55801
2008-09-04 21:52:52 +00:00
Daniel Dunbar
c7dfbfd544
Prevent invalid warnings about incomplete implementations for methods
...
which are inherited from base clases or protocols.
llvm-svn: 55790
2008-09-04 20:01:15 +00:00
Nuno Lopes
92c4bc8873
fix running tests with valgrind (there were a lot of bogus failures and warnings)
...
currently clang passes all tests under valgrind with the leak checker disabled :P (and fails most otherwise)
llvm-svn: 55782
2008-09-04 18:33:57 +00:00
Daniel Dunbar
c01f56c8de
Add some Objective-C code generation tests.
...
- Note that these don't really test anything other than that code
generation doesn't fail or crash. Better than nothing though!
llvm-svn: 55761
2008-09-04 04:36:23 +00:00
Daniel Dunbar
8cde00a510
Implement codegen of aggregates as lvalues in binary expressions,
...
e.g. "(a = b).somefield".
llvm-svn: 55758
2008-09-04 03:20:13 +00:00
Daniel Dunbar
0f99912868
Update TestRunner to not report failure for XFAIL tests
...
llvm-svn: 55751
2008-09-04 00:30:11 +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
Ted Kremenek
b44763456c
Following gcc's behavior, only enable trigraphs if '-trigraphs' or '-ansi' is
...
specified, or -std is set to a conforming mode.
llvm-svn: 55738
2008-09-03 21:22:16 +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
Daniel Dunbar
de1ec9cdcd
Improve type-checking of ?: for Objective-C types.
...
- Allow any Objective-C object types to devolve to type id in a ?:
expression. This matches gcc behavior more closely.
llvm-svn: 55705
2008-09-03 17:53:25 +00:00
Daniel Dunbar
ef89086c12
Restore Objective-C dot-syntax access of methods.
...
- Now also searches for correct setter method.
- There are still some issues regarding validation of the setter
method and access of read-only properties.
llvm-svn: 55686
2008-09-03 01:05:41 +00:00
Steve Naroff
c84e8b779e
- Implement __block.
...
- Replace FIXME in Preprocessor::HandleIdentifier() with a check that avoids diagnosing extension tokens that originate from macro definitions.
llvm-svn: 55639
2008-09-02 18:50:17 +00:00
Steve Naroff
d450bffcf1
Pull code from last commit. will put back soon.
...
llvm-svn: 55637
2008-09-02 18:04:36 +00:00
Steve Naroff
95bffc74da
Implement block pseudo-storage class modifiers (__block, __byref).
...
llvm-svn: 55635
2008-09-02 15:20:19 +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
ee29c9c2fc
Fix for PR2750; don't check for an 'e' in the trash after the token.
...
Note that this isn't really a complete fix; I think there are other
potential overrun situations. I don't really know what the best
systematic fix is, though.
llvm-svn: 55622
2008-09-02 05:29:22 +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
e0a09432cc
Temporarily disable some tests which due to dot-syntax
...
access of methods.
llvm-svn: 55569
2008-08-30 16:22:34 +00:00
Daniel Dunbar
5888e603c3
Allow 'make TESTDIRS=Sema' in test/ directory for only running a
...
subset of tests.
llvm-svn: 55513
2008-08-28 23:28:16 +00:00
Steve Naroff
0ac012835f
Add parser/action support for block literal expressions.
...
Parser support for blocks is almost complete...just need to add support for the __block() storage class qualifier.
llvm-svn: 55495
2008-08-28 19:20:44 +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
Steve Naroff
ec33ed9ced
First wave of changes to support "blocks" (an extension to C).
...
This commit adds the declaration syntax (and associated type).
llvm-svn: 55417
2008-08-27 16:04:49 +00:00
Daniel Dunbar
e0a673e60f
Update test case (we were missing a warning here)
...
llvm-svn: 55408
2008-08-27 05:41:04 +00:00
Daniel Dunbar
5e558bcf26
Add ObjCPropertyDecl::isReadOnly.
...
Respect isReadOnly when generating synthesized method decls.
llvm-svn: 55364
2008-08-26 07:16:44 +00:00