13883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher// RUN: %clang_cc1 -O2 -emit-llvm %s -o - | not grep alloca 28cf685e0a4b686da1f5cee2090ed62896f2b352cRafael Espindola// RUN: %clang_cc1 -triple i686-pc-linux-gnu -O2 -emit-llvm %s -o - | not grep store 33883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher 43883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopherenum { 53883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher PP_C, 63883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher PP_D, 73883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher PP_R, 83883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher PP_2D, 93883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher PP_1D, 103883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher PP_SR, 113883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher PP_S2D, 123883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher PP_S1D, 133883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher PP_SC 143883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher}; 153883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher 163883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopherenum { 173883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher G_VP, 183883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher G_FP, 193883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher G_VS, 203883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher G_GS, 213883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher G_FS 223883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher}; 233883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher 243883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopherenum { 253883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher G_NONE, 263883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher G_B, 273883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher G_R 283883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher}; 293883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher 303883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christophertypedef union _Key { 313883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher struct { 323883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher unsigned int count : 2; 333883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher unsigned int Aconst : 1; 343883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher unsigned int Bconst : 1; 353883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher unsigned int Cconst : 1; 363883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher unsigned int Xused : 1; 373883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher unsigned int Yused : 1; 383883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher unsigned int Zused : 1; 393883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher unsigned int Wused : 1; 403883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher unsigned int ttype : 3; 413883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher unsigned int scalar : 1; 423883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher unsigned int AType : 4; 433883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher unsigned int BType : 4; 443883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher unsigned int CType : 4; 453883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher unsigned int RType : 4; 463883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher unsigned int Size : 2; 473883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher unsigned int prec : 1; 483883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher 493883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher unsigned int ASize : 2; 503883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher unsigned int BSize : 2; 513883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher unsigned int CSize : 2; 523883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher unsigned int tTex : 4; 533883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher unsigned int proj : 1; 543883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher unsigned int lod : 2; 553883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher unsigned int dvts : 1; 563883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher unsigned int uipad : 18; 573883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher } key_io; 583883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher struct { 593883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher unsigned int key0; 603883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher unsigned int key1; 613883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher } key; 623883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher unsigned long long lkey; 633883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher} Key; 643883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher 653883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopherstatic void foo(const Key iospec, int* ret) 663883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher{ 673883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher *ret=0; 683883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher if(((iospec.key_io.lod == G_B) && 693883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher (iospec.key_io.ttype != G_VS) && 703883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher (iospec.key_io.ttype != G_GS) && 713883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher (iospec.key_io.ttype != G_FS)) || 723883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher 733883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher (((iospec.key_io.tTex == PP_C) || 743883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher (iospec.key_io.tTex == PP_SC)) && 753883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher ((iospec.key_io.tTex == PP_SR) || 763883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher (iospec.key_io.tTex == PP_S2D) || 773883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher (iospec.key_io.tTex == PP_S1D) || 783883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher (iospec.key_io.tTex == PP_SC)))) 793883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher *ret=1; 803883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher} 813883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher 823883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher 833883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopherextern int bar(unsigned long long key_token2) 843883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher{ 853883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher int ret; 863883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher __attribute__ ((unused)) Key iospec = (Key) key_token2; 873883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher foo(iospec, &ret); 883883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher return ret; 893883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher} 90