| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
|
|
|
|
| |
stubs for those types we don't yet know how to instantiate (everything
that isn't a template parameter!).
We now instantiate default arguments for template type parameters when
needed. This will be our testbed while I fill out the remaining
type-instantiation logic.
llvm-svn: 65649
|
|
|
|
|
|
|
|
| |
in C89 mode. This makes it enabled by default instead of only enabled with
-pedantic. Clang defaults to c99 mode, so people will see this more often
than with GCC, but they can always use -std=c89 if they really want c89.
llvm-svn: 65647
|
|
|
|
| |
llvm-svn: 65646
|
|
|
|
| |
llvm-svn: 65645
|
|
|
|
| |
llvm-svn: 65644
|
|
|
|
|
|
|
|
|
|
| |
(printf, X, Y)))'
set HasVAListArg to true when 'Y' is 0 (i.e., ignore the data arguments).
This fixes <rdar://problem/6623513>.
llvm-svn: 65642
|
|
|
|
| |
llvm-svn: 65641
|
|
|
|
|
|
|
| |
useless to something more vague but hopefully more clear.
rdar://6624173
llvm-svn: 65639
|
|
|
|
|
|
|
|
| |
normal expression, and change Evaluate and IRGen to evaluate it like a
normal expression. This simplifies the code significantly, and fixes
PR3396.
llvm-svn: 65622
|
|
|
|
|
|
| |
with the LLVM C backend.
llvm-svn: 65615
|
|
|
|
| |
llvm-svn: 65613
|
|
|
|
|
|
| |
strict constant initializer checking.
llvm-svn: 65612
|
|
|
|
| |
llvm-svn: 65611
|
|
|
|
|
|
|
| |
Daniel. Some minor fixes/cleanup. Allow __builtin_choose_expr,
__real__, and __imag__ in ICEs, following gcc's example.
llvm-svn: 65610
|
|
|
|
| |
llvm-svn: 65609
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
| |
but in C99 it is just another int type.
llvm-svn: 65590
|
|
|
|
| |
llvm-svn: 65589
|
|
|
|
|
|
|
| |
initialization of wchar_t arrays with wide strings, and generalizes
wchar_size.c to work on all targets.
llvm-svn: 65586
|
|
|
|
|
|
|
| |
Unfortunately this doesn't work yet because wchar_t is completely
broken in C.
llvm-svn: 65585
|
|
|
|
| |
llvm-svn: 65583
|
|
|
|
| |
llvm-svn: 65582
|
|
|
|
| |
llvm-svn: 65578
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
| |
diagnostic messages.
llvm-svn: 65574
|
|
|
|
|
|
| |
(This is not yet used.)
llvm-svn: 65573
|
|
|
|
| |
llvm-svn: 65571
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
| |
- For types whose native representation is a pointer.
- Use to replace ExprConstant.cpp:HasPointerEvalType,
CodeGenFunction::isObjCPointerType.
llvm-svn: 65569
|
|
|
|
| |
llvm-svn: 65568
|
|
|
|
|
|
|
| |
- Having pointers and references share a base was not a useful
notion.
llvm-svn: 65567
|
|
|
|
|
|
|
|
| |
pointer type.
- Drops use of PointerLikeType.
- No intended functionality change.
llvm-svn: 65566
|
|
|
|
|
|
| |
- No functionality change.
llvm-svn: 65563
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
| |
- No functionality change.
llvm-svn: 65560
|
|
|
|
|
|
| |
the symbol for the root meta-data.
llvm-svn: 65548
|
|
|
|
|
|
| |
This was a fairly recent regression.
llvm-svn: 65547
|
|
|
|
| |
llvm-svn: 65533
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
llvm-svn: 65529
|
|
|
|
|
|
|
|
|
|
| |
in inherited protocols.
Also changed ObjCInterfaceDecl::lookupClassMethod() to look through a categories protocols.
Test/patch submitted by Jean-Daniel Dupas (thanks!).
llvm-svn: 65526
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
llvm-svn: 65519
|
|
|
|
|
|
| |
- <rdar://problem/6622451> Bad x86_64 code gen for message call taking one argument.
llvm-svn: 65510
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
| |
variable declarations where applicable. Also, a few fixes to
TryToFixInvalidVariablyModifiedType for issues that this exposed.
llvm-svn: 65500
|
|
|
|
| |
llvm-svn: 65489
|
|
|
|
|
|
|
|
| |
derive from a class template specialization, e.g.,
class B : public A<int> { };
llvm-svn: 65488
|
|
|
|
| |
llvm-svn: 65487
|