| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
|
| |
representing the names of declarations in the C family of
languages. DeclarationName is used in NamedDecl to store the name of
the declaration (naturally), and ObjCMethodDecl is now a NamedDecl.
llvm-svn: 59441
|
|
|
|
|
|
|
|
| |
passing block argument
SynthBlockInitExpr() was not adding by-ref arguments to the init expr.
llvm-svn: 59322
|
|
|
|
|
|
| |
_OBJC_SYMBOLS
llvm-svn: 59301
|
|
|
|
|
|
| |
corresponding interface (found while doing random testing on another bug).
llvm-svn: 59259
|
|
|
|
|
|
| |
and <rdar://problem/6344601> clang ObjC rewriter: crash passing Block parameter?
llvm-svn: 59251
|
|
|
|
|
|
|
|
| |
- Resume running the always inliner pass always now that LLVM has
been improved and functions with debug info can be inlined.
- Remove unused header.
llvm-svn: 59223
|
|
|
|
|
|
|
|
| |
the Backend output should be done in binary mode.
- I'd appreciate it if someone who has a Windows build could verify
this.
llvm-svn: 59221
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
functions for built-in operators, e.g., the builtin
bool operator==(int const*, int const*)
can be used for the expression "x1 == x2" given:
struct X {
operator int const*();
} x1, x2;
The scheme for handling these built-in operators is relatively simple:
for each candidate required by the standard, create a special kind of
candidate function for the built-in. If overload resolution picks the
built-in operator, we perform the appropriate conversions on the
arguments and then let the normal built-in operator take care of it.
There may be some optimization opportunity left: if we can reduce the
number of built-in operator overloads we generate, overload resolution
for these cases will go faster. However, one must be careful when
doing this: GCC generates too few operator overloads in our little
test program, and fails to compile it because none of the overloads it
generates match.
Note that we only support operator overload for non-member binary
operators at the moment. The other operators will follow.
As part of this change, ImplicitCastExpr can now be an lvalue.
llvm-svn: 59148
|
|
|
|
|
|
| |
expressions, both of values and types.
llvm-svn: 59057
|
|
|
|
|
|
| |
Don't free AST consumer when --disable-free is set.
llvm-svn: 59030
|
|
|
|
| |
llvm-svn: 59024
|
|
|
|
|
|
|
|
| |
Parser side.
No Sema functionality change, just the signatures of the Action/Sema methods.
llvm-svn: 58913
|
|
|
|
| |
llvm-svn: 58831
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
operators. For example, one can now write "x + y" where x or y is a
class or enumeration type, and Clang will perform overload resolution
for "+" based on the overloaded operators it finds.
The other kinds of overloadable operators in C++ will follow this same
approach.
Three major issues remain:
1) We don't find member operators
2) Since we don't have user-defined conversion operators, we can't
call any of the built-in overloaded operators in C++ [over.built].
3) Once we've done the semantic checks, we drop the overloaded
operator on the floor; it doesn't get into the AST at all.
llvm-svn: 58821
|
|
|
|
| |
llvm-svn: 58766
|
|
|
|
|
|
| |
'super'. Remove ObjCThis from PredefinedExpr
llvm-svn: 58698
|
|
|
|
|
|
| |
< FileIDs.size() && "Invalid FileID!", file c:\cygwin\home\Administrator\llvm\tools\clang\include\clang/Basic/SourceManager.h, line 513
llvm-svn: 58654
|
|
|
|
|
|
| |
Fix Plist output.
llvm-svn: 58652
|
|
|
|
| |
llvm-svn: 58646
|
|
|
|
|
|
| |
Offset+NumBytes <= size() && "Invalid region to erase!", file c:\cygwin\home\Administrator\llvm\to ols\clang\include\clang/Rewrite/RewriteRope.h, line 219.
llvm-svn: 58607
|
|
|
|
| |
llvm-svn: 58500
|
|
|
|
|
|
|
|
| |
were being treated as type names for non-Objective-C files.
- Other lines are just because MinimalAction didn't have access to
the LangOptions.
llvm-svn: 58498
|
|
|
|
| |
llvm-svn: 58430
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Now this:
@interface Test
{
void (^ivar)(void);
}
- (void)name;
@end
@implementation Test
- (void)name {
ivar = ^{ printf("hello\n"); }; // ((struct Test_IMPL *)self)->ivar = (void (*)(void))&__name_block_impl_0((void *)__name_block_func_0);
ivar(); // ((void (*)(struct __block_impl *))((struct __block_impl *)((struct Test_IMPL *)self)->ivar)->FuncPtr)((struct __block_impl *)((struct Test_IMPL *)self)->ivar);
}
llvm-svn: 58428
|
|
|
|
| |
llvm-svn: 58427
|
|
|
|
| |
llvm-svn: 58420
|
|
|
|
| |
llvm-svn: 58396
|
|
|
|
| |
llvm-svn: 58390
|
|
|
|
|
|
| |
pretty printing.
llvm-svn: 58380
|
|
|
|
|
|
|
|
| |
code generation.
- For now, disable running the always inliner pass (at -O0) if we are
also generating debug information.
llvm-svn: 58376
|
|
|
|
| |
llvm-svn: 58374
|
|
|
|
|
|
| |
closely.
llvm-svn: 58361
|
|
|
|
| |
llvm-svn: 58349
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
With this commit, stuff like this is very close to working...
[foo barf:^(int){ printf("whatever\n"); }];
Here is what is currently translates to...
((id (*)(id, SEL, void (^)(int)))(void *)objc_msgSend)((id)foo, sel_registerName("barf:"), (void (*)(int))__main_block_func_0);
I just need make sure the funky cast on objc_msgSend() is converted from "void (^)(int)" to "void (*)(int)". Since the cast doesn't appear in the source code, it needs to be converted in RewriteObjC::SynthMessageExpr().
llvm-svn: 58348
|
|
|
|
|
|
| |
- No functionality change.
llvm-svn: 58342
|
|
|
|
| |
llvm-svn: 58331
|
|
|
|
| |
llvm-svn: 58308
|
|
|
|
|
|
| |
- Nice if -verify test exercise the various cleanup functions.
llvm-svn: 58285
|
|
|
|
|
|
| |
- No functionality change.
llvm-svn: 58282
|
|
|
|
| |
llvm-svn: 58269
|
|
|
|
| |
llvm-svn: 58266
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Add support for -MP (phony targets).
- Use raw_ostream for output instead of std::string concatenation.
- Break long lines in a GCC (4.2) compatible manner.
- Output dependents in #included order (to match GCC).
llvm-svn: 58265
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- CastExpr is the root of all casts
- ImplicitCastExpr is (still) used for all explicit casts
- ExplicitCastExpr is now the root of all *explicit* casts
- ExplicitCCastExpr (new name needed!?) is a C-style cast in C or C++
- CXXFunctionalCastExpr inherits from ExplicitCastExpr
- CXXNamedCastExpr inherits from ExplicitCastExpr and is the root of all
of the C++ named cast expression types (static_cast, dynamic_cast, etc.)
- Added classes CXXStaticCastExpr, CXXDynamicCastExpr,
CXXReinterpretCastExpr, and CXXConstCastExpr to
Also, fixed returned-stack-addr.cpp, which broke once when we fixed
reinterpret_cast to diagnose double->int* conversions and again when
we eliminated implicit conversions to reference types. The fix is in
both testcase and SemaChecking.cpp.
Most of this patch is simply support for the renaming. There's very
little actual change in semantics.
llvm-svn: 58264
|
|
|
|
| |
llvm-svn: 58262
|
|
|
|
| |
llvm-svn: 58253
|
|
|
|
| |
llvm-svn: 58224
|
|
|
|
| |
llvm-svn: 58218
|
|
|
|
|
|
| |
support as far as I know.
llvm-svn: 58217
|
|
|
|
| |
llvm-svn: 58198
|
|
|
|
|
|
|
|
|
| |
TypeQuals parameter, it causes subtle bugs where TypeQuals, while necessary, are omitted from the call.
-Remove the default argument.
-Update all call sites of ASTContext::getFunctionType.
llvm-svn: 58187
|