[PATCH] D41104: Set the NoRecurse attribute for the dbg intrinsics.
    Hal Finkel via Phabricator via llvm-commits 
    llvm-commits at lists.llvm.org
       
    Mon Dec 11 21:51:32 PST 2017
    
    
  
hfinkel added a comment.
This looks fine, and I imagine we'll need to do this almost all intrinsics.
However, I do wonder, is the attribute propagation semantically correct? What we really want to know is that the callee (an intrinsic in this case) doesn't call the caller, no necessarily that it doesn't call itself.
  void foo(bool) norecurse;
  
  void bar(bool c) {
    if (c)
      foo(true);
  }
  
  void foo(bool c) {
    bar(false);
  }
in this example, the norecurse on `foo` is semantically correct, but inferring it on `bar` wouldn't be correct.
https://reviews.llvm.org/D41104
    
    
More information about the llvm-commits
mailing list