John McCall
91f1a02648
Typedefs can be redeclared. That seems like something we should record in
...
the AST lest we run into some crazy canonicalization bug like PR5874.
llvm-svn: 92283
2009-12-30 00:31:22 +00:00
Eli Friedman
84341cd668
Make sure to explicitly pass type/value dependence to Expr constructor. This
...
caught several cases where we were not doing the right thing. I'm
not completely sure all cases are being handled correctly, but this should
be an improvement.
llvm-svn: 92281
2009-12-30 00:13:48 +00:00
Anders Carlsson
79c184e975
Match gcc and treat vector types as fundamental types.
...
llvm-svn: 92278
2009-12-29 22:30:11 +00:00
Anders Carlsson
ef88695860
Handle enum types as well.
...
llvm-svn: 92276
2009-12-29 22:13:01 +00:00
Anders Carlsson
0e4151c685
Test linkage of RTTI descriptors of array types.
...
llvm-svn: 92274
2009-12-29 21:58:32 +00:00
Anders Carlsson
26cf4ab8e2
Fix function type RTTI linkage and add tests.
...
llvm-svn: 92266
2009-12-29 20:20:19 +00:00
Chandler Carruth
585fb1e97e
Fix support for const_cast<>s of array types which actual change the
...
CV-qualifiers. Remove an error expectation from the 'good' set of const-cast
test cases. With this patch, the final non-template test case from PR5542
passes. (It's the same as the one already in const-cast.cpp.)
llvm-svn: 92257
2009-12-29 08:05:19 +00:00
Chris Lattner
3f8e5dd898
strength reduce this call away.
...
llvm-svn: 92253
2009-12-29 07:49:13 +00:00
Chandler Carruth
607f38e05f
Correctly refer to element CVR qualifications when determining if a type is
...
more or less cv-qualified than another during implicit conversion and overload
resolution ([basic.type.qualifier] p5). Factors the logic out of template
deduction and into the ASTContext so it can be shared.
This fixes several aspects of PR5542, but not all of them.
llvm-svn: 92248
2009-12-29 07:16:59 +00:00
Anders Carlsson
88ea2455f8
Get rid of FixedWidthIntType, as suggested by Chris and Eli.
...
llvm-svn: 92246
2009-12-29 07:07:36 +00:00
Chandler Carruth
c25c6ee3db
Handle using declarations in overloaded and template functions during ADL and
...
address resolution. This fixes PR5751.
Also, while we're here, remove logic from ADL which mistakenly included the
definition namespaces of overloaded and/or templated functions whose name or
address is used as an argument.
llvm-svn: 92245
2009-12-29 06:17:27 +00:00
Chris Lattner
9f021fd05d
adjust for llvm api changes.
...
llvm-svn: 92236
2009-12-28 23:41:39 +00:00
Chris Lattner
5e124bf913
this form of SetDebugLocation is about to go away, add some #includes that
...
are about to not come in implicitly.
llvm-svn: 92228
2009-12-28 21:44:41 +00:00
Zhongxing Xu
947420d6ad
Fix 80-col violation.
...
llvm-svn: 92204
2009-12-28 06:49:22 +00:00
Chris Lattner
9e0005f445
use best-fit instead of first-fit when reusing a MacroArgs object,
...
this speeds up Eonly on the testcase in PR5888 from 30.5s to 0.85s
llvm-svn: 92203
2009-12-28 06:36:46 +00:00
Chris Lattner
394f589e73
The PreExpArgTokens array is indexed with an argument #,
...
not a token number. Fix the reserve logic to get the right
amount of space.
llvm-svn: 92202
2009-12-28 06:17:16 +00:00
Sam Weinig
b999f68ed9
Fix for PR5871. Make __PRETTY_FUNCTION__ work for member functions defined in a class local to a function.
...
llvm-svn: 92200
2009-12-28 03:19:38 +00:00
Eli Friedman
affd5fdf37
Make sure to give an error for template argument lists followed by junk.
...
llvm-svn: 92177
2009-12-27 22:31:18 +00:00
Anton Korobeynikov
73d50b9141
Promote arguments of frameaddr / returnaddr builtins to i32 type, when needed.
...
This is needed for the platforms, where bitwidth of "int" is not 32 bits
(e.g. 16 on msp430).
llvm-svn: 92176
2009-12-27 14:27:22 +00:00
Eli Friedman
1e26278b3b
Add a sanity assertion so that we don't silently generate bad code; I'll file
...
a bug with a testcase hitting this assertion in a moment.
llvm-svn: 92175
2009-12-27 07:02:50 +00:00
Eli Friedman
847a2bce04
Fix PointerExprEvaluator::VisitCastExpr so it doesn't misfold C++ casts which
...
it doesn't know how to fold, like derived-to-base casts.
llvm-svn: 92173
2009-12-27 05:43:15 +00:00
Eli Friedman
af76ad73ed
Fix obvious mistake.
...
llvm-svn: 92172
2009-12-27 03:44:17 +00:00
Sam Weinig
4e83bd2795
Fix for PR5872. Add static specifier and const/volatile qualifiers to member functions in __PRETTY_FUNCTION__ predefined expressions.
...
llvm-svn: 92171
2009-12-27 01:38:20 +00:00
Eli Friedman
e14b1997db
Don't look through casts when looking for the underlying decl for a function
...
call; the standard doesn't expect us to, and the program could be doing
something crazy. Fixes PR5882.
llvm-svn: 92166
2009-12-26 03:35:45 +00:00
Eli Friedman
11c7b15148
Attempted fix for PR5884; this code will be dead soon, but this fix should
...
help for the moment.
llvm-svn: 92165
2009-12-25 23:59:21 +00:00
Benjamin Kramer
d20ef75b91
Remove some dead variables clang-analyzer found.
...
llvm-svn: 92162
2009-12-25 15:43:36 +00:00
Benjamin Kramer
a713b5d9a8
Fix typo spotted by MSVC.
...
GRExprEngine.cpp(1348) : warning C4305: 'argument' : truncation from 'clang::ProgramPoint::Kind' to 'bool'
llvm-svn: 92154
2009-12-25 09:44:02 +00:00
Eli Friedman
b8841af8bd
Minor optimization; emit proper unsupported messages for a couple of cases.
...
llvm-svn: 92153
2009-12-25 06:17:05 +00:00
Eli Friedman
2e06e8bbcc
Some small improvements to dead code elimination; helps a bit on
...
LLVM-Code-Symbols test.
llvm-svn: 92152
2009-12-25 05:29:40 +00:00
Eli Friedman
fddc26cc64
Make copy constructor elimination work in more cases; the case in question
...
here affects clang-on-clang.
llvm-svn: 92151
2009-12-24 23:33:34 +00:00
Sam Weinig
07d211ea40
Fix for PR5844. Be explicit about anonymous struct/class/union/namespaces in __PRETTY_FUNCTION__ predefined expression.
...
llvm-svn: 92149
2009-12-24 23:15:03 +00:00
Anders Carlsson
fb404888af
Move a bunch of class related functions to CGClass.cpp, no functionality change.
...
llvm-svn: 92148
2009-12-24 22:46:43 +00:00
Anders Carlsson
bfb3671b25
Pass the return value slot to all call exprs.
...
llvm-svn: 92145
2009-12-24 21:13:40 +00:00
Douglas Gregor
33636e66c7
Egregious, disgusting workaround for PR5866. We need to rework how we
...
keep track of friends within templates, which will provide a real for
PR5866. For now, this makes sure we don't do something entirely stupid
with friends of specializations.
llvm-svn: 92143
2009-12-24 20:56:24 +00:00
Anders Carlsson
1749083e2e
Fill in the return value slot in CGExprAgg::VisitCallExpr. This takes us halfway towards fixing PR5824.
...
llvm-svn: 92142
2009-12-24 20:40:36 +00:00
Douglas Gregor
4b65441598
Add test case for PR5868, and improve location information slightly for implicit "this" expressions
...
llvm-svn: 92141
2009-12-24 20:23:34 +00:00
Douglas Gregor
8e8eaa14f7
When rebuilding a MemberExpr that refers to an anonymous union, be
...
sure to perform derived-to-base conversions on the base
expression. Fixes PR5868. Proper testcase is coming soon.
llvm-svn: 92139
2009-12-24 20:02:50 +00:00
Anders Carlsson
61a401caec
Pass ReturnValueSlot to EmitCall. No functionality change yet.
...
llvm-svn: 92138
2009-12-24 19:25:24 +00:00
Daniel Dunbar
2db411f5a7
Fix -Asserts warning.
...
llvm-svn: 92137
2009-12-24 19:19:26 +00:00
Anders Carlsson
0435ed5875
Add a ReturnValueSlot class. Change the argument order in EmitCall to match the other overload better.
...
llvm-svn: 92136
2009-12-24 19:08:58 +00:00
Douglas Gregor
363b151ff7
When transforming CXXExprWithTemporaries and CXXBindTemporaryExpr
...
expressions (e.g., for template instantiation), just transform the
subexpressions and return those, since the temporary-related nodes
will be implicitly regenerated. Fixes PR5867, but I said that
before...
llvm-svn: 92135
2009-12-24 18:51:59 +00:00
Douglas Gregor
5c13090bd4
Fix double-destruction assertion to account for temporaries in conditionals
...
llvm-svn: 92134
2009-12-24 18:16:21 +00:00
Douglas Gregor
4cd5d53ebf
Assert that we aren't trying to push the same C++ temporary onto the live temporary stack twice. A little insurance against PR5867 surprising us again
...
llvm-svn: 92132
2009-12-24 17:48:05 +00:00
Douglas Gregor
f82bead3fd
InitializationSequence handles binding to temporaries, so that
...
argument-passing doesn't have to. Fixes PR5867, where we were binding
a temporary twice in the AST and, therefore, calling its destructor
twice.
llvm-svn: 92131
2009-12-24 17:16:46 +00:00
John McCall
122c8313ff
Fix the clang-on-clang build: APFloat reports underflow whenever we get a
...
denormal, but we only want to diagnose if we underflowed to zero. This
allows people to write constants in the denormal range.
llvm-svn: 92129
2009-12-24 11:09:08 +00:00
John McCall
0e21fccfae
Tweak the text of several main() diagnostics and punch a hole specifically for
...
Darwin's sekrit fourth argument. This should probably be factored to
let targets make target-specific decisions about what main() should look like.
Fixes rdar://problem/7414990
or if different platforms have radically different ideas of what they want in
llvm-svn: 92128
2009-12-24 09:58:38 +00:00
John McCall
53b93a091e
Diagnose out-of-bounds floating-point constants. Fixes rdar://problem/6974641
...
llvm-svn: 92127
2009-12-24 09:08:04 +00:00
Mike Stump
d538a6d364
Remove some dead code.
...
llvm-svn: 92123
2009-12-24 07:29:41 +00:00
Mike Stump
4a779b93e4
Cleanup some dead code.
...
llvm-svn: 92122
2009-12-24 06:52:05 +00:00
Zhongxing Xu
51f1ca852f
As Ted suggested, record the callsite information with the StackFrameContext.
...
llvm-svn: 92121
2009-12-24 03:34:38 +00:00
Ted Kremenek
9c951ab4f1
Enhance dataflow analyses to recognize branch statements in the CFG used as hooks for the initialization of condition variables.
...
llvm-svn: 92119
2009-12-24 02:40:30 +00:00
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Daniel Dunbar
893d475ba8
ARM: Use front-end specific target features "soft-float" and "soft-float-abi" to communicate FP mode to target; __SOFTFP__ is set correctly now.
...
llvm-svn: 91755
2009-12-19 04:15:38 +00:00
Daniel Dunbar
7b245eda5e
Targets: Allow CreateTargetInfo to mutate the target features.
...
- In particular, it can claim features for itself instead of always passing them on to LLVM.
- This allows using the target features as a generic mechanism for passing target specific options to the TargetInfo instance, which may need them for initializing preprocessor defines, etc.
llvm-svn: 91753
2009-12-19 03:30:57 +00:00
Zhongxing Xu
4794801e27
Use the FunctionDecl's result type to know exactly if it returns a reference.
...
llvm-svn: 91751
2009-12-19 03:17:55 +00:00
Douglas Gregor
a4b592a7d5
Switch more of Sema::CheckInitializerTypes over to
...
InitializationSequence. Specially, switch initialization of a C++
class type (either copy- or direct-initialization).
Also, make sure that we create an elidable copy-construction when
performing copy initialization of a C++ class variable. Fixes PR5826.
llvm-svn: 91750
2009-12-19 03:01:41 +00:00
John McCall
7173903ea6
Unresolved implicit member accesses are dependent if the object type is dependent.
...
Avoids an assertion arising during object-argument initialization in overload
resolution. In theory we can resolve this at definition time if the class
hierarchy for the member is fully known.
llvm-svn: 91747
2009-12-19 02:05:44 +00:00
Anton Korobeynikov
d7e4a095c9
Add f80 entry for windows targets
...
llvm-svn: 91746
2009-12-19 02:05:07 +00:00
Anton Korobeynikov
d94329a545
Use proper alignment for i16/i32 on msp430. This fixes PR5815.
...
llvm-svn: 91739
2009-12-19 01:32:37 +00:00
Chris Lattner
25d862bb17
eliminate a call to NextToken() when parsing ::foo
...
llvm-svn: 91738
2009-12-19 01:11:05 +00:00
Chris Lattner
fc7055668b
<string> already comes in from CharUnits.h
...
llvm-svn: 91737
2009-12-19 01:08:23 +00:00
John McCall
e2ade289be
Teach TryAnnotateTypeOrScopeToken to deal with already-annotated
...
scope specifiers. Fix a tentative parsing bug that came up in LLVM.
Incidentally fixes some random FIXMEs in an existing testcase.
llvm-svn: 91734
2009-12-19 00:35:18 +00:00
Eli Friedman
357e8c94d6
Fix for PR5524: make reference binding in default argument work correctly.
...
llvm-svn: 91733
2009-12-19 00:20:10 +00:00
Eli Friedman
70724ad2ff
Work in progress for setting the vtable pointers for all bases correctly in
...
the constructor. This doesn't handle cases requiring the VTT at the moment,
and generates unnecessary stores, but I think it's essentially correct.
llvm-svn: 91731
2009-12-18 23:47:41 +00:00
Eli Friedman
2b677cd4ff
Cleanup switch so it doesn't have a default case.
...
llvm-svn: 91725
2009-12-18 23:28:34 +00:00
Eli Friedman
303e45750e
Fix for PR5830: fix the computation of the offset to a virtual base.
...
llvm-svn: 91724
2009-12-18 23:27:44 +00:00
Ken Dyck
690ff6a016
Add and tidy doxygen comments and move implementation of toString() to newly
...
created CharUnits.cpp.
llvm-svn: 91719
2009-12-18 21:51:03 +00:00
Daniel Dunbar
91b640abfc
Fix a few MSVC warnings.
...
llvm-svn: 91714
2009-12-18 20:58:47 +00:00
Ted Kremenek
af1bdd71af
Enhance GRExprEngine::VisitCallExpr() to be used in an lvalue context. Uncovered a new failing test case along the way, but we're making progress on handling C++ references in the analyzer.
...
llvm-svn: 91710
2009-12-18 20:13:39 +00:00
Daniel Dunbar
c454ecf9d0
ARM: Define __thumb2__ for V6T2 targets and only define
...
__USING_SJLJ_EXCEPTIONS__ on Darwin.
llvm-svn: 91705
2009-12-18 19:57:13 +00:00
Douglas Gregor
b3fa919c2d
Extend code-completion results with the type of each result
...
llvm-svn: 91702
2009-12-18 18:53:37 +00:00
Daniel Dunbar
acde99ea52
ARM: Fix predefines (__ARM_ARCH_..., __REGISTER_PREFIX).
...
- This should be done leveraging the backend, but I'm a little refactored
out. I'll fix it one day, I promise.
llvm-svn: 91700
2009-12-18 18:42:37 +00:00
John McCall
b48971d63f
When diagnosing that a decl ref expr is not a value, note the declaration
...
with "declared at" rather than "previous declaration is here".
llvm-svn: 91699
2009-12-18 18:35:10 +00:00
Torok Edwin
d0139fd3e5
Debian has x86_64-linux-gnu, not x86_64-pc-linux-gnu, so add it.
...
llvm-svn: 91698
2009-12-18 17:43:54 +00:00
Douglas Gregor
4a2ce65dbf
Try to de-bork DISABLE_SMART_POINTERS build
...
llvm-svn: 91696
2009-12-18 17:31:58 +00:00
Anders Carlsson
28a133d602
CK_UserDefinedConversion is a valid kind when doing copy ctor elision.
...
llvm-svn: 91695
2009-12-18 17:29:21 +00:00
Torok Edwin
029707885c
Move the 4.4.2 c++ include search to the top, otherwise it was picking the 4.1.3
...
dirs on my system. Which is wrong, since it was missing the x86_64-pc-linux-gnu
suffix.
llvm-svn: 91694
2009-12-18 17:29:14 +00:00
Ken Dyck
01e620efaa
Change the return type of ASTContext::getTypeSizeInChars() from uint64_t to the
...
new opaque value type, CharUnits. This will help us avoid accidentally mixing
quantities that are in bit and character units.
llvm-svn: 91689
2009-12-18 15:55:54 +00:00
Ken Dyck
acfe6aa83a
Rename getByteSize() and getTypeSizeInBytes() in ASTContext to getCharWidth()
...
and getTypeSizeInChars() to reflect their basis in character type units, not
that of a possibly independent architecture-specific byte.
llvm-svn: 91688
2009-12-18 15:24:05 +00:00
Anders Carlsson
0087bc851c
Fix regression I introduced when dynamic_cast-ing to a reference type.
...
llvm-svn: 91687
2009-12-18 14:55:04 +00:00
Anders Carlsson
b396f43520
It's perfectly fine to see UserDefinedConversion casts when emitting scalar expressions.
...
llvm-svn: 91686
2009-12-18 14:42:03 +00:00
John Thompson
6f8dba7f9e
Tweaks for PS3 target.
...
llvm-svn: 91685
2009-12-18 14:21:08 +00:00
John Thompson
551446b31b
Removing trailing directory separator, to make stat work
...
llvm-svn: 91684
2009-12-18 14:18:21 +00:00
John McCall
d43784feae
Set up the semantic context correctly when declaring a friend class template.
...
llvm-svn: 91678
2009-12-18 11:25:59 +00:00
John McCall
c3f09ad253
Look through using decls when checking whether a name is an acceptable
...
nested-name specifier name.
I accidentally checked in the test case for this in the last commit ---
fortunately, that refactor was inspired by having debugged this problem already,
so I can fix the bug quick (though probably not fast enough for the buildbots).
llvm-svn: 91677
2009-12-18 10:48:10 +00:00
John McCall
ea305edd63
Pull Sema::isAcceptableLookupResult into SemaLookup. Extract the criteria into
...
different functions and pick the function at lookup initialization time.
In theory we could actually divide the criteria functions into N different
functions for the N cases, but it's so not worth it.
Among other things, lets us invoke LookupQualifiedName without recomputing
IDNS info every time.
Do some refactoring in SemaDecl to avoid an awkward special case in LQN
that was only necessary for redeclaration testing for anonymous structs/unions ---
which could be done more efficiently with a scoped lookup anyway.
llvm-svn: 91676
2009-12-18 10:40:03 +00:00
Daniel Dunbar
a7d0231b66
clang -cc1: Rename -mcpu to -target-cpu to match other target options and not alias driver/backend option.
...
llvm-svn: 91671
2009-12-18 06:30:12 +00:00
Douglas Gregor
357b6fd3e5
Address some of Anders comments
...
llvm-svn: 91670
2009-12-18 05:19:44 +00:00
Douglas Gregor
e1314a64b8
Switch the initialization required by return statements over to the
...
new InitializationSequence. This fixes some bugs (e.g., PR5808),
changed some diagnostics, and caused more churn than expected. What's
new:
- InitializationSequence now has a "C conversion sequence" category
and step kind, which falls back to
- Changed the diagnostics for returns to always have the result type
of the function first and the type of the expression second.
CheckSingleAssignmentConstraints to peform checking in C.
- Improved ASTs for initialization of return values. The ASTs now
capture all of the temporaries we need to create, but
intentionally do not bind the tempoary that is actually returned,
so that it won't get destroyed twice.
- Make sure to perform an (elidable!) copy of the class object that
is returned from a class.
- Fix copy elision in CodeGen to properly see through the
subexpressions that occur with elidable copies.
- Give "new" its own entity kind; as with return values and thrown
objects, we don't bind the expression so we don't call a
destructor for it.
Note that, with this patch, I've broken returning move-only types in
C++0x. We'll fix it later, when we tackle NRVO.
llvm-svn: 91669
2009-12-18 05:02:21 +00:00
Daniel Dunbar
24c7f5efc5
Add -dwarf-debug-flags, which provides a way to embed the cc1 level options used
...
to compile a translation unit into the debug info for that file.
- Used by parts of Darwin build process to check compiler flags, etc.
- <rdar://problem/7256886> clang does not emit AT_APPLE_flags
llvm-svn: 91661
2009-12-18 02:43:17 +00:00
Mike Stump
0da53228e6
Handle case when DestPtr is 0.
...
llvm-svn: 91658
2009-12-18 02:14:27 +00:00
Fariborz Jahanian
6ab7ed40c7
Implemented rewriting of invocation of a block ivar.
...
(radar 7482224).
llvm-svn: 91652
2009-12-18 01:15:21 +00:00
John McCall
90d3bb943e
Patch over yet more problems with friend declarations which were provoking
...
problems on LLVM-Code-Syntax. This proved remarkably easy to "fix" once
I settled on how I was going to approach it.
llvm-svn: 91633
2009-12-17 23:21:11 +00:00
Mike Stump
6dc04f4067
Revert r91073.
...
llvm-svn: 91629
2009-12-17 22:14:41 +00:00
Ted Kremenek
48af0e0a71
Tweak formatting and comments.
...
llvm-svn: 91615
2009-12-17 20:10:17 +00:00
Ted Kremenek
94cc33f33e
Convert GRExprEngine::VisitCallExpr() to use a worklist instead of recursion to evaluate the arguments of a CallExpr. This simplifies the logic and makes it easier to read. (it also avoids any issues with blowing out the stack if the CallExpr had a ridiculous number of arguments)
...
llvm-svn: 91613
2009-12-17 20:06:29 +00:00
Ted Kremenek
da7d55a4a8
Reduce nesting by using early exits. No functionality change.
...
llvm-svn: 91610
2009-12-17 19:17:27 +00:00
Nuno Lopes
e9823fab83
implement PR3962: diagnose more faulty cases of usage of the restrict qualifier. this also removes a FIXME
...
llvm-svn: 91601
2009-12-17 11:35:26 +00:00
Nuno Lopes
641fdce235
revert part of my last patch, and mark only the c++ global new operator as noalias. the rest will be infered by llvm optz
...
llvm-svn: 91600
2009-12-17 10:15:49 +00:00
Ted Kremenek
f907cee544
Sort switch statement. No functionality change.
...
llvm-svn: 91591
2009-12-17 07:38:34 +00:00
Anders Carlsson
3f4336cb1f
Rename GetAddrOfRTTI to GetAddrOfRTTIDescriptor. Remove the overload that takes a CXXRecordDecl since we were just creating a QualType from it anyway.
...
llvm-svn: 91590
2009-12-17 07:09:17 +00:00
Mike Stump
cd8faeb0b1
Ensure we run cleanups for CXXTemporaries on the exceptional edge. WIP.
...
llvm-svn: 91588
2009-12-17 06:08:47 +00:00
Chris Lattner
3dfff974ec
reimplement r90860, fixing a couple of problems:
...
1. Don't make a copy of LangOptions every time a lexer is created.
2. Don't make CharInfo global mutable state.
3. Fix the implementation to properly treat ^Z as EOF instead of as
horizontal whitespace, which matches the semantic implemented by VC++.
llvm-svn: 91586
2009-12-17 05:29:40 +00:00
Anders Carlsson
1fd734276d
Simplify RTTIBuilder::finish.
...
llvm-svn: 91585
2009-12-17 05:10:59 +00:00
Anders Carlsson
e5a94105eb
Move the Info vector into the RTTIBuilder struct. No functionality change.
...
llvm-svn: 91583
2009-12-17 05:06:03 +00:00
Ted Kremenek
2e2b258158
Fix check in GRExprEngine for the 'main' function to handle NULL IdentifierInfo*'s.
...
llvm-svn: 91577
2009-12-17 01:20:43 +00:00
Fariborz Jahanian
057a17e4c5
Diagnose duplicate declaration of a property. Fixes
...
PR5809
llvm-svn: 91575
2009-12-17 00:49:09 +00:00
Eli Friedman
7f4933f6c7
Fix for PR5801: codegen memcpy, memmove, memset directly to LLVM intrinsics.
...
llvm-svn: 91573
2009-12-17 00:14:28 +00:00
Ted Kremenek
d970acb60f
Completely remove ObjCObjectRegion (tests pass this time).
...
llvm-svn: 91572
2009-12-16 23:53:37 +00:00
Fariborz Jahanian
01cbe441b3
Allow pointer convesion of an objective-c pointer to
...
'void *' to mimic gcc's behavior. (fixes radar 7477351).
llvm-svn: 91570
2009-12-16 23:13:33 +00:00
Eli Friedman
6a8dc922b3
Make sure C-specific enum warning doesn't trigger in C++.
...
llvm-svn: 91563
2009-12-16 20:30:08 +00:00
Daniel Dunbar
15cef0ed42
Fix -fdollars-in-identifiers Clang translation.
...
llvm-svn: 91562
2009-12-16 20:10:18 +00:00
Eli Friedman
5dd02a0f65
Correctly calcluate abstract-ness in the case where an implicitly declared
...
method overrides a pure virtual method.
llvm-svn: 91558
2009-12-16 20:00:27 +00:00
Ted Kremenek
3ab9e4cf87
Temporarily revert 91553.
...
llvm-svn: 91557
2009-12-16 19:46:44 +00:00
Ted Kremenek
023bceaf1b
Remove use of ObjCObjectRegion from BasicStoreManager.
...
llvm-svn: 91553
2009-12-16 19:42:23 +00:00
Douglas Gregor
4f4b186215
When value-initializing a class with no user-defined constructors but
...
with a non-trivial default constructor, zero-initialize the storage
and then call the default constructor. Fixes PR5800.
llvm-svn: 91548
2009-12-16 18:50:27 +00:00
Fariborz Jahanian
00857fc376
Diagnose property of reference type as unsupported
...
instead of crashing for now.
llvm-svn: 91546
2009-12-16 18:03:30 +00:00
Anders Carlsson
d681a29ac0
Baby steps towards fixing PR5589. If a class needs a vtable pointer, add one.
...
llvm-svn: 91545
2009-12-16 17:27:20 +00:00
Nuno Lopes
13c88c7269
implement PR5654: add -fassume-sane-operator-new, which is enabled by default, and adds the malloc attribute to the global function new() and to the overloaded new operators.
...
feel free to chage the name to this lengthy argument
llvm-svn: 91543
2009-12-16 16:59:22 +00:00
Douglas Gregor
59ae3c8542
In Sema::CheckInitializerTypes, replace a use of CheckReferenceInit with an InitializationSequence
...
llvm-svn: 91542
2009-12-16 16:54:16 +00:00