xazax.hun added inline comments.

================
Comment at: clang/include/clang/Analysis/Analyses/ReachingDefinitions.h:30
+  };
+  const VarDecl *Var;
+  CFGBlock::ConstCFGElementRef E;
----------------
In the future we might also want to reason about `FieldDecl`s.


================
Comment at: clang/include/clang/Analysis/Analyses/ReachingDefinitions.h:50
+  bool operator()(Definition Lhs, Definition Rhs) {
+    return Lhs.Var < Rhs.Var;
+  }
----------------
Is it safe to omit the Kind from the comparisons?


================
Comment at: clang/lib/Analysis/ReachingDefinitions.cpp:61
+    auto AssignmentM =
+        binaryOperator(isAssignmentOperator(),
+                       hasLHS(declRefExpr(to(varDecl().bind("var")))))
----------------
Will this work if the LHS is not directly a declrefexpr?

E.g.:
```
(a, b) = 5;
```
Or more fun cases:
```
(cond ? a : b) = 5;
```


================
Comment at: clang/lib/Analysis/ReachingDefinitions.cpp:102
+    }
+  }
+
----------------
What about the non-const arguments of calls, and indirect writes through 
pointers? Even if you plan not to handle some of these, I prefer to have a TODO 
for these the appropriate places as soon as possible.


================
Comment at: clang/lib/Analysis/ReachingDefinitions.cpp:104
+
+  return Ret;
+}
----------------
There are non-assignment operators too, like operator++. You might want to 
consider them as definitions too.


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D64991/new/

https://reviews.llvm.org/D64991



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to