Mike Stump
bb2f57dd39
Don't set hidden for a non-external symbol as that would make it extenal.
...
Refine codegen for visibility and hidden. WIP.
llvm-svn: 92118
2009-12-24 02:33:48 +00:00
David Chisnall
3a509cd8cc
Fix for bug 5691.
...
This fixes throwing exceptions inside @catch blocks nested inside outer @try blocks and also fixes jumping from an inner @finally to an outer @finally (via any relevant @catch blocks).
The code exhibiting this bug was based on code from CGObjCMac. I believe that this bug may still be present on the Mac runtimes, although the test case in the bug contains a few GNUisms and won't compile without some minor tweaks with Apple's libobjc.
llvm-svn: 92117
2009-12-24 02:26:34 +00:00
Zhongxing Xu
1704c4331b
Inter-procedural analysis: now we can return from the callee.
...
llvm-svn: 92116
2009-12-24 02:25:21 +00:00
Ted Kremenek
17113255a8
Fix bug I just introduced in ForStmt::child_end() where we could iterate off into garbage values.
...
llvm-svn: 92115
2009-12-24 01:59:46 +00:00
Ted Kremenek
b135a13564
Teach GRExprEngine to handle the initialization of the condition variable of a ForStmt.
...
llvm-svn: 92114
2009-12-24 01:49:25 +00:00
Ted Kremenek
ec92f9492b
Add CFG support for the initializer of the condition variable of a ForStmt.
...
llvm-svn: 92113
2009-12-24 01:49:06 +00:00
Ted Kremenek
1c3ab07968
Coelesce 'DoDestroy()' methods in Stmt.cpp, and modify the child_iterator returned by ForStmt to include the initializer of the condition variable.
...
llvm-svn: 92112
2009-12-24 01:48:39 +00:00
Ted Kremenek
1ce53c4320
CFG tweak: in a WhileStmt, the condition variable initializer is evaluated every time the condition is checked.
...
llvm-svn: 92111
2009-12-24 01:34:10 +00:00
Mike Stump
a8a2a33af9
Fix recent regression caught by g++.old-deja/g++.mike/eh19.C.
...
llvm-svn: 92109
2009-12-24 01:10:27 +00:00
Ted Kremenek
09bc3b7df6
Teach GRExprEngine to handle the initialization of the condition variable of a WhileStmt.
...
llvm-svn: 92106
2009-12-24 00:54:56 +00:00
Ted Kremenek
1f07b4c439
Add CFG support for the initializer of the condition variable of a WhileStmt.
...
llvm-svn: 92105
2009-12-24 00:54:37 +00:00
Ted Kremenek
b04c5cb0ba
Modify WhileStmt::child_begin()/child_end() to include the initializer for the condition variable.
...
llvm-svn: 92104
2009-12-24 00:54:19 +00:00
Ted Kremenek
284d764418
Add test case for PR 4358.
...
llvm-svn: 92103
2009-12-24 00:48:11 +00:00
Ted Kremenek
589493227b
Teach GRExprEngine to handle the initialization of the condition variable of a SwitchStmt.
...
llvm-svn: 92102
2009-12-24 00:40:03 +00:00
Ted Kremenek
8b5dc12e52
Add CFG support for the initializer of the condition variable of a SwitchStmt.
...
llvm-svn: 92101
2009-12-24 00:39:26 +00:00
Ted Kremenek
ee7553de62
Modify SwitchStmt::child_begin()/child_end() to include the initializer for the condition variable.
...
llvm-svn: 92100
2009-12-24 00:39:05 +00:00
Nuno Lopes
c095b5361a
support the warn_unused_result in C++ class methods
...
llvm-svn: 92095
2009-12-24 00:28:18 +00:00
Nuno Lopes
0e7860f21e
allow the noreturn attribute to be used in class methods
...
llvm-svn: 92090
2009-12-23 23:40:33 +00:00
Ted Kremenek
b27a6d24a6
Add StmtIterator support for iterating over both the condition
...
variable initializer and the other expressions in an IfStmt.
This change required adding a 'DoDestroy()' method for IfStmt that did
not include destroying the initializer (since that is owned by the
VarDecl).
llvm-svn: 92089
2009-12-23 23:38:34 +00:00
Ted Kremenek
bff9844327
Tidy up FindSubExprAssignments to not deference the child_iterator multiple times.
...
llvm-svn: 92087
2009-12-23 23:37:10 +00:00
Douglas Gregor
033f675f61
When we see a CXXDefaultArgExpr during template instantiation, rebuild
...
the default argument so that we're sure to mark any referenced
declarations. This gets us another little step closer to fixing
PR5810.
llvm-svn: 92078
2009-12-23 23:03:06 +00:00
Mike Stump
f3c23c0cd4
Fix regression found by g++.dg/eh/alias1.C.
...
llvm-svn: 92072
2009-12-23 22:48:20 +00:00
Ted Kremenek
1bc899f4d3
Increase StmtIterator size by one pointer (separating out the Stmt** from the union including Decl* and Decl**).
...
This change is setup for adding StmtIterator support for condition variables in IfStmt, WhileStmt, etc.
llvm-svn: 92070
2009-12-23 22:31:49 +00:00
Anders Carlsson
a88d197284
Mangle block pointer types. Fixes PR5858.
...
llvm-svn: 92069
2009-12-23 22:31:44 +00:00
Chris Lattner
9ac2b586c7
fix typo
...
llvm-svn: 92065
2009-12-23 22:06:12 +00:00
Douglas Gregor
247894b361
There is no such thing as typeinfo for a cv-qualified type. Assert
...
that this is true when mangling, then fix up the various places in
Sema and/or CodeGen that need to remove qualifiers. Addresses a
linking issue when building LLVM with Clang.
llvm-svn: 92064
2009-12-23 22:04:40 +00:00
Fariborz Jahanian
65e6bd6246
More cleanup/refactoring of the rewrite.
...
llvm-svn: 92062
2009-12-23 21:52:32 +00:00
Chris Lattner
f0a9ba37d4
simplify my previous patch.
...
llvm-svn: 92057
2009-12-23 21:33:41 +00:00
Chris Lattner
4e1a323b85
fix opencl extvector element extraction on rvalues. We previously
...
error_unsupported on test10 and crashed on test11.
llvm-svn: 92056
2009-12-23 21:31:11 +00:00
Chris Lattner
43c8be526d
comment tweak
...
llvm-svn: 92055
2009-12-23 21:29:53 +00:00
Fariborz Jahanian
4bf727d9e1
Some cleanup and refactoring of rewriter.
...
llvm-svn: 92049
2009-12-23 21:18:41 +00:00
Ted Kremenek
40ee0cc813
Tidy up ~ASTContext a bit by turning orphan compound statements into
...
for loops. Also do not manually free the Type objects when the
'FreeMemory' flag is set, as they will be deallocated when the
BumpPtrAllocator is destroyed.
llvm-svn: 92047
2009-12-23 21:13:52 +00:00
Douglas Gregor
721fb2b6e4
Diagnose the use of incomplete types in C++ typeid expressions
...
llvm-svn: 92045
2009-12-23 21:06:06 +00:00
Ted Kremenek
b8e6dc88bb
Rename test file.
...
llvm-svn: 92044
2009-12-23 20:59:39 +00:00
Ted Kremenek
778231cb18
Change test case to use 'clang -cc1' (without --disable-free) instead of c-index-test (whose memory management behavior may change in the future).
...
llvm-svn: 92043
2009-12-23 20:58:27 +00:00
Douglas Gregor
f45f6828c6
Remove cv-qualifiers from the argument to typeid
...
llvm-svn: 92041
2009-12-23 20:51:04 +00:00
Fariborz Jahanian
cbdcfe802a
This patch concludes rewriteing of __block variables to allow
...
a small test case using Block_copy(...) API to pass.
llvm-svn: 92038
2009-12-23 20:32:38 +00:00
Anders Carlsson
910847c149
Mangle template template parameters. Fixes PR5861.
...
llvm-svn: 92030
2009-12-23 19:30:55 +00:00
Fariborz Jahanian
25c07fa224
Removed a FIXME comment.
...
llvm-svn: 92028
2009-12-23 19:26:34 +00:00
Fariborz Jahanian
7df3980609
More rewriting of __block variables.
...
llvm-svn: 92027
2009-12-23 19:22:33 +00:00
Chris Lattner
3859c74b32
fix the microsoft "charify" extension to return the charified token
...
as a character literal, not a string literal. This might fix
rdar://7486575
llvm-svn: 92025
2009-12-23 19:15:27 +00:00
Chris Lattner
4af1aadeb5
update comments
...
llvm-svn: 92022
2009-12-23 19:08:19 +00:00
Chris Lattner
b089c1de55
switch -Werror/-Wfatal-errors error conditions to use diagnostics instead
...
of printf, patch by Christian Adaker!
llvm-svn: 92019
2009-12-23 18:53:37 +00:00
Eli Friedman
38b9ad88e2
Fix the overflow calculation in Sema::CheckTemplateArgument to be a bit more
...
accurate.
llvm-svn: 92018
2009-12-23 18:44:58 +00:00
Douglas Gregor
25ab25f39d
When using a default function argument for a function template (or
...
member function thereof), perform the template instantiation each time
the default argument is needed. This ensures that
(1) We get different CXXTemporary objects for each instantiation, and
(2) Any other instantiations or definitions triggered by the
instantiation of the default argument expression are guaranteed to
happen; previously, they might have been suppressed, e.g., because
they happened in an unevaluated context.
This fixes the majority of PR5810. However, it does not address the
problem where we may have multiple uses of the same CXXTemporary
within an expression when the temporary came from a non-instantiated
default argument expression.
llvm-svn: 92015
2009-12-23 18:19:08 +00:00
Kovarththanan Rajaratnam
55e74a1a6a
Remove RewriteBlocks. It has been superseded by RewriteObjC
...
llvm-svn: 92014
2009-12-23 18:03:34 +00:00
Nuno Lopes
cfca1f0dc1
move a few more symbols to .rodata/.data.rel.ro
...
llvm-svn: 92012
2009-12-23 17:49:57 +00:00
Douglas Gregor
53982d577d
Don't commit my silly little local changes
...
llvm-svn: 92010
2009-12-23 17:43:32 +00:00
Douglas Gregor
72e9f2f0b9
Don't disable smart pointers, silly
...
llvm-svn: 92009
2009-12-23 17:42:06 +00:00
Douglas Gregor
e6600379b1
Fix DISABLE_SMART_POINTERS build
...
llvm-svn: 92008
2009-12-23 17:40:29 +00:00
Steve Naroff
13468371a7
Add support for handling initializers in RewriteObjC::RewriteByRefVar().
...
As the FIXME indicates, RewriteByRefVar() won't work for multiple declarators (in general). I've discussed this with Fariborz and he is aware of the limitation.
llvm-svn: 92007
2009-12-23 17:24:33 +00:00
Zhongxing Xu
d803cc51af
Register call inliner as the last checker.
...
llvm-svn: 91992
2009-12-23 09:15:19 +00:00
Zhongxing Xu
2923046ec4
Migrate the call inliner to the Checker interface.
...
llvm-svn: 91991
2009-12-23 08:56:18 +00:00
Ted Kremenek
00d19ee130
Add 'DeclStmt::DoDestroy()' which doesn't actually recurse over its child expressions (via StmtIterator), as those expressions are owned by the Decls and Types (which are destroyed elsewhere). This fixes a crasher reported in <rdar://problem/7487294>.
...
llvm-svn: 91990
2009-12-23 08:56:00 +00:00
Zhongxing Xu
d2ab38e3f4
For inter-procedural analysis, predecessor node may be in another function.
...
So we should use the current program point.
llvm-svn: 91989
2009-12-23 08:54:57 +00:00
Ted Kremenek
a7bcbde814
Add CFG support for the condition variable that can appear in IfStmts in C++ mode.
...
Add transfer function support in GRExprEngine for IfStmts with initialized condition variables.
llvm-svn: 91987
2009-12-23 04:49:01 +00:00
Ted Kremenek
857f41c650
Suppress dead store warnings involving objects initialized with CXXExprTemporaries.
...
llvm-svn: 91986
2009-12-23 04:11:44 +00:00
Ted Kremenek
76d5225271
Add stack trace pretty printing in GRExprEngine::VisitLValue().
...
llvm-svn: 91985
2009-12-23 04:09:43 +00:00
Ted Kremenek
49ace5cd62
Fix CXXConstructExpr::getSourceRange() to not include the source ranges of CXXDefaultArgExprs when computing its range (since these expressions have no source range, and using them will make the encompassing range invalid).
...
llvm-svn: 91984
2009-12-23 04:00:48 +00:00
Eric Christopher
c87915629b
Update for the intrinsic changes in llvm: the object size intrinsic
...
only takes a boolean second argument now. Update tests accordingly.
Currently the builtin still accepts the full range for compatibility.
llvm-svn: 91983
2009-12-23 03:49:37 +00:00
Ted Kremenek
9a05f20d41
Teach GRExprEngine::VisitLValue to ignore CXXExprWithTempories (for now).
...
llvm-svn: 91982
2009-12-23 03:14:23 +00:00
Ted Kremenek
25e280bf02
Fix PR 5857. When casting from a symbolic region to an integer back to a pointer value, we were not correctly layering the correct ElementRegion on the original SymbolicRegion.
...
llvm-svn: 91981
2009-12-23 02:52:14 +00:00
Ken Dyck
73536eab67
Remove CharUnits::toString() to eliminate dependence on <string>.
...
llvm-svn: 91978
2009-12-23 02:44:11 +00:00
Fariborz Jahanian
02e07737a9
Patch to do more rewrite of __block variables.
...
Still WIP.
llvm-svn: 91977
2009-12-23 02:07:37 +00:00
John McCall
230a5d527e
Eliminate a completely unnecessary buffer copy when parsing float literals.
...
llvm-svn: 91974
2009-12-23 01:37:10 +00:00
Ted Kremenek
bb7a826844
Teach GRExprEngine::VisitLValue that we don't handle CXXZeroInitValueExprs yet.
...
llvm-svn: 91970
2009-12-23 01:25:13 +00:00
Ted Kremenek
343b51271d
Also treat the type of the subexpression as a pointer in GRExprEngine::VisitCast when the expression is handled as an lvalue.
...
llvm-svn: 91969
2009-12-23 01:19:20 +00:00
Ted Kremenek
1f76b51d3f
Add assertion to check for valid source ranges.
...
llvm-svn: 91966
2009-12-23 01:09:59 +00:00
John McCall
b50c443df2
Test case for PR5134.
...
llvm-svn: 91965
2009-12-23 01:09:14 +00:00
Daniel Dunbar
e0d2691b88
Driver: Fix '... -O4 -O0 ...', which was generating bitcode.
...
llvm-svn: 91962
2009-12-23 00:47:42 +00:00
Daniel Dunbar
f4894fe0eb
Driver: Drop ToolChain::getHost()
...
llvm-svn: 91960
2009-12-23 00:46:38 +00:00
John McCall
db3062cd4e
Test case from PR5476.
...
llvm-svn: 91957
2009-12-23 00:44:38 +00:00
John McCall
0a4bb26ed0
Set a member's access specifier even if it doesn't match the previous specifier.
...
Prevents an assert on successive redeclarations.
Fixed PR5573.
llvm-svn: 91956
2009-12-23 00:37:40 +00:00
Ted Kremenek
22cc1a8438
Add basic support for analyzing CastExprs as lvalues.
...
llvm-svn: 91952
2009-12-23 00:26:16 +00:00
Douglas Gregor
04c5f973ee
Objective-C methods can be variadic, too. Who knew.
...
llvm-svn: 91951
2009-12-23 00:21:46 +00:00
Douglas Gregor
8d48e9a26e
Switch Sema::CreateOverloadedUnaryOp over to InitializationSequence.
...
llvm-svn: 91948
2009-12-23 00:02:00 +00:00
Nuno Lopes
56abcbdb47
warn when attribute warn_unused_result is applied to void functions.
...
while at it, remove an outdated FIXME
llvm-svn: 91946
2009-12-22 23:59:52 +00:00
Douglas Gregor
684d7bdc43
Allow the first parameter of operator new to be a cv-qualified
...
size_t. Also, fix an issue with initialization of parameters in calls,
where we weren't removing the cv-qualifiers on the parameter type
itself. Fixes PR5823.
llvm-svn: 91941
2009-12-22 23:42:49 +00:00
Daniel Dunbar
c7a67b7877
Driver: When linking, don't warn about unused arguments which are obviously only
...
used during compilation.
- There is no easy way to define this group properly, unfortunately, and maybe
this is a losing strategy. For now this is unambiguous more friendly, though.
llvm-svn: 91940
2009-12-22 23:19:32 +00:00
Chris Lattner
801fda871b
implement -W[no-]fatal-errors, patch by Christian Adåker!
...
llvm-svn: 91938
2009-12-22 23:12:53 +00:00
Ted Kremenek
c0895eb730
Add c++-analyzer symlink (which is used by scan-build)
...
llvm-svn: 91937
2009-12-22 23:00:32 +00:00
Douglas Gregor
19fc0b753a
Make sure that reinterpret_cast gets a CastKind on all successful
...
paths. Fixes "cannot compile this unexpected cast lvalue yet" error in
llvm/lib/Analysis/IPA/GlobalsModRef.cpp.
llvm-svn: 91932
2009-12-22 22:47:22 +00:00
Douglas Gregor
39740dce30
Revert accidental commit
...
llvm-svn: 91930
2009-12-22 22:30:51 +00:00
Chris Lattner
261dd5ec06
accept -Wcomments as an alias for -Wcomment, PR5855
...
llvm-svn: 91929
2009-12-22 22:29:12 +00:00
John McCall
a1d8550778
Add using shadow decls to the "instantiated locals" map, fixing PR5847.
...
llvm-svn: 91928
2009-12-22 22:26:37 +00:00
Douglas Gregor
b6ea60872d
Switch Sema::AddCXXDirectInitializerToDecl over to InitializationSequence
...
llvm-svn: 91927
2009-12-22 22:17:25 +00:00
Ted Kremenek
e19711d223
Add transfer functions support for visiting an Objective-C message expression as an lvalue when the return type is a C++ reference.
...
llvm-svn: 91926
2009-12-22 22:13:46 +00:00
Daniel Dunbar
42fe663e3b
ARM: Remove a FIXME, it's not actually more complicated than that.
...
llvm-svn: 91924
2009-12-22 21:59:17 +00:00
Douglas Gregor
0a70c4d9a2
Switch parameter passing for overloaded binary operators to
...
InitializationSequence. Fixes the -fsyntax-only failure in
llvm/lib/Transforms/Scalar/InstructionCombining.cpp.
llvm-svn: 91921
2009-12-22 21:44:34 +00:00
Douglas Gregor
dc72875d25
Serialize the NoReturn bit on FunctionTypes for precompiled headers
...
llvm-svn: 91911
2009-12-22 18:11:50 +00:00
Douglas Gregor
613bf10470
Enter the scope of an initializer for direct-initialization as well as
...
for copy-initialization.
llvm-svn: 91909
2009-12-22 17:47:17 +00:00
Douglas Gregor
2e9c795df0
When transforming a C++ "new" expression that was not explicitly given
...
a size, check whether the transformed type is itself an array type. If
so, take the major array bound as the size to allocate. Fixes PR5833.
llvm-svn: 91907
2009-12-22 17:13:37 +00:00
Douglas Gregor
bbeb5c391c
Switch parameter-passing for calls via function pointers (where we
...
don't have a FunctionDecl) over to InitializationSequence.
llvm-svn: 91906
2009-12-22 16:09:06 +00:00
Douglas Gregor
1b3039344b
Switch InitializedEntity from TypeLoc down to just QualTypes, since we don't use the location information but we did spend a bunch of time building faked-up TypeLocs
...
llvm-svn: 91905
2009-12-22 15:35:07 +00:00
Ken Dyck
8c89d59c82
Move the implementation of ASTContext::getTypeSizeInChars() to the .cpp file to
...
avoid #including CharUnits.h in ASTContext.h.
llvm-svn: 91903
2009-12-22 14:23:30 +00:00
Douglas Gregor
96596c98fb
Switch initialization of parameters in a call over to
...
InitializationSequence (when a FunctionDecl is present). This required
a few small fixes to initialization sequences:
- Make sure to use the adjusted parameter type for initialization of
function parameters.
- Implement transparent union calling semantics in C
llvm-svn: 91902
2009-12-22 07:24:36 +00:00
Anders Carlsson
8a35c7982c
Make sure that we mangle overloaded operators that are member functions correctly, giving them the correct arity.
...
With this seemingly insignificant fix, we are now able to build and link clang using clang itself! (LLVM still has to be built with gcc for the time being).
llvm-svn: 91893
2009-12-22 06:36:32 +00:00
Anders Carlsson
3caa2b486d
Work around PR5514.
...
llvm-svn: 91891
2009-12-22 06:13:42 +00:00
Chris Lattner
d806cbc98d
fix a bug handling the gnu ?: extension. Patch by Storlek on IRC,
...
who prefers to be stealthy and mysterious.
llvm-svn: 91888
2009-12-22 06:00:13 +00:00
Anders Carlsson
9c45ad7a1b
When we simply return a retained member expression when instantiating, we must also mark the member decl as referenced.
...
llvm-svn: 91887
2009-12-22 05:24:09 +00:00
Eli Friedman
e2808379b8
Zap CheckInitializerTypes.
...
llvm-svn: 91884
2009-12-22 02:50:30 +00:00
Eli Friedman
5f101b95c6
Switch default arguments over to InitializationSequence.
...
llvm-svn: 91883
2009-12-22 02:46:13 +00:00
Eli Friedman
a553d4ac95
Switch compound literals over to InitializationSequence.
...
llvm-svn: 91882
2009-12-22 02:35:53 +00:00
Eli Friedman
463e523ad8
Switch file-scope assignment initialization over to InitializationSequence.
...
llvm-svn: 91881
2009-12-22 02:10:53 +00:00
Daniel Dunbar
3780f0b680
x86_64: Structures with no fields but which have padding should be classified as
...
integer.
- This is consistent, but may not be correct. I will revisit x86_64 ABI handling for C++ as a whole at some point.
- PR5831.
llvm-svn: 91874
2009-12-22 01:19:25 +00:00
Douglas Gregor
da8cdbce35
Centralize the emission/suppression/delay of diagnostics describing runtime before in the new function Sema::DiagRuntimeBehavior, addressing one of Chris' comments.
...
llvm-svn: 91870
2009-12-22 01:01:55 +00:00
John McCall
463e10cbd5
Stop diagnosing the use of inner classes as friends. ddunbar asked whether
...
this was useful, and on review Doug and I decided it was probably on the level
of a bug in the standard and therefore not worth a warning even in -pedantic.
If someone disagrees and urgently wants clang++ to warn about this in strict
c++98 mode, we can talk about it.
llvm-svn: 91868
2009-12-22 00:59:39 +00:00
Fariborz Jahanian
8120346c57
Template code for rewrite of __block variables - wip.
...
llvm-svn: 91865
2009-12-22 00:48:54 +00:00
Douglas Gregor
507eb87f05
Eliminate the ASTContext argument to CXXConstructorDecl::isCopyConstructor, since the context is available in the Decl
...
llvm-svn: 91862
2009-12-22 00:34:07 +00:00
Douglas Gregor
4141d5bea2
When converting from a type to itself or one of its base classes via a
...
constructor call, the conversion is only a standard conversion
sequence if that constructor is a copy constructor. This fixes PR5834
in a semi-lame way, because the "real" fix will be to move over to
InitializationSequence. That will happen "soonish", but not now.
llvm-svn: 91861
2009-12-22 00:21:20 +00:00
Douglas Gregor
2bb0765bb4
When filling in value initializations within an initializer list, be
...
sure to fill in the initialized member of a union when a member was
explicitly designated. Fixes PR5843.
llvm-svn: 91858
2009-12-22 00:05:34 +00:00
Fariborz Jahanian
e175eeb117
Providing support for rewriting of block copy/dispose of
...
imported block variables. WIP.
llvm-svn: 91856
2009-12-21 23:31:42 +00:00
Daniel Dunbar
0def3d17cb
ARM: Honor -mfpu= and set __VFP_FP__ and __ARM_NEON__ "correctly".
...
- Correctly is in quotes, because we are following what I interpreted as GCC's
intent (which diverges from practice, naturally).
- Also, fix the arch define for arm1136jf-s.
llvm-svn: 91855
2009-12-21 23:28:17 +00:00
Daniel Dunbar
01ba2a765b
Improve updating of test/Makefile for out-of-dir builds.
...
llvm-svn: 91854
2009-12-21 23:28:06 +00:00
Douglas Gregor
8364e6b568
When a template-id refers to a single function template, and the
...
explicitly-specified template arguments are enough to determine the
instantiation, and either template argument deduction fails or is not
performed in that context, we can resolve the template-id down to a
function template specialization (so sayeth C++0x
[temp.arg.explicit]p3). Fixes PR5811.
llvm-svn: 91852
2009-12-21 23:17:24 +00:00
Douglas Gregor
3985791d62
Introduce an assertion to ensure that template argument deduction does
...
not deduce an "overload" type. Such a deduction indicates a failure in
semantic analysis (e.g., PR5811) that currently isn't caught until
code-generation time. This assertions makes it clearer that this
particular issue is a semantic-analysis problem, not a code-gen problem.
llvm-svn: 91844
2009-12-21 21:27:38 +00:00
Douglas Gregor
0f139a1df1
Improve on my previous fix for debug information. Rather than
...
recursing in CGDebugInfo::CreateTypeNode, teach
CanonicalizeTypeForDebugInfo---now called UnwrapTypeForDebugInfo---to
keep unwrapping the type until we hit something that can be
represented by debug information. Thanks to Anders for pointing this out!
llvm-svn: 91840
2009-12-21 20:18:30 +00:00
Douglas Gregor
0915b43ac2
Teach debug info generation to handle TemplateSpecializationType,
...
ElaboratedType, QualifiedNameType, and SubstTemplateTypeParmType type
nodes. Also, produce an "unsupported" diagnostic for C++0x type nodes
and "typeof" nodes, rather than asserting nondescriptly.
llvm-svn: 91837
2009-12-21 19:57:21 +00:00
Daniel Dunbar
083edf70a5
Add ToolChain::getDriver() and use it instead of going through the HostInfo
...
object.
llvm-svn: 91830
2009-12-21 18:54:17 +00:00
Fariborz Jahanian
ffc420cb51
Allow comparison of 'void *' with function pointer
...
as a g++ extension (fixes radar 7481987
).
llvm-svn: 91827
2009-12-21 18:19:17 +00:00
John McCall
b5a0d316dc
Reorganize the base-lookup bits of ActOnMemInitializer in order to better
...
support diagnostics and error recovery.
llvm-svn: 91825
2009-12-21 10:41:20 +00:00
Zhongxing Xu
fd62a33616
Add comments.
...
llvm-svn: 91818
2009-12-21 06:52:24 +00:00
Eli Friedman
9025ec2ee5
Fix for PR5840: fix the kind of name lookup used for classes in
...
Sema::getTypeName.
"LookupNestedNameSpecifierName" isn't quite the right kind of lookup, though;
it doesn't ignore namespaces. Someone more familiar with the lookup code
should fix this properly.
llvm-svn: 91809
2009-12-21 01:42:38 +00:00
Eli Friedman
a26001bf96
Small comment fix.
...
llvm-svn: 91808
2009-12-21 01:26:45 +00:00
Chris Lattner
3a6af3de6c
indentation fix
...
llvm-svn: 91807
2009-12-21 01:10:56 +00:00
Anders Carlsson
9a98ac993f
Add tests for structs inside anonymous namespaces.
...
llvm-svn: 91806
2009-12-21 00:57:38 +00:00
Anders Carlsson
2b7f444366
Incomplete structs should also have internal linkage.
...
llvm-svn: 91805
2009-12-21 00:41:42 +00:00
Anders Carlsson
18e6ee1b20
Correcly handle pointers to member pointer types where the class or the pointee is incomplete.
...
llvm-svn: 91804
2009-12-20 23:37:55 +00:00
Nuno Lopes
518e370719
fix PR4010: add support for the warn_unused_result for function pointers
...
llvm-svn: 91803
2009-12-20 23:11:08 +00:00
Chris Lattner
1576850a76
fix PR5500: clang fails to parse inline asm with :: in C++ mode
...
llvm-svn: 91802
2009-12-20 23:08:04 +00:00
Chris Lattner
bf5fff5fbb
refactor asm stmt parsing to avoid nesting as much, and
...
pull ':' eating out of ParseAsmOperandsOpt.
llvm-svn: 91801
2009-12-20 23:00:41 +00:00
Chris Lattner
2fe080c83e
a really old testcase I apparently forgot to 'svn add'.
...
llvm-svn: 91800
2009-12-20 23:00:15 +00:00
Anders Carlsson
d008129f34
Rework the way pointer types are handled by the RTTI builder. We now get the right linkage for indirect pointers to incomplete structs.
...
llvm-svn: 91799
2009-12-20 22:30:54 +00:00
Eli Friedman
7dac3712a2
Make sure we instantiate the destructor for variables initialized by
...
assignment.
llvm-svn: 91798
2009-12-20 22:29:11 +00:00
Eli Friedman
4afe9a3518
Fix review comment; no visible change.
...
llvm-svn: 91797
2009-12-20 22:12:03 +00:00
Douglas Gregor
39c778b443
Switch default-initialization of variables of class type (or array thereof) over to InitializationSequence. I could swear that this fixes a PR somewhere, but I couldn't figure out which one
...
llvm-svn: 91796
2009-12-20 22:01:25 +00:00
Douglas Gregor
1b6d10555f
Revert accidental commit
...
llvm-svn: 91795
2009-12-20 21:10:58 +00:00
Douglas Gregor
b752f1e25c
Fix CMake build on windows, from Cedric Venet
...
llvm-svn: 91794
2009-12-20 20:56:30 +00:00
John McCall
1c7e6ec27b
Don't inject the class name until that magical lbrace.
...
Because of the rules of base-class lookup* and the restrictions on typedefs, it
was actually impossible for this to cause any problems more serious than the
spurious acceptance of
template <class T> class A : B<A> { ... };
instead of
template <class T> class A : B<A<T> > { ... };
but I'm sure we can all agree that that is a very important restriction which
is well worth making another Parser->Sema call for.
(*) n.b. clang++ does not implement these rules correctly; we are not ignoring
non-type names
llvm-svn: 91792
2009-12-20 07:58:13 +00:00
John McCall
bffb990c23
Test the lookup I wasn't sure would be done properly after the last patch.
...
Clang reasonably adds all the base specifiers in one pass; this is now required
for correctness to prevent lookup from going mad. But this has the advantage of
establishing the correct context when looking up base specifiers, which will be
important for access control.
llvm-svn: 91791
2009-12-20 05:57:29 +00:00
John McCall
2d814c305e
Parse base specifiers within the scope of the class. This is possibly not
...
quite right; I'll come back to it later. It does fix PR 5741.
llvm-svn: 91789
2009-12-19 21:48:58 +00:00
Chris Lattner
f0b0cb2dcb
comments shouldn't go in the AST, and we already make it easy
...
to go from a decl to the doc comments for it.
llvm-svn: 91785
2009-12-19 20:59:13 +00:00
Daniel Dunbar
535dc0a5e2
Remove another ';' after method definition.
...
llvm-svn: 91781
2009-12-19 18:58:59 +00:00
Daniel Dunbar
e017ecc9e2
Remove ';' after method definition. Noticed by clang++, which one would think
...
would have a higher respect for its own code. This is getting old, is this
warning really adding value?
llvm-svn: 91779
2009-12-19 17:50:07 +00:00
John McCall
b878801046
Kill off PreDeclaratorDC.
...
llvm-svn: 91772
2009-12-19 10:53:49 +00:00
John McCall
6df5fef637
Refactor to remove more dependencies on PreDeclaratorDC. I seem to have made
...
the redeclaration problems in the [temp.explicit]p3 testcase worse, but I can
live with that; they'll need to be fixed more holistically anyhow.
llvm-svn: 91771
2009-12-19 10:49:29 +00:00
John McCall
4d6d6137a0
Don't use EnterDeclaratorContext when rebuilding a type in the current
...
instantiation, since we're not using a Scope object for that anyway.
llvm-svn: 91770
2009-12-19 09:35:56 +00:00
John McCall
1f4ee7bd2f
Just push a new scope when parsing an out-of-line variable definition.
...
Magically fixes all the terrible lookup problems associated with not pushing
a new scope. Resolves an ancient xfail and an LLVM misparse.
llvm-svn: 91769
2009-12-19 09:28:58 +00:00
Eli Friedman
7827520ce8
Initialization improvements: addition of string initialization and a few
...
small bug fixes in SemaInit, switch over SemaDecl to use it more often, and
change a bunch of diagnostics which are different with the new initialization
code.
llvm-svn: 91767
2009-12-19 08:11:05 +00:00
Douglas Gregor
5103effb1d
A CXXExprWithTemporaries expression is an lvalue if its subexpression
...
is an lvalue. Fixes PR5787.
llvm-svn: 91765
2009-12-19 07:07:47 +00:00