brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.6 KiB · b0ccdec Raw
90 lines · c
1// RUN: %clang_cc1 -O2 -emit-llvm %s -o - | not grep alloca2// RUN: %clang_cc1 -triple i686-pc-linux-gnu -O2 -emit-llvm %s -o - | not grep store3 4enum {5 PP_C,6 PP_D,7 PP_R,8 PP_2D,9 PP_1D,10 PP_SR,11 PP_S2D,12 PP_S1D,13 PP_SC14};15 16enum {17 G_VP,18 G_FP,19 G_VS,20 G_GS,21 G_FS22};23 24enum {25 G_NONE,26 G_B,27 G_R28};29 30typedef union _Key {31 struct {32  unsigned int count : 2;33  unsigned int Aconst : 1;34  unsigned int Bconst : 1;35  unsigned int Cconst : 1;36  unsigned int Xused : 1;37  unsigned int Yused : 1;38  unsigned int Zused : 1;39  unsigned int Wused : 1;40  unsigned int ttype : 3;41  unsigned int scalar : 1;42  unsigned int AType : 4;43  unsigned int BType : 4;44  unsigned int CType : 4;45  unsigned int RType : 4;46  unsigned int Size : 2;47  unsigned int prec : 1;48 49  unsigned int ASize : 2;50  unsigned int BSize : 2;51  unsigned int CSize : 2;52  unsigned int tTex : 4;53  unsigned int proj : 1;54  unsigned int lod : 2;55  unsigned int dvts : 1;56  unsigned int uipad : 18;57 } key_io;58 struct {59  unsigned int key0;60  unsigned int key1;61 } key;62 unsigned long long lkey;63} Key;64 65static void foo(const Key iospec, int* ret)66{67  *ret=0;68 if(((iospec.key_io.lod == G_B) &&69  (iospec.key_io.ttype != G_VS) &&70  (iospec.key_io.ttype != G_GS) &&71  (iospec.key_io.ttype != G_FS)) ||72 73  (((iospec.key_io.tTex == PP_C) ||74    (iospec.key_io.tTex == PP_SC)) &&75   ((iospec.key_io.tTex == PP_SR) ||76    (iospec.key_io.tTex == PP_S2D) ||77    (iospec.key_io.tTex == PP_S1D) ||78    (iospec.key_io.tTex == PP_SC))))79  *ret=1;80}81 82 83extern int bar(unsigned long long key_token2)84{85 int ret;86 __attribute__ ((unused)) Key iospec = (Key) key_token2;87 foo(iospec, &ret);88 return ret;89}90