[llvm] r316481 - bpf: fix a bug in trunc-op optimization

Yonghong Song via llvm-commits llvm-commits at lists.llvm.org
Tue Oct 24 11:21:10 PDT 2017


Author: yhs
Date: Tue Oct 24 11:21:10 2017
New Revision: 316481

URL: http://llvm.org/viewvc/llvm-project?rev=316481&view=rev
Log:
bpf: fix a bug in trunc-op optimization

Previous implementation for per-function scope
is incorrect and too conservative.

Signed-off-by: Yonghong Song <yhs at fb.com>

Modified:
    llvm/trunk/lib/Target/BPF/BPFISelDAGToDAG.cpp

Modified: llvm/trunk/lib/Target/BPF/BPFISelDAGToDAG.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/BPF/BPFISelDAGToDAG.cpp?rev=316481&r1=316480&r2=316481&view=diff
==============================================================================
--- llvm/trunk/lib/Target/BPF/BPFISelDAGToDAG.cpp (original)
+++ llvm/trunk/lib/Target/BPF/BPFISelDAGToDAG.cpp Tue Oct 24 11:21:10 2017
@@ -85,6 +85,8 @@ private:
   std::map<const void *, val_vec_type> cs_vals_;
   // Mapping from vreg to load memory opcode
   std::map<unsigned, unsigned> load_to_vreg_;
+  // Current function
+  const Function *curr_func_;
 };
 } // namespace
 
@@ -332,7 +334,12 @@ void BPFDAGToDAGISel::PreprocessISelDAG(
 
   // clear the load_to_vreg_ map so that we have a clean start
   // for this function.
-  load_to_vreg_.clear();
+  if (!curr_func_) {
+    curr_func_ = FuncInfo->Fn;
+  } else if (curr_func_ != FuncInfo->Fn) {
+    load_to_vreg_.clear();
+    curr_func_ = FuncInfo->Fn;
+  }
 
   for (SelectionDAG::allnodes_iterator I = CurDAG->allnodes_begin(),
                                        E = CurDAG->allnodes_end();




More information about the llvm-commits mailing list