- Jan 21, 2009
-
-
Chris Lattner authored
llvm-svn: 62674
-
- Jan 18, 2009
-
-
Anders Carlsson authored
llvm-svn: 62444
-
Anders Carlsson authored
llvm-svn: 62441
-
Anders Carlsson authored
Change TargetInfo::validateInputConstraint to take begin/end name iterators instead of the number of outputs. No functionality change. llvm-svn: 62433
-
- Jan 12, 2009
-
-
Anders Carlsson authored
llvm-svn: 62069
-
- Jan 11, 2009
-
-
Anders Carlsson authored
llvm-svn: 62049
-
Anders Carlsson authored
llvm-svn: 62043
-
Anders Carlsson authored
llvm-svn: 62041
-
- Dec 21, 2008
-
-
Eli Friedman authored
string. That said, we should probably try and track down the correct clobber lists for the targets that don't have them (PPC, ARM, and Sparc), so that we can generate correct code. llvm-svn: 61298
-
Eli Friedman authored
warning by using an unsigned index. llvm-svn: 61292
-
- Dec 20, 2008
-
-
Anders Carlsson authored
Check the entire StackSaveValues stack for VLAs when dealing with goto and return statements. Noticed by Eli Friedman. llvm-svn: 61289
-
Anders Carlsson authored
llvm-svn: 61283
-
- 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
Work in preparation for VLAs. Make sure to restore the stack if necessary (Saving the stack isn't implemented right now :) llvm-svn: 60925
-
- Nov 22, 2008
-
-
Anders Carlsson authored
llvm-svn: 59881
-
- Nov 15, 2008
-
-
Chris Lattner authored
Patch by Fariborz! llvm-svn: 59377
-
- Nov 13, 2008
-
-
Daniel Dunbar authored
landing pads. - Primarily a cleanliness issue instead of a performance issue (this eliminates all blocks w/o predecessors on 176.gcc/expr.c), but this also allows subsequent code to recognize it is unreachable and potentially avoid IRgen. llvm-svn: 59211
-
Daniel Dunbar authored
- Use dotted notation for blocks related to a particular statement type. - Use .end for landing pads. No functionality change in NDEBUG mode. :) llvm-svn: 59210
-
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
-
Daniel Dunbar authored
more confusing ifelse. Use dotted names for if blocks (if.then vs ifthen). llvm-svn: 59201
-
- Nov 12, 2008
-
-
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
-
Chris Lattner authored
llvm-svn: 59103
-
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
-
- Nov 11, 2008
-
-
Daniel Dunbar authored
invariants. llvm-svn: 59085
-
Daniel Dunbar authored
- Emits an unconditional branch, with extra logic to avoid generating spurious branches out of dummy blocks. llvm-svn: 59037
-
Chris Lattner authored
the size of the -O0 output on some cases. For example, on expr.c from 176.gcc, it shrinks the .ll file from 43164 to 42835 lines, and removed references to two external symbols. llvm-svn: 59034
-
Chris Lattner authored
condition is a constant. This shrinks -O0 codegen by quite a bit on some cases. llvm-svn: 59033
-
Daniel Dunbar authored
"dummy" blocks (blocks just used to make sure we have a place to dump code to). llvm-svn: 59022
-
Daniel Dunbar authored
- Was confusing and only used in one small part of the code. llvm-svn: 59020
-
Daniel Dunbar authored
- No functionality change. llvm-svn: 59017
-
- Nov 09, 2008
-
-
Anders Carlsson authored
llvm-svn: 58940
-
- Oct 17, 2008
-
-
Daniel Dunbar authored
assert. llvm-svn: 57721
-
Daniel Dunbar authored
simplifies clients. Also, add assert that RegionStack is empty when the CGDebugInfo is destroyed. llvm-svn: 57684
-
- Oct 12, 2008
-
-
Chris Lattner authored
llvm-svn: 57392
-
- Oct 06, 2008
-
-
Ted Kremenek authored
llvm-svn: 57192
-
- Oct 02, 2008
-
-
Daniel Dunbar authored
handling blocks. - This has false positives, but at least prevents miscompiles. llvm-svn: 56958
-
- Sep 30, 2008
-
-
Daniel Dunbar authored
- Provides a basic primitive to jump to an arbitrary basic block, through the finally code. - Only used for return statements and rethrow currently. Still need to handle break, continue and goto. - Code still needs to be shuffled around to live elsewhere. llvm-svn: 56827
-
- Sep 28, 2008
-
-
Daniel Dunbar authored
llvm-svn: 56762
-