- Feb 08, 2009
-
-
Anders Carlsson authored
Add a simple RAII object, to be used for pushing a cleanup entry and make the insertion point be the cleanup block. llvm-svn: 64048
-
Mike Stump authored
correctly. This should lay the ground work to throw the big switch and start code gening break and continue in the presense of vlas. llvm-svn: 64046
-
- Feb 07, 2009
-
-
Anders Carlsson authored
llvm-svn: 64043
-
Anders Carlsson authored
llvm-svn: 64032
-
Anders Carlsson authored
llvm-svn: 64031
-
Mike Stump authored
llvm-svn: 64021
-
Mike Stump authored
llvm-svn: 64014
-
- Feb 05, 2009
-
-
Daniel Dunbar authored
llvm-svn: 63845
-
- Feb 04, 2009
-
-
Daniel Dunbar authored
llvm-svn: 63678
-
- Feb 03, 2009
-
-
Fariborz Jahanian authored
llvm-svn: 63644
-
Sanjiv Gupta authored
Specify external linkage for such globals so that llvm optimizer do not assume there values initialized as zero. llvm-svn: 63636
-
Sanjiv Gupta authored
llvm-svn: 63634
-
Fariborz Jahanian authored
llvm-svn: 63578
-
- Feb 02, 2009
-
-
Daniel Dunbar authored
- Lift CGFunctionInfo creation above ReturnTypeUsesSret and EmitFunction{Epi,Pro}log. llvm-svn: 63553
-
Daniel Dunbar authored
- Lift CGFunctionInfo creation up to callers of EmitCall. - Move isVariadic bit out of CGFunctionInfo, take as argument to GetFunctionType instead. No functionality change. llvm-svn: 63550
-
- Jan 27, 2009
-
-
Daniel Dunbar authored
case correctly. llvm-svn: 63068
-
- Jan 20, 2009
-
-
Eli Friedman authored
struct. llvm-svn: 62585
-
- Jan 11, 2009
-
-
Anders Carlsson authored
llvm-svn: 62042
-
- Jan 10, 2009
-
-
Fariborz Jahanian authored
not merging protocol properties into the classes which use those protocols. With this patch, all my exceutable test pass again. llvm-svn: 62030
-
- Jan 09, 2009
-
-
Daniel Dunbar authored
crashes. llvm-svn: 61992
-
- Dec 20, 2008
-
-
Anders Carlsson authored
Emit the size even if the declared type is a variably modified type. This lets us handle void f(int n) { int (*a)[n]; printf("size: %d\n", sizeof(*a)); } llvm-svn: 61285
-
Anders Carlsson authored
llvm-svn: 61284
-
- Dec 15, 2008
-
-
Fariborz Jahanian authored
ivars. llvm-svn: 61043
-
- Dec 13, 2008
-
-
Anders Carlsson authored
Store the size of the EH stack inside each BreakContinue struct so we know when a break/continue won't cross a try block. llvm-svn: 60998
-
- Dec 12, 2008
-
-
Anders Carlsson authored
llvm-svn: 60939
-
Anders Carlsson authored
Work in preparation for VLAs. Make sure to restore the stack if necessary (Saving the stack isn't implemented right now :) llvm-svn: 60925
-
- Dec 09, 2008
-
-
Fariborz Jahanian authored
the synthesis is in an implementation of s subclass of a super class where the property has been declared. llvm-svn: 60792
-
- Nov 22, 2008
-
-
Fariborz Jahanian authored
llvm-svn: 59886
-
Fariborz Jahanian authored
Issuing diagnostics when assigning to read-only properties. This is work in progress. llvm-svn: 59874
-
- Nov 20, 2008
-
-
Fariborz Jahanian authored
to static function. Added comments. llvm-svn: 59738
-
Fariborz Jahanian authored
diagnostics on use of __weak attribute on fields, Early support for read/write barriers for objc fields. llvm-svn: 59682
-
- Nov 19, 2008
-
-
Daniel Dunbar authored
value). - Use extra argument to EmitStoreThroughLValue to provide place to write update bit-field value if caller requires it. - This fixes several FIXMEs. llvm-svn: 59615
-
- Nov 15, 2008
-
-
Chris Lattner authored
Patch by Fariborz! llvm-svn: 59377
-
- Nov 13, 2008
-
-
Daniel Dunbar authored
- Indicates that caller is done with the block and it can be dropped if it has no predecessors. Useful for callers who need to make landing pads but which may not be reached. No functionality change. llvm-svn: 59207
-
- Nov 12, 2008
-
-
Daniel Dunbar authored
llvm-svn: 59127
-
Daniel Dunbar authored
- Split out "simple" statements which can easily handle IR generation when there is no insert point. These are generally statements which start by emitting a new block or are only containers for other statements. - This fixes a regression in emitting dummy blocks, notably for case statements. - This also fixes spurious emission of a number of debug stoppoint intrinsic instructions. Remove unneeded sw.body block, just clear the insertion point. Lift out CodeGenFunction::EmitStopPoint which calls into the CGDebugInfo class when generating debug info. Normalize definitions of Emit{Break,Continue}Stmt and usage of ErrorUnsupported. llvm-svn: 59118
-
Chris Lattner authored
CodeGenFunction.cpp. Change VisitConditionalOperator to use constant fold instead of codegen'ing a constant conditional. Change ForStmt to use EmitBranchOnBoolExpr, this shrinks expr.c very slightly to 40239 lines. llvm-svn: 59113
-
Chris Lattner authored
have a condition that is an &&/||. Before we used to compile things like this: int test() { if (x && y) foo(); else bar(); } into: %0 = load i32* @x ; <i32> [#uses=1] %1 = icmp ne i32 %0, 0 ; <i1> [#uses=1] br i1 %1, label %land_rhs, label %land_cont land_rhs: ; preds = %entry %2 = load i32* @y ; <i32> [#uses=1] %3 = icmp ne i32 %2, 0 ; <i1> [#uses=1] br label %land_cont land_cont: ; preds = %land_rhs, %entry %4 = phi i1 [ false, %entry ], [ %3, %land_rhs ] ; <i1> [#uses=1] br i1 %4, label %ifthen, label %ifelse ifthen: ; preds = %land_cont %call = call i32 (...)* @foo() ; <i32> [#uses=0] br label %ifend ifelse: ; preds = %land_cont %call1 = call i32 (...)* @bar() ; <i32> [#uses=0] br label %ifend ifend: ; preds = %ifelse, %ifthen Now we turn it into the much more svelte code: %0 = load i32* @x ; <i32> [#uses=1] %1 = icmp ne i32 %0, 0 ; <i1> [#uses=1] br i1 %1, label %land_lhs_true, label %ifelse land_lhs_true: ; preds = %entry %2 = load i32* @y ; <i32> [#uses=1] %3 = icmp ne i32 %2, 0 ; <i1> [#uses=1] br i1 %3, label %ifthen, label %ifelse ifthen: ; preds = %land_lhs_true %call = call i32 (...)* @foo() ; <i32> [#uses=0] br label %ifend ifelse: ; preds = %land_lhs_true, %entry %call1 = call i32 (...)* @bar() ; <i32> [#uses=0] br label %ifend ifend: ; preds = %ifelse, %ifthen Note the lack of a phi node. This shrinks the -O0 .ll file for 176.gcc/expr.c from 43176 to 40267 lines. llvm-svn: 59111
-
Daniel Dunbar authored
Revert to enabling generation of instruction names when not in NDEBUG mode. llvm-svn: 59094
-
Daniel Dunbar authored
- EmitStmt is no longer required to finish with a current insertion point defined (i.e. it does not need to make dummy blocks). Instead, it can clear the insertion point in the builder which indicates that the current insertion point is unreachable. - CodeGenFunction provides HaveInsertPoint and EnsureInsertPoint which respectively test if there is an insert point and ensure an insertion point exists (by making a dummy block). - Clearly mark functions in CodeGenFunction which can be called with no insertion point defined. Currently this is a limited set, and EmitStmt simply EnsureInsertPoint()s before emitting subsequent IR. Remove EmitDummyBlock, which is no longer needed. Clients who haven't already cleared the insertion point (typically via EmitBranch) can do so by hand. Remove isDummyBlock, which has effectively been renamed to HaveInsertPoint. The main thrust of this change is that we no longer have create dummy blocks just to destroy them a short time later in EmitBlock in the common case that there is no unreachable code following something like a goto. Additionally, this means that we are not using the hokey condition in isDummyBlock that a block without a name is a dummy block. Guess how well that works when we never emit block names! llvm-svn: 59089
-