From 8dd1d4b07d2638ab224c6b044655facd6026dbd7 Mon Sep 17 00:00:00 2001 From: Christoph Mallon Date: Mon, 13 Aug 2007 13:11:41 +0000 Subject: [PATCH] fehler69: endless loop compiled program. maybe spill problem. [r15524] --- ir/be/test/fehler69.c | 64 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 ir/be/test/fehler69.c diff --git a/ir/be/test/fehler69.c b/ir/be/test/fehler69.c new file mode 100644 index 000000000..23091e9b9 --- /dev/null +++ b/ir/be/test/fehler69.c @@ -0,0 +1,64 @@ +typedef unsigned char UINT8; +typedef signed short INT16; +typedef unsigned short UINT16; +typedef unsigned int UINT32; + +#define FROMRGB(r, g ,b) ((UINT32) (((UINT8) (r) | ((UINT16) (g) << 8)) | (((UINT32) (UINT8) (b)) << 16))) +#define SGPGetRValue(rgb) ((UINT8) (rgb)) +#define SGPGetBValue(rgb) ((UINT8) ((rgb) >> 16)) +#define SGPGetGValue(rgb) ((UINT8) (((UINT16) (rgb)) >> 8)) +#define BLACK_SUBSTITUTE 0x0001 + + +float guiShadePercent; +INT16 gusRedShift; +INT16 gusGreenShift; +INT16 gusBlueShift; +INT16 gusRedMask; +INT16 gusGreenMask; +INT16 gusBlueMask; + + +UINT16 Get16BPPColor(UINT32 RGBValue) +{ + UINT8 r = SGPGetRValue(RGBValue); + UINT8 g = SGPGetGValue(RGBValue); + UINT8 b = SGPGetBValue(RGBValue); + + UINT16 r16 = (gusRedShift < 0 ? r >> -gusRedShift : r << gusRedShift); + UINT16 g16 = (gusGreenShift < 0 ? g >> -gusGreenShift : g << gusGreenShift); + UINT16 b16 = (gusBlueShift < 0 ? b >> -gusBlueShift : b << gusBlueShift); + + UINT16 usColor = (r16 & gusRedMask) | (g16 & gusGreenMask) | (b16 & gusBlueMask); + + if (usColor == 0 && RGBValue != 0) usColor = BLACK_SUBSTITUTE; + + return usColor; +} + + +void BuildShadeTable(void) +{ + UINT16 red; + UINT16 green; + UINT16 blue; + + for (red = 0; red < 256; red += 4) + { + for (green = 0; green < 256; green += 4) + { + for (blue = 0; blue < 256; blue += 4) + { + Get16BPPColor(42); + Get16BPPColor(FROMRGB(red * guiShadePercent, green * guiShadePercent, blue * guiShadePercent)); + } + } + } +} + + +int main(void) +{ + BuildShadeTable(); + return 0; +} -- 2.20.1