Skip to content
  1. Dec 08, 2015
  2. Dec 07, 2015
    • Philip Reames's avatar
      Remove debug output that snuck into 254957 · e53cb2fd
      Philip Reames authored
      llvm-svn: 254960
      e53cb2fd
    • Philip Reames's avatar
      Reapply 254950 w/fix · 9e5e2d61
      Philip Reames authored
      254950 ended up being not NFC.  The previous code was overriding the flags for whether an instruction read or wrote memory using the target specific flags returned via TTI.  I'd missed this in my refactoring.  Since I mistakenly built only x86 and didn't notice the number of unsupported tests, I didn't catch that before the original checkin.
      
      This raises an interesting issue though.  Given we have function attributes (i.e. readonly, readnone, argmemonly) which describe the aliasing of intrinsics, why does TTI have this information overriding the instruction definition at all?  I see no reason for this, but decided to preserve existing behavior for the moment.  The root issue might be that we don't have a "writeonly" attribute.
      
      Original commit message:
      [EarlyCSE] Simplify and invert ParseMemoryInst [NFCI]
      
      Restructure ParseMemoryInst - which was introduced to abstract over target specific load and stores instructions - to just query the underlying instructions. In theory, this could be slightly slower than caching the results, but in practice, it's very unlikely to be measurable.
      
      The simple query scheme makes it far easier to understand, and much easier to extend with new queries. Given I'm about to need to add new query types, doing the cleanup first seemed worthwhile.
      
      Do we still believe the target specific intrinsic handling is worthwhile in EarlyCSE? It adds quite a bit of complexity and makes the code harder to read. Being able to delete the abstraction entirely would be wonderful.
      
      llvm-svn: 254957
      9e5e2d61
    • Mehdi Amini's avatar
      Remove useless hack that avoids calling LLVMLinkInInterpreter() · 109d04ea
      Mehdi Amini authored
      This is supposed to force-link the Interpreter, by inserting a dead
      call to LLVMLinkInInterpreter().
      Since it is actually an empty function, there is no reason for the
      call to be dead.
      
      From: Mehdi Amini <mehdi.amini@apple.com>
      llvm-svn: 254956
      109d04ea
    • Philip Reames's avatar
      Revert 254950 · 4b5634af
      Philip Reames authored
      It's causing test failures on AArch64.  Due to a bad build config on my part, I apparently wasn't running the tests I thought I was.
      
      llvm-svn: 254954
      4b5634af
    • Manman Ren's avatar
      Update doc for C++ TLS calling convention. · 17567d23
      Manman Ren authored
      llvm-svn: 254953
      17567d23
    • Rafael Espindola's avatar
      Simplify the error handling a bit. NFC. · e811c7b5
      Rafael Espindola authored
      llvm-svn: 254952
      e811c7b5
    • Philip Reames's avatar
      [EarlyCSE] Simplify and invert ParseMemoryInst [NFCI] · 998cae65
      Philip Reames authored
      Restructure ParseMemoryInst - which was introduced to abstract over target specific load and stores instructions - to just query the underlying instructions. In theory, this could be slightly slower than caching the results, but in practice, it's very unlikely to be measurable.
      
      The simple query scheme makes it far easier to understand, and much easier to extend with new queries. Given I'm about to need to add new query types, doing the cleanup first seemed worthwhile.
      
      Do we still believe the target specific intrinsic handling is worthwhile in EarlyCSE? It adds quite a bit of complexity and makes the code harder to read. Being able to delete the abstraction entirely would be wonderful.
      
      llvm-svn: 254950
      998cae65
    • Easwaran Raman's avatar
      Use updated threshold for indirect call bonus · 6d90d9f1
      Easwaran Raman authored
      When considering foo->bar inlining, if there is an indirect call in foo which gets resolved to a direct call (say baz), then we try to inline baz into bar with a threshold T and subtract max(T - Cost(bar->baz), 0) from Cost(foo->bar). This patch uses max(Threshold(bar->baz) - Cost(bar->baz)) instead, where Thresheld(bar->baz) could be different from T due to bonuses or subtractions. Threshold(bar->baz) - Cost(bar->baz) better represents the desirability of inlining baz into bar.
      
      Differential Revision: http://reviews.llvm.org/D14309
      
      llvm-svn: 254945
      6d90d9f1
Loading