Way to know if an Operand of a SelectionDAG is a pointer

Hi everyone,

We developed a new backend for our architecture based on LLVM 3.8, I'm sorry about that, I quite understand if my questions do not get any answers because of that.

We have some instructions that allow to protect pointers that sit in our small scratch-area.

I did not find a way to know, when selecting the machine instructions, if one of the operands of the SDNode is a pointer. Do you know how I could get this info ?

Thanks for your time,


You cannot detect that by simply looking at the DAG. The way such things are usually done is that you invent your own SDNode that represents the property that you want to examine later. In your case it could be something like YourTargetISD::SMALL_SCRATCH_POINTER, which would take one value and return one value. This node would not cause any code to be generated for it, it would only serve as a "label" indicating that its operand is special in some way.



Thank you very much for your answer, I did not know how to tackle this properly, thanks for taking the time to explain how things are usually done.

And sorry for my response delay,

Thank you again,