summaryrefslogtreecommitdiffstats
path: root/llvm/lib
Commit message (Collapse)AuthorAgeFilesLines
...
* eliminate the horrid AsmPrinter::getGlobalLinkName method, inliningChris Lattner2009-09-163-15/+4
| | | | | | it into all of its call sites and simplifying them. llvm-svn: 81962
* simplify some codeChris Lattner2009-09-161-6/+5
| | | | llvm-svn: 81961
* Expand all v2f64 arithmetic operations for Neon.Bob Wilson2009-09-151-0/+27
| | | | | | | Radar 7200803. (This should also fix the SingleSource/UnitTests/Vector/sumarray-dbl test.) llvm-svn: 81959
* Added far return instructions (that is, returns to Sean Callanan2009-09-151-0/+4
| | | | | | | code in other segments) to the Intel instruction tables. llvm-svn: 81953
* remove some horrible MAI hooks which fortunately turn out to be always empty.Chris Lattner2009-09-152-26/+3
| | | | llvm-svn: 81946
* strength reduce a call to PrintRelDirective(true).Chris Lattner2009-09-151-1/+3
| | | | llvm-svn: 81942
* add hooks to hang target-specific goop off MachineModuleInfo,Chris Lattner2009-09-152-7/+10
| | | | | | | move MachineFunctionInfo virtual method out of line to give it a home. llvm-svn: 81940
* Do not add the SVOffset to the Node CSE ID. The same pointer argument ↵Nate Begeman2009-09-151-5/+0
| | | | | | | | cannot have different SVOffsets. llvm-svn: 81937
* Expand on comment.Eric Christopher2009-09-151-1/+4
| | | | llvm-svn: 81928
* Updated comments per Eli's suggestion.Sean Callanan2009-09-152-2/+4
| | | | llvm-svn: 81923
* Added register-to-register ADD instructions to theSean Callanan2009-09-152-0/+13
| | | | | | | | Intel tables, where the source operand is specified by the R/M field and the destination operand by the Reg field. llvm-svn: 81914
* Drop the raw_ostream required buffer size to 1.Daniel Dunbar2009-09-151-2/+2
| | | | | | | - As best I can tell, we have eliminated all the code which used to require a larger buffer size. llvm-svn: 81912
* Fix -Asserts warning.Daniel Dunbar2009-09-151-1/+2
| | | | llvm-svn: 81909
* Better solution for tracking both the original alignment of the access, and ↵Nate Begeman2009-09-153-44/+33
| | | | | | | | the current alignment based on the source value offset. This avoids increasing the size of mem nodes. llvm-svn: 81897
* Added a new register class for segment registersSean Callanan2009-09-153-0/+25
| | | | | | | | to the Intel register table. Added 16- and 64-bit MOVs to and from the segment registers to the Intel instruction tables. llvm-svn: 81895
* Change the marker byte for stubs from 0xcd to 0xce (another form ofDale Johannesen2009-09-151-3/+6
| | | | | | | | | interrupt instruction, which shouldn't arise any other way). 0xcd is also used by JITMemoryManager to initialize the buffer to garbage, which means it could appear following a noreturn call even when that is not a stub, confusing X86CompilationCallback2. PR 4929. llvm-svn: 81888
* fix PR4984 by ensuring that fastisel adds properly sign extended GEP ↵Chris Lattner2009-09-151-1/+1
| | | | | | | | displacement values to machineinstrs. llvm-svn: 81886
* add missing fileChris Lattner2009-09-151-0/+32
| | | | llvm-svn: 81881
* Handle AddrMode4 for Thumb2 in rewriteT2FrameIndex. This occurs forBob Wilson2009-09-151-0/+5
| | | | | | | | | | | VLDM/VSTM instructions, and without this check, the code assumes that an offset is allowed, as it would be with VLDR/VSTR. The asm printer, however, silently drops the offset, producing incorrect code. Since the address register in this case is either the stack or frame pointer, the spill location ends up conflicting with some other stack slot or with outgoing arguments on the stack. llvm-svn: 81879
* Fix superreg use in ARMAsmPrinter. Approved by Anton Korobeynikov.Sandeep Patel2009-09-151-2/+2
| | | | llvm-svn: 81878
* several major improvements to the sparc backend: support for weak linkageChris Lattner2009-09-158-48/+197
| | | | | | and PIC codegen. Patch by Venkatraman Govindaraju! llvm-svn: 81877
* Teach ValueTracking how to look through GlobalAliases. GlobalAliases areDan Gohman2009-09-151-0/+12
| | | | | | | not folded in the constant folder because the constant folder doesn't simplify ConstantExpr operands. llvm-svn: 81864
* Fix an accidental inversion of the inbounds flag.Dan Gohman2009-09-151-3/+3
| | | | llvm-svn: 81862
* When a constant's type is refined, update the constant in placeDan Gohman2009-09-153-215/+157
| | | | | | | | | | | | | | | | | | | | | | | | | | instead of cloning and RAUWing it. - Make AbstractTypeUser a friend of Value so that it can offer its subclasses a way to update a Value's type in place. This is better than a universally visible setType method on Value, and it's sufficient for the immediate need. - Eliminate the constant "convert" functions. This eliminates a lot of logic duplication, and fixes a complicated bug where a constant can't actually be cloned during the type refinement process because some of the types that its folder needs are half-destroyed, being in the middle of refinement themselves. - Move the getValType functions from being static overloaded functions in Constants.cpp to be members of class template specializations in ConstantsContext.h. This means that the code ends up getting instantiated twice, however it also makes it possible to eliminate all "convert" functions, so it's not a big net code size increase. And if desired, the duplicate instantiations could be eliminated with some reorganization. llvm-svn: 81861
* Add more newlines to make up for the ones removed from the end of instructions.Nick Lewycky2009-09-151-9/+12
| | | | llvm-svn: 81851
* Another try at early partial coalescing. Identity phi source copies (their ↵Evan Cheng2009-09-151-58/+56
| | | | | | | | sources are defined by phi join def) are coalesced. And the phi join copy is backward copy propagated into the other copies. Still miscompiling some tests. :-( llvm-svn: 81849
* Forbid arrays of function-type and structures with function-typed fields.Nick Lewycky2009-09-151-17/+13
| | | | | | | | | | While I'm there, change code that does: SomeTy == Type::getFooType(Context) into: SomeTy->getTypeID() == FooTyID to decrease the amount of useless type creation which may involve locking, etc. llvm-svn: 81846
* fix PR4963: folding insertvalue would sometimes turn a packed struct intoChris Lattner2009-09-151-20/+24
| | | | | | an unpacked one. llvm-svn: 81845
* add a new CallGraphNode::replaceCallEdge method and use it fromChris Lattner2009-09-152-4/+21
| | | | | | | | argpromote to avoid invalidating an iterator. This fixes PR4977. All clang tests now pass with expensive checking (on my system at least). llvm-svn: 81843
* add newline to debug dumpChris Lattner2009-09-151-1/+1
| | | | llvm-svn: 81840
* make -debug-pass=Executions show information about what call graph nodesChris Lattner2009-09-152-5/+27
| | | | | | are in the SCC for each execution of a CGSCC pass. llvm-svn: 81838
* add some missing quotes in debug outputChris Lattner2009-09-151-2/+2
| | | | llvm-svn: 81836
* Remove invalid add_dependencies line to unbreak the CMake build.Ted Kremenek2009-09-151-1/+1
| | | | llvm-svn: 81827
* Get rid of GetProcessId in Win32/Program.inc.Mikhail Glushenkov2009-09-152-43/+22
| | | | | | | GetProcessId was introduced only in XP. As a bonus, this change makes Program objects copyable, since Program is now basically a PID. llvm-svn: 81826
* Don't pull a load through a callseq_start if the load's chainDan Gohman2009-09-151-1/+2
| | | | | | | | | has multiple uses, as one of the other uses may be on a path to a different node above the callseq_start, because that leads to a cyclic graph. This problem is exposed when -combiner-global-alias-analysis is used. This fixes PR4880. llvm-svn: 81821
* Remove incorrect CSE code from r81813.Nate Begeman2009-09-151-2/+0
| | | | llvm-svn: 81819
* Modified the Intel instruction tables to includeSean Callanan2009-09-152-4/+37
| | | | | | | versions of CALL and JMP with segmented addresses provided in-line, as pairs of immediates. llvm-svn: 81818
* Added the first bits of the ARM target assembler to llvm-mc. For now it onlyKevin Enderby2009-09-154-1/+115
| | | | | | | | parses the .word directive as 4 bytes and ARMAsmParser::ParseInstruction will give an error is called. Broke out the test of the .word directive into two different test cases, one for x86 and one for arm. llvm-svn: 81817
* Substantially speed up combiner-aa in the following ways:Nate Begeman2009-09-151-33/+69
| | | | | | | | | | | | | | 1. Switch from an std::set to a SmallPtrSet for visited chain nodes. 2. Do not force the recursive flattening of token factor nodes, regardless of use count. 3. Immediately process newly created TokenFactor nodes. Also, improve combiner-aa by teaching it that loads to non-overlapping offsets of relatively aligned objects cannot alias. These changes result in a >5x speedup for combiner-aa on most testcases. llvm-svn: 81816
* Teach the legalizer to propagate the original alignment of loads and store whenNate Begeman2009-09-151-6/+11
| | | | | | it splits them. llvm-svn: 81815
* On x86-64, the 32-bit cmov doesn't actually clear the high 32-bit ofDan Gohman2009-09-151-3/+5
| | | | | | its result if the condition is false. llvm-svn: 81814
* Add an "original alignment" field to load and store nodes. This enables theNate Begeman2009-09-152-19/+28
| | | | | | | DAG Combiner to disambiguate chains for loads and stores of types which are broken up by the Legalizer into smaller pieces. llvm-svn: 81813
* When extending a memset range past the front, set the alignment of theDan Gohman2009-09-141-0/+1
| | | | | | memset region to the alignment of the new start address. llvm-svn: 81810
* Add early coalescing to liveintervals. This is work in progress and is known ↵Evan Cheng2009-09-141-24/+164
| | | | | | | | to miscompute some tests. Read it at your own rish, I have aged 10 year while writing this. The gist of this is if source of some of the copies that feed into a phi join is defined by the phi join, we'd like to eliminate them. However, if any of the non-identity source overlaps the live interval of the phi join then the coalescer won't be able to coalesce them. The early coalescer's job is to eliminate the identity copies by partially-coalescing the two live intervals. llvm-svn: 81796
* Pull the creation of the "RewindFunction" function out of the loop. It's onlyBill Wendling2009-09-141-14/+25
| | | | | | | created once, so shouldn't be stuck in the middle of the loop. Also early exit if there are no uses of UnwindInst in the function. llvm-svn: 81785
* trivial whitespace cleanupJim Grosbach2009-09-141-2/+2
| | | | llvm-svn: 81773
* add PR#Chris Lattner2009-09-141-0/+1
| | | | llvm-svn: 81770
* Update CMake.Daniel Dunbar2009-09-141-0/+1
| | | | llvm-svn: 81757
* PIC16 does allow colon after MBB labels, simplify EmitBasicBlockStart.Chris Lattner2009-09-142-6/+3
| | | | llvm-svn: 81755
* Change MCAsmStreamer to take an MCInstPrinter instead of a Chris Lattner2009-09-143-9/+26
| | | | | | | | | | | full AsmPrinter, and change TargetRegistry to keep track of registered MCInstPrinters. llvm-mc is still linking in the entire target foo to get the code emitter stuff, but this is an important step in the right direction. llvm-svn: 81754
OpenPOWER on IntegriCloud