- Feb 27, 2009
-
-
Douglas Gregor authored
giving them rough classifications (normal types, never-canonical types, always-dependent types, abstract type representations) and making it far easier to make sure that we've hit all of the cases when decoding types. Switched some switch() statements on the type class over to using this mechanism, and filtering out those things we don't care about. For example, CodeGen should never see always-dependent or non-canonical types, while debug info generation should never see always-dependent types. More switch() statements on the type class need to be moved over to using this approach, so that we'll get warnings when we add a new type then fail to account for it somewhere in the compiler. As part of this, some types have been renamed: TypeOfExpr -> TypeOfExprType FunctionTypeProto -> FunctionProtoType FunctionTypeNoProto -> FunctionNoProtoType There shouldn't be any functionality change... llvm-svn: 65591
-
Chris Lattner authored
but in C99 it is just another int type. llvm-svn: 65590
-
Chris Lattner authored
llvm-svn: 65589
-
Chris Lattner authored
initialization of wchar_t arrays with wide strings, and generalizes wchar_size.c to work on all targets. llvm-svn: 65586
-
Chris Lattner authored
Unfortunately this doesn't work yet because wchar_t is completely broken in C. llvm-svn: 65585
-
Fariborz Jahanian authored
llvm-svn: 65583
-
Chris Lattner authored
llvm-svn: 65582
-
- Feb 26, 2009
-
-
Fariborz Jahanian authored
llvm-svn: 65578
-
Douglas Gregor authored
nicely sugared type that shows how the user wrote the actual specialization. This sugared type won't actually show up until we start doing instantiations. llvm-svn: 65577
-
Ted Kremenek authored
llvm-svn: 65574
-
Devang Patel authored
(This is not yet used.) llvm-svn: 65573
-
Ted Kremenek authored
llvm-svn: 65571
-
Douglas Gregor authored
know how to recover from an error, we can attach a hint to the diagnostic that states how to modify the code, which can be one of: - Insert some new code (a text string) at a particular source location - Remove the code within a given range - Replace the code within a given range with some new code (a text string) Right now, we use these hints to annotate diagnostic information. For example, if one uses the '>>' in a template argument in C++98, as in this code: template<int I> class B { }; B<1000 >> 2> *b1; we'll warn that the behavior will change in C++0x. The fix is to insert parenthese, so we use code insertion annotations to illustrate where the parentheses go: test.cpp:10:10: warning: use of right-shift operator ('>>') in template argument will require parentheses in C++0x B<1000 >> 2> *b1; ^ ( ) Use of these annotations is partially implemented for HTML diagnostics, but it's not (yet) producing valid HTML, which may be related to PR2386, so it has been #if 0'd out. In this future, we could consider hooking this mechanism up to the rewriter to actually try to fix these problems during compilation (or, after a compilation whose only errors have fixes). For now, however, I suggest that we use these code modification hints whenever we can, so that we get better diagnostics now and will have better coverage when we find better ways to use this information. This also fixes PR3410 by placing the complaint about missing tokens just after the previous token (rather than at the location of the next token). llvm-svn: 65570
-
Daniel Dunbar authored
- For types whose native representation is a pointer. - Use to replace ExprConstant.cpp:HasPointerEvalType, CodeGenFunction::isObjCPointerType. llvm-svn: 65569
-
Ted Kremenek authored
llvm-svn: 65568
-
Daniel Dunbar authored
- Having pointers and references share a base was not a useful notion. llvm-svn: 65567
-
Daniel Dunbar authored
pointer type. - Drops use of PointerLikeType. - No intended functionality change. llvm-svn: 65566
-
Daniel Dunbar authored
- No functionality change. llvm-svn: 65563
-
rdar://problem/6574319Steve Naroff authored
Fix <rdar://problem/6574319> clang issues error on 'readonly' property with a defaul setter attribute. Needed to make isPropertyReadonly() non-const (for this fix to compile). I imagine there's a way to retain the const-ness, however I have more important fish to fry. llvm-svn: 65562
-
Daniel Dunbar authored
- No functionality change. llvm-svn: 65560
-
Fariborz Jahanian authored
the symbol for the root meta-data. llvm-svn: 65548
-
-
Anders Carlsson authored
llvm-svn: 65533
-
http://llvm.org/bugs/show_bug.cgi?id=3544Steve Naroff authored
The code for looking up local/private method in Sema::ActOnInstanceMessage() was not handling categories properly. Sema::ActOnClassMessage() didn't have this bug. Created a helper with the correct logic and changed both methods to use it. llvm-svn: 65532
-
Sebastian Redl authored
llvm-svn: 65529
-
Steve Naroff authored
Also changed ObjCInterfaceDecl::lookupClassMethod() to look through a categories protocols. Test/patch submitted by Jean-Daniel Dupas (thanks!). llvm-svn: 65526
-
Eli Friedman authored
pretty sure we want to keep constant expression verification outside of Evaluate. Because of that, the short-circuit evaluation doesn't generally make sense, and the comma warning doesn't make sense in its current form. llvm-svn: 65525
-
Eli Friedman authored
is a rather big change, but I think this is the direction we want to go; the code is significantly shorter now, and it doesn't duplicate Evaluate code. There shouldn't be any visible changes as far as I know. There has been some movement towards putting ICE handling into Evaluate (for example, VerifyIntegerConstantExpression uses Evaluate instead of isICE). This patch is sort of the opposite of the approach, making ICE handling work without Evaluate being aware of it. I think this approach is better because it separates the code that does the constant evaluation from code that's calculating a rather arbitrary predicate. The one thing I don't really like about this patch is that the handling of commas in C99 complicates it signficantly. (Seriously, what was the standards committee thinking when they wrote that part?) I think I've come up with a decent approach, but it doesn't feel ideal. I might add some way to check for evaluated commas from Evaluate in a subsequent patch; that said, it might not be worth bothering. llvm-svn: 65524
-
Mike Stump authored
llvm-svn: 65519
-
Daniel Dunbar authored
- <rdar://problem/6622451> Bad x86_64 code gen for message call taking one argument. llvm-svn: 65510
-
Eli Friedman authored
anymore. If we want to reuse bits and pieces to add strict checking for constant initializers, we can dig them out of SVN history; the existing code won't be useful as-is. llvm-svn: 65502
-
Eli Friedman authored
variable declarations where applicable. Also, a few fixes to TryToFixInvalidVariablyModifiedType for issues that this exposed. llvm-svn: 65500
-
Douglas Gregor authored
llvm-svn: 65489
-
Douglas Gregor authored
derive from a class template specialization, e.g., class B : public A<int> { }; llvm-svn: 65488
-
Mike Stump authored
llvm-svn: 65487
-
Ted Kremenek authored
llvm-svn: 65486
-
Ted Kremenek authored
llvm-svn: 65485
-
Douglas Gregor authored
vector<vector<double>> Matrix; In C++98/03, this token always means "right shift". However, if we're in a context where we know that it can't mean "right shift", provide a friendly reminder to put a space between the two >'s and then treat it as two >'s as part of recovery. In C++0x, this token is always broken into two '>' tokens. llvm-svn: 65484
-
- Feb 25, 2009
-
-
Ted Kremenek authored
expressions of the form: 'short x = (y != 10);' While we handle 'int x = (y != 10)' lazily, the cast to another integer type currently loses the symbolic constraint. Eager evaluation of the constraint causes the paths to bifurcate and eagerly evaluate 'y != 10' to a constant of 1 or 0. This should address <rdar://problem/6619921> until we have a better (more lazy approach) for handling promotions/truncations of symbolic integer values. llvm-svn: 65480
-
Douglas Gregor authored
decls. Test and document the semantic location of class template specialization definitions that occur within a scope enclosing the scope of the class template. llvm-svn: 65478
-