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
    • 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
Loading