| #
c8317a44 |
| 23-Aug-2008 |
Daniel Dunbar <[email protected]> |
Implement Obj-C ivar references to aggregates.
Implement Obj-C lvalue message sends (aggregate returns).
Update several places to emit more precise ErrorUnsupported warnings for currently unimple
Implement Obj-C ivar references to aggregates.
Implement Obj-C lvalue message sends (aggregate returns).
Update several places to emit more precise ErrorUnsupported warnings for currently unimplemented Obj-C features (main missing chunks are property references, Obj-C exception handling, and the for ... in syntax).
llvm-svn: 55234
show more ...
|
| #
97db84ce |
| 23-Aug-2008 |
Daniel Dunbar <[email protected]> |
Trim CGObjCRuntime::GenerateMessageSend[Super] - Returns an RValue. - Reduced to only taking the CodeGenFunction, Expr, and Receiver. - Becomes responsible for emitting the arguments.
Add CodeGen
Trim CGObjCRuntime::GenerateMessageSend[Super] - Returns an RValue. - Reduced to only taking the CodeGenFunction, Expr, and Receiver. - Becomes responsible for emitting the arguments.
Add CodeGenFunction::EmitCallExprExt - Takes optional extra arguments to insert at the head of the call. - This allows the Obj-C runtimes to call into this and isolates the argument and call instruction generation code to one place. Upshot is that we now pass structures (more) correctly.
Also, fix one aspect of generating methods which take structure arguments (for NeXT). This probably needs to be merged with the SetFunctionAttributes code in CodeGenModule.cpp
llvm-svn: 55223
show more ...
|
| #
a7c8cf62 |
| 16-Aug-2008 |
Daniel Dunbar <[email protected]> |
Change WarnUnsupported to ErrorUnsupported (in name and in practice). - We are beyond the point where this shows up often and when it does generating miscompiled files is bad.
llvm-svn: 54836
|
| #
ad319a73 |
| 11-Aug-2008 |
Daniel Dunbar <[email protected]> |
More #include cleaning - Remove internal uses of AST.h
llvm-svn: 54628
|
| #
c893a67f |
| 08-Aug-2008 |
Chris Lattner <[email protected]> |
update to make IRBuilder API change.
llvm-svn: 54548
|
| #
e8bdce44 |
| 06-Aug-2008 |
Daniel Dunbar <[email protected]> |
Fix EmitNullInitializationToLValue for bitfield lvalues. - PR2643
llvm-svn: 54397
|
| #
7adf0760 |
| 04-Aug-2008 |
Chris Lattner <[email protected]> |
Finally fix PR2189. This makes a fairly invasive but important change to move getAsArrayType into ASTContext instead of being a method on type. This is required because getAsArrayType(const AT), whe
Finally fix PR2189. This makes a fairly invasive but important change to move getAsArrayType into ASTContext instead of being a method on type. This is required because getAsArrayType(const AT), where AT is a typedef for "int[10]" needs to return ArrayType(const int, 10).
Fixing this greatly simplifies getArrayDecayedType, which is a good sign.
llvm-svn: 54317
show more ...
|
| #
b39b1cd7 |
| 30-Jul-2008 |
Daniel Dunbar <[email protected]> |
Fix implicit initialization of structures.
<rdar://problem/6113085>
llvm-svn: 54237
|
| #
0f398c44 |
| 26-Jul-2008 |
Chris Lattner <[email protected]> |
remove uses of QualType::getCanonicalType() from codegen for PR2189
llvm-svn: 54107
|
| #
b1d329da |
| 24-Jun-2008 |
Chris Lattner <[email protected]> |
"Support for Objective-C message sends which return structures. Also includes a small fix for constant string handling that should have been in the last patch (sorry!) and a hook for generating sele
"Support for Objective-C message sends which return structures. Also includes a small fix for constant string handling that should have been in the last patch (sorry!) and a hook for generating selectors (rest of this implementation to follow in the next patch)."
Patch by David Chisnall!
llvm-svn: 52681
show more ...
|
| #
08e17118 |
| 17-Jun-2008 |
Ted Kremenek <[email protected]> |
This patch is motivated by numerous strict-aliasing warnings when compiling clang as a Release build.
The big change is that all AST nodes (subclasses of Stmt) whose children are Expr* store their c
This patch is motivated by numerous strict-aliasing warnings when compiling clang as a Release build.
The big change is that all AST nodes (subclasses of Stmt) whose children are Expr* store their children as Stmt* or arrays of Stmt*. This is to remove strict-aliasing warnings when using StmtIterator. None of the interfaces of any of the classes have changed (except those with arg_iterators, see below), as the accessor methods introduce the needed casts (via cast<>). While this extra casting may seem cumbersome, it actually adds some important sanity checks throughout the codebase, as clients using StmtIterator can potentially overwrite children that are expected to be Expr* with Stmt* (that aren't Expr*). The casts provide extra sanity checks that are operational in debug builds to catch invariant violations such as these.
For classes that have arg_iterators (e.g., CallExpr), the definition of arg_iterator has been replaced. Instead of it being Expr**, it is an actual class (called ExprIterator) that wraps a Stmt**, and provides the necessary operators for iteration. The nice thing about this class is that it also uses cast<> to type-checking, which introduces extra sanity checks throughout the codebase that are useful for debugging.
A few of the CodeGen functions that use arg_iterator (especially from OverloadExpr) have been modified to take begin and end iterators instead of a base Expr** and the number of arguments. This matches more with the abstraction of iteration. This still needs to be cleaned up a little bit, as clients expect that ExprIterator is a RandomAccessIterator (which we may or may not wish to allow for efficiency of representation).
This is a fairly large patch. It passes the tests (except CodeGen/bitfield.c, which was already broken) on both a Debug and Release build, but it should obviously be reviewed.
llvm-svn: 52378
show more ...
|
| #
327944b3 |
| 13-Jun-2008 |
Eli Friedman <[email protected]> |
Basic support for volatile loads and stores. Stores the volatile qualifier in the lvalue, and changes lvalue loads/stores to honor the volatile flag. Places which need some further attention are m
Basic support for volatile loads and stores. Stores the volatile qualifier in the lvalue, and changes lvalue loads/stores to honor the volatile flag. Places which need some further attention are marked with FIXMEs.
Patch by Cédric Venet.
llvm-svn: 52264
show more ...
|
|
Revision tags: llvmorg-2.3.0 |
|
| #
21911e89 |
| 27-May-2008 |
Eli Friedman <[email protected]> |
A few more cases for aggregate values.
llvm-svn: 51596
|
| #
df649f3d |
| 26-May-2008 |
Eli Friedman <[email protected]> |
Emit memmove, not memcpy, for structure copies; this is unfortunately required for correctness in cases of copying a struct to itself or to an overlapping struct (itself for cases like *a = *a, and
Emit memmove, not memcpy, for structure copies; this is unfortunately required for correctness in cases of copying a struct to itself or to an overlapping struct (itself for cases like *a = *a, and overlapping is possible with unions).
Hopefully, this won't end up being a perf issue; LLVM *should* be able to optimize memmove to memcpy in a lot of cases, and for small copies the generated code *should* be mostly comparable. (In reality, LLVM is currently horrible at optimizing memmove, but that's a bug, not a fundamental issue.)
gcc currently generates wrong code; that's http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32667.
llvm-svn: 51566
show more ...
|
| #
5d30975e |
| 22-May-2008 |
Dan Gohman <[email protected]> |
Change uses of llvm::Type::isFirstClassType to use the new llvm::Type::isSingleValueType. Currently these two functions have the same behavior, but soon isFirstClassType will return true for struct a
Change uses of llvm::Type::isFirstClassType to use the new llvm::Type::isSingleValueType. Currently these two functions have the same behavior, but soon isFirstClassType will return true for struct and array types.
Clang may some day want to use of isFirstClassType for some of these some day as an optimization, but it'll require some consideration.
llvm-svn: 51446
show more ...
|
| #
4b0e2a30 |
| 20-May-2008 |
Eli Friedman <[email protected]> |
Implement codegen for comma operator for structs.
llvm-svn: 51304
|
| #
f23b6fa4 |
| 19-May-2008 |
Eli Friedman <[email protected]> |
Fix the emission of expressions like char a[10] = "asdf"; previously, they were causing bad code to be emitted. There are two fixes here: one makes sure we emit a string that is long enough, and o
Fix the emission of expressions like char a[10] = "asdf"; previously, they were causing bad code to be emitted. There are two fixes here: one makes sure we emit a string that is long enough, and one makes sure we properly handle string initialization in init lists.
llvm-svn: 51259
show more ...
|
| #
6e313210 |
| 12-May-2008 |
Eli Friedman <[email protected]> |
Don't try to take the address of a bitfield; fixes PR2310.
llvm-svn: 50966
|
| #
dbcc2ca6 |
| 06-May-2008 |
Chris Lattner <[email protected]> |
simplify some builder calls.
llvm-svn: 50694
|
| #
61705c1a |
| 13-Apr-2008 |
Chris Lattner <[email protected]> |
update to follow mainline llvm API change.
llvm-svn: 49607
|
| #
aa9c7aed |
| 08-Apr-2008 |
Chris Lattner <[email protected]> |
Add support for C++ default arguments, and rework Parse-Sema interaction for function parameters, fixing PR2046.
Patch by Doug Gregor!
llvm-svn: 49369
|
| #
d36afd7d |
| 06-Apr-2008 |
Gabor Greif <[email protected]> |
tracking API changes arising from r49277
llvm-svn: 49279
|
| #
579a05d7 |
| 04-Apr-2008 |
Chris Lattner <[email protected]> |
Fix PR2049, updating Eli's patch that fixes to mainline. This produces incorrect code, but the codegen doesn't crash. I'll file a bugzilla for the AST being wrong.
llvm-svn: 49226
|
| #
f3bc75af |
| 04-Apr-2008 |
Chris Lattner <[email protected]> |
Since isComplexType() no longer returns true for _Complex integers, the code generator needs to call isAnyComplexType(). This fixes PR1960.
llvm-svn: 49220
|
| #
3e593cdb |
| 19-Mar-2008 |
Chris Lattner <[email protected]> |
simplify the clang codegen by using the new Builder.CreateStructGEP method.
llvm-svn: 48534
|