sbc100 added inline comments.

================
Comment at: clang/include/clang/Basic/AttrDocs.td:5608-5612
+Clang supports the ``__attribute__((wasm_async))``
+attribute for the WebAssembly target. This attribute may be attached to a
+function definition, which indicates the function will be used with JavaScript
+promise integration (JSPI). The attribute will cause the creation of a custom
+section named "async" that contains each wasm_async function's index value.
----------------
sbc100 wrote:
> sbc100 wrote:
> > aaron.ballman wrote:
> > > brendandahl wrote:
> > > > aaron.ballman wrote:
> > > > > aaron.ballman wrote:
> > > > > > This could be my ignorance of web assembly showing, but the docs 
> > > > > > don't really help me understand when you'd want to use this 
> > > > > > attribute. Perhaps a link to what JSPI is and a code example would 
> > > > > > help a little bit? Or is this more of a low-level implementation 
> > > > > > detail kind of attribute where folks already know the domain?
> > > > > Based on the documentation here, I'm wondering why the `annotate` 
> > > > > attribute doesn't suffice? That attribute lets you specify custom 
> > > > > information to associate with a declaration that then gets lowered 
> > > > > such that passes can do whatever they want with the info, which seems 
> > > > > to be a more generalized version of what this attribute is.
> > > > > 
> > > > > (FWIW, I'm back to having basically no idea when you'd use this 
> > > > > attribute or what it would be used for, so my thoughts above might 
> > > > > make no sense.)
> > > > I was considering that, but it would require more machinery in the wasm 
> > > > backend to store all the attribute values in the output. For now we 
> > > > only really need a flag associated with function. I think if we find 
> > > > more uses for the annotations in the future we could replace 
> > > > wasm_custom with it.
> > > > I was considering that, but it would require more machinery in the wasm 
> > > > backend to store all the attribute values in the output. For now we 
> > > > only really need a flag associated with function. I think if we find 
> > > > more uses for the annotations in the future we could replace 
> > > > wasm_custom with it.
> > > 
> > > More machinery in the backend is preferred to exposing a new attribute 
> > > that is this general-purpose; the backend is what needs this 
> > > functionality, the frontend basically does nothing with it. (I'm assuming 
> > > this is an implementation detail attribute and not something you expect 
> > > users to write. If I'm wrong about that, please let me know.)
> > > Based on the documentation here, I'm wondering why the `annotate` 
> > > attribute doesn't suffice? 
> > 
> > I believe that was the original solution that was considered but Benden was 
> > told this was perhaps not an appropriate use of "annotate".   Brenden can 
> > you elaborate on why?   IIRC it was something like "the semantics of the 
> > program should not depend on annotate attributes but the attribute being 
> > added in this case is required for the program to run correctly".. is that 
> > about right?
> > 
> > FWIW, I think using the existing `annotate` attribute would make a lot of 
> > sense... if we can get away with it.
> > (I'm assuming this is an implementation detail attribute and not something 
> > you expect users to write. If I'm wrong about that, please let me know.)
> 
> IIUC user would indeed be specifying these attributes.   Kind of like they do 
> for "visibility" today.   The initial attribute that motivated this change is 
> "async" which tells the host runtime that a certain function import or export 
> behaves in an async manor (See https://v8.dev/blog/jspi for more details).
> > I was considering that, but it would require more machinery in the wasm 
> > backend to store all the attribute values in the output. For now we only 
> > really need a flag associated with function. I think if we find more uses 
> > for the annotations in the future we could replace wasm_custom with it.
> 
> More machinery in the backend is preferred to exposing a new attribute that 
> is this general-purpose; the backend is what needs this functionality, the 
> frontend basically does nothing with it. (I'm assuming this is an 
> implementation detail attribute and not something you expect users to write. 
> If I'm wrong about that, please let me know.)

I think perhaps there are two alternative implementations being proposed here, 
and I want to make sure we don't confuse them:

1. Use the existing `annotate` attribute.  
2. Make an even more complex custom attribute that hold key=value pairs rather 
than the current CL which proposes simply boolean custom attributes (e.g. 
key=true).

I think we would be happy with (1) if this usage is within scope.

IIUC the thing that would take a lot more work in the backend (and more complex 
custom section design in the binary format) is (2).   I don't think we need (2) 
today and we should probably wait until we have a use case before designed a 
more complex version of this attribute.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D150803

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

Reply via email to