Skip to content
  1. Jun 06, 2017
    • Davide Italiano's avatar
      [SelectionDAG] Update the dominator after splitting critical edges. · fb4d5c09
      Davide Italiano authored
      Running `llc -verify-dom-info` on the attached testcase results in a
      crash in the verifier, due to a stale dominator tree.
      
      i.e.
      
        DominatorTree is not up to date!
        Computed:
        =============================--------------------------------
        Inorder Dominator Tree:
          [1] %safe_mod_func_uint8_t_u_u.exit.i.i.i {0,7}
            [2] %lor.lhs.false.i61.i.i.i {1,2}
            [2] %safe_mod_func_int8_t_s_s.exit.i.i.i {3,6}
              [3] %safe_div_func_int64_t_s_s.exit66.i.i.i {4,5}
      
        Actual:
        =============================--------------------------------
        Inorder Dominator Tree:
          [1] %safe_mod_func_uint8_t_u_u.exit.i.i.i {0,9}
            [2] %lor.lhs.false.i61.i.i.i {1,2}
            [2] %safe_mod_func_int8_t_s_s.exit.i.i.i {3,8}
              [3] %safe_div_func_int64_t_s_s.exit66.i.i.i {4,5}
              [3] %safe_mod_func_int8_t_s_s.exit.i.i.i.lor.lhs.false.i61.i.i.i_crit_edge {6,7}
      
      This is because in `SelectionDAGIsel` we split critical edges without
      updating the corresponding dominator for the function (and we claim
      in `MachineFunctionPass::getAnalysisUsage()` that the domtree is preserved).
      
      We could either stop preserving the domtree in `getAnalysisUsage`
      or tell `splitCriticalEdge()` to update it.
      As the second option is easy to implement, that's the one I chose.
      
      Differential Revision:  https://reviews.llvm.org/D33800
      
      llvm-svn: 304742
      fb4d5c09
  2. Jun 05, 2017
    • Saleem Abdulrasool's avatar
      CodeGen: add support for emitting ObjC image info · 4c47434b
      Saleem Abdulrasool authored
      This ensures that we can emit the ObjC Image Info structure on COFF and
      ELF as well.  The frontend already would attempt to emit this
      information but would get dropped when generating assembly or an object
      file.
      
      llvm-svn: 304736
      4c47434b
    • Sanjay Patel's avatar
      [DAGCombine] Fix unchecked calls to DAGCombiner::*ExtPromoteOperand · 6350de76
      Sanjay Patel authored
      Other calls to DAGCombiner::*PromoteOperand check the result, but here it could cause an assertion in getNode. 
      Falling back to any extend in this case instead of failing outright seems correct to me.
      
      No test case because:
      The failure was triggered by an out of tree backend. In order to trigger it, a backend would need to overload 
      TargetLowering::IsDesirableToPromoteOp to return true for a type for which ISD::SIGN_EXTEND_INREG is marked 
      illegal. In tree, only X86 overloads and sometimes returns true for MVT::i16 yet it marks 
      setOperationAction(ISD::SIGN_EXTEND_INREG, MVT::i16  , Legal);.
      
      Patch by Jacob Young!
      
      Differential Revision: https://reviews.llvm.org/D33633
      
      llvm-svn: 304723
      6350de76
    • Javed Absar's avatar
      Add support for #pragma clang section · b16d1468
      Javed Absar authored
      This patch provides a means to specify section-names for global variables,
      functions and static variables, using #pragma directives.
      This feature is only defined to work sensibly for ELF targets.
      One can specify section names as:
      #pragma clang section bss="myBSS" data="myData" rodata="myRodata" text="myText"
      One can "unspecify" a section name with empty string e.g.
      #pragma clang section bss="" data="" text="" rodata=""
      
      Reviewers: Roger Ferrer, Jonathan Roelofs, Reid Kleckner
      Differential Revision: https://reviews.llvm.org/D33413
      
      llvm-svn: 304704
      b16d1468
  3. Jun 03, 2017
  4. Jun 02, 2017
  5. Jun 01, 2017
  6. May 31, 2017
    • Matthias Braun's avatar
      Try to fix buildbots · e2e65911
      Matthias Braun authored
      It seems not all of our bots have a std::vector::erase() taking a
      const_iterator (even though that seems to be part of C++11) attempt to
      workaround.
      
      llvm-svn: 304349
      e2e65911
    • Matthias Braun's avatar
      X86FloatingPoint: Fix livein lists · ac4becca
      Matthias Braun authored
      After transforming FP to ST registers:
      - Do not add the ST register to the livein lists, they are reserved so
        we do not need to track their liveness.
      - Remove the FP registers from the livein lists, they don't have defs or
        uses anymore and so are not live.
      - (The setKillFlags() call is moved to an earlier place as it relies on
         the FP registers still being present in the livein list.)
      
      llvm-svn: 304342
      ac4becca
    • Nirav Dave's avatar
      [ScheduleDAG] Deal with already scheduled loads in ScheduleDAG. · 3424373f
      Nirav Dave authored
      Summary:
      If we attempt to unfold an SUnit in ScheduleDAG that results in
      finding an already scheduled load, we must should abort the
      unfold as it will not improve scheduling.
      
      This fixes PR32610.
      
      Reviewers: jmolloy, sunfish, bogner, spatel
      
      Subscribers: llvm-commits, MatzeB
      
      Differential Revision: https://reviews.llvm.org/D32911
      
      llvm-svn: 304321
      3424373f
    • Matthias Braun's avatar
      TargetMachine: Indicate whether machine verifier passes. · d6a36ae2
      Matthias Braun authored
      This adds a callback to the LLVMTargetMachine that lets target indicate
      that they do not pass the machine verifier checks in all cases yet.
      
      This is intended to be a temporary measure while the targets are fixed
      allowing us to enable the machine verifier by default with
      EXPENSIVE_CHECKS enabled!
      
      Differential Revision: https://reviews.llvm.org/D33696
      
      llvm-svn: 304320
      d6a36ae2
    • Zaara Syeda's avatar
      [PPC] Inline expansion of memcmp · 3a7578c6
      Zaara Syeda authored
      This patch does an inline expansion of memcmp.
      It changes the memcmp library call into an inline expansion when the size is
      known at compile time and is under a target specified threshold.
      This expansion is implemented in CodeGenPrepare and expands into straight line
      code. The target specifies a maximum load size and the expansion works by using
      this size to load the two sources, compare, and exit early if a difference is
      found. It also has a special case when the memcmp result is used in a compare
      to zero equality.
      
      Differential Revision: https://reviews.llvm.org/D28637
      
      llvm-svn: 304313
      3a7578c6
    • Nirav Dave's avatar
      [DAG] Avoid use of stale store. · 7c70fddb
      Nirav Dave authored
      Correct references to alignment of store which may be deleted in a
      previous iteration of merge. Instead use first store that would be
      merged.
      
      Corrects pr33172's use-after-poison caught by ASan.
      
      Reviewers: spatel, hfinkel, RKSimon
      
      Reviewed By: RKSimon
      
      Subscribers: thegameg, javed.absar, llvm-commits
      
      Differential Revision: https://reviews.llvm.org/D33686
      
      llvm-svn: 304299
      7c70fddb
    • Eugene Zelenko's avatar
      [CodeGen] Fix some Clang-tidy modernize-use-using and Include What You Use... · 4e9736b1
      Eugene Zelenko authored
      [CodeGen] Fix some Clang-tidy modernize-use-using and Include What You Use warnings; other minor fixes (NFC).
      
      llvm-svn: 304265
      4e9736b1
    • Matthias Braun's avatar
      MachineInstr: Do not skip dead def operands when printing. · bc09894d
      Matthias Braun authored
      This was introduced a long time ago in r86583 when regmask operands
      didn't exist. Nowadays the behavior hurts more than it helps. This
      removes it.
      
      llvm-svn: 304254
      bc09894d
    • Tim Shen's avatar
      [AntiDepBreaker] Revert r299124 and add a test. · 0bd0aa8f
      Tim Shen authored
      Summary:
      AntiDepBreaker intends to add all live-outs, including the implicit
      CSRs, in StartBlock. r299124 was done without understanding that
      intention.
      
      Now with the live-ins propagated correctly (D32464), we can revert this change.
      
      Reviewers: MatzeB, qcolombet
      
      Subscribers: nemanjai, llvm-commits
      
      Differential Revision: https://reviews.llvm.org/D33697
      
      llvm-svn: 304251
      0bd0aa8f
Loading