]> granicus.if.org Git - llvm/commit
[DAGCombine] Don't combine sext with extload if sextload is not supported and extload...
authorGuozhi Wei <carrot@google.com>
Fri, 27 Oct 2017 21:54:24 +0000 (21:54 +0000)
committerGuozhi Wei <carrot@google.com>
Fri, 27 Oct 2017 21:54:24 +0000 (21:54 +0000)
commit9875a79d9f9adaa6fdad6ab70cedcdd7f2e26114
tree81912b85ddfe18842c4a84d3b8d40d73d9ec764e
parent9a8a8159d342dc1f5430ff4139c25ad2228111f5
[DAGCombine] Don't combine sext with extload if sextload is not supported and extload has multi users

In function DAGCombiner::visitSIGN_EXTEND_INREG, sext can be combined with extload even if sextload is not supported by target, then

  if sext is the only user of extload, there is no big difference, no harm no benefit.
  if extload has more than one user, the combined sextload may block extload from combining with other zext, causes extra zext instructions generated. As demonstrated by the attached test case.

This patch add the constraint that when sextload is not supported by target, sext can only be combined with extload if it is the only user of extload.

Differential Revision: https://reviews.llvm.org/D39108

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@316802 91177308-0d34-0410-b5e6-96231b3b80d8
lib/CodeGen/SelectionDAG/DAGCombiner.cpp
test/CodeGen/PowerPC/selectiondag-sextload.ll [new file with mode: 0644]