Skip to content
  1. Oct 23, 2017
  2. Oct 22, 2017
    • Saleem Abdulrasool's avatar
      ExecutionEngine: make COFF Thumb2 assertions non-tautological · 9e802eaf
      Saleem Abdulrasool authored
      The overflow detection assertions were tautological due to truncation.
      Adjust them to no longer be tautological.
      
      Patch by Alex Langford!
      
      llvm-svn: 316303
      9e802eaf
    • Yichao Yu's avatar
      Fix invalid ptrtoint in InstCombine · 92c11ee3
      Yichao Yu authored
      Summary:
      It's unclear if this is the only thing we can do but at least this is consistent with the check
      of address space agreement in `isBitCastable`.
      
      The code is used at least in both instcombine and jumpthreading though
      I could only find a way to trigger the invalid cast in instcombine.
      
      Reviewers: loladiro, sanjoy, majnemer
      
      Reviewed By: sanjoy
      
      Subscribers: llvm-commits
      
      Differential Revision: https://reviews.llvm.org/D34335
      
      llvm-svn: 316302
      92c11ee3
    • Benjamin Kramer's avatar
      24952ce5
    • Martin Storsjö's avatar
      Make HIDDEN_DIRECTIVE a function-like macro. NFCI. · c5115b9e
      Martin Storsjö authored
      This avoids a hack for making it a no-op for windows.
      
      Also explicitly check for _WIN32 instead of assuming it.
      
      Differential Revision: https://reviews.llvm.org/D39156
      
      llvm-svn: 316300
      c5115b9e
    • Benjamin Kramer's avatar
      [X86] Add missing override. NFC. · a7c822a2
      Benjamin Kramer authored
      llvm-svn: 316299
      a7c822a2
    • Sanjay Patel's avatar
      [SimplifyCFG] delay switch condition forwarding to -latesimplifycfg · b80daf0b
      Sanjay Patel authored
      As discussed in D39011:
      https://reviews.llvm.org/D39011
      ...replacing constants with a variable is inverting the transform done
      by other IR passes, so we definitely don't want to do this early. 
      In fact, it's questionable whether this transform belongs in SimplifyCFG 
      at all. I'll look at moving this to codegen as a follow-up step.
      
      llvm-svn: 316298
      b80daf0b
    • Fangrui Song's avatar
      [utils] Support -mtriple=powerpc64 · dc168722
      Fangrui Song authored
      Summary: test/CodeGen/PowerPC/pr33093.ll uses both powerpc64 (big-endian) and powerpc64le while the former was unsupported.
      
      Subscribers: nemanjai
      
      Differential Revision: https://reviews.llvm.org/D39164
      
      llvm-svn: 316297
      dc168722
    • Simon Pilgrim's avatar
      Strip trailing whitespace. NFCI. · ce55eab9
      Simon Pilgrim authored
      llvm-svn: 316296
      ce55eab9
    • Marina Yatsina's avatar
      Add logic to greedy reg alloc to avoid bad eviction chains · f9371d82
      Marina Yatsina authored
      This fixes bugzilla 26810
      https://bugs.llvm.org/show_bug.cgi?id=26810
      
      This is intended to prevent sequences like:
      movl %ebp, 8(%esp) # 4-byte Spill
      movl %ecx, %ebp
      movl %ebx, %ecx
      movl %edi, %ebx
      movl %edx, %edi
      cltd
      idivl %esi
      movl %edi, %edx
      movl %ebx, %edi
      movl %ecx, %ebx
      movl %ebp, %ecx
      movl 16(%esp), %ebp # 4 - byte Reload
      
      Such sequences are created in 2 scenarios:
      
      Scenario #1:
      vreg0 is evicted from physreg0 by vreg1
      Evictee vreg0 is intended for region splitting with split candidate physreg0 (the reg vreg0 was evicted from)
      Region splitting creates a local interval because of interference with the evictor vreg1 (normally region spliiting creates 2 interval, the "by reg" and "by stack" intervals. Local interval created when interference occurs.)
      one of the split intervals ends up evicting vreg2 from physreg1
      Evictee vreg2 is intended for region splitting with split candidate physreg1
      one of the split intervals ends up evicting vreg3 from physreg2 etc.. until someone spills
      
      Scenario #2
      vreg0 is evicted from physreg0 by vreg1
      vreg2 is evicted from physreg2 by vreg3 etc
      Evictee vreg0 is intended for region splitting with split candidate physreg1
      Region splitting creates a local interval because of interference with the evictor vreg1
      one of the split intervals ends up evicting back original evictor vreg1 from physreg0 (the reg vreg0 was evicted from)
      Another evictee vreg2 is intended for region splitting with split candidate physreg1
      one of the split intervals ends up evicting vreg3 from physreg2 etc.. until someone spills
      
      As compile time was a concern, I've added a flag to control weather we do cost calculations for local intervals we expect to be created (it's on by default for X86 target, off for the rest).
      
      Differential Revision: https://reviews.llvm.org/D35816
      
      Change-Id: Id9411ff7bbb845463d289ba2ae97737a1ee7cc39
      llvm-svn: 316295
      f9371d82
    • Craig Topper's avatar
      [X86] More correctly support LIG and WIG for EVEX instructions in the disassembler tables. · dac20263
      Craig Topper authored
      This is similar to how we generate the VEX tables.
      
      More fixes are still needed for the instructions that use EVEX.b (broadcast and embedded rounding).
      
      llvm-svn: 316294
      dac20263
    • Sanjay Patel's avatar
      [SimplifyCFG] try harder to forward switch condition to phi (PR34471) · 24226504
      Sanjay Patel authored
      The missed canonicalization/optimization in the motivating test from PR34471 leads to very different codegen:
      
        int switcher(int x) {
            switch(x) {
            case 17: return 17;
            case 19: return 19;
            case 42: return 42;
            default: break;
            }
            return 0;
          }
      
        int comparator(int x) {
          if (x == 17) return 17;
          if (x == 19) return 19;
          if (x == 42) return 42;
          return 0;
        }
      
      For the first example, we use a bit-test optimization to avoid a series of compare-and-branch:
      https://godbolt.org/g/BivDsw
      
      Differential Revision: https://reviews.llvm.org/D39011
      
      llvm-svn: 316293
      24226504
    • Faisal Vali's avatar
      [C++17] Fix PR34970 - tweak overload resolution for class template... · 81b756e6
      Faisal Vali authored
      [C++17] Fix PR34970 - tweak overload resolution for class template deduction-guides in line with WG21's p0620r0.
      
      In order to identify the copy deduction candidate, I considered two approaches:
        - attempt to determine whether an implicit guide is a copy deduction candidate by checking certain properties of its subsituted parameter during overload-resolution.
        - using one of the many bits (WillHaveBody) from FunctionDecl (that CXXDeductionGuideDecl inherits from) that are otherwise irrelevant for deduction guides
      
      After some brittle gymnastics w the first strategy, I settled on the second, although to avoid confusion and to give that bit a better name, i turned it into a member of an anonymous union.
      
      Given this identification 'bit', the tweak to overload resolution was a simple reordering of the deduction guide checks (in SemaOverload.cpp::isBetterOverloadCandidate), in-line with Jason Merrill's p0620r0 drafting which made it into the working paper.  Concordant with that, I made sure the copy deduction candidate is always added.
      
      
      References:
      See https://bugs.llvm.org/show_bug.cgi?id=34970 
      See http://wg21.link/p0620r0
      
      llvm-svn: 316292
      81b756e6
    • Jan Vesely's avatar
      shared: Implement aligned vector stores (vstorea_half) · 7ab2d0bd
      Jan Vesely authored
      
      
      Float version passes newly posted piglit tests on turks, float and double pass on carrizo.
      v2: scalar vstorea_half
      v3: fix typo
      
      Reviewer: Aaron Watry
      Signed-off-by: default avatarJan Vesely <jan.vesely@rutgers.edu>
      llvm-svn: 316291
      7ab2d0bd
    • Jan Vesely's avatar
      shared: Implement aligned vector loads (vloada_half) · 12061c71
      Jan Vesely authored
      
      
      Passes newly posted piglits on turks and carrizo
      v2: add scalar vloada_half
      v3: fix typo
      
      Reviewer: Aaron Watry
      Signed-off-by: default avatarJan Vesely <jan.vesely@rutgers.edu>
      llvm-svn: 316290
      12061c71
    • Momchil Velikov's avatar
      [ARM] Dynamic stack alignment for 16-bit Thumb · d6a4ab3d
      Momchil Velikov authored
      This patch implements dynamic stack (re-)alignment for 16-bit Thumb. When
      targeting processors, which support only the 16-bit Thumb instruction set
      the compiler ignores the alignment attributes of automatic variables and may
      silently generate incorrect code.
      
      Differential revision: https://reviews.llvm.org/D38143
      
      llvm-svn: 316289
      d6a4ab3d
Loading