On Sun, Feb 6, 2022 at 8:42 PM Shubham Narlawar via Gcc <gcc@gcc.gnu.org> wrote:
>
> Hello,
>
> Is it possible to generate a NOTE instruction at GIMPLE level?
>
> My use case scenario is as below -
> I want to create a note for __builtin_xyz(_x) such that there is a
> placeholder just before function call and in RTL pass, I want to
> modify/assign register number at this placeholder location.
>
> _x = (unsigned int) _y;
> __builtin_xyz(_x);    //_x is constant expression
>
> For above builtin function call, I want to insert a note just before the
> function call. I tried generating GIMPLE_NOP instruction as below -
>
> _x = (unsigned int) _y;
> GIMPLE_NOP
> __builtin_xyz(_x);
>
> But as per my understanding, a NOTE instruction behaves similar to
> GIMPLE_NOP that is to create a placeholder for some computation.
>
>
> 1. Is there any attribute that can be added to GIMPLE instruction? If yes,
> then there must be a mechanism that translates those attributes to NOTE
> instructions in the RTL pass?

There is no machinery to add attributes or notes to GIMPLE statements.
The existing information pieces that would qualify as those are instead
embedded directly into the corresponding data structures.

> 2. Is there any different approach on achieving above goal?

>From your description it isn't clear whether the information you want to
put into the NOTE is recoverable at RTL expansion time.  Trying to
second-guess it's an equivalency of the constant (at RTL expansion time)
_x to something else which is still available in a register?

>
> Thanks and Regards,
> Shubham

Reply via email to