Sirraide wrote:

> - Does the FunctionEffect / FunctionEffectSet abstraction make sense 
> (Type.h)? The idea is that an abstract effect system for functions could 
> easily support things like "TCB with types" or adding "nowait" to the 
> "nolock/noalloc" group of effects.

Hmm, this is a difficult question. Generally, I would probably prefer to just 
hard-code whatever effects we need right now, perhaps as something like a 
bitmask; from what I recall, none of the effects take arguments or anything 
like that, so that would be possible in that case (these are just my personal 
observations, though; I don’t have every last detail of this feature memorised, 
so if I’m missing something obvious, please let me know); my main concern is 
that the current implementation might be a bit too general. In particular, this 
seems like a lot of—if not too much—machinery for implementing a grand total of 
two function attributes.

Because, sure, making it extensible doesn’t sound like a bad idea on paper, but 
adding any effects would likely require significant modifications to other 
parts of the compiler as well, so if a situation should arise where we do need 
to handle more complex effects, we should be able to refactor it whenever that 
comes up. For the time being, a simpler effect system may serve us better (and 
should also be more straight-forward to refactor if need be).

Perhaps, let’s say that, unless it’s likely that we may end up adding effects 
that require more storage than a single bit or two in the foreseeable future, 
then I’d rather just have it be a bitmask. The way this is implemented 
currently does remind me at least in part of attributes, but attributes are 
very varied and *do* take arguments, so I’m not sure the two systems are really 
comparable.

@AaronBallman I recall you having some opinions on adding data to 
`FunctionProtoType`s the other day, wdyt about this?

https://github.com/llvm/llvm-project/pull/84983
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to