aqjune added a comment.

In D90275#2371813 <https://reviews.llvm.org/D90275#2371813>, @jdoerfert wrote:

> As noted by the GCC docs, it doesn't mean anything on a definition so that 
> you can safely merge TUs. I want us to forbid `leaf` on IR function 
> definitions for that reason, it would not mean anything and be only confusing.

Okay, I see.
I agree that having this attribute at definitions is slightly dangerous..!

But I am not still 100% sure about the safety of merging... I see that it is 
okay when `leaf` is on a definition, but what about declaration?

  // a.ll
  define void f1() { f2(); }
  define void g() { x = 3; }
  // b.ll
  define void f2() { leaf(); }
  declare leaf void @leaf() ; If @leaf() was actually calling @g(), is merging 
a.ll and b.ll valid?



> It is not a memory thing. However, the "almost" matching memory property is 
> called `inaccesiblememonly` so that is why I wanted to call this 
> `inaccessiblecodeonly`.

Eh, actually my question was more like a question to gcc people about why 
`leaf` was defined that way. Maybe my question is not relevant in this thread. 
Thank you for answering though.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D90275

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

Reply via email to