/* { dg-do compile } */ typedef unsigned char Uint8; typedef int Sint32; typedef unsigned int Uint32; typedef union RMColorDataRef { Uint8* data8; } RMColorDataRef; typedef struct RMColorData { Uint32 dataCount; RMColorDataRef dataRef; } RMColorData; typedef struct RMColorTable { Uint8 dataCompsOut; RMColorDataRef dataRef; } RMColorTable; int fail ( const RMColorData * pInColor, RMColorData * pOutColor, const RMColorTable * pColorTable ) { Uint32 comp; Uint8 nCompOut; Sint32 result; Uint32 interpFrac1, interpFrac2, interpFrac3; Sint32 val0, val1, val2, val3; Uint8 * pOut; const Uint8 * pClutData; const Uint8 * pCornerPoint0; Uint8 lastOut[((8) > (4) ? (8) : (4))]; pOut = pOutColor->dataRef.data8; pClutData = pColorTable->dataRef.data8; nCompOut = pColorTable->dataCompsOut; pCornerPoint0 = pClutData; for (comp = 0; comp < nCompOut; comp++) { val0 = *pCornerPoint0++; result = val0 << 4; result += (val1 - val0) * interpFrac1; result += (val2 - val1) * interpFrac2; result += (val3 - val2) * interpFrac3; *pOut++ = lastOut[comp] = (Uint8)(result >> 4); } return (0); }