Skip to content
  1. Jul 19, 2012
  2. Jul 18, 2012
    • Jordan Rose's avatar
      Allow PointerIntPairs to be created from const void *. · 82632bff
      Jordan Rose authored
      For a measure of safety, this conversion is only permitted if the
      stored pointer type can also be created from a const void *.
      
      llvm-svn: 160456
      82632bff
    • Manman Ren's avatar
      X86: remove redundant cmp against zero. · d0a4ee84
      Manman Ren authored
      Updated OptimizeCompare in peephole to remove redundant cmp against zero.
      We only remove Compare if CF and OF are not used.
      
      rdar://11855129
      
      llvm-svn: 160454
      d0a4ee84
    • Preston Gurd's avatar
      This patch fixes 8 out of 20 unexpected failures in "make check" · f0a48ec8
      Preston Gurd authored
      when run on an Intel Atom processor. The failures have arisen due
      to changes elsewhere in the trunk over the past 8 weeks or so.
      
      These failures were not detected by the Atom buildbot because the
      CPU on the Atom buildbot was not being detected as an Atom CPU.
      The fix for this problem is in Host.cpp and X86Subtarget.cpp, but
      shall remain commented out until the current set of Atom test failures
      are fixed.
      
      Patch by Andy Zhang and Tyler Nowicki!
      
      llvm-svn: 160451
      f0a48ec8
    • Victor Oliveira's avatar
      Adding some debug information to PassManager · aa9ccee9
      Victor Oliveira authored
      llvm-svn: 160446
      aa9ccee9
    • Chad Rosier's avatar
      Whitespace. · 848094e3
      Chad Rosier authored
      llvm-svn: 160445
      848094e3
    • Chandler Carruth's avatar
      Fix a somewhat nasty crasher in PR13378. This crashes inside of · 985454e0
      Chandler Carruth authored
      LiveIntervals due to the two-addr pass generating bogus MI code.
      
      The crux of the issue was a loop nesting problem. The intent of the code
      which attempts to transform instructions before converting them to
      two-addr form is to defer and reprocess any transformed instructions as
      the second processing is likely to have more opportunities to coalesce
      copies, etc. Unfortunately, there was one section of processing that was
      not deferred -- the INSERT_SUBREG rewriting. Due to quirks of how this
      rewriting proceeded, not only did it occur early, it removed the bits of
      information needed for the deferred processing to correctly generate the
      necessary two address form (specifically inserting a copy), but didn't
      trigger any immediate assertions and produced what appeared to be
      already valid two-address from code. Thus, the assertion only fired much
      later in the pipeline.
      
      The fix is to hoist the transformation logic up layer to where it can
      more firmly defer all further processing, and to teach the normal
      processing to handle an edge case previously handled as part of the
      transformation logic. This edge case (already matched tied register
      operands) needs to *not* defer any steps.
      
      As has been brought up repeatedly in the process: wow does this code
      need refactoring. I *may* squeeze in some time to at least bring sanity
      to this loop... but wow... =]
      
      Thanks to Jakob for helpful hints on the way here, and the review.
      
      llvm-svn: 160443
      985454e0
    • Andrew Trick's avatar
      Fix ARMTargetLowering::isLegalAddImmediate to consider thumb encodings. · a22cdb71
      Andrew Trick authored
      Based on Evan's suggestion without a commitable test.
      
      llvm-svn: 160441
      a22cdb71
    • Andrew Trick's avatar
      whitespace · bc325168
      Andrew Trick authored
      llvm-svn: 160440
      bc325168
    • Andrew Trick's avatar
      e002fb5d
    • Victor Oliveira's avatar
      test commit · a1de408a
      Victor Oliveira authored
      llvm-svn: 160438
      a1de408a
    • Simon Atanasyan's avatar
      Add some missed ELF constants definitions: · 8856ef88
      Simon Atanasyan authored
      - section types
      - dynamic table entries tags
      - state flags for DT_FLAGS_1 entry
      
      The patch reviewed by Rafael Espindola.
      
      llvm-svn: 160433
      8856ef88
    • NAKAMURA Takumi's avatar
      Update config.h.cmake corresponding to config.h.in. · 5f8d8eb6
      NAKAMURA Takumi authored
      llvm-svn: 160431
      5f8d8eb6
    • Nadav Rotem's avatar
      The vbroadcast family of instructions has 'fallback patterns' in case where the · 4c12245b
      Nadav Rotem authored
      load source operand is used by multiple nodes. The v2i64 broadcast was emulated
      by shuffling the two lower i32 elements to the upper two.
      We had a bug in the immediate used for the broadcast.
      Replacing 0 to 0x44.
      0x44 means [01|00|01|00] which corresponds to the correct lane.
      
      Patch by Michael Kuperstein.
      
      llvm-svn: 160430
      4c12245b
    • Jack Carter's avatar
      Mips specific inline asm operand modifier 'M': · a62ba828
      Jack Carter authored
      Print the high order register of a double word register operand.
      
      In 32 bit mode, a 64 bit double word integer will be represented
      by 2 32 bit registers. This modifier causes the high order register
      to be used in the asm expression. It is useful if you are using 
      doubles in assembler and continue to control register to variable
      relationships.
      
      This patch also fixes a related bug in a previous patch:
      
          case 'D': // Second part of a double word register operand
          case 'L': // Low order register of a double word register operand
          case 'M': // High order register of a double word register operand
      
      I got 'D' and 'M' confused. The second part of a double word operand
      will only match 'M' for one of the endianesses. I had 'L' and 'D'
      be the opposite twins when 'L' and 'M' are.
      
      llvm-svn: 160429
      a62ba828
    • Andrew Trick's avatar
      SCEVTraversal: Add a visited set. · 0d10225f
      Andrew Trick authored
      Expression trees may be DAGs. Make sure traversal has linear complexity.
      
      llvm-svn: 160426
      0d10225f
    • Craig Topper's avatar
      Remove tab characters. · 6bf3ed45
      Craig Topper authored
      llvm-svn: 160425
      6bf3ed45
    • Craig Topper's avatar
      Fix typo in error message and remove some tab characters. · 85324232
      Craig Topper authored
      llvm-svn: 160423
      85324232
    • Andrew Trick's avatar
      indvars: drive by heuristics fix. · 0d07dfcd
      Andrew Trick authored
      Minor oversight noticed by inspection. Sorry no unit test.
      
      llvm-svn: 160422
      0d07dfcd
    • Andrew Trick's avatar
      indvars: Linear function test replace should avoid reusing undef. · c0872662
      Andrew Trick authored
      Fixes PR13371: indvars pass incorrectly substitutes 'undef' values.
      
      I do not like this fix. It's needed until/unless the meaning of undef
      changes. It attempts to be complete according to the IR spec, but I
      don't have much confidence in the implementation given the difficulty
      testing undefined behavior. Worse, this invalidates some of my
      hard-fought work on indvars and LSR to optimize pointer induction
      variables. It results benchmark regressions, which I'll track
      internally. On x86_64 no LTO I see:
      
      -3% huffbench
      -3% 400.perlbench
      -8% fhourstones
      
      My only suggestion for recovering is to change the meaning of
      undef. If we could trust an arbitrary instruction to produce a some
      real value that can be manipulated (e.g. incremented) according to
      non-undef rules, then this case could be easily handled with SCEV.
      
      llvm-svn: 160421
      c0872662
    • Craig Topper's avatar
      Make x86 asm parser to check for xmm vs ymm for index register in gather... · 01deb5f2
      Craig Topper authored
      Make x86 asm parser to check for xmm vs ymm for index register in gather instructions. Also fix Intel syntax for gather instructions to use 'DWORD PTR' or 'QWORD PTR' to match gas.
      
      llvm-svn: 160420
      01deb5f2
    • Galina Kistanova's avatar
      Fixed few warnings. · 5ac251b8
      Galina Kistanova authored
      llvm-svn: 160419
      5ac251b8
    • Nuno Lopes's avatar
      2151497d
    • Joel Jones's avatar
      More replacing of target-dependent intrinsics with target-indepdent · b84f7bea
      Joel Jones authored
      intrinsics.  The second instruction(s) to be handled are the vector versions 
      of count set bits (ctpop).
      
      The changes here are to clang so that it generates a target independent 
      vector ctpop when it sees an ARM dependent vector bits set count.  The changes 
      in llvm are to match the target independent vector ctpop and in 
      VMCore/AutoUpgrade.cpp to update any existing bc files containing ARM 
      dependent vector pop counts with target-independent ctpops.  There are also 
      changes to an existing test case in llvm for ARM vector count instructions and 
      to a test for the bitcode upgrade.
      
      <rdar://problem/11892519>
      
      There is deliberately no test for the change to clang, as so far as I know, no
      consensus has been reached regarding how to test neon instructions in clang;
      q.v. <rdar://problem/8762292>
      
      llvm-svn: 160410
      b84f7bea
    • Nuno Lopes's avatar
      Apparently it's possible to do an 'invoke asm'. · acd8535d
      Nuno Lopes authored
      Update the language reference to reflect that.
      
      llvm-svn: 160408
      acd8535d
    • Akira Hatanaka's avatar
      Clean up Mips16InstrFormats.td and Mips16InstrInfo.td. · f640f040
      Akira Hatanaka authored
      Patch by Reed Kotler.
      
      llvm-svn: 160403
      f640f040
  3. Jul 17, 2012
Loading