Skip to content
  1. Aug 14, 2014
  2. Aug 13, 2014
    • Juergen Ributzka's avatar
      [FastISel][ARM] Use MOVT/MOVW if the subtarget requests it. · a5b08385
      Juergen Ributzka authored
      This change is also in preparation for a future change to make sure that
      the constant materialization uses MOVT/MOVW when available and not a load
      from the constant pool.
      
      llvm-svn: 215584
      a5b08385
    • Juergen Ributzka's avatar
      [FastISel][ARM] Fix a bug in the integer materialization code. · 2cbcf7aa
      Juergen Ributzka authored
      getRegClassFor returns the incorrect register class when in Thumb2 mode.
      This fix simply manually selects the register class as in the code just a few
      lines above.
      
      There is no test case for this code, because the code is currently
      unreachable. This will be changed in a future commit and existing test
      cases will exercise this code.
      
      llvm-svn: 215583
      2cbcf7aa
    • Juergen Ributzka's avatar
      [FastISel][AArch64] Cleanup constant materialization code. NFCI. · 5ae43a13
      Juergen Ributzka authored
      Cleanup and prepare constant materialization code for future commits.
      
      llvm-svn: 215582
      5ae43a13
    • Gerolf Hoflehner's avatar
      [Cleanup] Utility function to erase instruction and mark DBG_Values · caa8bfd1
      Gerolf Hoflehner authored
      New function to erase a machine instruction and mark DBG_VALUE
      for removal. A DBG_VALUE is marked for removal when it references
      an operand defined in the instruction.
      Use the new function to cleanup code in dead machine instruction
      removal pass.
      
      llvm-svn: 215580
      caa8bfd1
    • Quentin Colombet's avatar
      [MachineDominatorTree] Provide a method to inform a MachineDominatorTree that a · abea99f6
      Quentin Colombet authored
      critical edge has been split. The MachineDominatorTree will when lazy update the
      underlying dominance properties when require.
      
      ** Context **
      
      This is a follow-up of r215410.
      Each time a critical edge is split this invalidates the dominator tree
      information. Thus, subsequent queries of that interface will be slow until the
      underlying information is actually recomputed (costly).
      
      ** Problem **
      
      Prior to this patch, splitting a critical edge needed to query the dominator
      tree to update the dominator information.
      Therefore, splitting a bunch of critical edges will likely produce poor
      performance as each query to the dominator tree will use the slow query path.
      This happens a lot in passes like MachineSink and PHIElimination.
      
      ** Proposed Solution **
      
      Splitting a critical edge is a local modification of the CFG. Moreover, as soon
      as a critical edge is split, it is not critical anymore and thus cannot be a
      candidate for critical edge splitting anymore. In other words, the predecessor
      and successor of a basic block inserted on a critical edge cannot be inserted by
      critical edge splitting.
      
      Using these observations, we can pile up the splitting of critical edge and
      apply then at once before updating the DT information.
      
      The core of this patch moves the update of the MachineDominatorTree information
      from MachineBasicBlock::SplitCriticalEdge to a lazy MachineDominatorTree.
      
      ** Performance **
      
      Thanks to this patch, the motivating example compiles in 4- minutes instead of
      6+ minutes. No test case added as the motivating example as nothing special but
      being huge!
      
      The binaries are strictly identical for all the llvm test-suite + SPECs with and
      without this patch for both Os and O3.
      
      Regarding compile time, I observed only noise, although on average I saw a
      small improvement.
      
      <rdar://problem/17894619>
      
      llvm-svn: 215576
      abea99f6
    • Benjamin Kramer's avatar
      Fix (re-)creation of unittest lit.site.cfg for clang-tools-extra. · 46d1544d
      Benjamin Kramer authored
      This has been hiding really well. Hopefully brings the builders suffering from
      outdated lit.site.cfg files back to life.
      
      llvm-svn: 215575
      46d1544d
    • Jan Vesely's avatar
      utils: Fix segfault in flattencfg · 0cd3ec6c
      Jan Vesely authored
      
      
      v2: continue iterating through the rest of the bb
          use for loop
      
      v3: initialize FlattenCFG pass in ScalarOps
          add test
      
      v4: split off initializing flattencfg to a separate patch
          add comment
      
      Signed-off-by: default avatarJan Vesely <jan.vesely@rutgers.edu>
      llvm-svn: 215574
      0cd3ec6c
    • Jan Vesely's avatar
      Initialize FlattenCFG pass · 5a956d49
      Jan Vesely authored
      
      
      Signed-off-by: default avatarJan Vesely <jan.vesely@rutgers.edu>
      llvm-svn: 215573
      5a956d49
    • Rafael Espindola's avatar
      Simplify memory ownership with std::unique_ptr. · bb415eac
      Rafael Espindola authored
      llvm-svn: 215567
      bb415eac
    • Rafael Espindola's avatar
      Simplify ownership with std::unique_ptr. NFC. · 5f2bb7d9
      Rafael Espindola authored
      llvm-svn: 215566
      5f2bb7d9
    • Matt Arsenault's avatar
      R600: Correctly set the src value offset for scalarized kernel args · 74ef2777
      Matt Arsenault authored
      This for some reason fixes v1i64 kernel arguments on pre-SI. This
      currently breaks some other cases in the kernel-args.ll test for R600,
      but I'm not particularly confident in the new output. VTX_READ_* are not
      used for some of the scalarized cases, and the code reading from the
      constant buffer doesn't make much sense to me.
      
      llvm-svn: 215564
      74ef2777
    • Benjamin Kramer's avatar
      Canonicalize header guards into a common format. · a7c40ef0
      Benjamin Kramer authored
      Add header guards to files that were missing guards. Remove #endif comments
      as they don't seem common in LLVM (we can easily add them back if we decide
      they're useful)
      
      Changes made by clang-tidy with minor tweaks.
      
      llvm-svn: 215558
      a7c40ef0
Loading