Skip to content
  1. Jul 11, 2013
    • Adrian Prantl's avatar
      In response to dblaikie's comment on r186035, replacing the · 29b3fdc8
      Adrian Prantl authored
      (reduced LLVM IR) + (full source in comment)
      with the
      (full LLVM IR) + (reduced src in comment)
      
      llvm-svn: 186119
      29b3fdc8
    • Rafael Espindola's avatar
      Add tests for the before and after modifiers. · dee53e76
      Rafael Espindola authored
      llvm-svn: 186118
      dee53e76
    • Rafael Espindola's avatar
      Add a test for llvm-ar's m operation. · 621ca943
      Rafael Espindola authored
      llvm-svn: 186110
      621ca943
    • Hal Finkel's avatar
      PPC: Add some missing V_SET0 patterns · 47150817
      Hal Finkel authored
      We had patterns to match v4i32 immAllZerosV -> V_SET0, but not patterns for
      v8i16 (which occurs in the test case) or v16i8. The same was true for
      V_SETALLONES (so I added the associated patterns for those as well).
      
      Another bug found by llvm-stress.
      
      llvm-svn: 186108
      47150817
    • Andrew Trick's avatar
      indvars: Improve LFTR by eliminating truncation when comparing against a constant. · 3095993d
      Andrew Trick authored
      Patch by Michele Scandale!
      
      Adds a special handling of the case where, during the loop exit
      condition rewriting, the exit value is a constant of bitwidth lower
      than the type of the induction variable: instead of introducing a
      trunc operation in order to match correctly the operand types, it
      allows to convert the constant value to an equivalent constant,
      depending on the initial value of the induction variable and the trip
      count, in order have an equivalent comparison between the induction
      variable and the new constant.
      
      llvm-svn: 186107
      3095993d
    • Hal Finkel's avatar
      PPCDAGToDAGISel::isRunOfOnes should return false on zero · ff3ea806
      Hal Finkel authored
      This fixes a bug (found by csmith) at -O0 where we attempt to create a RLWIMI
      with an out-of-range operand. Most uses of the isRunOfOnes function are guarded
      by a condition that the value is not zero. This was not true in two places, and
      in both places a zero input would result in an out-of-rage MB value (= 32).
      
      To fix this, isRunOfOnes returns false on a zero input (and I've remove one
      now-redundant guard).
      
      llvm-svn: 186101
      ff3ea806
    • Rafael Espindola's avatar
      Fix a FIXME about the format and add a test. · b1c1c5f3
      Rafael Espindola authored
      While at it, use strftime on Unix too and use the thread safe versions
      of localtime.
      
      llvm-svn: 186090
      b1c1c5f3
    • Arnold Schwaighofer's avatar
      LoopVectorize: Vectorize all accesses in address space zero with unit stride · e97c71b8
      Arnold Schwaighofer authored
      We can vectorize them because in the case where we wrap in the address space the
      unvectorized code would have had to access a pointer value of zero which is
      undefined behavior in address space zero according to the LLVM IR semantics.
      (Thank you Duncan, for pointing this out to me).
      
      Fixes PR16592.
      
      llvm-svn: 186088
      e97c71b8
    • Rafael Espindola's avatar
      Merge these tests. · a7f6913c
      Rafael Espindola authored
      llvm-svn: 186084
      a7f6913c
    • Rafael Espindola's avatar
      Use a more unique name to avoid conflicting with directory.ll tests when running · 70a765dc
      Rafael Espindola authored
      in parallel.
      
      llvm-svn: 186083
      70a765dc
    • Rafael Espindola's avatar
      Add a test for llvm-ar's 'd' operation. · 0ec47c80
      Rafael Espindola authored
      llvm-svn: 186082
      0ec47c80
    • Rafael Espindola's avatar
      Add tests for the 'x' operation. · 54dbca5e
      Rafael Espindola authored
      llvm-svn: 186081
      54dbca5e
    • Richard Sandiford's avatar
      [SystemZ] Add testcase missing from r186073 · 4209e7f6
      Richard Sandiford authored
      llvm-svn: 186074
      4209e7f6
    • Richard Sandiford's avatar
      [SystemZ] Use zeroing form of RISBG for shift-and-AND sequences · ea9b6aa2
      Richard Sandiford authored
      Extend r186072 to handle shifts and ANDs.
      
      llvm-svn: 186073
      ea9b6aa2
    • Richard Sandiford's avatar
      [SystemZ] Use zeroing form of RISBG for some AND sequences · 84f54a3b
      Richard Sandiford authored
      RISBG can handle some ANDs for which no AND IMMEDIATE exists.
      It also acts as a three-operand AND for some cases where an
      AND IMMEDIATE could be used instead.
      
      It might be worth adding a pass to replace RISBG with AND IMMEDIATE
      in cases where the register operands end up being the same and where
      AND IMMEDIATE is smaller.
      
      llvm-svn: 186072
      84f54a3b
    • Richard Sandiford's avatar
      [SystemZ] Allow 8-bit operands to RISBG · 67ddcd6d
      Richard Sandiford authored
      RISBG has three 8-bit operands (I3, I4 and I5).  I'd originally
      restricted all three to 6 bits, since that's the only range we intended
      to use at the time.  However, the top bit of I4 acts as a "zero" flag for
      RISBG, while the top bit of I3 acts as a "test" flag for RNSBG & co.
      This patch therefore allows them to have the full 8-bit range.
      I've left the fifth operand as a 6-bit value for now since the
      upper 2 bits have no defined meaning.
      
      llvm-svn: 186070
      67ddcd6d
    • Duncan Sands's avatar
      TryToSimplifyUncondBranchFromEmptyBlock was checking that any common · e773c080
      Duncan Sands authored
      predecessors of the two blocks it is attempting to merge supply the
      same incoming values to any phi in the successor block.  This change
      allows merging in the case where there is one or more incoming values
      that are undef.  The undef values are rewritten to match the non-undef
      value that flows from the other edge.  Patch by Mark Lacey.
      
      llvm-svn: 186069
      e773c080
    • Hal Finkel's avatar
      RegScavenger should not exclude undef uses · 743b1940
      Hal Finkel authored
      When computing currently-live registers, the register scavenger excludes undef
      uses. As a result, undef uses are ignored when computing the restore points of
      registers spilled into the emergency slots. While the register scavenger
      normally excludes from consideration, when scavenging, registers used by the
      current instruction, we need to not exclude undef uses. Otherwise, we might end
      up requiring more emergency spill slots than we have (in the case where the
      undef use *is* the currently-spilled register).
      
      Another bug found by llvm-stress.
      
      llvm-svn: 186067
      743b1940
    • Nadav Rotem's avatar
      Consolidate more lit tests. · 108ef760
      Nadav Rotem authored
      llvm-svn: 186063
      108ef760
    • Nadav Rotem's avatar
      Consolidate some of the lit tests. · e0a49499
      Nadav Rotem authored
      llvm-svn: 186062
      e0a49499
    • Nadav Rotem's avatar
      Consolidate some of the lit tests. · c6b5e249
      Nadav Rotem authored
      llvm-svn: 186060
      c6b5e249
    • Michael Gottesman's avatar
      Teach TailRecursionElimination to handle certain cases of nocapture escaping allocas. · b40db26e
      Michael Gottesman authored
      Without the changes introduced into this patch, if TRE saw any allocas at all,
      TRE would not perform TRE *or* mark callsites with the tail marker.
      
      Because TRE runs after mem2reg, this inadequacy is not a death sentence. But
      given a callsite A without escaping alloca argument, A may not be able to have
      the tail marker placed on it due to a separate callsite B having a write-back
      parameter passed in via an argument with the nocapture attribute.
      
      Assume that B is the only other callsite besides A and B only has nocapture
      escaping alloca arguments (*NOTE* B may have other arguments that are not passed
      allocas). In this case not marking A with the tail marker is unnecessarily
      conservative since:
      
        1. By assumption A has no escaping alloca arguments itself so it can not
           access the caller's stack via its arguments.
      
        2. Since all of B's escaping alloca arguments are passed as parameters with
           the nocapture attribute, we know that B does not stash said escaping
           allocas in a manner that outlives B itself and thus could be accessed
           indirectly by A.
      
      With the changes introduced by this patch:
      
        1. If we see any escaping allocas passed as a capturing argument, we do
           nothing and bail early.
      
        2. If we do not see any escaping allocas passed as captured arguments but we
           do see escaping allocas passed as nocapture arguments:
      
             i. We do not perform TRE to avoid PR962 since the code generator produces
                significantly worse code for the dynamic allocas that would be created
                by the TRE algorithm.
      
             ii. If we do not return twice, mark call sites without escaping allocas
                 with the tail marker. *NOTE* This excludes functions with escaping
                 nocapture allocas.
      
        3. If we do not see any escaping allocas at all (whether captured or not):
      
             i. If we do not have usage of setjmp, mark all callsites with the tail
                marker.
      
             ii. If there are no dynamic/variable sized allocas in the function,
                 attempt to perform TRE on all callsites in the function.
      
      Based off of a patch by Nick Lewycky.
      
      rdar://14324281.
      
      llvm-svn: 186057
      b40db26e
    • Hal Finkel's avatar
      Move r186044 tests into CodeGen/X86 · 94383e54
      Hal Finkel authored
      I had thought that these tests could be target-neutral, but in practice this is
      not the case (on some targets, like Hexagon and Darwin), they trigger an assert
      (a different assert than the one that r186044 fixes).
      
      llvm-svn: 186051
      94383e54
    • Hal Finkel's avatar
      Set REQUIRES shell on the test cases for r186044 · a2aeb8e8
      Hal Finkel authored
      Trying to fix the i686-mingw32 build.
      
      llvm-svn: 186046
      a2aeb8e8
    • Hal Finkel's avatar
      XFAIL the test cases for r186044 on Hexagon · 31ffcec9
      Hal Finkel authored
      For some reason, the Hexagon backend does not reject these invalid static
      initializer expressions, but instead crashes in AsmPrinter::EmitGlobalConstant.
      
      llvm-svn: 186045
      31ffcec9
    • Hal Finkel's avatar
      Don't assert if we can't constant fold extract/insertvalue · b31366da
      Hal Finkel authored
      A non-constant-foldable static initializer expression containing insertvalue or
      extractvalue had been causing an assert:
      
        Constants.cpp:1971: Assertion `FC && "ExtractValue constant expr couldn't be
                                       folded!"' failed.
      
      Now we report a more-sensible "Unsupported expression in static initializer"
      error instead.
      
      Fixes PR15417.
      
      llvm-svn: 186044
      b31366da
    • Rafael Espindola's avatar
      Remove this test for now. · 555aa899
      Rafael Espindola authored
      It is not reliable to depend on the output of llvm_unreachable. The original
      change will have proper tests when llvm-ar moves to lib/Object (soon).
      
      llvm-svn: 186043
      555aa899
    • Rafael Espindola's avatar
      Find the symbol table on archives created on OS X. · 55509920
      Rafael Espindola authored
      llvm-svn: 186041
      55509920
  2. Jul 10, 2013
Loading