[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