[LLVMdev] BitCast or GEP?

Duncan Sands baldrick at free.fr
Mon Jan 28 03:39:07 PST 2013

Hi Rick,

On 28/01/13 12:12, Rick Mann wrote:
> I have a little simple inheritance thing going on:
> %struct.PDFrame = type { i64, i64, i8* }
> %struct.PDField = type { %struct.PDFrame, i8 }
> Is there any difference between bitcasting a pointer to the struct.PDField to struct.PDFrame, or using GEP to get a pointer to the "super" struct?

no there isn't.  The optimizers will turn the bitcast form into the GEP form as
a normalization.

> I'm not even sure it's possible to bitcast in this situation, but I imagine it should be.

Bitcasting a pointer to a pointer is always OK, in fact it's the most common use
of bitcast.

Ciao, Duncan.

More information about the llvm-dev mailing list