- Dec 28, 2010
-
-
Cameron Zwarich authored
we are only interested in the defs when discovering interferences. This is a 28% speedup running StrongPHIElimination on 403.gcc. llvm-svn: 122596
-
Duncan Sands authored
in this function, but the compiler was warning that it might be when doing a release build. llvm-svn: 122595
-
Duncan Sands authored
when doing a release build. llvm-svn: 122594
-
Duncan Sands authored
llvm-svn: 122593
-
Abramo Bagnara authored
llvm-svn: 122592
-
Rafael Espindola authored
llvm-svn: 122591
-
Rafael Espindola authored
llvm-svn: 122590
-
Michael J. Spencer authored
llvm-svn: 122589
-
Michael J. Spencer authored
llvm-svn: 122588
-
Michael J. Spencer authored
llvm-svn: 122587
-
- Dec 27, 2010
-
-
Cameron Zwarich authored
llvm-svn: 122586
-
Chris Lattner authored
llvm-svn: 122585
-
Rafael Espindola authored
llvm-svn: 122584
-
Daniel Dunbar authored
llvm-svn: 122583
-
Cameron Zwarich authored
when running without the verifier, and I have not yet checked them to see if the new results are still correct. There are more verifier failures, but they all seem to be additional occurrences of verifier failures that occur with the existing PHIElimination pass. There are a few obvious issues with the code: 1) It doesn't properly update the register equivalence classes during copy insertion, and instead recomputes them before merging live intervals and renaming registers. I wanted to keep this first patch simple for debugging purposes, but it shouldn't be very hard to do this. 2) It doesn't mix the renaming and live interval merging with the copy insertion process, which leads to a lot of virtual register churn. Virtual registers and live intervals are created, only to later be merged into others. The code should be smarter and only create a new virtual register if there is no existing register in the same congruence class. 3) In one place the code uses a DenseMap per basic block, which is unnecessary heap allocation. There should be an inline storage version of DenseMap. I did a quick compile-time test of running llc on 403.gcc with and without StrongPHIElimination. It is slightly slower with StrongPHIElimination, because the small decrease in the coalescer runtime can't beat the increase in phi elimination runtime. Perhaps fixing the above performance issues will narrow the gap. I also haven't yet run any tests of the quality of the generated code. llvm-svn: 122582
-
Cameron Zwarich authored
valno verification. The "Different value live out of predecessor" check is incorrect in the case of phi-def valnos, so just skip that check for phi-def valnos and instead check that all of the valnos for predecessors have phi-kill. Fixes PR8863. llvm-svn: 122581
-
Michael J. Spencer authored
llvm-svn: 122580
-
Rafael Espindola authored
llvm-svn: 122579
-
Francois Pichet authored
1. Do not validate for uuid attribute if the type is template dependent. 2. Search every class declaration and definition for the uuid attribute. llvm-svn: 122578
-
Rafael Espindola authored
supports. llvm-svn: 122577
-
Benjamin Kramer authored
BuildLibCalls: Nuke EmitMemCpy, EmitMemMove and EmitMemSet. They are dead and superseded by IRBuilder. llvm-svn: 122576
-
Benjamin Kramer authored
llvm-svn: 122575
-
Chris Lattner authored
llvm-svn: 122574
-
Chris Lattner authored
memsets. This is still missing one important validity check, but this is enough to compile stuff like this: void test0(std::vector<char> &X) { for (std::vector<char>::iterator I = X.begin(), E = X.end(); I != E; ++I) *I = 0; } void test1(std::vector<int> &X) { for (long i = 0, e = X.size(); i != e; ++i) X[i] = 0x01010101; } With: $ clang t.cpp -S -o - -O2 -emit-llvm | opt -loop-idiom | opt -O3 | llc to: __Z5test0RSt6vectorIcSaIcEE: ## @_Z5test0RSt6vectorIcSaIcEE ## BB#0: ## %entry subq $8, %rsp movq (%rdi), %rax movq 8(%rdi), %rsi cmpq %rsi, %rax je LBB0_2 ## BB#1: ## %bb.nph subq %rax, %rsi movq %rax, %rdi callq ___bzero LBB0_2: ## %for.end addq $8, %rsp ret ... __Z5test1RSt6vectorIiSaIiEE: ## @_Z5test1RSt6vectorIiSaIiEE ## BB#0: ## %entry subq $8, %rsp movq (%rdi), %rax movq 8(%rdi), %rdx subq %rax, %rdx cmpq $4, %rdx jb LBB1_2 ## BB#1: ## %for.body.preheader andq $-4, %rdx movl $1, %esi movq %rax, %rdi callq _memset LBB1_2: ## %for.end addq $8, %rsp ret llvm-svn: 122573
-
- Dec 26, 2010
-
-
Chris Lattner authored
llvm-svn: 122572
-
Chris Lattner authored
llvm-svn: 122571
-
Rafael Espindola authored
llvm-svn: 122570
-
David Chisnall authored
Add support for GNU runtime property set / get structure functions. Minor refactoring of Mac runtime (returns the same function for both, as the Mac runtimes currently only provide a single entry point for setting and getting struct properties, although this will presumably be fixed at some point). llvm-svn: 122569
-
Rafael Espindola authored
llvm-svn: 122568
-
Chris Lattner authored
llvm-svn: 122567
-
Rafael Espindola authored
llvm-svn: 122566
-
Chris Lattner authored
llvm-svn: 122565
-
David Chisnall authored
llvm-svn: 122564
-
Chris Lattner authored
llvm-svn: 122563
-
Chris Lattner authored
No functionality yet. llvm-svn: 122562
-
Benjamin Kramer authored
llvm-svn: 122561
-
Chris Lattner authored
llvm-svn: 122560
-
Chris Lattner authored
llvm-svn: 122559
-
Chris Lattner authored
16-bits in size. Implement this by splitting WChar into two enums, like we have for char. This fixes a miscompmilation of XULRunner, PR8856. llvm-svn: 122558
-
- Dec 25, 2010
-
-
Chris Lattner authored
rejected by the mc assembler. llvm-svn: 122557
-