Douglas Gregor
7dc42e5d4c
Implement value initialization in InitializationSequence; untested
...
WIP, yet again.
llvm-svn: 91368
2009-12-15 00:01:57 +00:00
Mike Stump
68943780a6
Add documentation for recently added code. WIP.
...
llvm-svn: 91367
2009-12-14 23:53:10 +00:00
John McCall
2079d0b974
Fix PR5716 by bandaging over the solution until we can come back to it.
...
I apologize for friend declarations.
llvm-svn: 91359
2009-12-14 23:19:40 +00:00
Fariborz Jahanian
3914ee8fcd
Make test more generic.
...
llvm-svn: 91349
2009-12-14 22:17:35 +00:00
Ted Kremenek
814c416636
Fix: <rdar://problem/7468209> SymbolManager::isLive() should not crash on captured block variables that are passed by reference
...
llvm-svn: 91348
2009-12-14 22:15:06 +00:00
Mike Stump
590d18f103
We have to allow one to form an address for one past the end. WIP.
...
llvm-svn: 91347
2009-12-14 22:14:31 +00:00
Chris Lattner
ffbf2de1d8
move the VarargsElided member of MacrosArgs to shrink the MacroArgs struct
...
on 64-bit targets. Pass Preprocessor into create/destroy methods of MacroArgs
even though it isn't used yet.
llvm-svn: 91345
2009-12-14 22:12:52 +00:00
Chris Lattner
d2fa78d0bd
fix typo
...
llvm-svn: 91343
2009-12-14 22:02:43 +00:00
Mike Stump
ba6a0c40c4
Add support for detecting undefined shift behavior. WIP.
...
llvm-svn: 91341
2009-12-14 21:58:14 +00:00
Fariborz Jahanian
9ac0a04b29
Patch to fix 32-bit @try failure with internal assertion when compiling
...
an Objective-C rethrow nested inside another try/catch block. (fixes radar 7466728).
llvm-svn: 91335
2009-12-14 21:35:01 +00:00
Douglas Gregor
4881735736
Remove accidental commit containing local paths for the LLVM-Code-Syntax test
...
llvm-svn: 91326
2009-12-14 20:58:24 +00:00
Douglas Gregor
4f84661c43
Minor cleanups for constructor initialization in InitializationSequence
...
llvm-svn: 91325
2009-12-14 20:57:13 +00:00
Mike Stump
f8858af909
Simplifiy.
...
llvm-svn: 91324
2009-12-14 20:52:00 +00:00
Douglas Gregor
1e7ffa7571
Constructor initialization for InitializationSequence. Untested WIP.
...
llvm-svn: 91323
2009-12-14 20:49:26 +00:00
Douglas Gregor
d196a58b55
Improve template instantiation for object constructions in several ways:
...
- During instantiation, drop default arguments from constructor and
call expressions; they'll be recomputed anyway, and we don't want
to instantiate them twice.
- Rewrote the instantiation of variable initializers to cope with
non-dependent forms properly.
Together, these fix a handful of problems I introduced with the switch
to always rebuild expressions from the source code "as written."
llvm-svn: 91315
2009-12-14 19:27:10 +00:00
Fariborz Jahanian
d83359ac82
Make test pass in all cases.
...
llvm-svn: 91309
2009-12-14 18:38:32 +00:00
Fariborz Jahanian
df9f4c6655
Fixes an incomplete test case.
...
llvm-svn: 91304
2009-12-14 18:18:29 +00:00
Fariborz Jahanian
a01b67d7b0
Make tests use the new clang -cc1 flag.
...
llvm-svn: 91303
2009-12-14 18:00:56 +00:00
Fariborz Jahanian
6ec5119b5f
Make tests use the new clang cc1 flag.
...
llvm-svn: 91300
2009-12-14 17:51:07 +00:00
Fariborz Jahanian
c749f2b62f
Make tests use the new clang -cc1 flag.
...
llvm-svn: 91299
2009-12-14 17:47:10 +00:00
Fariborz Jahanian
0a47cdfeef
Make tests use the new clang -cc1 flag.
...
llvm-svn: 91298
2009-12-14 17:43:07 +00:00
Fariborz Jahanian
0399c1c9c0
Change tests to use clang -cc1...
...
llvm-svn: 91297
2009-12-14 17:36:25 +00:00
Douglas Gregor
540c3b0e50
Implement user-defined conversions in InitializationSequence. WPI that
...
isn't turned on anyway yet, so it cannot be tested.
llvm-svn: 91294
2009-12-14 17:27:33 +00:00
Fariborz Jahanian
5dc61d7ab5
Test uses the new clang.
...
llvm-svn: 91292
2009-12-14 17:14:55 +00:00
Fariborz Jahanian
4ee3981574
Tests use the new clang.
...
llvm-svn: 91290
2009-12-14 17:13:18 +00:00
Douglas Gregor
db121bad2a
When rebuilding CXXConstructExprs after a transformation, use
...
CompleteConstructorCall to perform type-checking.
llvm-svn: 91279
2009-12-14 16:27:04 +00:00
Zhongxing Xu
27f686f8ec
Replace clang-cc with clang -cc1.
...
llvm-svn: 91272
2009-12-14 06:34:20 +00:00
Chris Lattner
7c027ee4c2
teach clang to recover gracefully from conflict markers left in source
...
files: PR5238.
llvm-svn: 91270
2009-12-14 06:16:57 +00:00
Nate Begeman
67dfd4236a
Revert mmx palignr to use an intrinsic, since mmx shuffle patterns are missing.
...
llvm-svn: 91269
2009-12-14 05:15:02 +00:00
Chris Lattner
f290e005e4
this was a couple bugzillas too
...
llvm-svn: 91267
2009-12-14 05:03:13 +00:00
Chris Lattner
4c53c40a4c
fix rdar://7466570 - Be more bug compatible with GCC when it comes to
...
expanding directives withing macro expansions. This is undefined behavior
according to 6.10.3p11, so we might as well be undefined in ways similar to
GCC.
llvm-svn: 91266
2009-12-14 05:00:18 +00:00
Chris Lattner
b8132253c8
filecheckize
...
llvm-svn: 91265
2009-12-14 04:57:53 +00:00
Nate Begeman
72ec6bc6f4
Support x86's PALIGNR instruction without the use of a palignr intrinsic.
...
llvm-svn: 91264
2009-12-14 04:57:03 +00:00
Chris Lattner
8cf1f935c2
formatting changes.
...
llvm-svn: 91263
2009-12-14 04:54:40 +00:00
Chris Lattner
676268e45a
reduce indentation.
...
llvm-svn: 91262
2009-12-14 04:26:45 +00:00
Zhongxing Xu
cf86de4067
Use insert to avoid destroying existing nodes.
...
llvm-svn: 91258
2009-12-14 02:13:39 +00:00
Anders Carlsson
e66e2942fc
Mangle unary, binary and ternary expressions correctly.
...
llvm-svn: 91257
2009-12-14 01:45:37 +00:00
Anders Carlsson
8911229187
Rename dump to dumpDeclContext, so that call RD->dump() won't dump the decl context by default.
...
llvm-svn: 91256
2009-12-14 00:51:04 +00:00
Anders Carlsson
c67974ccb1
Simplify BuildSimpleType in the RTTBuilder to avoid using an std::vector.
...
llvm-svn: 91255
2009-12-13 23:47:29 +00:00
Douglas Gregor
1aa450a078
Fix PR5756 a different, better way: we don't have a "pointer
...
conversion to void*" according to C++ [over.ics.rank]p4b2 if the type
we're converting from is not a pointer.
llvm-svn: 91254
2009-12-13 21:37:05 +00:00
Douglas Gregor
202eb8fcfd
Don't assume that all conversions to a void pointer are converting
...
from a PointerType. Fixes PR5756.
llvm-svn: 91253
2009-12-13 21:29:20 +00:00
Douglas Gregor
b08f1a7b32
Fix template instantiation for non-dependent calls to overloaded call
...
operators. Fixes PR5266.
llvm-svn: 91252
2009-12-13 20:44:55 +00:00
Anders Carlsson
399f499f0c
Don't use a cookie if the global placement new function is used.
...
llvm-svn: 91251
2009-12-13 20:34:34 +00:00
Anders Carlsson
adbe4249d6
Fix regression in my last commit - if a struct has a trivial destructor but no usual deallocation function we don't need a cookie.
...
llvm-svn: 91249
2009-12-13 20:10:12 +00:00
Anders Carlsson
21122cf657
More array cookie improvements.
...
llvm-svn: 91247
2009-12-13 20:04:38 +00:00
Anders Carlsson
f5af8dead7
If the usual array deallocation function of a class takes two arguments, we need to pass the number of bytes allocated to the deallocation function, just not the number of bytes in a single element.
...
llvm-svn: 91246
2009-12-13 18:48:07 +00:00
Anders Carlsson
f5056f8545
Fix test.
...
llvm-svn: 91245
2009-12-13 18:30:34 +00:00
Anders Carlsson
7e0b207e54
More improvements to checking allocation and deallocation functions.
...
llvm-svn: 91244
2009-12-13 17:53:43 +00:00
Anders Carlsson
e7025c55a4
Change the RTTIBuilder's finish member function to take a pointer to the constants array + the length of the array.
...
llvm-svn: 91241
2009-12-13 16:38:01 +00:00
Daniel Dunbar
8d4a202aad
Lift builtin-include-path logic out of ASTUnit::LoadFromCommandLine and fix CIndex to pass in the right directory (previously it was using the path to the main executable, which generally is wrong).
...
llvm-svn: 91238
2009-12-13 03:46:13 +00:00
Daniel Dunbar
d613677ec9
CompilerInvocation: Move builtin-include-path logic out of CompilerInvocation::CreateFromArgs.
...
llvm-svn: 91237
2009-12-13 03:45:58 +00:00
Daniel Dunbar
85d2f8f875
Use clang -cc1 in test, to improve determinism.
...
llvm-svn: 91236
2009-12-13 02:20:49 +00:00
Daniel Dunbar
18a72959f5
Tests: Fix some bugs in clang_f_opts, options were out of order but it worked
...
because it had two inputs, except on Win32 where /dev/null doesn't exist.
llvm-svn: 91235
2009-12-13 02:00:23 +00:00
Chandler Carruth
8abbc657a9
Silence some release build warnings.
...
llvm-svn: 91234
2009-12-13 01:37:04 +00:00
Daniel Dunbar
efa39f7db1
Backend: Switch to using TargetOptions or TargetMachine to set some options instead of llvm::cl.
...
llvm-svn: 91229
2009-12-12 23:01:36 +00:00
Fariborz Jahanian
751c1e7b24
patch to add a property from a protocol to a class that adopts the protocol.
...
(fixes radar 7466494).
llvm-svn: 91227
2009-12-12 21:26:21 +00:00
Ted Kremenek
3b90ed2628
Update checker build.
...
llvm-svn: 91222
2009-12-12 19:06:20 +00:00
Douglas Gregor
6131b44183
Rework the way we handle template instantiation for
...
implicitly-generated AST nodes. We previously built instantiated nodes
for each of these AST nodes, then passed them on to Sema, which was
not prepared to see already-type-checked nodes (see PR5755). In some
places, we had ugly workarounds to try to avoid re-type-checking
(e.g., in VarDecl initializer instantiation).
Now, we skip implicitly-generated nodes when performing instantiation,
preferring instead to build just the AST nodes that directly reflect
what was written in the source code. This has several advantages:
- We don't need to instantiate anything that doesn't have a direct
correlation to the source code, so we can have better location
information.
- Semantic analysis sees the same thing at template instantiation
time that it would see for a non-template.
- At least one ugly hack (VarDecl initializers) goes away.
Fixes PR5755.
llvm-svn: 91218
2009-12-12 18:16:41 +00:00
Zhongxing Xu
c0484fa611
Add initial support for realloc() in MallocChecker.
...
llvm-svn: 91216
2009-12-12 12:29:38 +00:00
John McCall
9dab4e68b9
Remember the type name's scope specifier in the DeclSpec.
...
llvm-svn: 91215
2009-12-12 11:40:51 +00:00
Douglas Gregor
fab31f47b2
When certain diagnostics involving run-time behavior would be emitted
...
in a potentially potentially evaluated context, queue those
diagnostics and only emit them if the context ends up being
potentially evaluated. This completes the fix for PR5761.
llvm-svn: 91213
2009-12-12 07:57:52 +00:00
Douglas Gregor
c2744f5add
Give PartialDiagnostic copy semantics rather than move semantics, since we typically pass it by reference
...
llvm-svn: 91212
2009-12-12 07:48:51 +00:00
Douglas Gregor
413c6fc86c
Remove unnecessary pointers from PartialDiagnostic
...
llvm-svn: 91211
2009-12-12 07:31:50 +00:00
Douglas Gregor
7ca84af48e
Suppress warnings and errors about certain uses of non-POD types (in
...
__builtin_offsetof, passing through an ellipsis) when we're in an
unevaluated context. This is the first part of the fix to PR5761,
which deals with the simple case of an unevaluated context.
llvm-svn: 91210
2009-12-12 07:25:49 +00:00
Jeffrey Yasskin
1615d45daa
Un-namespace-qualify llvm_unreachable. It's a macro, so the qualification gave
...
no extra safety anyway.
llvm-svn: 91207
2009-12-12 05:05:38 +00:00
Eli Friedman
3950e8c411
Fix for PR4642: move work in HTMLPrinter out of the destructor.
...
llvm-svn: 91205
2009-12-12 03:36:52 +00:00
Anders Carlsson
60659a8249
Fix tyop.
...
llvm-svn: 91204
2009-12-12 02:43:16 +00:00
Mike Stump
d954638f02
Implement runtime checks for undefined behavior. WIP.
...
This implements a new flag -fcatch-undefined-behavior. The flag turns
on additional runtime checks for:
T a[I];
a[i] abort when i < 0 or i >= I.
Future stuff includes shifts by >= bitwidth amounts.
llvm-svn: 91198
2009-12-12 01:27:46 +00:00
Ted Kremenek
752ecd8818
We should only scan for nested blocks if we are analyzing the body of a function/method.
...
llvm-svn: 91196
2009-12-12 01:04:14 +00:00
Daniel Dunbar
3c6d1b52a0
Remove clang-cc tool, it has joined in unholy union with clang.
...
- tools/driver will be renamed to tools/clang at some point.
llvm-svn: 91195
2009-12-12 00:56:47 +00:00
Ted Kremenek
e1996c27eb
Convert the remainder of this test case over to using FileCheck.
...
llvm-svn: 91194
2009-12-12 00:42:52 +00:00
Daniel Dunbar
f075e62620
XFAIL this test on Win32 until I can take a look.
...
llvm-svn: 91193
2009-12-12 00:40:42 +00:00
Daniel Dunbar
62ee5340fc
Remove non-sensical FIXME.
...
llvm-svn: 91192
2009-12-12 00:39:58 +00:00
Ted Kremenek
eadc7c3537
Make using '-fshort-enums' an error until it is actually implemented (changes the ABI, so it is dangerous to not error out if we don't support it). Fixes <rdar://problem/7461006>.
...
llvm-svn: 91191
2009-12-12 00:38:18 +00:00
Anders Carlsson
e363c8e1df
Correctly diagnose [basic.stc.dynamic.allocation]p1
...
llvm-svn: 91190
2009-12-12 00:32:00 +00:00
Anders Carlsson
22f443f58c
Factor operator new declaration checking out into a separate function.
...
llvm-svn: 91189
2009-12-12 00:26:23 +00:00
Anders Carlsson
c0b2ce14cd
More work on improving the operator delete diagnostics.
...
llvm-svn: 91187
2009-12-12 00:16:02 +00:00
Douglas Gregor
9221e646f5
Switch the Emacs clang-completion-mode over to clang -cc1
...
llvm-svn: 91185
2009-12-11 23:47:56 +00:00
Daniel Dunbar
01bf3397a0
Tests: Stop looking for clang-cc, we don't need it.
...
llvm-svn: 91183
2009-12-11 23:35:10 +00:00
Anders Carlsson
f1f469554c
Fix build.
...
llvm-svn: 91182
2009-12-11 23:31:21 +00:00
Anders Carlsson
12308f41e7
Improve diagnostics for malformed delete operator function declarations.
...
llvm-svn: 91180
2009-12-11 23:23:22 +00:00
Ted Kremenek
f5303fe492
scan-build: when the build command is 'make', override the CC and CXX options by passing them as arguments to make. This fixes <rdar://problem/6790224>.
...
llvm-svn: 91179
2009-12-11 23:22:52 +00:00
Daniel Dunbar
0910cf54ac
Update a few more docs references to clang-cc.
...
llvm-svn: 91178
2009-12-11 23:17:03 +00:00
Ted Kremenek
f92b446dd4
Remove more old references to clang-cc.
...
llvm-svn: 91177
2009-12-11 23:12:52 +00:00
Daniel Dunbar
520d1e6c6b
Update docs/comments/utils/examples to refer to clang -cc1 instead of clang-cc.
...
llvm-svn: 91176
2009-12-11 23:04:35 +00:00
Daniel Dunbar
6c536aa0fb
Driver: Switch to using "clang" "-cc1" instead of "clang-cc".
...
llvm-svn: 91174
2009-12-11 23:00:49 +00:00
Daniel Dunbar
8c5024a63f
Tests: Change substitution to automagically use 'clang -cc1' instead of 'clang-cc'. I still plan to eventually rewrite the tests to clarify the magic (I will probably actually rewrite them to %clang so it is more obvious this is a variable that gets substituted).
...
llvm-svn: 91173
2009-12-11 22:52:03 +00:00
Ted Kremenek
5c512e63f4
Convert scan-build and ccc-analyzer over to using 'clang -cc1' instead of using 'clang-cc'.
...
llvm-svn: 91172
2009-12-11 22:44:53 +00:00
Fariborz Jahanian
ffe912c647
Patch to allow C-style cast from 'void *' to block pointer type.
...
(fixes radar 7465023).
llvm-svn: 91171
2009-12-11 22:40:48 +00:00
Daniel Dunbar
f72bdf7eed
Implement clang -cc1.
...
- I apologize for the link time horrors, my goal is to kill off clang-cc in fairly short order.
llvm-svn: 91170
2009-12-11 22:20:12 +00:00
John McCall
76d0994ffd
StmtDumper::VisitUnresolvedLookupExpr
...
llvm-svn: 91163
2009-12-11 21:50:11 +00:00
Fariborz Jahanian
8811885366
Consider conversion of objective-c pointer to 'bool' a
...
valid standard conversion to match g++'s behaviour.
llvm-svn: 91157
2009-12-11 21:23:13 +00:00
Eli Friedman
b095e15af4
Fix for PR5714: make sure globals that will be modified aren't marked const.
...
llvm-svn: 91156
2009-12-11 21:23:03 +00:00
Benjamin Kramer
4dab76a752
Switch PathDiagnostic to StringRef.
...
llvm-svn: 91155
2009-12-11 21:09:27 +00:00
Benjamin Kramer
2942150df0
Fix two typos.
...
llvm-svn: 91154
2009-12-11 20:53:46 +00:00
John McCall
d53cee1aa0
Reorganize testcase.
...
llvm-svn: 91153
2009-12-11 20:51:23 +00:00
Eli Friedman
3ace52b3a7
Fix linkage of type info and vtable for classes without linkage.
...
llvm-svn: 91152
2009-12-11 20:48:18 +00:00
Eli Friedman
75c9b97123
Make sure mangling doesn't crash in another case. Add some more tests.
...
llvm-svn: 91149
2009-12-11 20:21:38 +00:00
John McCall
2b058ef245
Don't enter a new scope for a namespace-qualified declarator unless we're
...
in a file context. In well-formed code, only happens with friend functions.
Fixes PR 5760.
llvm-svn: 91146
2009-12-11 20:04:54 +00:00
Douglas Gregor
3ef5952017
When code completion of an overload set fails, produce results for ordinary name lookup instead.
...
llvm-svn: 91141
2009-12-11 19:06:04 +00:00
Douglas Gregor
0f622367d3
Add a function's cv-qualifiers to the code-completion results as an
...
informative chunk.
llvm-svn: 91139
2009-12-11 18:44:16 +00:00
Douglas Gregor
800f2f0ff0
Teach code completion to instantiate templates when it needs to
...
llvm-svn: 91138
2009-12-11 18:28:39 +00:00
Douglas Gregor
7078839b0e
Member function templates can occur after . or ->
...
llvm-svn: 91137
2009-12-11 18:14:22 +00:00
Eli Friedman
30e94d047e
Fix for PR5706: let mangleName deal with mangling names without identifiers
...
correctly.
llvm-svn: 91136
2009-12-11 18:00:57 +00:00
Douglas Gregor
99fe2ad8c8
Tweak code-completion results by suppressing class template
...
specializations and class template partial specializations (they're
never named directly). Also, member access expressions only refer to
value declarations (fields, functions, enumerators, etc.) and
Objective-C property declarations; filter out everything else.
llvm-svn: 91133
2009-12-11 17:31:05 +00:00
Anders Carlsson
b41a5c9308
XFAIL this for now, fixing linkage bugs causes the order of globals to change. Will fix later today.
...
llvm-svn: 91130
2009-12-11 17:01:29 +00:00
Anders Carlsson
1d6ad50826
Move info vectors and add assertions in preparation of moving the vector directly into RTTIBuilder.
...
llvm-svn: 91129
2009-12-11 16:41:51 +00:00
Anders Carlsson
a0b98f083a
Use GetAddrOfRTTI when getting the RTTI pointer for a base class.
...
llvm-svn: 91127
2009-12-11 16:37:06 +00:00
Douglas Gregor
83c49b56fe
Class template (partial) specializations should not show up in code completion results
...
llvm-svn: 91125
2009-12-11 16:18:54 +00:00
Benjamin Kramer
b11118bd0b
Random string-related cleanups.
...
llvm-svn: 91119
2009-12-11 13:33:18 +00:00
Benjamin Kramer
8a4ad4adc1
Use StringRef.getAsInteger instead of temporary string + strtol. No intended functionality change.
...
llvm-svn: 91118
2009-12-11 13:26:32 +00:00
Eli Friedman
68396b16f6
Move the code for converting a member pointer to a bool so that it is usable
...
for logical not.
llvm-svn: 91112
2009-12-11 09:26:29 +00:00
Eli Friedman
1762cf2ad0
Fix for PR5718: implement equality comparisons for member function pointers.
...
llvm-svn: 91108
2009-12-11 07:36:43 +00:00
Ted Kremenek
f6d9cebafd
Enhance understanding of VarRegions referenced by a block whose declarations are outside the current stack frame. Fixes <rdar://problem/7462324>.
...
llvm-svn: 91107
2009-12-11 06:43:27 +00:00
Zhongxing Xu
9cb53b86af
Completely evaluate malloc/free in MallocChecker.cpp.
...
llvm-svn: 91100
2009-12-11 03:09:01 +00:00
John McCall
0048c5115d
Test member template using hiding.
...
llvm-svn: 91099
2009-12-11 02:55:56 +00:00
Anders Carlsson
fd7dfeb779
Improve linkage of RTTI data structures. Introduce CodeGenModule::GetAddrOfRTTI which figures out the right linkage of the RTTI information for the given type and whether it should be defined or not. I will migrate clients over to GetAddrOfRTTI in subsequent commits (with tests).
...
llvm-svn: 91098
2009-12-11 02:46:30 +00:00
Eli Friedman
ad6c2e5b3a
Fix a recent regression from the initialization changes.
...
llvm-svn: 91097
2009-12-11 02:42:07 +00:00
John McCall
a17e83e437
Check if the target of a using decl is already declared in this scope before
...
doing any of the other redeclaration checks. We were missing a few cases.
Fixes PR 5752.
llvm-svn: 91096
2009-12-11 02:33:26 +00:00
John McCall
a009726ce3
Implement access declarations. Most of the work here is parsing them, which
...
is difficult because they're so terribly, terribly ambiguous.
We implement access declarations in terms of using declarations, which is
quite reasonable. However, we should really persist the access/using
distinction in the AST and use the appropriate name in diagnostics. This
isn't a priority, so I'll just file a PR and hope someone else does it. :)
llvm-svn: 91095
2009-12-11 02:10:03 +00:00
Chris Lattner
56caf31afb
Give the "cannot pass object of non-POD type 'class C' through variadic constructor; call will abort at runtime" warning a -W flag (non-pod-varargs) and default it being an error by default. There is no good reason to allow users to get bitten by this sort of thing by default.
...
llvm-svn: 91094
2009-12-11 01:52:50 +00:00
Eli Friedman
d0e6097bb0
Fix the handling of dependent enums per C++ DR 502.
...
llvm-svn: 91089
2009-12-11 01:34:50 +00:00
Anders Carlsson
c988201417
Use named flags in RTTIBuilder::BuildPointerType.
...
llvm-svn: 91088
2009-12-11 01:27:37 +00:00
Anders Carlsson
0c6a7d8f42
When extending the lifetime of a temporary, make sure to emit a branch to the cleanup exit block. This fixes a broken module error in LLVMCConfigurationEmitter.cpp.
...
llvm-svn: 91086
2009-12-11 01:00:09 +00:00
Zhongxing Xu
1239de1592
Use 'class' instead of 'struct'.
...
llvm-svn: 91085
2009-12-11 00:55:44 +00:00
Anders Carlsson
afd1edb52e
When an exception needs to be freed by calling __cxa_exception_free, make sure to stash away the exception pointer somewhere.
...
This fixes an "Instruction does not dominate all uses!" verification error when compiling TableGen.
llvm-svn: 91084
2009-12-11 00:32:37 +00:00
Daniel Dunbar
ff141799fb
Remove this test for now, it is flaky.
...
llvm-svn: 91083
2009-12-11 00:27:30 +00:00
Daniel Dunbar
2f1a6c1104
FileManager: Do not cache failed stats, it is easy to construct common
...
inconsistent situations if we do, and they are not important for PCH performance
(which currently only needs the stats to construct the initial FileManager
entries).
- No test case, sorry, the machinations are too involved.
This occurs when, for example, the build makes a PCH file and has a header map
or a -I for a directory that does not yet exist. It is possible we will cache
the negative stat on that directory, and then in the build we will never find
header files inside that dir.
For PCH we don't need these stats anyway for performance, so this also makes PCH
files smaller w/ no loss. I hope to eventually eliminate the stat cache
entirely.
llvm-svn: 91082
2009-12-11 00:27:20 +00:00
Fariborz Jahanian
73fab4f3f4
Patch to fix a crash trying to access a category name in
...
objective-c++ mode and also removed dead-code in this area.
(fixes radar 7456710).
llvm-svn: 91081
2009-12-11 00:26:36 +00:00
Mike Stump
18f4196792
Testcase for recent checkin.
...
llvm-svn: 91080
2009-12-11 00:10:15 +00:00
Mike Stump
6da5d75449
Implement just a bit more of inline assembly.
...
llvm-svn: 91079
2009-12-11 00:04:56 +00:00
Mike Stump
37077bf651
Fix spacing.
...
llvm-svn: 91078
2009-12-11 00:02:10 +00:00
Mike Stump
e1f6280093
Don't complain about falling off the end of a function with an asm
...
block, if the function is supposed to return a value as we don't know
exactly what the asm code does.
llvm-svn: 91073
2009-12-10 22:57:48 +00:00
Douglas Gregor
01ddf7a65f
clang_getCompletionChunkText() will treat optional strings as empty text blocks
...
llvm-svn: 91072
2009-12-10 22:46:19 +00:00
Eli Friedman
d70bbfd7d8
Support unary type traits in a scalar context. Not that I've actually seen
...
this construct, but might as well for completeness.
llvm-svn: 91071
2009-12-10 22:40:32 +00:00
Eli Friedman
ee275c82ff
Clean up enum constants so that they're finally sane. Fixes PR3173 and a
...
recently introduced crash.
llvm-svn: 91070
2009-12-10 22:29:29 +00:00
Anders Carlsson
781161dc55
Make sure that explicitly instantiated functions get the right linkage.
...
llvm-svn: 91069
2009-12-10 22:25:34 +00:00
Douglas Gregor
96156a46e0
Beef up Clang-on-LLVM testing a bit, by making LLVM-Syntax recursive
...
(since we now parse all of the headers appropriately) and teaching
LLVM-Code-Syntax about the extra paths needed to parse the backends.
llvm-svn: 91068
2009-12-10 22:08:55 +00:00
Benjamin Kramer
e9ff5fe2e6
Privatize class members.
...
llvm-svn: 91067
2009-12-10 21:50:21 +00:00
John McCall
7a2865a217
Actually try to trigger the last diagnostic in the declaration-collision test case.
...
Surprisingly, we *do* diagnose one of them. Since we don't really track scopes into
instantiation, this has to signal some kind of bug.
llvm-svn: 91063
2009-12-10 21:17:25 +00:00
Fariborz Jahanian
f63a028756
No need to add -x objecitve-c++
...
llvm-svn: 91060
2009-12-10 20:57:43 +00:00
Fariborz Jahanian
798d2bd546
Add support for finding composite type of twp objective-c pointers
...
in objective-c++ mode.
llvm-svn: 91059
2009-12-10 20:46:08 +00:00
John McCall
e29c5cd239
Improve the diagnostic when a new declaration conflicts with a using shadow
...
declaration. Rename note_using_decl to note_using, which is possibly less confusing.
Add a test for non-class-scope using decl collisions and be sure to note the case
we can't diagnose yet.
llvm-svn: 91057
2009-12-10 19:51:03 +00:00
Fariborz Jahanian
a430f71406
Move composite type finding of two objective-c expressions
...
into its own helper method. No change in functionality.
llvm-svn: 91056
2009-12-10 19:47:41 +00:00
Douglas Gregor
5b747a169e
Implement C++ DR437, which involves exception-specifications that name
...
a type currently being defined, from Nicola Gigante!
llvm-svn: 91052
2009-12-10 18:13:52 +00:00
Douglas Gregor
51e77d5ab0
Move initialization via initializer list over to InitializationSequences.
...
llvm-svn: 91050
2009-12-10 17:56:55 +00:00
John McCall
84d8767c15
Implement redeclaration checking and hiding semantics for using declarations. There
...
are a couple of O(n^2) operations in this, some analogous to the usual O(n^2)
redeclaration problem and some not. In particular, retroactively removing
shadow declarations when they're hidden by later decls is pretty unfortunate.
I'm not yet convinced it's worse than the alternative, though.
llvm-svn: 91045
2009-12-10 09:41:52 +00:00
Eli Friedman
e919e382a4
Fix for PR5515: allow "merging" array bounds both forwards and backwards.
...
llvm-svn: 91044
2009-12-10 08:54:47 +00:00
Eli Friedman
d011893e86
Test for r90950.
...
llvm-svn: 91043
2009-12-10 08:51:23 +00:00
Anders Carlsson
bf56946073
Mangle static variables inside Objective-C methods in Objective-C++. We currently mangle them the same way as gcc does.
...
llvm-svn: 91042
2009-12-10 03:14:39 +00:00
Eli Friedman
d5bc94e2eb
Get rid of static variable.
...
llvm-svn: 91041
2009-12-10 02:21:21 +00:00
Chris Lattner
3c674cf804
If we enter parens, colons can become un-sacred, allowing us to emit
...
a better diagnostic in the second example.
llvm-svn: 91040
2009-12-10 02:08:07 +00:00
Chris Lattner
244b96ba0a
fix a more evil case of : / :: confusion arising in ?:.
...
llvm-svn: 91039
2009-12-10 02:02:58 +00:00
Chris Lattner
17c3b1f278
fix incorrect parsing of bitfields pointed out by Doug. I chose
...
to use ColonProtectionRAIIObject in the C codepath even though it
won't matter for consistency.
llvm-svn: 91037
2009-12-10 01:59:24 +00:00
Anders Carlsson
fefc7b8e7b
Actually store the pointer into the global variable, spotted by Eli.
...
llvm-svn: 91036
2009-12-10 01:58:33 +00:00
Mike Stump
3c6a12ca65
Setup cleanup on eh edge out of the construction of the cleanup object
...
during throw to deallocate the exception object. WIP.
llvm-svn: 91035
2009-12-10 01:52:30 +00:00
Chris Lattner
399df12fb1
minimal fix for PR5743
...
llvm-svn: 91032
2009-12-10 01:38:15 +00:00
Anders Carlsson
a72ddd4609
Handle emitting static variables that have reference type.
...
llvm-svn: 91027
2009-12-10 01:05:11 +00:00
Anders Carlsson
364051c6a6
Separate generating code for static variables and global variables.
...
llvm-svn: 91026
2009-12-10 00:57:45 +00:00
Anders Carlsson
3c951d1ae0
Fix tabs.
...
llvm-svn: 91025
2009-12-10 00:57:18 +00:00
Chris Lattner
b2434d558d
Second half of r91023, saving files is good.
...
llvm-svn: 91024
2009-12-10 00:45:15 +00:00
Chris Lattner
5701386620
move GreaterThanIsOperatorScope into RAIIObjectsForParser. Add some more
...
TODOs for other classes that could be moved out of Parser.h. I don't plan
to do these in the near term though.
llvm-svn: 91023
2009-12-10 00:44:03 +00:00
Chris Lattner
125c0ee5c7
fix PR5740: a colon is sacred when parsing case statement expressions!
...
llvm-svn: 91016
2009-12-10 00:38:54 +00:00
Chris Lattner
793c75a28f
rename testcase
...
llvm-svn: 91015
2009-12-10 00:37:13 +00:00
Chris Lattner
d5c1c9d0ae
refactor the 'ColonIsSacred' argument to ParseOptionalCXXScopeSpecifier
...
to be a bool in Parser that is twiddled by the ColonProtectionRAIIObject
class. No functionality change.
llvm-svn: 91014
2009-12-10 00:32:41 +00:00
Anders Carlsson
633c6f6f36
Move more decl related functions to CGDeclCXX.cpp
...
llvm-svn: 91012
2009-12-10 00:30:05 +00:00
Chris Lattner
8a9a97a660
rename ExtensionRAIIObject.h -> RAIIObjectsForParser.h
...
llvm-svn: 91008
2009-12-10 00:21:05 +00:00
Anders Carlsson
bc49cfed84
Add CGDeclCXX.cpp and move EmitCXXGlobalVarDeclInit there.
...
llvm-svn: 91006
2009-12-10 00:16:00 +00:00
Nuno Lopes
221c1fd63e
spread 'const' love to some variables. this considerably reduces the amount of dirty data around.
...
llvm-svn: 91002
2009-12-10 00:07:02 +00:00
Mike Stump
75546b8c88
Fixup spacing.
...
llvm-svn: 91001
2009-12-10 00:06:18 +00:00
Mike Stump
2600491817
Fix spacing.
...
llvm-svn: 91000
2009-12-10 00:05:14 +00:00
Mike Stump
f5cbb08c4b
Ensure we only generate one terminate handler.
...
llvm-svn: 90998
2009-12-10 00:02:42 +00:00
Mike Stump
3b60f034f9
Remove obsolete FIXME and some dead fallback code.
...
llvm-svn: 90997
2009-12-09 23:52:09 +00:00
Mike Stump
102530719f
Add terminate handler to cleanups on exceptional edges.
...
llvm-svn: 90996
2009-12-09 23:49:53 +00:00
Fariborz Jahanian
531c16f9fb
Code gen for ObjCIsaExpr AST used as lvalue.
...
(fixes radar 7457534).
llvm-svn: 90995
2009-12-09 23:35:29 +00:00
Mike Stump
25b20fc2ae
Add terminate handler for copy constructors for thrown objects. WIP.
...
llvm-svn: 90994
2009-12-09 23:31:35 +00:00
Ted Kremenek
8573913760
Fix null dereference in OSAtomicChecker and special case SymbolicRegions. We still aren't handling them correctly; I've added to failing test cases to test/Analysis/NSString-failed-cases.m that should pass and then be merged in to test/Analysis/NSString.m.
...
llvm-svn: 90993
2009-12-09 23:29:55 +00:00
Douglas Gregor
3e1e527826
Reimplement reference initialization (C++ [dcl.init.ref]) using the
...
new notion of an "initialization sequence", which encapsulates the
computation of the initialization sequence along with diagnostic
information and the capability to turn the computed sequence into an
expression. At present, I've only switched one CheckReferenceInit
callers over to this new mechanism; more will follow.
Aside from (hopefully) being much more true to the standard, the
diagnostics provided by this reference-initialization code are a bit
better than before. Some examples:
p5-var.cpp:54:12: error: non-const lvalue reference to type 'struct
Derived'
cannot bind to a value of unrelated type 'struct Base'
Derived &dr2 = b; // expected-error{{non-const lvalue reference to
...
^ ~
p5-var.cpp:55:9: error: binding of reference to type 'struct Base' to
a value of
type 'struct Base const' drops qualifiers
Base &br3 = bc; // expected-error{{drops qualifiers}}
^ ~~
p5-var.cpp:57:15: error: ambiguous conversion from derived class
'struct Diamond' to base class 'struct Base':
struct Diamond -> struct Derived -> struct Base
struct Diamond -> struct Derived2 -> struct Base
Base &br5 = diamond; // expected-error{{ambiguous conversion from
...
^~~~~~~
p5-var.cpp:59:9: error: non-const lvalue reference to type 'long'
cannot bind to
a value of unrelated type 'int'
long &lr = i; // expected-error{{non-const lvalue reference to type
...
^ ~
p5-var.cpp:74:9: error: non-const lvalue reference to type 'struct
Base' cannot
bind to a temporary of type 'struct Base'
Base &br1 = Base(); // expected-error{{non-const lvalue reference to
...
^ ~~~~~~
p5-var.cpp:102:9: error: non-const reference cannot bind to bit-field
'i'
int & ir1 = (ib.i); // expected-error{{non-const reference cannot
...
^ ~~~~~~
p5-var.cpp:98:7: note: bit-field is declared here
int i : 17; // expected-note{{bit-field is declared here}}
^
llvm-svn: 90992
2009-12-09 23:02:17 +00:00
Mike Stump
2b488873bf
Break out code for reuse. WIP.
...
llvm-svn: 90991
2009-12-09 22:59:31 +00:00
Fariborz Jahanian
26de2e594b
Fixes a bogus error when declaring an extern "C" array.
...
(fixes radar 7457109).
llvm-svn: 90986
2009-12-09 21:39:38 +00:00
Mike Stump
f16b8c30d9
Add throw support. WIP.
...
llvm-svn: 90982
2009-12-09 19:24:08 +00:00
Fariborz Jahanian
a5fee26d28
Codegen. support for ObjCIsaExpr AST which until now
...
was not needed (fixes radar 7453430).
llvm-svn: 90981
2009-12-09 19:05:56 +00:00
Mike Stump
d0caa82b36
Fix 80-col violation.
...
llvm-svn: 90976
2009-12-09 18:09:35 +00:00
Anders Carlsson
538af0906d
Add DeclContext::dump.
...
llvm-svn: 90974
2009-12-09 17:27:46 +00:00
Zhongxing Xu
1042bf4ae2
Refactor OSAtomic evaluation logic into OSAtomicChecker.
...
llvm-svn: 90968
2009-12-09 12:23:28 +00:00
Zhongxing Xu
8cca37fae0
Use a temporary destination set such that we can clear fake auto transitions.
...
Otherwise, even when real evaluation occurs, the previous fake auto
transitions would still be in the destination set, causing fake state
bifurcation.
llvm-svn: 90967
2009-12-09 12:16:07 +00:00
Daniel Dunbar
75017b7cef
clang -cc1: Mark -i* options as JoinedOrSeparate, since the driver forwards them
...
directly and one can write '-includefoo' if one really wants to.
llvm-svn: 90966
2009-12-09 10:01:26 +00:00
John McCall
5677499fbf
First pass at implementing C++ enum semantics: calculate (and store) an
...
"integer promotion" type associated with an enum decl, and use this type to
determine which type to promote to. This type obeys C++ [conv.prom]p2 and
is therefore generally signed unless the range of the enumerators forces
it to be unsigned.
Kills off a lot of false positives from -Wsign-compare in C++, addressing
rdar://7455616
llvm-svn: 90965
2009-12-09 09:09:27 +00:00
Zhongxing Xu
1d153328be
OSAtomic simulation: use the original region as the location to load from,
...
instead of the ElementRegion obtained from casts.
Test cast: the leak cannot occur bacause the true branch cannot be taken.
llvm-svn: 90964
2009-12-09 08:32:57 +00:00
Anders Carlsson
c50b340108
Look through using declarations when searching for allocation overloads.
...
llvm-svn: 90961
2009-12-09 07:39:44 +00:00
Ted Kremenek
2cba2ce28f
Update checker build.
...
llvm-svn: 90955
2009-12-09 06:58:36 +00:00
Zhongxing Xu
f5448561ed
remove dead code.
...
llvm-svn: 90953
2009-12-09 05:52:12 +00:00
Zhongxing Xu
d1dee7e71a
Insert instead of assign to the dest node set, since we use the dest node set
...
repeatedly.
llvm-svn: 90952
2009-12-09 05:48:53 +00:00
Eli Friedman
f7195532ee
Fix for PR5730: make sure to consistently call
...
PerformObjectArgumentInitialization from BuildCXXMemberCallExpr.
llvm-svn: 90950
2009-12-09 04:53:56 +00:00
Eli Friedman
a958a01e9f
Whitespace fix.
...
llvm-svn: 90949
2009-12-09 04:52:43 +00:00
Anders Carlsson
f9812782b7
In CXXRecordDecl::forallBases, add the base to the "queue", so we walk more than one heirarchy of classes. John, please review.
...
llvm-svn: 90948
2009-12-09 04:26:02 +00:00
Zhongxing Xu
39644a62f9
Add notes to a test case.
...
llvm-svn: 90947
2009-12-09 04:22:30 +00:00
Ted Kremenek
06ba78d07d
Fix crash in DisplayFunction(). ObjCInterfaceDecls can also get passed to this function, but we don't want to display them.
...
llvm-svn: 90944
2009-12-09 03:45:19 +00:00
Anders Carlsson
a038825b1c
Don't warn about function templates or function template specializations.
...
llvm-svn: 90943
2009-12-09 03:44:46 +00:00
Mike Stump
aff69af918
Add cleanups for exceptional edges. WIP.
...
llvm-svn: 90940
2009-12-09 03:35:49 +00:00