Eli Friedman
3df5efe83e
Cleanup/refactoring of Sema struct layout. This patch unifies the struct
...
and union codepaths and fixes some minor bugs.
I'm reasonably confident this is accurate, at least for X86. I'll
correct any bugs as I find them; I haven't found any for a while,
though.
llvm-svn: 51762
2008-05-30 09:31:38 +00:00
Eli Friedman
43a6d51494
More complete/correct implementation of the comparison operators for
...
constant expressions.
llvm-svn: 51682
2008-05-29 15:17:49 +00:00
Eli Friedman
3c28524632
Fix an extremely subtle bug with pointer comparisons: they have to be
...
unsigned because it's possible (at least in theory) to have
have both positive and negative pointers pointing to the same object.
llvm-svn: 51681
2008-05-29 15:09:15 +00:00
Eli Friedman
133e8040ca
Rearrange EmitLValueForField a bit to work properly for _Bool bitfields
...
in unions (we don't want to do the union-specific bitcast for
bit-fields).
llvm-svn: 51678
2008-05-29 11:33:25 +00:00
Eli Friedman
045bf4ff82
Add codegen support for a few more kinds of initializer constant
...
expressions.
llvm-svn: 51677
2008-05-29 11:22:45 +00:00
Eli Friedman
174d9c26f1
Add CodeGen support for alignment on globals, both for unusual natural
...
alignment and alignment attributes.
llvm-svn: 51676
2008-05-29 11:10:27 +00:00
Eli Friedman
d72a9624a1
Tentative declarations are supposed to have common linkage, not weak.
...
This change makes clang generate the same thing as llvm-gcc.
llvm-svn: 51674
2008-05-29 11:03:17 +00:00
Eli Friedman
5a6d0ede91
Always use packed structs. This isn't really very nice, but there's
...
nothing fundamentally wrong with it. Emitting unpacked structs where
possible is more work for almost no practical benefit. We'll probably
want to fix it at some point anyway, but it's low priority.
The issue with long double in particular is that LLVM thinks an X86 long
double is 10 bytes, while clang considers it for all purposes to be
either 12 or 16 bytes, depending on the platform, even in a packed
struct.
llvm-svn: 51673
2008-05-29 10:58:49 +00:00
Chris Lattner
a120a521a5
Fix a couple crashes on invalid input.
...
llvm-svn: 51622
2008-05-27 23:32:43 +00:00
Devang Patel
1c56ace4df
Check first member alignment and uses packed struct if required.
...
llvm-svn: 51619
2008-05-27 22:45:40 +00:00
Devang Patel
d608074e09
Fix test case
...
llvm-svn: 51618
2008-05-27 22:44:22 +00:00
Eli Friedman
21911e89d5
A few more cases for aggregate values.
...
llvm-svn: 51596
2008-05-27 15:51:49 +00:00
Eli Friedman
5e2281ede8
Implementation of __builtin_ctlz.
...
llvm-svn: 51595
2008-05-27 15:32:46 +00:00
Eli Friedman
a904087b0d
Get the type right for wide string literals; it's wchar_t, not char.
...
llvm-svn: 51586
2008-05-27 07:57:14 +00:00
Eli Friedman
aee9e54dca
Don't swap function decls, and add them to the scope as they are
...
encountered. Mixing up the decls is unintuitive, and confuses the AST
destruction code. Fixes PR2360.
Note that there is a need to look up the characteristics and
declarations of a function associated with a particular name or decl,
but the original swapping code doesn't solve it properly.
http://lists.cs.uiuc.edu/pipermail/cfe-dev/2008-May/001644.html is one
suggestion for how to fix that.
llvm-svn: 51584
2008-05-27 05:07:37 +00:00
Eli Friedman
078c963a31
Add a more reliable check for whether a static declaration has already
...
been used. In preparation for the fix to PR2360, but also a minor bug
in its own right.
llvm-svn: 51583
2008-05-27 04:58:01 +00:00
Eli Friedman
bdef5df44e
Generalize the float type generation code, and specifically fix the
...
codegen of X86 long double.
llvm-svn: 51578
2008-05-27 04:20:05 +00:00
Eli Friedman
3e113409cb
Implementation of gcc mode attribute; this is significant because
...
it fixes PR2204. Not too much to say about the implementation; it works
in a similar way to the vector size attribute.
At some point, we need to modify the targets to provide information
about the appropriate types.
llvm-svn: 51577
2008-05-27 03:33:27 +00:00
Eli Friedman
1c2d5f56f8
Change diagnostic per suggestion, to make it a bit clearer what is
...
happening.
llvm-svn: 51574
2008-05-27 02:01:50 +00:00
Eli Friedman
0e56c82e4a
Count the number of initializable members correctly in structs/unions
...
with unnamed members.
llvm-svn: 51557
2008-05-25 14:03:31 +00:00
Eli Friedman
e0f832bd4f
Diagnose implicit init list for empty aggregate, like struct {}. Fixes
...
PR2151 (by not creating the empty implicit init list).
llvm-svn: 51556
2008-05-25 13:49:22 +00:00
Eli Friedman
85f5497c4a
Move the error checking for variable-sized objects so we don't
...
double-report errors; fixes PR2362.
llvm-svn: 51555
2008-05-25 13:22:35 +00:00
Eli Friedman
d042a969c9
Fix this test on non-X86 platforms.
...
llvm-svn: 51552
2008-05-25 04:43:38 +00:00
Chris Lattner
10a7bd6341
fix a nasty off-by-one error.
...
llvm-svn: 51519
2008-05-23 23:29:33 +00:00
Chris Lattner
17c2476d0b
fix an inconsistency computing offsets that caused a crash on rewrite-nest.m
...
llvm-svn: 51514
2008-05-23 23:06:56 +00:00
Ted Kremenek
6849601f69
More test cases for retain/release checker. These cases handle not flagging leaks for static variables.
...
llvm-svn: 51486
2008-05-23 17:25:17 +00:00
Gabor Greif
f61cb42ab5
fix typo
...
llvm-svn: 51479
2008-05-23 11:19:39 +00:00
Ted Kremenek
db622628e8
Additional retain/release checker regression tests.
...
llvm-svn: 51454
2008-05-22 23:46:11 +00:00
Eli Friedman
bb5de96bc8
Patch for PR2350; the issue was tnat we were allowing (with an error)
...
void f(const void) in one place and rejecting it in another.
llvm-svn: 51424
2008-05-22 08:54:03 +00:00
Ted Kremenek
91f035cda7
Improve dead stores diagnostics to include the variable name.
...
llvm-svn: 51395
2008-05-21 22:59:16 +00:00
Ted Kremenek
b120ff1b95
Fixed bug in the transfer function for dereferences: the loaded value from EvalLoad should bind to the UnaryOperator*, not its subexpression.
...
Added test case to exercise this fix when checking for uses of uninitialized values.
Patch by Zhongxing Xu!
llvm-svn: 51377
2008-05-21 15:48:33 +00:00
Eli Friedman
43f6b67135
A small testcase; no patch, since it was a bug in a patch I never
...
committed.
llvm-svn: 51370
2008-05-21 13:21:01 +00:00
Eli Friedman
0ceef458b6
Fix this test so that it's valid; the point is to test for the crash,
...
not the missing diagnostic.
llvm-svn: 51365
2008-05-21 05:37:55 +00:00
Eli Friedman
0883bfb541
PR2347: Fix crash iterating over VLAs; this started triggering because
...
we now iterate over the whole AST when we destroy it.
llvm-svn: 51363
2008-05-21 05:06:46 +00:00
Eli Friedman
86346ede95
Fix a couple of bugs found by Neil Booth in the const-ness checking.
...
llvm-svn: 51361
2008-05-21 03:39:11 +00:00
Eli Friedman
4b44e2ee8c
Test from PR2332; bug already fixed by r51311.
...
llvm-svn: 51316
2008-05-20 12:55:29 +00:00
Eli Friedman
2460b0c941
Fix the scope of K&R-style argument declarations so that they don't
...
extend beyond the end of the function.
I'm not completely sure this is the right way to fix this bug, so
someone familiar with the parser should double-check.
llvm-svn: 51311
2008-05-20 09:10:20 +00:00
Eli Friedman
f77daf5e58
Fix test (it was incorrectly succeeding).
...
llvm-svn: 51310
2008-05-20 09:04:19 +00:00
Eli Friedman
53e38bd6b6
Add codegen support for stack address intrinsics.
...
llvm-svn: 51309
2008-05-20 08:59:34 +00:00
Eli Friedman
503731aa22
Fix typo in test.
...
llvm-svn: 51308
2008-05-20 08:27:04 +00:00
Eli Friedman
f8353034eb
Add __builtin_frame_address and __builtin_return_address gcc builtins to
...
Sema. No codegen yet.
llvm-svn: 51307
2008-05-20 08:23:37 +00:00
Eli Friedman
4b0e2a30e0
Implement codegen for comma operator for structs.
...
llvm-svn: 51304
2008-05-20 07:56:31 +00:00
Eli Friedman
d0e48ea682
Be a bit more defensive in SemaInit.
...
llvm-svn: 51301
2008-05-20 05:25:56 +00:00
Eli Friedman
37a186d765
Add some more checking for compound literals.
...
llvm-svn: 51300
2008-05-20 05:22:08 +00:00
Eli Friedman
a3a4068949
Implement CodeGen for __builtin_memcpy.
...
llvm-svn: 51282
2008-05-19 23:27:48 +00:00
Eli Friedman
ca8da1d89d
Make the unused expression warning a bit less aggressive (found in PHP
...
code).
llvm-svn: 51276
2008-05-19 21:24:43 +00:00
Eli Friedman
a68c3006f4
Switch on SemaInit; this makes some code in SemaDecl dead, but I'll give
...
it a few days to make sure there aren't any significant regressions.
llvm-svn: 51273
2008-05-19 20:29:35 +00:00
Eli Friedman
541268086a
Remove illegal test.
...
llvm-svn: 51267
2008-05-19 20:17:34 +00:00
Eli Friedman
f23b6fa41f
Fix the emission of expressions like char a[10] = "asdf"; previously,
...
they were causing bad code to be emitted. There are two fixes here: one
makes sure we emit a string that is long enough, and one makes sure we
properly handle string initialization in init lists.
llvm-svn: 51259
2008-05-19 17:51:16 +00:00
Eli Friedman
8e12298192
Add proper type-checking for pointer additiion; before, we were accepting
...
addition with a pointer and an integer even when it didn't make sense.
llvm-svn: 51228
2008-05-18 18:08:51 +00:00
Eli Friedman
f2442dcc8d
Fix support for _Bool bitfields. The issue is that the bitfield width
...
used for _Bool is not the same as the primitive width (which for _Bool
is 1 bit). The load and store changes add some casts to make the
types consistent. The EmitLValue changes make sure that the pointer is
of an appropriate type for loading the bitfield.
This isn't perfect, but it's an improvement, and getting everything
right depends on actually laying out structs in an ABI-compliant way.
llvm-svn: 51224
2008-05-17 20:03:47 +00:00
Eli Friedman
cb92a3f03b
Patch for PR2334, and a similar ObjC bug.
...
llvm-svn: 51193
2008-05-16 17:37:11 +00:00
Eli Friedman
a1b4ed8003
Implementation of __builtin_shufflevector, a portable builtin capable of
...
expressing the full flexibility of the LLVM shufflevector instruction.
The expected immediate usage is in *mmintrin.h, so that they don't
depend on the mess of gcc-inherited (and not completely implemented)
shuffle builtins.
llvm-svn: 51113
2008-05-14 19:38:39 +00:00
Eli Friedman
9fd8b68568
Add codegen support for block-level compound literals.
...
llvm-svn: 51081
2008-05-13 23:18:27 +00:00
Eli Friedman
58639e584c
Both operands to && have to be scalars, not just one.
...
llvm-svn: 51065
2008-05-13 20:16:47 +00:00
Steve Naroff
a98fe19c7e
Fix <rdar://problem/5924576> clang -fsyntax-only generates "redefinition" errors when parsing AppKit that gcc does not.
...
Teach Sema::MergeVarDecl() about __private_extern__.
llvm-svn: 51005
2008-05-12 22:36:43 +00:00
Steve Naroff
bf1516c618
Fix <rdar://problem/5928590> clang -fsyntax-only: "incompatible operand types ('int' and 'void')" on input that 'gcc -fsyntax-only' eats
...
llvm-svn: 51002
2008-05-12 21:44:38 +00:00
Chris Lattner
c9c296d235
testcase for PR2263, fixed by Nate's r50903 patch.
...
llvm-svn: 50983
2008-05-12 18:31:17 +00:00
Eli Friedman
6a7087e455
Emit basic block for switch body; fixes PR2307.
...
llvm-svn: 50968
2008-05-12 16:08:04 +00:00
Eli Friedman
6e31321043
Don't try to take the address of a bitfield; fixes PR2310.
...
llvm-svn: 50966
2008-05-12 15:06:05 +00:00
Argyrios Kyrtzidis
fa8e15bfa5
-Implement proper name lookup for namespaces.
...
-identifierResolver exposes an iterator interface to get all decls through the scope chain.
-The semantic staff (checking IdentifierNamespace and Doug's checking for shadowed tags were moved out of IdentifierResolver and back into Sema. IdentifierResolver just gives an iterator for all reachable decls of an identifier.
llvm-svn: 50923
2008-05-09 23:39:43 +00:00
Mon P Wang
b84407d6ec
Added support to generate some atomic operators (add, sub, and, or etc..)
...
llvm-svn: 50919
2008-05-09 22:40:52 +00:00
Ted Kremenek
712c91f8a9
Add attribute "format" support for typedefs of function pointers.
...
llvm-svn: 50906
2008-05-09 17:36:24 +00:00
Nate Begeman
f322eabbce
Extend vector member references to include {.hi, .lo, .e, .o} which return a
...
vector of the same element type and half the width, with the high, low, even,
and odd elements respectively.
Allow member references to member references, so that .hi.hi gives you the high
quarter of a vector. This is fairly convenient syntax for some insert/extract
operations.
Remove some unnecessary methods/types in the ExtVectorElementExpr class.
llvm-svn: 50892
2008-05-09 06:41:27 +00:00
Chris Lattner
adb86418db
Fix rdar://5921025 a crash on the included testcase.
...
llvm-svn: 50885
2008-05-09 05:34:49 +00:00
Chris Lattner
d330036c06
The awesome GNU "comma elision extension" works with both the standard
...
__VA_ARGS__ syntax as well as with the amazingly awesome GNU "named
variadic macro" extension. Allow it with the GNU syntax as well.
llvm-svn: 50843
2008-05-08 05:10:33 +00:00
Devang Patel
ac25fc6f2e
Begin handling union bitfields.
...
Note, this is just beginning.
llvm-svn: 50835
2008-05-07 22:28:29 +00:00
Ted Kremenek
f958ec50c0
Expand the CF retain checker to allow the Create/Get rule to apply to any
...
function that returns a CFxxxRef, not just functions whose name begins with
CF. This implements <rdar://problem/5917879>.
Added test case for this feature.
Updated calls to CStrInCStrNoCase to swap their arguments, per compatibility
with strcasestr.
llvm-svn: 50829
2008-05-07 20:06:41 +00:00
Douglas Gregor
caa8acebe7
Diagnose attempts to use C++ default arguments outside of a function declaration
...
llvm-svn: 50799
2008-05-07 04:49:29 +00:00
Ted Kremenek
aec1811c6c
Don't report leaks for autoreleased objects.
...
llvm-svn: 50777
2008-05-06 23:07:13 +00:00
Devang Patel
243d5cd283
Fix PR2101 - Codegen crash during bitfield initialization.
...
llvm-svn: 50769
2008-05-06 19:57:59 +00:00
Fariborz Jahanian
6a70e2019b
Test was accidently nullified in previous check-in.
...
llvm-svn: 50758
2008-05-06 18:14:26 +00:00
Fariborz Jahanian
09367d68ff
Patch to refactor setter/getter names of property attributes into Selector
...
(was IdentifierInfo * before). This will make method declartations whole
lot easier.
llvm-svn: 50747
2008-05-06 18:09:04 +00:00
Ted Kremenek
2f08fedec1
String comparison cleanups.
...
Added test case.
llvm-svn: 50711
2008-05-06 04:28:05 +00:00
Ted Kremenek
015c3561ad
Use EvalSummary to process message expressions, thereby unifying the checker
...
logic for function calls and message expressions.
Use the following heuristic to infer "allocating" instance methods:
[ClassName classWithXXX] allocates an object
Update testcase to reflect this heuristic.
llvm-svn: 50708
2008-05-06 04:20:12 +00:00
Ted Kremenek
f15cd14a3d
Emit dead store warnings for ++ and -- operators.
...
llvm-svn: 50679
2008-05-05 23:12:21 +00:00
Chris Lattner
4dd2710222
Fix rdar://5905347 a crash on invalid builtin, due to the
...
params not getting installed for builtins when synthesized.
llvm-svn: 50676
2008-05-05 22:18:14 +00:00
Chris Lattner
db65ff7223
Fix a few more bugs in preprocessor expressions w.r.t. ?:. Now I
...
think it is really right. :) This fixes PR2284.
llvm-svn: 50665
2008-05-05 20:07:41 +00:00
Ted Kremenek
875db81301
Minor refactorings/cleanups in CF retain checker and added support for NSMakeCollectable.
...
Added test case for NSMakeCollectable.
llvm-svn: 50653
2008-05-05 16:51:50 +00:00
Ted Kremenek
db04a9e967
When reporting branch conditions that evaluate to an uninitialized value,
...
highlight the most nested subexpression that appears most responsible (giving
the user better diagnostic feedback).
Updated test cases to illustrate this feature.
Implements: <rdar://problem/5880443>
llvm-svn: 50647
2008-05-05 15:56:53 +00:00
Chris Lattner
3c57f7ebab
fix a bug handling right associative operators that Neil noticed, hopefully
...
the final part of PR2279
llvm-svn: 50635
2008-05-05 04:10:51 +00:00
Chris Lattner
d89e458ce0
Fix the rest of PR2279:
...
a) correct rejection of ',' in pp expressions.
b) the precedence of ',' was wrong w.r.t. ?:.
Thanks again to Neil for finding these and providing testcases.
llvm-svn: 50625
2008-05-04 18:36:18 +00:00
Chris Lattner
a08f869c22
Fix PR2279 part C: shifts don't perform the UACs, thanks to Neil
...
for pointing this out.
llvm-svn: 50624
2008-05-04 18:25:32 +00:00
Chris Lattner
0a9718eab0
fix a nasty bug that Neil identifier in pp-expr parsing (this is PR2279 part D).
...
llvm-svn: 50617
2008-05-04 07:15:21 +00:00
Chris Lattner
cfcabaeb7f
add testcase for pr2050 which is now fixed.
...
llvm-svn: 50610
2008-05-04 01:13:36 +00:00
Chris Lattner
033352b036
add a testcase
...
llvm-svn: 50608
2008-05-04 00:56:25 +00:00
Fariborz Jahanian
9964c9c64d
Another test case for properties in protocols.
...
llvm-svn: 50589
2008-05-02 21:09:40 +00:00
Fariborz Jahanian
98a6c4fa77
This patch is about merging ObjC2's properties declared in class
...
protocols into class's property list and performing semantics
on them for while doing so.
llvm-svn: 50587
2008-05-02 19:17:30 +00:00
Ted Kremenek
86237c3774
testcase cleanup
...
llvm-svn: 50581
2008-05-02 17:14:07 +00:00
Ted Kremenek
5102a25bf8
Static analysis test case for noreturn on exceptions.
...
llvm-svn: 50580
2008-05-02 17:13:14 +00:00
Fariborz Jahanian
f303bdabdf
Patch to match and issue diagnostics on property type mismatch.
...
llvm-svn: 50532
2008-05-01 18:05:01 +00:00
Ted Kremenek
772d9f0aae
Added test case for the static analyzer.
...
llvm-svn: 50467
2008-04-30 04:40:48 +00:00
Ted Kremenek
10bad41159
Added test case to test null dereference checking with lval::ArrayOffset.
...
llvm-svn: 50454
2008-04-29 23:25:09 +00:00
Ted Kremenek
25a3b878e5
Convert CFLF to LF. CRLF was causing this test to fail under Mac OS X.
...
llvm-svn: 50388
2008-04-29 04:43:50 +00:00
Argyrios Kyrtzidis
081148986a
Parsing of namespaces:
...
-NamespaceDecl for the AST
-Checks for name clashes between namespaces and tag/normal declarations.
This commit doesn't implement proper name lookup for namespaces.
llvm-svn: 50321
2008-04-27 13:50:30 +00:00
Chris Lattner
73669defed
remove the 'unused static' diagnostic from codegen. This should be
...
reimplemented in Sema someday. This is tracked in PR2236. Until then
disabling it removes some bogus diagnostics (see 2236).
llvm-svn: 50263
2008-04-25 15:47:13 +00:00
Ted Kremenek
ecbdf75049
Do a better job at computing dead symbols.
...
Implemented support for better localized leaks in the CF reference count checker.
Now leaks should be flagged close to where they occur.
This should implement the desired functionality in <rdar://problem/5879592>, although the diagnostics still need to be improved.
llvm-svn: 50241
2008-04-25 01:25:15 +00:00
Ted Kremenek
6e06f91085
Added uninitialized-values (path-sensitive) test case as a regression test
...
for the fix in r50178 (http://llvm.org/viewvc/llvm-project?rev=50178&view=rev ).
This fix was for <rdar://problem/5881148>.
llvm-svn: 50220
2008-04-24 18:28:14 +00:00
Ted Kremenek
78120c8b3a
Added test case for functionality fix in rdar://problem/5886141 (handle variadic CF Create functions).
...
llvm-svn: 50219
2008-04-24 18:17:14 +00:00
Ted Kremenek
c79c0591d6
Added lval type (and tracking) for StringLiterals.
...
llvm-svn: 50109
2008-04-22 21:39:21 +00:00
Ted Kremenek
eccf3e5821
Added "nonlval::LValAsInteger" to represent abstract LVals casted to integers, allowing us to track lvals when they are casted back to pointers.
...
llvm-svn: 50108
2008-04-22 21:10:18 +00:00
Ted Kremenek
6fdd3b35dc
Added null dereference test involving arrays.
...
llvm-svn: 50084
2008-04-22 04:56:55 +00:00
Fariborz Jahanian
a591a12ea5
Allow property in base class to be implemented in a
...
derived class.
llvm-svn: 50074
2008-04-21 23:57:08 +00:00
Ted Kremenek
efa92f1dfc
Added missing expected-warning.
...
llvm-svn: 50073
2008-04-21 23:45:26 +00:00
Ted Kremenek
503924bb9c
Added null dereference test case looking for null dereferences involving MemberExpr.
...
llvm-svn: 50072
2008-04-21 23:44:17 +00:00
Fariborz Jahanian
c6bec7b6dc
More semantics checks of properties. Property implementation can implicitly use
...
ivar of same name.
Better diagnostics to bring home this point.
llvm-svn: 50065
2008-04-21 21:57:36 +00:00
Fariborz Jahanian
f2a7d7c949
Support for @dynamic AST build.
...
More property semantics checking.
First test case for ObjC2's property implementation.
llvm-svn: 50057
2008-04-21 21:05:54 +00:00
Douglas Gregor
89f238cbe1
Clean up handling of function redeclarations
...
llvm-svn: 50021
2008-04-21 02:02:58 +00:00
Nate Begeman
1c906206b8
Fix PR2236
...
Add test
Implement feedback from Chris re: PR1998
llvm-svn: 50001
2008-04-20 20:38:08 +00:00
Chris Lattner
14cd1ee95f
Two improvements to initializer parsing:
...
1. If we hit a semantic error, try harder to recover to emit
diagnostics for later initializer errors (PR2241).
2. Don't leak parsed initializers on an error.
llvm-svn: 49998
2008-04-20 19:07:56 +00:00
Nate Begeman
ce4d7fce6b
OCUVector -> ExtVector, shorthand for extended vector, per feedback from Chris.
...
llvm-svn: 49942
2008-04-18 23:10:10 +00:00
Nuno Lopes
42dd577238
fix __attribute__(format) for struct function pointer fields
...
llvm-svn: 49938
2008-04-18 22:43:39 +00:00
Ted Kremenek
217e9bff2b
Added test cases to test for reference count leaks.
...
llvm-svn: 49885
2008-04-18 02:00:02 +00:00
Ted Kremenek
b47c742002
Add extra test cases to test "escaping" for the reference count checker.
...
llvm-svn: 49812
2008-04-16 20:41:27 +00:00
Ted Kremenek
bba6a4b367
Update CF reference count checker test case to illustrate the use of
...
toll-free bridging.
llvm-svn: 49772
2008-04-16 04:29:21 +00:00
Ted Kremenek
15d8f4cc27
Added test case illustrating the use of '&'.
...
llvm-svn: 49735
2008-04-15 18:37:29 +00:00
Steve Naroff
1dc53ef494
Rename RewriteTest->RewriteObjC.
...
llvm-svn: 49692
2008-04-14 22:03:09 +00:00
Ted Kremenek
69a4df4cb7
Updated test cases so that they do not emit warnings for dead stores.
...
llvm-svn: 49659
2008-04-14 17:40:10 +00:00
Ted Kremenek
16a8a3be41
Added test case to dead stores checker.
...
llvm-svn: 49647
2008-04-14 15:56:17 +00:00
Douglas Gregor
556877c1e6
This patch adds very basic support for parsing and type-checking class
...
inheritance in C++. It'll parse the base-specifier list, e.g.,
class D : public B1, virtual public B2 { };
and do some of the simpler semantic checks (B1 and B2 are classes;
they aren't unions or incomplete types, etc).
llvm-svn: 49623
2008-04-13 21:30:24 +00:00
Douglas Gregor
83a586ec19
Introduce support for finding class and enum names via ordinary name lookup in C++
...
llvm-svn: 49621
2008-04-13 21:07:44 +00:00
Chris Lattner
f8f945499c
Fix PR2220, making diagnostics for unexpected tokens in pp expressions
...
more nice.
llvm-svn: 49619
2008-04-13 20:38:43 +00:00
Chris Lattner
d71f83a8cb
this started failing because a GEP was constant folded,
...
improve the robustness of the test.
llvm-svn: 49618
2008-04-13 19:54:28 +00:00
Chris Lattner
b0d3844fb8
Default argument cleanups and minor improvements, patch by
...
Doug Gregor!
llvm-svn: 49598
2008-04-12 23:52:44 +00:00
Ted Kremenek
a7c44113bc
Changed behavior of how we handle "NULL" summaries: just call
...
GRSimpleVals::EvalCal(), and don't change reference counts.
Remove "getDoNothingSummary()", as a NULL summary does the same thing.
Added temporary hack for the "Get" rule for objects that return a pointer type:
treat them as non-owned CF objects.
Added test case to detect the release of a non-owned object.
llvm-svn: 49555
2008-04-11 20:11:19 +00:00
Ted Kremenek
4b77209694
Fixed some logic errors in the CF ref count checker; we now can detect simple
...
use-after-release errors. Added test case.
llvm-svn: 49509
2008-04-10 23:44:06 +00:00
Ted Kremenek
4a78c3ae11
Refactored all logic to run the GRSimpleVals and CFRef checker into a common
...
code path in the clang driver.
Renamed options --grsimple to -checker-simple and -check-cfref to -checker-cfref.
llvm-svn: 49500
2008-04-10 22:16:52 +00:00
Chris Lattner
0e91b41902
typedef void T;
...
void f(T);
is only invalid in C++ mode, not C89 mode.
llvm-svn: 49460
2008-04-10 02:26:16 +00:00
Chris Lattner
58258246ec
Several improvements from Doug Gregor related to default
...
argument handling. I'll fix up the c89 (void) thing next.
llvm-svn: 49459
2008-04-10 02:22:51 +00:00
Chris Lattner
aa9c7aed0f
Add support for C++ default arguments, and rework Parse-Sema
...
interaction for function parameters, fixing PR2046.
Patch by Doug Gregor!
llvm-svn: 49369
2008-04-08 04:40:51 +00:00
Chris Lattner
3c7961597f
merge compatibility testing of qualified/unqualified interfaces together
...
and fix a bug.
llvm-svn: 49322
2008-04-07 06:38:24 +00:00
Chris Lattner
c9062d01d7
MyOtherClass<MyProtocol>* is compatible with MyClass*
...
if MyClass is a superclass of MyOtherClass, there is no need for
an exact interface match.
llvm-svn: 49320
2008-04-07 06:06:56 +00:00
Chris Lattner
56a7bf5a7e
remove the old non-parallel test system. 'make' in clang/test now runs
...
the tests in parallel.
llvm-svn: 49290
2008-04-06 22:32:01 +00:00
Chris Lattner
285a3e47be
reject 'int test(x, x) int x; {}'
...
llvm-svn: 49271
2008-04-06 06:50:56 +00:00
Chris Lattner
67b450cb48
reject 'typedef int y; int test(x, y)'.
...
llvm-svn: 49270
2008-04-06 06:47:48 +00:00
Chris Lattner
9d51f2b9d4
Fix handling of implicit int, resolving PR2012 and reverting (and
...
subsuming) my patch for PR1999.
llvm-svn: 49251
2008-04-05 06:32:51 +00:00
Chris Lattner
94fc8063b4
Step #1 to fixing PR2012: c89 allows declspecs to be completely
...
missing from function definitions only. If we see a function
definiton with missing declspecs, just fudge in an int.
llvm-svn: 49250
2008-04-05 05:52:15 +00:00
Chris Lattner
579a05d767
Fix PR2049, updating Eli's patch that fixes to mainline. This produces incorrect
...
code, but the codegen doesn't crash. I'll file a bugzilla for the AST being wrong.
llvm-svn: 49226
2008-04-04 18:42:16 +00:00
Chris Lattner
f3bc75afcf
Since isComplexType() no longer returns true for _Complex integers, the code
...
generator needs to call isAnyComplexType(). This fixes PR1960.
llvm-svn: 49220
2008-04-04 16:54:41 +00:00
Steve Naroff
3913ea4bfb
Add explicit support for diagnosing implicit function decls.
...
Without this, the diagnostic is very confusing. The diag is now consistent with gcc as well.
llvm-svn: 49214
2008-04-04 14:32:09 +00:00
Seo Sanghyeon
055c94f2f8
PR1963: Address of function is a constant expression
...
llvm-svn: 49212
2008-04-04 09:45:30 +00:00
Chris Lattner
e799eb5daa
Fix PR2081 (problems codegen'ing some recursive structures) patch
...
by Lauro Venancio!
llvm-svn: 49144
2008-04-03 05:50:42 +00:00
Steve Naroff
778927532d
Change ObjCInterfaceDecl to inherit from NamedDecl (not TypeDecl). While ObjCInterfaceDecl is arguably a TypeDecl, it isn't a ScopedDecl. Since TypeDecl's are scoped, it makes sense to simply treat them as NamedDecl's. I could have fiddled a bit more with the hierarchy (in terms of creating a non-scoped TypeDecl), however this probably isn't worth the effort.
...
I also finished unifying access to scope decl change by converting Sema::getObjCInterfaceDecl() to use Sema::LookupDecl(). This is much cleaner now:-)
llvm-svn: 49107
2008-04-02 18:30:49 +00:00
Chris Lattner
6f6d226f63
improve error to be something end users will actually understand :)
...
llvm-svn: 49097
2008-04-02 17:15:17 +00:00
Ted Kremenek
018ba60f8e
Added path-sensitive null dereference test case.
...
llvm-svn: 49095
2008-04-02 16:54:39 +00:00
Chris Lattner
daaa8ba77e
1) Enforce C99 6.7.3p2: "Types other than pointer types derived from
...
object or incomplete types shall not be restrict-qualified."
2) Warn about qualifiers on function types: C99 6.7.3p8: "If the
specification of a function type includes any type qualifiers, the
behavior is undefined."
3) Implement restrict on C++ references.
4) fix some locations for various C++ reference diagnostics.
llvm-svn: 49081
2008-04-02 06:50:17 +00:00
Chris Lattner
a21ad8058a
Fix several bugs in array -> pointer decomposition.
...
First, we got several CVR propagation cases wrong, which Eli pointed
out in PR2039.
Second, we didn't propagate address space qualifiers correctly, leading
to incorrect lowering of code in CodeGen/address-space.c.
Third, we didn't uniformly propagate the specifier in the array to the
pointer ("int[restrict 4]" -> "int *restrict").
This adds an ASTContext::getArrayDecayedType member that handles the
non-trivial logic for this seemingly simple operation.
llvm-svn: 49078
2008-04-02 05:18:44 +00:00
Chris Lattner
81cb9e8637
Fix PR2017 and silence some bogus errors.
...
llvm-svn: 49068
2008-04-02 01:05:10 +00:00
Steve Naroff
257520b1b4
Fairly large "cleaup" related to changing ObjCCompatibleAliasDecl superclass (to inherit from NamedDecl, instead of ScopedDecl).
...
- Added a DenseMap to associate an IdentifierInfo with the ObjCCompatibleAliasDecl.
- Renamed LookupScopedDecl->LookupDecl and changed it's return type to Decl. Also added lookup for ObjCCompatibleAliasDecl's.
- Removed Sema::LookupInterfaceDecl(). Converted clients to used LookupDecl().
- Some minor indentation changes.
Will deal with ObjCInterfaceDecl and getObjCInterfaceDecl() in a separate commit...
llvm-svn: 49058
2008-04-01 23:04:06 +00:00
Ted Kremenek
f646774f32
Added path-sensitive check for return statements that return the address
...
of a stack variable. This is the path-sensitive version of a check that
is already done during semantic analysis.
llvm-svn: 48980
2008-03-31 15:02:58 +00:00
Chris Lattner
59a2594f3f
rename Decl::CompatibleAlias -> ObjCCompatibleAlias.
...
Fix objc ivar lookup. Ivar lookup should occur between lookup
of method-local values and lookup of globals. Emulate this with
some logic in the handling of Sema::ActOnIdentifierExpr.
Two todo's left:
1) sema shouldn't turn a bare reference to an ivar into "self->ivar"
in the AST. This is a hack.
2) The new ScopedDecl::isDefinedOutsideFunctionOrMethod method does
not correctly handle typedefs and enum constants yet.
llvm-svn: 48972
2008-03-31 00:36:02 +00:00
Steve Naroff
f9e7c90129
Only have the rewriter produce a file when there are no errors.
...
llvm-svn: 48926
2008-03-28 22:26:09 +00:00
Steve Naroff
0de4199ca0
Make sure Sema::ActOnClassMessage() correctly diagnoses "super".
...
llvm-svn: 48924
2008-03-28 21:37:05 +00:00
Ted Kremenek
276278e5d2
Expanded NSString checking to check for nil for a few more methods.
...
llvm-svn: 48898
2008-03-27 22:05:32 +00:00
Ted Kremenek
2e4e7ccb22
Add line SourceLocation to NSString checks.
...
Added test case to test warning about passing 'nil' to NSString's compare: method.
llvm-svn: 48896
2008-03-27 21:23:57 +00:00
Steve Naroff
c10c2e339f
Fix rewriter tests to work with new output file logic. This changes forces the output to standard out (rather than generate a .cpp file, which is the new default for the rewriter).
...
llvm-svn: 48847
2008-03-26 22:28:40 +00:00
Ted Kremenek
9dd6ddec63
Added test case for static analysis to warn about passing uninitialized values as arguments (not the receiver) in message expressions.
...
llvm-svn: 48845
2008-03-26 22:00:11 +00:00
Ted Kremenek
a1d9ed137a
Added test case for static analyzer to detect uses of uninitialized pointers as receivers in Objective-C message expressions.
...
Added test case directory "Analysis-Apple" which is only run on Apple (darwin) machines.
llvm-svn: 48844
2008-03-26 21:51:44 +00:00
Nuno Lopes
623207d603
allow the format attribute to be specified in function pointer prototypes
...
# this is my first commit here, so please be gentle :)
llvm-svn: 48807
2008-03-25 23:01:48 +00:00
Nate Begeman
c506c78117
Extend QualType::getAddressSpace to do the right thing for array types, and in
...
the future, RecordTypes.
llvm-svn: 48784
2008-03-25 18:36:32 +00:00
Sam Bishop
ac92a13c86
The newest version of valgrind, 3.3.0, no longer appends PIDs to log filenames
...
by default. Adding a %p works with this new version and is backwards
compatible, though it looks a little funny.
llvm-svn: 48698
2008-03-23 03:42:18 +00:00
Ted Kremenek
fb475ec504
Changed merge operation for uninitialized values analysis to "intersect" (previous union).
...
The effect is that if a variable is uninitialized along a branch (but initialized along another), at merge points it is considered uninitialized. Previously we had the opposite behavior. The new behavior is more conservative, and more in line with gcc's behavior.
llvm-svn: 48689
2008-03-22 20:11:00 +00:00
Chris Lattner
97d496c182
Teach the rewriter how to respect the -o option.
...
llvm-svn: 48669
2008-03-22 00:08:40 +00:00
Chris Lattner
4f55259237
fix this test.
...
llvm-svn: 48668
2008-03-22 00:07:50 +00:00
Sam Bishop
f4303edfa3
Only invoke the preprocessor; it's the only thing being tested. Also, check
...
the output to make sure that the macros and comments are being treated as such.
llvm-svn: 48638
2008-03-21 08:05:55 +00:00
Sam Bishop
558447416d
Use the -E option when invoking clang. Only the preprocessor is
...
required to perform this test.
llvm-svn: 48636
2008-03-21 07:02:04 +00:00
Gabor Greif
56c563ad3f
Add ability to run clang tests under valgrind. Patch by Sam Bishop.
...
llvm-svn: 48621
2008-03-20 22:50:54 +00:00
Gabor Greif
f5eb286707
reduce chattyness of makefiles
...
llvm-svn: 48597
2008-03-20 14:28:22 +00:00
Gabor Greif
4fa19e4047
scan testdirs only once, patch by Mike Stump, thanks!
...
llvm-svn: 48589
2008-03-20 08:09:10 +00:00
Ted Kremenek
c6a8352820
Convert tabs to spaces.
...
llvm-svn: 48539
2008-03-19 07:31:52 +00:00
Gabor Greif
831c7c52c7
add 'clean' targets, make sure that 'make test' works after 'make clean'
...
llvm-svn: 48488
2008-03-18 07:03:00 +00:00
Gabor Greif
8bdc7b057d
let the %t magic happen, thanks Chris!
...
llvm-svn: 48487
2008-03-18 06:42:43 +00:00
Gabor Greif
1ac5215798
finishing touches: teminate the dots with a newline
...
llvm-svn: 48462
2008-03-17 18:36:14 +00:00
Gabor Greif
5434053f6d
Implemented verbose mode.
...
make test VERBOSE=1
should now produce the same output like
the Makefile normally does.
Without VERBOSE only the names of failed tests
are printed.
I am pretty comfortable with this version, and
I think it is time to switch over to Makefile.parallel
to be the default.
What do you think? Did I forget some piece of feedback?
llvm-svn: 48458
2008-03-17 16:29:58 +00:00
Gabor Greif
430efdb95b
Simplify further by creating *.testresults files
...
inside of the Output/ directory.
The testclean target could be removed now.
llvm-svn: 48457
2008-03-17 15:58:58 +00:00
Gabor Greif
4892b3fd5b
Get rid of the creation of secondary makefile "Makefile.tests".
...
This implements second part of
<http://lists.cs.uiuc.edu/pipermail/cfe-commits/Week-of-Mon-20080310/004727.html >.
llvm-svn: 48456
2008-03-17 15:37:09 +00:00
Gabor Greif
2fc473069d
More review feedback implemented:
...
Get rid of "awk" dependence by using same "make"
functionality:
<http://lists.cs.uiuc.edu/pipermail/cfe-commits/Week-of-Mon-20080310/004727.html >
llvm-svn: 48455
2008-03-17 15:07:59 +00:00
Gabor Greif
d8d1b60237
Actually expand the %t1 patterns (in RUN: lines) to a unique
...
filename.
This fixes (e.g.) CodeGen/struct-x86-darwin.c which
raced at writing to "%t1" with other tests when parallel
testing was specified with a high "-j XX" value.
Also gets rid of the file tools/clang/test/%t1
when doing an "svn st" after testing.
llvm-svn: 48454
2008-03-17 13:45:47 +00:00
Gabor Greif
8eea5b51b5
Second round of review feedback.
...
* print out message when tests start
* testrunner sets status now
* on failed test run print out test name
I tested these changes with the non-parallel makefile
and it did not break.
llvm-svn: 48453
2008-03-17 12:35:00 +00:00
Gabor Greif
2c7f144ab7
implement a bit of feedback: print dots
...
llvm-svn: 48394
2008-03-15 08:11:35 +00:00
Gabor Greif
322f055e05
First draft of a parallelized test methodology. Improvements soon.
...
llvm-svn: 48391
2008-03-15 07:26:41 +00:00
Nate Begeman
b561de7455
Correctly error on arrays with automatic storage full of objects with
...
non-default address space, and fix comment.
Add a test for this.
llvm-svn: 48366
2008-03-14 18:07:10 +00:00
Nate Begeman
144625ef9b
ISO/IEC TR 18037
...
An address space name cannot be used to qualify an object that has automatic
storage duration. Still not catching ASQual'd allocas of array type, just
scalars at the moment.
llvm-svn: 48350
2008-03-14 00:22:18 +00:00
Steve Naroff
35cb7960e3
Two fixes to RewriteTest::RewriteObjCIvarRefExpr():
...
- For explicit ivar refers, make sure the cast is propagated to the AST.
- Don't free the base (since it is still in use).
This fixes the recent regression to test/Rewriter/objc-ivar-receiver-1.m.
llvm-svn: 48309
2008-03-12 23:15:19 +00:00
Steve Naroff
4182fd56ad
Since the rewriter now outputs C++, it no longer makes sense to pipe the output to clang.
...
This should "fix" all but one of the test failure.
llvm-svn: 48275
2008-03-12 02:07:40 +00:00
Chris Lattner
4114219ac6
rewriter tests are darwin specific, don't run them on other platforms.
...
llvm-svn: 48168
2008-03-10 19:32:31 +00:00
Chris Lattner
3e4683262e
implement simple support for arbitrary token lookahead. Change the
...
objc @try parser to use it, fixing a FIXME. Update the
objc-try-catch-1.m file to pass now that we get more reasonable
errors.
llvm-svn: 48129
2008-03-10 06:06:04 +00:00
Nate Begeman
be6bb8efac
Add new test
...
llvm-svn: 48018
2008-03-07 20:04:49 +00:00
Ted Kremenek
7bdd630334
Patch by Nuno Lopes:
...
Added more comments for code processing attribute "format".
Added more checks for corner cases, test cases, and warnings.
llvm-svn: 48011
2008-03-07 18:43:49 +00:00
Chris Lattner
54ee63886e
remove two obsolete tests, not sure why my previous commit didn't commit the removal.
...
llvm-svn: 47986
2008-03-06 05:47:17 +00:00
Chris Lattner
855d024a83
Remove the first layer of support for "portability" warnings. This is
...
theoretically useful, but not useful in practice. It adds a bunch of
complexity, and not much value. It's best to nuke it. One big advantage
is that it means the target interfaces will soon lose their SLoc arguments
and target queries can never emit diagnostics anymore (yay). Removing this
also simplifies some of the core preprocessor which should make it slightly
faster.
Ted, I didn't simplify TripleProcessor, which can now have at most one
triple, and can probably just be removed. Please poke at it when you have
time.
llvm-svn: 47930
2008-03-05 01:18:20 +00:00
Chris Lattner
0fdc379475
The operand to the visibility attribute is required to be a quoted string, not a bare identifier.
...
llvm-svn: 47893
2008-03-04 18:08:48 +00:00
Chris Lattner
8e48dfe9a1
move deprecated -> attributes.c
...
llvm-svn: 47856
2008-03-03 21:17:42 +00:00
Gabor Greif
e2e5c3f394
The attribute nothrow maps to llvm attribute nounwind. Fix testcase.
...
llvm-svn: 47841
2008-03-03 14:53:09 +00:00
Gabor Greif
76ac5cf9d3
Chris added this testcase with r47837. The mail only shows one todo-warning but I see 3. Strangeness. Correcting lines 16 and 24.
...
llvm-svn: 47840
2008-03-03 14:30:39 +00:00
Chris Lattner
65079bd9be
fix codegen support for functions that are nothrow and noreturn.
...
llvm-svn: 47838
2008-03-03 03:45:26 +00:00
Chris Lattner
8496639787
Add a bunch of attributes, patch by Nuno Lopes.
...
llvm-svn: 47837
2008-03-03 03:28:21 +00:00
Steve Naroff
b96e4ab649
Fix http://llvm.org/bugs/show_bug.cgi?id=2103 .
...
llvm-svn: 47775
2008-02-29 23:30:25 +00:00
Steve Naroff
83777fef1a
Fix http://llvm.org/bugs/show_bug.cgi?id=2106 .
...
llvm-svn: 47768
2008-02-29 21:48:07 +00:00
Chris Lattner
f4c1aa67bd
testcase for attr deprecated, by Nuno Lopes.
...
llvm-svn: 47757
2008-02-29 18:11:31 +00:00