[all-commits] [llvm/llvm-project] 5f026b: [DependenceAnalysis] Dependecies for loads marked ...

ebrevnov via All-commits all-commits at lists.llvm.org
Tue Nov 19 02:30:18 PST 2019


  Branch: refs/heads/master
  Home:   https://github.com/llvm/llvm-project
  Commit: 5f026b6d9e882941fde9b7e5dc0a2d807f7f24f5
      https://github.com/llvm/llvm-project/commit/5f026b6d9e882941fde9b7e5dc0a2d807f7f24f5
  Author: Evgeniy Brevnov <evgueni.brevnov at gmail.com>
  Date:   2019-11-19 (Tue, 19 Nov 2019)

  Changed paths:
    M llvm/lib/Analysis/MemoryDependenceAnalysis.cpp

  Log Message:
  -----------
  [DependenceAnalysis] Dependecies for loads marked with "ivnariant.load" should not be shared with general accesses. Fix for https://bugs.llvm.org/show_bug.cgi?id=42151

Summary:
Dependence anlysis has a mechanism to cache results. Thus for particular memory access the cache keep track of side effects in basic blocks. The problem is that for invariant loads dependepce analysis legally ignores many dependencies due to a special semantic rules for such loads. But later results calculated for invariant load retrived from the cache for general case acceses. As a result we have wrong dependence information causing GVN to do illegal transformation. Fixes, T42151.

Proposed solution is to disable caching of invariant loads. I think such loads a pretty rare and it doesn't make sense to extend caching mechanism for them.

Reviewers: reames, chandlerc, skatkov, morisset, jdoerfert

Reviewed By: reames

Subscribers: hiraditya, test, jdoerfert, lebedev.ri, llvm-commits

Tags: #llvm

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




More information about the All-commits mailing list