| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
| |
llvm-svn: 2664
|
| |
|
|
| |
llvm-svn: 2663
|
| |
|
|
|
|
| |
supporting tracing. That should be moved to a "runtime" directory.
llvm-svn: 2660
|
| |
|
|
| |
llvm-svn: 2659
|
| |
|
|
|
|
|
| |
May be slightly less efficient but significantly reduces special
cases interfaces in code generation.
llvm-svn: 2649
|
| |
|
|
|
|
|
|
|
| |
lli and llc. This is controlled with options -tracehash on|off.
Also, added an option to specify which functions should be traced.
Particularly useful to reduce output volume in basic-block tracing.
llvm-svn: 2646
|
| |
|
|
|
|
|
|
| |
array and struct indexes.
Update operand values in CallArgsDescriptor (a new class)
when replacing constant values with immediates.
llvm-svn: 2645
|
| |
|
|
| |
llvm-svn: 2644
|
| |
|
|
| |
llvm-svn: 2643
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
-- passing FP arguments to functions with more than 6 arguments
-- passing FP arguments to varargs functions
-- passing FP arguments to functions with no prototypes
-- incorrect coloring for CC registers (both int and FP): interferences
were being completely ignored for int CC and were considered but no
spills were marked for fp CC!
Also some code improvements:
-- better interface to generating machine instr for common cases
(many places still need to be updated to use this interface)
-- annotations on MachineInstr to communicate information from
one codegen phase to another (now used to pass information about
CALL/JMPLCALL operands from selection to register allocation)
-- all sizes and offests in class TargetData are uint64_t instead of uint
llvm-svn: 2642
|
| |
|
|
|
|
|
| |
Make all sizes and offsets uint64_t instead of uint.
Fixed GetIndexedOffset to handle mixed array and struct indices.
llvm-svn: 2641
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
-- correct sign extensions for integer casts and for shift-by-constant
instructions generated for integer multiply
-- passing FP arguments to functions with more than 6 arguments
-- passing FP arguments to varargs functions
-- passing FP arguments to functions with no prototypes
-- incorrect stack frame size when padding a section
-- folding getelementptr operations with mixed array and struct indexes
-- use uint64_t instead of uint for constant offsets in mem operands
-- incorrect coloring for CC registers (both int and FP): interferences
were being completely ignored for int CC and were considered but no
spills were marked for fp CC!
Also some code improvements:
-- better interface to generating machine instr for common cases
(many places still need to be updated to use this interface)
-- annotations on MachineInstr to communicate information from
one codegen phase to another (now used to pass information about
CALL/JMPLCALL operands from selection to register allocation)
-- all sizes and offests in class TargetData are uint64_t instead of uint
llvm-svn: 2640
|
| |
|
|
|
|
|
| |
which global variables would have name collisions if they were not mangled,
and use this info to mangle them iff they would collide.
llvm-svn: 2639
|
| |
|
|
|
|
|
|
|
| |
* Add optimization to rank computation to not recursively search when
unneccesary.
* More agressively negate expressions to open reassociation opportunities.
* Linearize (A+B)+(C+D) into ((A+B)+C)+D
llvm-svn: 2637
|
| |
|
|
|
|
|
| |
By making sure to consider binary expressions identical if their operands
are backwards, but swappable.
llvm-svn: 2629
|
| |
|
|
| |
llvm-svn: 2627
|
| |
|
|
|
|
| |
often happens for the entry basic block of a function)
llvm-svn: 2624
|
| |
|
|
|
|
|
|
|
| |
"This testcase caused instcombine to fail because it got the same instruction on
it's worklist more than once (which is ok), but then deleted the instruction.
Since the inst stayed on the worklist, as soon as it came back up to be
processed, bad things happened, and opt asserted."
llvm-svn: 2623
|
| |
|
|
|
|
|
|
|
| |
be put either before or after a load. We chose to cast the value loaded
instead of the pointer to load from.
Fixes bug: test/Regression/Transforms/LevelRaise/2002-05-10-LoadPeephole.ll
llvm-svn: 2621
|
| |
|
|
| |
llvm-svn: 2620
|
| |
|
|
| |
llvm-svn: 2617
|
| |
|
|
| |
llvm-svn: 2616
|
| |
|
|
| |
llvm-svn: 2615
|
| |
|
|
|
|
| |
un#ifdef it.
llvm-svn: 2606
|
| |
|
|
|
|
| |
the command line
llvm-svn: 2601
|
| |
|
|
| |
llvm-svn: 2600
|
| |
|
|
| |
llvm-svn: 2598
|
| |
|
|
|
|
|
|
| |
* Make cast-of-self-ty DCE the dead cast instruction immediately instead of
waiting for it to be DCE'd by another sweep over the function. This speeds
this up noticably.
llvm-svn: 2597
|
| |
|
|
| |
llvm-svn: 2593
|
| |
|
|
|
|
| |
works much better than it used to.
llvm-svn: 2588
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
1. Avoid printing *(&globalvariable), instead print globalvariable alone
as a special case.
2. Inline subexpressions into expressions as much as legal that preserves
execution characteristics of expressions. Now we get nice (but
over-parenthesized, oh well) things like:
ltmp_428_7 = spec__putc(((unsigned char )((bsBuff) >> 24)), (bsStream));
instead of five seperate instructions (bsBuff & bsStream are globals).
llvm-svn: 2587
|
| |
|
|
|
|
| |
* Reorder code in the file to make it more logically laid out.
llvm-svn: 2586
|
| |
|
|
|
|
| |
then printing it out, just print as we go.
llvm-svn: 2585
|
| |
|
|
|
|
| |
inst_iterator.
llvm-svn: 2584
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Correct global variable references
* Fix loads & stores with zero indices
* Do not emit an else part of a branch if there is no code (no phi node
and a fallthrough branch), makes code more readable to get:
if (l2_cond240) {
goto l13_bb10;
}
with no else{} branch
llvm-svn: 2583
|
| |
|
|
| |
llvm-svn: 2582
|
| |
|
|
| |
llvm-svn: 2581
|
| |
|
|
|
|
|
|
|
|
| |
l3_reg109 = l81_this->field0;
Instead of:
l3_reg109 = l81_this[0u].field0;
where possible
llvm-svn: 2579
|
| |
|
|
|
|
|
| |
* Clean up generated code to not emit basic block labels and goto
instructions if they are unneccesary (for example, fall throughs)
llvm-svn: 2578
|
| |
|
|
|
|
|
|
| |
* Print a newline after a malloc instruction
* Convert unprintable characters to x_ instead of _x so that we don't
generate identifiers that start with underscores
llvm-svn: 2577
|
| |
|
|
| |
llvm-svn: 2576
|
| |
|
|
|
|
|
|
|
| |
* Mangle names with only a prefix so that they are easier on the eyes.
* Put spaces around binary operators with low precedence to make them easier to read
* Don't prefix function names with &, although it's correct, it's unnecesary and
easier to read without it.
llvm-svn: 2575
|
| |
|
|
|
|
| |
Remove lots of unneccesary arguments to methods
llvm-svn: 2574
|
| |
|
|
|
|
| |
Now indirect function calls work, except that function pointer types are not correct.
llvm-svn: 2573
|
| |
|
|
|
|
|
| |
* Print C strings correctly
* Expand C escape sequences nicely (ie \n \t, etc get generated instead of hex escapes)
llvm-svn: 2572
|
| |
|
|
|
|
| |
Handle global variables correctly.
llvm-svn: 2571
|
| |
|
|
|
|
|
| |
* Use binary operator logic for shifts instead of cloning code
* Unary not is '~' not '!'
llvm-svn: 2570
|
| |
|
|
|
|
|
|
| |
have some hope of working right.
Function calls do not try to emit an lvalue if they return void.
llvm-svn: 2569
|
| |
|
|
|
|
| |
It turns out that unnamed values DO NOT work at all, that's next on the list.
llvm-svn: 2568
|
| |
|
|
| |
llvm-svn: 2567
|