- Nov 12, 2008
-
-
Dan Gohman authored
coalescing as a separate pass rather than inside of LiveIntervalAnalysis. llvm-svn: 59146
-
Dan Gohman authored
no longer records a unique defining instruction, and virtual registers may have multiple kills while still being defined and killed in the same block. llvm-svn: 59145
-
Dan Gohman authored
llvm-svn: 59143
-
Tanya Lattner authored
llvm-svn: 59142
-
Mikhail Glushenkov authored
When constructing std::strings from C strings, we should check the input value to be not NULL so that the std::string constructor does not segfault. Fixes #3047. llvm-svn: 59131
-
Daniel Dunbar authored
llvm-svn: 59130
-
Daniel Dunbar authored
llvm-svn: 59129
-
Daniel Dunbar authored
what "cond.?" means, and this avoids quoting). llvm-svn: 59128
-
Daniel Dunbar authored
llvm-svn: 59127
-
Duncan Sands authored
llvm-svn: 59126
-
Eli Friedman authored
This pushes it a lot closer to being able to deal with most of the stuff CodeGen's constant expression evaluator knows how to deal with. This also fixes PR3003. The test could possibly use some improvement, but this'll work for now. Test 6 is inspired by PR3003; the other tests are mostly just designed to exercise the new code. The reason for the funny structure of the tests is that type fixing for arrays inside of structs is the only place in Sema that calls tryEvaluate, at least for the moment. llvm-svn: 59125
-
Chris Lattner authored
This cuts another 200 lines off expr.ll, forming 23 selects. llvm-svn: 59124
-
Chris Lattner authored
This happens for stuff like this: x = cond1 || cond2 || cond3 || cond4; llvm-svn: 59123
-
Duncan Sands authored
that it no longer handles non-power-of-two vectors. However it previously only handled them sometimes, depending on obscure numerical relationships between the index and vector type. For example, for a vector of length 6, it would succeed if and only if the index was an even multiple of 6. I consider this more confusing than useful. llvm-svn: 59122
-
Chris Lattner authored
constant folding. llvm-svn: 59121
-
Duncan Sands authored
when the target does not support ADDC/SUBC. This fixes PR3044. llvm-svn: 59120
-
Evan Cheng authored
llvm-svn: 59119
-
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
-
Evan Cheng authored
llvm-svn: 59117
-
Evan Cheng authored
llvm-svn: 59116
-
Chris Lattner authored
codegen stuff like "if (!(X && Y))" llvm-svn: 59115
-
Chris Lattner authored
shrinks code yet again by a bit. llvm-svn: 59114
-
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
llvm-svn: 59112
-
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
crashing because we errors are ignored in subexpressions that are not evaluated, but we still evaluate the result of parents. This would cause an assertion because the erroneous subexpr didn't have its result value set to the right type. llvm-svn: 59110
-
Evan Cheng authored
llvm-svn: 59109
-
Evan Cheng authored
llvm-svn: 59107
-
Tanya Lattner authored
llvm-svn: 59106
-
Chris Lattner authored
llvm-svn: 59105
-
Evan Cheng authored
llvm-svn: 59104
-
Chris Lattner authored
llvm-svn: 59103
-
Evan Cheng authored
llvm-svn: 59102
-
Dale Johannesen authored
Reenable test. llvm-svn: 59101
-
Evan Cheng authored
llvm-svn: 59100
-
Sebastian Redl authored
llvm-svn: 59099
-
Oscar Fuentes authored
llvm-svn: 59098
-
Mikhail Glushenkov authored
Only the tools that are mentioned in the compilation graph definition are now inserted by PopulateCompilationGraph(). This should cut down plugin loading time a little. llvm-svn: 59097
-
Mikhail Glushenkov authored
llvm-svn: 59096
-
Daniel Dunbar authored
llvm-svn: 59095
-