summaryrefslogtreecommitdiffstats
path: root/llvm/lib
Commit message (Collapse)AuthorAgeFilesLines
...
* [SystemZ] Improve handling of SETCCRichard Sandiford2013-10-165-4/+120
| | | | | | | | We previously used the default expansion to SELECT_CC, which in turn would expand to "LHI; BRC; LHI". In most cases it's better to use an IPM-based sequence instead. llvm-svn: 192784
* Handle (shl (anyext (shr ...))) in SimpilfyDemandedBitsRichard Sandiford2013-10-161-0/+25
| | | | | | | | | | This is really an extension of the current (shl (shr ...)) -> shl optimization. The main difference is that certain upper bits must also not be demanded. The motivating examples are the first two in the testcase, which occur in llvmpipe output. llvm-svn: 192783
* Add a 'deleteModule' method to the Linker class.Bill Wendling2013-10-162-1/+9
| | | | | | | | This deletes the Module ivar instead of having the LTO code generater do it. It also sets the pointer to 'NULL', so that if it's used again it will abort quickly. llvm-svn: 192778
* Revert r192758 (and r192759), "MC: Better handling of tricky symbol and ↵NAKAMURA Takumi2013-10-164-38/+20
| | | | | | | | | | | | | | | section names" GNU AS didn't like quotes in symbol names. Error: junk at end of line, first unrecognized character is `"' .def "@feat.00"; "@feat.00" = 1 Reproduced on Cygwin's 2.23.52.20130309 and mingw32's 2.20.1.20100303. llvm-svn: 192775
* Really fix build warning/error that I think r192756 was trying to fix.Craig Topper2013-10-161-4/+4
| | | | llvm-svn: 192773
* TypeFinder: prefer iterative algorithm to keep stack usage low.Will Dietz2013-10-161-10/+18
| | | | | | | Introduce subtype_reverse_iterator to maintain the numbering assigned during the recursive type walk. llvm-svn: 192770
* Fix a bug in Windows resource file detection.Rui Ueyama2013-10-161-1/+1
| | | | | | The magic bytes should not include the trailing NUL byte. llvm-svn: 192769
* Add support for metadata representing .ident directives.Rafael Espindola2013-10-162-0/+38
| | | | llvm-svn: 192764
* Fix a pair of bugs in the emission of pubname tables:Eric Christopher2013-10-162-6/+16
| | | | | | | | | | | | | | | | 1) Make sure we emit static member variables by checking at the end of createGlobalVariableDIE rather than piecemeal in the function. (As a note, createGlobalVariableDIE needs rewriting.) 2) Make sure we use the definition rather than declaration DIE for two things: a) determining linkage for gnu pubnames, and b) as the address of the DIE for global variables. (As a note, createGlobalVariableDIE really needs rewriting.) Adjust the testcase to make sure we're checking the correct DIEs. llvm-svn: 192761
* Add a MCAsmInfoELF class and factor some code into it.Rafael Espindola2013-10-1622-32/+45
| | | | | | We had a MCAsmInfoCOFF, but no common class for all the ELF MCAsmInfos before. llvm-svn: 192760
* MC: Better handling of tricky symbol and section namesHans Wennborg2013-10-164-20/+38
| | | | | | | | | | | | | | | | | Because of win32 mangling, we produce symbol and section names with funny characters in them, most notably @ characters. MC would choke on trying to parse its own assembly output. This patch addresses that by: - Making @ trigger quoting of symbol names - Also quote section names in the same way - Just parse section names like other identifiers (to allow for quotes) - Don't assume @ signifies a symbol variant if it is in a string. Differential Revision: http://llvm-reviews.chandlerc.com/D1945 llvm-svn: 192758
* Move .ident handling to MCStreamer.Rafael Espindola2013-10-168-24/+44
| | | | | | | | No functionality change, but exposes the API so that codegen can use it too. Patch by Katya Romanova. llvm-svn: 192757
* Fixing build warning/errorAndrew Kaylor2013-10-161-2/+3
| | | | llvm-svn: 192756
* Simplify zero initialization of DIEAttrs variable.David Blaikie2013-10-161-2/+1
| | | | llvm-svn: 192755
* Adding padding to the .eh_frame section in RuntimeDyldAndrew Kaylor2013-10-161-1/+15
| | | | llvm-svn: 192754
* Adding support for deregistering EH frames with MCJIT.Andrew Kaylor2013-10-167-7/+113
| | | | | | Patch by Yaron Keren llvm-svn: 192753
* Fix typoMatt Arsenault2013-10-151-1/+1
| | | | llvm-svn: 192752
* Fix missing C++ mode thing in headerMatt Arsenault2013-10-151-1/+1
| | | | llvm-svn: 192751
* Enable MI Sched for x86.Andrew Trick2013-10-151-1/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | This changes the SelectionDAG scheduling preference to source order. Soon, the SelectionDAG scheduler can be bypassed saving a nice chunk of compile time. Performance differences that result from this change are often a consequence of register coalescing. The register coalescer is far from perfect. Bugs can be filed for deficiencies. On x86 SandyBridge/Haswell, the source order schedule is often preserved, particularly for small blocks. Register pressure is generally improved over the SD scheduler's ILP mode. However, we are still able to handle large blocks that require latency hiding, unlike the SD scheduler's BURR mode. MI scheduler also attempts to discover the critical path in single-block loops and adjust heuristics accordingly. The MI scheduler relies on the new machine model. This is currently unimplemented for AVX, so we may not be generating the best code yet. Unit tests are updated so they don't depend on SD scheduling heuristics. llvm-svn: 192750
* Make sure we're not attempting to construct a subprogram DIEEric Christopher2013-10-151-16/+18
| | | | | | | | twice and just look up the value. Fix the one case where we were trying to create a subprogram DIE and we should already have had one. Reflow formatting in collectDeadVariables while fixing. llvm-svn: 192749
* Add an assert that we have a scope that matters for methodsEric Christopher2013-10-151-1/+4
| | | | | | | and remove a call to getNonCompileUnitScope as a method shouldn't be in the compile unit scope. llvm-svn: 192748
* Clean up, formatting, comments. No functional change.Eric Christopher2013-10-151-100/+88
| | | | llvm-svn: 192747
* R600/SI: Remove some leftover MI dump callVincent Lejeune2013-10-152-2/+0
| | | | llvm-svn: 192743
* Path: Recognize Windows compiled resource file.Rui Ueyama2013-10-154-1/+12
| | | | | | | | | | | | | | Some background: One can pass compiled resource files (.res files) directly to the linker on Windows. If a resource file is given, the linker will run "cvtres" command in background to convert the resource file to a COFF file to link it. What I'm trying to do with this patch is to make the linker to recognize the resource file by file magic, so that it can run cvtres command. Differential Revision: http://llvm-reviews.chandlerc.com/D1943 llvm-svn: 192742
* Separating ELF and MachO stub info functions for RuntimeDyldAndrew Kaylor2013-10-153-23/+39
| | | | llvm-svn: 192737
* [AArch64] Add support for NEON scalar signed saturating absolute value andChad Rosier2013-10-151-1/+45
| | | | | | scalar signed saturating negate instructions. llvm-svn: 192733
* Fixing some host==target assumptions in RuntimeDyldAndrew Kaylor2013-10-152-3/+6
| | | | llvm-svn: 192732
* Remove some dead code. (DarwinGDBCompat was retired in r189903).Adrian Prantl2013-10-152-13/+2
| | | | llvm-svn: 192731
* Struct byval: fix a copy-paste error for thumb2.Manman Ren2013-10-151-1/+1
| | | | | | PR17309 llvm-svn: 192730
* Fix PR17546Michael Liao2013-10-151-6/+1
| | | | | | | | | | - Type of index used in extract_vector_elt or insert_vector_elt supposes to be TLI.getVectorIdxTy() which is pointer type on most targets. It'd better to truncate (or zero-extend in case it's changed later) it to mask element type to guarantee they are matching instead of asserting that. llvm-svn: 192722
* Fix PR16807Michael Liao2013-10-151-6/+16
| | | | | | | | | | - Lower signed division by constant powers-of-2 to target-independent DAG operators instead of target-dependent ones to support them better on targets where vector types are legal but shift operators on that types are illegal. E.g., on AVX, PSRAW is only available on <8 x i16> though <16 x i16> is a legal type. llvm-svn: 192721
* LoopVectorize: Properly reflect PODness in comments.Benjamin Kramer2013-10-151-4/+4
| | | | llvm-svn: 192717
* Guard the debug temp variable with NDEBUG to avoid warning/error with NDEBUG ↵Pekka Jaaskelainen2013-10-151-0/+2
| | | | | | defined. llvm-svn: 192709
* Do not assert when trying to add a meta data operand withPekka Jaaskelainen2013-10-151-1/+2
| | | | | | MachineInstr::addOperand(). llvm-svn: 192707
* [mips][msa] Added support for build_vector for v4f32 and v2f64.Daniel Sanders2013-10-153-12/+112
| | | | llvm-svn: 192699
* Revert "Add AllTargetsBindings sublibrary" as it breaks cmake build on ↵Anders Waldenborg2013-10-157-95/+9
| | | | | | (atleast) windows and darwin. llvm-svn: 192697
* Add AllTargetsBindings sublibrary instead of having static inlines in the ↵Anders Waldenborg2013-10-157-9/+95
| | | | | | | | | | | | | llvm-c headers. This new library will be linked in when using the "all-targets" component and contains the LLVMInitializeAll* functions. This means that those functions will exist as real symbols in the shared library, and can therefore can be called from bindings that are using ffi the shared library. llvm-svn: 192690
* [SystemZ] Use A(G)SI when spilling the target of a constant additionRichard Sandiford2013-10-151-2/+24
| | | | llvm-svn: 192681
* Fix MSP430 calling convention to match MSPGCCJob Noorman2013-10-152-10/+123
| | | | llvm-svn: 192678
* Remove x86_sse42_crc32_64_8 intrinsic. It has no functional difference from ↵Craig Topper2013-10-154-8/+16
| | | | | | x86_sse42_crc32_32_8 and was not mapped to a clang builtin. I'm not even sure why this form of the instruction is even called out explicitly in the docs. Also add AutoUpgrade support to convert it into the other intrinsic with appropriate trunc and zext. llvm-svn: 192672
* Improve on r192635, ExeDepsFix for avx, and add a test case.Andrew Trick2013-10-151-1/+3
| | | | | | | | | rdar:15221834 False AVX register dependencies cause 5x slowdown on flops-5/6 and significant slowdown on several others. This was blocking the switch to MI-Sched. llvm-svn: 192669
* [mips] Define a pseudo instruction which writes to both the lower and higherAkira Hatanaka2013-10-156-15/+51
| | | | | | parts of the accumulators and gets expanded post-RA. llvm-svn: 192667
* [mips] Use predicates to guard instructions using accumulator registers insteadAkira Hatanaka2013-10-152-11/+12
| | | | | | of relying on AddedComplexity. llvm-svn: 192665
* [mips] Rename isel nodes.Akira Hatanaka2013-10-157-33/+31
| | | | llvm-svn: 192663
* [mips] Transfer kill flag to the newly created operand.Akira Hatanaka2013-10-151-1/+5
| | | | llvm-svn: 192662
* [mips] Set HI/LO registers' HWEncoding field.Akira Hatanaka2013-10-151-8/+8
| | | | llvm-svn: 192661
* [mips] Delete unnecessary code.Akira Hatanaka2013-10-151-3/+0
| | | | llvm-svn: 192660
* Update comment list of GLOBALVAR modifiers in BitcodeWriter to include ↵Michael Gottesman2013-10-141-1/+1
| | | | | | | | externally_initialized. Thanks to Shuxin Yang for catching this. llvm-svn: 192637
* [X86][FastISel] During X86 fastisel, the address of indirect call was resolvedQuentin Colombet2013-10-141-7/+14
| | | | | | | | | | | | | | | through bitcast, ptrtoint, and inttoptr instructions. This is valid only if the related instructions are in that same basic block, otherwise we may reference variables that were not live accross basic blocks resulting in undefined virtual registers. The bug was exposed when both SDISel and FastISel were used within the same function, i.e., one basic block is issued with FastISel and another with SDISel, as demonstrated with the testcase. <rdar://problem/15192473> llvm-svn: 192636
* Fix the ExecutionDepsFix pass to handle AVX instructions.Andrew Trick2013-10-144-38/+164
| | | | | | | | | | | | | | | | | | | | | | | | This pass is needed to break false dependencies. Without it, unlucky register assignment can result in wild (5x) swings in performance. This pass was trying to handle AVX but not getting it right. AVX doesn't have partial register defs, it has unused register reads in which the high bits of a source operand are copied into the unused bits of the dest. Fixing this requires conservative liveness analysis. This is awkard because the pass already has its own pseudo-liveness. However, proper liveness is expensive, and we would like to use a generic utility to compute it. The fix only invokes liveness on-demand. It is rare to detect a case that needs undef-read dependence breaking, but when it happens, it can be needed many times within a very large block. I think the existing heuristic which uses a register window of 16 is too conservative for loop-carried false dependencies. If the loop is a reduction. The out-of-order engine may be able to execute several loop iterations in parallel. However, I'll leave this tuning exercise for next time. llvm-svn: 192635
OpenPOWER on IntegriCloud