[llvm-commits] [llvm] r48730 - /llvm/trunk/test/CFrontend/2008-03-24-BitFiel-And-Alloca.c
Devang Patel
dpatel at apple.com
Mon Mar 24 10:16:39 PDT 2008
Author: dpatel
Date: Mon Mar 24 12:16:39 2008
New Revision: 48730
URL: http://llvm.org/viewvc/llvm-project?rev=48730&view=rev
Log:
Add new test.
Added:
llvm/trunk/test/CFrontend/2008-03-24-BitFiel-And-Alloca.c
Added: llvm/trunk/test/CFrontend/2008-03-24-BitFiel-And-Alloca.c
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CFrontend/2008-03-24-BitFiel-And-Alloca.c?rev=48730&view=auto
==============================================================================
--- llvm/trunk/test/CFrontend/2008-03-24-BitFiel-And-Alloca.c (added)
+++ llvm/trunk/test/CFrontend/2008-03-24-BitFiel-And-Alloca.c Mon Mar 24 12:16:39 2008
@@ -0,0 +1,87 @@
+// RUN: %llvmgcc -O2 -S %s -o - | not grep alloca
+enum {
+ PP_C,
+ PP_D,
+ PP_R,
+ PP_2D,
+ PP_1D,
+ PP_SR,
+ PP_S2D,
+ PP_S1D,
+ PP_SC
+};
+
+enum {
+ G_VP,
+ G_FP,
+ G_VS,
+ G_GS,
+ G_FS
+};
+
+enum {
+ G_NONE,
+ G_B,
+ G_R
+};
+
+typedef union _Key {
+ struct {
+ unsigned int count : 2;
+ unsigned int Aconst : 1;
+ unsigned int Bconst : 1;
+ unsigned int Cconst : 1;
+ unsigned int Xused : 1;
+ unsigned int Yused : 1;
+ unsigned int Zused : 1;
+ unsigned int Wused : 1;
+ unsigned int ttype : 3;
+ unsigned int scalar : 1;
+ unsigned int AType : 4;
+ unsigned int BType : 4;
+ unsigned int CType : 4;
+ unsigned int RType : 4;
+ unsigned int Size : 2;
+ unsigned int prec : 1;
+
+ unsigned int ASize : 2;
+ unsigned int BSize : 2;
+ unsigned int CSize : 2;
+ unsigned int tTex : 4;
+ unsigned int proj : 1;
+ unsigned int lod : 2;
+ unsigned int dvts : 1;
+ unsigned int uipad : 18;
+ } key_io;
+ struct {
+ unsigned int key0;
+ unsigned int key1;
+ } key;
+ unsigned long long lkey;
+} Key;
+
+static inline __attribute__ ((always_inline)) void foo(const Key iospec, int* ret)
+{
+ *ret=0;
+ if(((iospec.key_io.lod == G_B) &&
+ (iospec.key_io.ttype != G_VS) &&
+ (iospec.key_io.ttype != G_GS) &&
+ (iospec.key_io.ttype != G_FS)) ||
+
+ (((iospec.key_io.tTex == PP_C) ||
+ (iospec.key_io.tTex == PP_SC)) &&
+ ((iospec.key_io.tTex == PP_SR) ||
+ (iospec.key_io.tTex == PP_S2D) ||
+ (iospec.key_io.tTex == PP_S1D) ||
+ (iospec.key_io.tTex == PP_SC))))
+ *ret=1;
+}
+
+
+extern int bar(unsigned long long key_token2)
+{
+ int ret;
+ __attribute__ ((unused)) Key iospec = (Key) key_token2;
+ foo(iospec, &ret);
+ return ret;
+}
More information about the llvm-commits
mailing list