on 2022/12/8 15:43, Richard Sandiford wrote: > "Kewen.Lin" <li...@linux.ibm.com> writes: >> on 2022/12/7 20:55, Richard Sandiford wrote: >>> "Kewen.Lin" <li...@linux.ibm.com> writes: >>>> Hi Richard, >>>> >>>> on 2022/12/7 17:16, Richard Sandiford wrote: >>>>> "Kewen.Lin" <li...@linux.ibm.com> writes: >>>>>> Hi, >>>>>> >>>>>> In the recent discussion on how to make some built-in type only valid for >>>>>> some target features efficiently[1], Andrew mentioned this patch which he >>>>>> made previously (Thanks!). I confirmed it can help rs6000 related issue, >>>>>> and noticed PR99657 is still opened, so I think we still want this to >>>>>> be reviewed. >>>>> >>>>> But does it work for things like: >>>>> >>>>> void f(foo_t *x, foo_t *y) { *x = *y; } >>>>> >>>>> where no variables are being created with foo_t type? >>>>> >>>> >>>> I think it can work for this case as it touches build_indirect_ref. >>> >>> Ah, ok. But indirecting through a pointer doesn't seem to match >>> TCTX_AUTO_STORAGE. >>> >> >> Indeed. :) >> >>> I guess another case is where there are global variables of the type >>> that you want to forbid, compiled while the target feature is enabled, >>> and then a function tries to access those variables with the target >>> feature locally disabled (through a pragma or attribute). Does that >>> case work? >>> >> >> Thanks for pointing out this, I tried with the below test case: >> >> __vector_quad a1; >> __vector_quad a2; >> >> __attribute__((target("cpu=power8"))) >> void foo () >> { >> a2 = a3; >> } >> >> the verify_type_context doesn't catch it as you suspected, I think >> it needs some enhancements somewhere. > > FWIW, another possible case is: > > foo_t f(); > void g(foo_t); > void h() { g(f()); } > > I'm not aware of any verify_type_context checks that would catch this > for SVE (since it's valid for SVE types).
OK, thanks for the information, MMA built-in types are not allowed to be used in function arguments, by hacking with the restriction relaxing, I confirm the verify_type_context check can't catch this case. BR, Kewen