[cfe-commits] r136035 - /cfe/trunk/test/CodeGen/

Eric Christopher echristo at apple.com
Mon Jul 25 17:57:50 PDT 2011


Author: echristo
Date: Mon Jul 25 19:57:50 2011
New Revision: 136035

URL: http://llvm.org/viewvc/llvm-project?rev=136035&view=rev
Log:
Migrate and FileCheck-ize some of:

2003-09-18-BitfieldTests.c 2007-04-11-PR1321.c 2003-11-13-TypeSafety.c 2003-08-29-StructLayoutBug.c 2010-05-14-Optimized-VarType.c 2003-10-06-NegateExprType.c 2007-06-05-NoInlineAttribute.c 2011-03-31-ArrayRefFolding.c 2010-07-14-ref-off-end.c Atomics-no64bit.c 2007-05-11-str-const.c 2004-11-27-InvalidConstantExpr.c 2007-04-05-UnPackedStruct.c 2004-03-15-SimpleIndirectGoto.c 2004-01-08-ExternInlineRedefine.c sret2.c 2007-02-07-AddrLabel.c 2002-09-19-StarInLabel.c 2003-11-16-StaticArrayInit.c 2003-08-18-SigSetJmp.c 2007-04-24-VolatileStructCopy.c 2002-07-29-Casts.c 2005-06-15-ExpandGotoInternalProblem.c 2007-09-17-WeakRef.c 2007-04-24-str-const.c 2003-08-30-LargeIntegerBitfieldMember.c inline-asm-mrv.c

from llvm/test/FrontendC.

Added:
    cfe/trunk/test/CodeGen/2002-07-29-Casts.c
    cfe/trunk/test/CodeGen/2002-09-19-StarInLabel.c
    cfe/trunk/test/CodeGen/2003-08-18-SigSetJmp.c
    cfe/trunk/test/CodeGen/2003-08-29-StructLayoutBug.c
    cfe/trunk/test/CodeGen/2003-08-30-LargeIntegerBitfieldMember.c
    cfe/trunk/test/CodeGen/2003-09-18-BitfieldTests.c
    cfe/trunk/test/CodeGen/2003-10-06-NegateExprType.c
    cfe/trunk/test/CodeGen/2003-11-13-TypeSafety.c
    cfe/trunk/test/CodeGen/2003-11-16-StaticArrayInit.c
    cfe/trunk/test/CodeGen/2004-01-08-ExternInlineRedefine.c
    cfe/trunk/test/CodeGen/2004-03-15-SimpleIndirectGoto.c
    cfe/trunk/test/CodeGen/2004-11-27-InvalidConstantExpr.c
    cfe/trunk/test/CodeGen/2005-06-15-ExpandGotoInternalProblem.c
    cfe/trunk/test/CodeGen/2007-02-07-AddrLabel.c
    cfe/trunk/test/CodeGen/2007-04-05-UnPackedStruct.c
    cfe/trunk/test/CodeGen/2007-04-11-PR1321.c
    cfe/trunk/test/CodeGen/2007-04-24-VolatileStructCopy.c
    cfe/trunk/test/CodeGen/2007-04-24-str-const.c
    cfe/trunk/test/CodeGen/2007-05-11-str-const.c
    cfe/trunk/test/CodeGen/2007-06-05-NoInlineAttribute.c
    cfe/trunk/test/CodeGen/2007-09-17-WeakRef.c
    cfe/trunk/test/CodeGen/2010-05-14-Optimized-VarType.c
    cfe/trunk/test/CodeGen/2010-07-14-ref-off-end.c
    cfe/trunk/test/CodeGen/2011-03-31-ArrayRefFolding.c
    cfe/trunk/test/CodeGen/Atomics-no64bit.c
    cfe/trunk/test/CodeGen/inline-asm-mrv.c
    cfe/trunk/test/CodeGen/sret2.c

Added: cfe/trunk/test/CodeGen/2002-07-29-Casts.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/2002-07-29-Casts.c?rev=136035&view=auto
==============================================================================
--- cfe/trunk/test/CodeGen/2002-07-29-Casts.c (added)
+++ cfe/trunk/test/CodeGen/2002-07-29-Casts.c Mon Jul 25 19:57:50 2011
@@ -0,0 +1,86 @@
+// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <sys/types.h>
+
+int
+main(int argc, char** argv)
+{
+  char     c1;
+  short    s1, ssf1, ssd1;
+  unsigned char  ubs0;
+  signed char   bs0;
+  unsigned char ubc0, uc2;
+  unsigned short us2, usf1, usd1;
+  int ic3, is3, sif1, sid1;
+  unsigned int     uic4, uis4, uif1, uid1;
+  long     slf1, sld1;
+  unsigned long    ulf1, uld1;
+  float    f1;
+  double   d1;
+  
+  /* Test integer to integer conversions */
+  
+  c1 = (char)  (argc >= 2)? atoi(argv[1]) : 0xff64; /* 100 = 'd' */
+  s1 = (short) (argc >= 3)? atoi(argv[2]) : -769;   /* 0xf7ff = -769 */
+  
+  ubc0 = (unsigned char) c1;                      /* 100 = 'd' */
+  ubs0 = (unsigned char) s1;                            /* 0xff = 255 */
+  bs0  = (signed char) s1;                             /* 0xff = -1 */
+  
+  uc2 = (unsigned char) c1;                       /* 100 = 'd' */
+  us2 = (unsigned short) s1;                      /* 0xf7ff = 64767 */
+  
+  ic3 = (int) c1;                                 /* 100 = 'd' */
+  is3 = (int) s1;                                 /* 0xfffff7ff = -769 */
+  
+  uic4 = (unsigned int) c1;                       /*  100 = 'd' */
+  uis4 = (unsigned int) s1;                       /* 0xfffff7ff = 4294966527 */
+  
+  printf("ubc0 = '%c'\n", ubc0);
+  printf("ubs0 = %u\n",   ubs0);
+  printf("bs0  = %d\n",   bs0);
+  printf("c1   = '%c'\n", c1);
+  printf("s1   = %d\n",   s1);
+  printf("uc2  = '%c'\n", uc2);
+  printf("us2  = %u\n",   us2);
+  printf("ic3  = '%c'\n", ic3);
+  printf("is3  = %d\n",   is3);
+  printf("uic4 = '%c'\n", uic4);
+  printf("uis4 = %u\n",   uis4);
+  
+  /* Test floating-point to integer conversions */
+  f1 = (float)  (argc >= 4)? atof(argv[3]) : 1.0;
+  d1 =          (argc >= 5)? atof(argv[4]) : 2.0;
+  
+  usf1 = (unsigned short) f1;
+  usd1 = (unsigned short) d1;
+  uif1 = (unsigned int) f1;
+  uid1 = (unsigned int) d1;
+  ulf1 = (unsigned long) f1;
+  uld1 = (unsigned long) d1;
+  
+  ssf1 = (short) f1;
+  ssd1 = (short) d1;
+  sif1 = (int) f1;
+  sid1 = (int) d1;
+  slf1 = (long) f1;
+  sld1 = (long) d1;
+  
+  printf("usf1 = %u\n", usf1);
+  printf("usd1 = %u\n", usd1);
+  printf("uif1 = %u\n", uif1);
+  printf("uid1 = %u\n", uid1);
+  printf("ulf1 = %u\n", ulf1);
+  printf("uld1 = %u\n", uld1);
+  
+  printf("ssf1 = %d\n", ssf1);
+  printf("ssd1 = %d\n", ssd1);
+  printf("sif1 = %d\n", sif1);
+  printf("sid1 = %d\n", sid1);
+  printf("slf1 = %d\n", slf1);
+  printf("sld1 = %d\n", sld1);
+  
+  return 0;
+}

Added: cfe/trunk/test/CodeGen/2002-09-19-StarInLabel.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/2002-09-19-StarInLabel.c?rev=136035&view=auto
==============================================================================
--- cfe/trunk/test/CodeGen/2002-09-19-StarInLabel.c (added)
+++ cfe/trunk/test/CodeGen/2002-09-19-StarInLabel.c Mon Jul 25 19:57:50 2011
@@ -0,0 +1,9 @@
+// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
+
+extern void start() __asm__("start");
+extern void _start() __asm__("_start");
+extern void __start() __asm__("__start");
+void start() {}
+void _start() {}
+void __start() {}
+

Added: cfe/trunk/test/CodeGen/2003-08-18-SigSetJmp.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/2003-08-18-SigSetJmp.c?rev=136035&view=auto
==============================================================================
--- cfe/trunk/test/CodeGen/2003-08-18-SigSetJmp.c (added)
+++ cfe/trunk/test/CodeGen/2003-08-18-SigSetJmp.c Mon Jul 25 19:57:50 2011
@@ -0,0 +1,10 @@
+// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
+
+
+#include <setjmp.h>
+
+sigjmp_buf B;
+int foo() {
+  sigsetjmp(B, 1);
+  bar();
+}

Added: cfe/trunk/test/CodeGen/2003-08-29-StructLayoutBug.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/2003-08-29-StructLayoutBug.c?rev=136035&view=auto
==============================================================================
--- cfe/trunk/test/CodeGen/2003-08-29-StructLayoutBug.c (added)
+++ cfe/trunk/test/CodeGen/2003-08-29-StructLayoutBug.c Mon Jul 25 19:57:50 2011
@@ -0,0 +1,10 @@
+// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
+
+struct foo {
+  unsigned int I:1;
+  unsigned char J[1];
+  unsigned int K:1;
+ };
+
+void test(struct foo *X) {}
+

Added: cfe/trunk/test/CodeGen/2003-08-30-LargeIntegerBitfieldMember.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/2003-08-30-LargeIntegerBitfieldMember.c?rev=136035&view=auto
==============================================================================
--- cfe/trunk/test/CodeGen/2003-08-30-LargeIntegerBitfieldMember.c (added)
+++ cfe/trunk/test/CodeGen/2003-08-30-LargeIntegerBitfieldMember.c Mon Jul 25 19:57:50 2011
@@ -0,0 +1,9 @@
+// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
+
+struct foo {
+  unsigned int I:1;
+  unsigned char J[1][123];
+  unsigned int K:1;
+ };
+
+struct foo F;

Added: cfe/trunk/test/CodeGen/2003-09-18-BitfieldTests.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/2003-09-18-BitfieldTests.c?rev=136035&view=auto
==============================================================================
--- cfe/trunk/test/CodeGen/2003-09-18-BitfieldTests.c (added)
+++ cfe/trunk/test/CodeGen/2003-09-18-BitfieldTests.c Mon Jul 25 19:57:50 2011
@@ -0,0 +1,30 @@
+// RUN: %clang_cc1 -w -emit-llvm %s  -o /dev/null
+
+
+typedef struct BF {
+  int A : 1;
+  char B;
+  int C : 13;
+} BF;
+
+char *test1(BF *b) {
+  return &b->B;        // Must be able to address non-bitfield
+}
+
+void test2(BF *b) {    // Increment and decrement operators
+  b->A++;
+  --b->C;
+}
+
+void test3(BF *b) {
+   b->C = 12345;        // Store
+}
+
+int test4(BF *b) {
+  return b->C;         // Load
+}
+
+void test5(BF *b, int i) { // array ref
+  b[i].C = 12345;
+}
+

Added: cfe/trunk/test/CodeGen/2003-10-06-NegateExprType.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/2003-10-06-NegateExprType.c?rev=136035&view=auto
==============================================================================
--- cfe/trunk/test/CodeGen/2003-10-06-NegateExprType.c (added)
+++ cfe/trunk/test/CodeGen/2003-10-06-NegateExprType.c Mon Jul 25 19:57:50 2011
@@ -0,0 +1,8 @@
+// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
+
+
+extern int A[10];
+void Func(int *B) { 
+  B - &A[5]; 
+}
+

Added: cfe/trunk/test/CodeGen/2003-11-13-TypeSafety.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/2003-11-13-TypeSafety.c?rev=136035&view=auto
==============================================================================
--- cfe/trunk/test/CodeGen/2003-11-13-TypeSafety.c (added)
+++ cfe/trunk/test/CodeGen/2003-11-13-TypeSafety.c Mon Jul 25 19:57:50 2011
@@ -0,0 +1,5 @@
+// RUN: %clang_cc1  %s -emit-llvm -o - | grep getelementptr
+
+int *test(int *X, int Y) {
+  return X + Y;
+}

Added: cfe/trunk/test/CodeGen/2003-11-16-StaticArrayInit.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/2003-11-16-StaticArrayInit.c?rev=136035&view=auto
==============================================================================
--- cfe/trunk/test/CodeGen/2003-11-16-StaticArrayInit.c (added)
+++ cfe/trunk/test/CodeGen/2003-11-16-StaticArrayInit.c Mon Jul 25 19:57:50 2011
@@ -0,0 +1,8 @@
+// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
+
+void bar () {
+ static char x[10];
+ static char *xend = x + 10;
+}
+
+

Added: cfe/trunk/test/CodeGen/2004-01-08-ExternInlineRedefine.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/2004-01-08-ExternInlineRedefine.c?rev=136035&view=auto
==============================================================================
--- cfe/trunk/test/CodeGen/2004-01-08-ExternInlineRedefine.c (added)
+++ cfe/trunk/test/CodeGen/2004-01-08-ExternInlineRedefine.c Mon Jul 25 19:57:50 2011
@@ -0,0 +1,14 @@
+// RUN: %clang_cc1 -std=gnu89 -emit-llvm %s  -o /dev/null
+
+
+extern __inline long int
+__strtol_l (int a)
+{
+  return 0;
+}
+
+long int
+__strtol_l (int a)
+{
+  return 0;
+}

Added: cfe/trunk/test/CodeGen/2004-03-15-SimpleIndirectGoto.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/2004-03-15-SimpleIndirectGoto.c?rev=136035&view=auto
==============================================================================
--- cfe/trunk/test/CodeGen/2004-03-15-SimpleIndirectGoto.c (added)
+++ cfe/trunk/test/CodeGen/2004-03-15-SimpleIndirectGoto.c Mon Jul 25 19:57:50 2011
@@ -0,0 +1,23 @@
+// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
+
+int code[]={0,0,0,0,1};
+void foo(int x) {
+  volatile int b;
+  b = 0xffffffff;
+}
+void bar(int *pc) {
+  static const void *l[] = {&&lab0, &&end};
+
+  foo(0);
+  goto *l[*pc];
+ lab0:
+  foo(0);
+  pc++;
+  goto *l[*pc];
+ end:
+  return;
+}
+int main() {
+  bar(code);
+  return 0;
+}

Added: cfe/trunk/test/CodeGen/2004-11-27-InvalidConstantExpr.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/2004-11-27-InvalidConstantExpr.c?rev=136035&view=auto
==============================================================================
--- cfe/trunk/test/CodeGen/2004-11-27-InvalidConstantExpr.c (added)
+++ cfe/trunk/test/CodeGen/2004-11-27-InvalidConstantExpr.c Mon Jul 25 19:57:50 2011
@@ -0,0 +1,10 @@
+// RUN: %clang_cc1 %s -emit-llvm -o - | not grep {foo\\* sub}
+// This should not produce a subtrace constantexpr of a pointer
+struct foo {
+  int Y;
+  char X[100];
+} F;
+
+int test(char *Y) {
+   return Y - F.X;
+} 

Added: cfe/trunk/test/CodeGen/2005-06-15-ExpandGotoInternalProblem.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/2005-06-15-ExpandGotoInternalProblem.c?rev=136035&view=auto
==============================================================================
--- cfe/trunk/test/CodeGen/2005-06-15-ExpandGotoInternalProblem.c (added)
+++ cfe/trunk/test/CodeGen/2005-06-15-ExpandGotoInternalProblem.c Mon Jul 25 19:57:50 2011
@@ -0,0 +1,14 @@
+// RUN: %clang_cc1 -std=c99 %s -emit-llvm -o - | \
+// RUN:    opt -std-compile-opts -disable-output
+// PR580
+
+int X, Y;
+int foo() {
+  int i;
+        for (i=0; i<100; i++ )
+        {
+                break;
+                i = ( X || Y ) ;
+        }
+}
+

Added: cfe/trunk/test/CodeGen/2007-02-07-AddrLabel.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/2007-02-07-AddrLabel.c?rev=136035&view=auto
==============================================================================
--- cfe/trunk/test/CodeGen/2007-02-07-AddrLabel.c (added)
+++ cfe/trunk/test/CodeGen/2007-02-07-AddrLabel.c Mon Jul 25 19:57:50 2011
@@ -0,0 +1,10 @@
+// PR947
+// RUN: %clang_cc1 %s -emit-llvm -o - 
+
+void foo() {
+    void *ptr;
+  label:
+    ptr = &&label;
+
+    goto *ptr;
+  }

Added: cfe/trunk/test/CodeGen/2007-04-05-UnPackedStruct.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/2007-04-05-UnPackedStruct.c?rev=136035&view=auto
==============================================================================
--- cfe/trunk/test/CodeGen/2007-04-05-UnPackedStruct.c (added)
+++ cfe/trunk/test/CodeGen/2007-04-05-UnPackedStruct.c Mon Jul 25 19:57:50 2011
@@ -0,0 +1,16 @@
+// RUN: %clang_cc1 %s -emit-llvm -o -
+
+
+enum {
+  tA = 0,
+  tB = 1
+};
+
+struct MyStruct {
+  unsigned long A;
+  void * B;
+};
+
+void bar(){
+struct MyStruct MS = { tB, 0 };
+}

Added: cfe/trunk/test/CodeGen/2007-04-11-PR1321.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/2007-04-11-PR1321.c?rev=136035&view=auto
==============================================================================
--- cfe/trunk/test/CodeGen/2007-04-11-PR1321.c (added)
+++ cfe/trunk/test/CodeGen/2007-04-11-PR1321.c Mon Jul 25 19:57:50 2011
@@ -0,0 +1,12 @@
+// RUN: %clang_cc1 %s -emit-llvm -o /dev/null
+
+struct X {
+  unsigned int e0 : 17;
+  unsigned int e1 : 17;
+  unsigned int e2 : 17;
+  unsigned int e3 : 17;
+  unsigned int e4 : 17;
+  unsigned int e5 : 17;
+  unsigned int e6 : 17;
+  unsigned int e7 : 17;
+} __attribute__((packed)) x;

Added: cfe/trunk/test/CodeGen/2007-04-24-VolatileStructCopy.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/2007-04-24-VolatileStructCopy.c?rev=136035&view=auto
==============================================================================
--- cfe/trunk/test/CodeGen/2007-04-24-VolatileStructCopy.c (added)
+++ cfe/trunk/test/CodeGen/2007-04-24-VolatileStructCopy.c Mon Jul 25 19:57:50 2011
@@ -0,0 +1,11 @@
+// RUN: %clang_cc1 -emit-llvm -o - %s | FileCheck %s
+// PR1352
+
+struct foo {
+  int x;
+};
+
+void copy(volatile struct foo *p, struct foo *q) {
+  // CHECK: call void @llvm.memcpy
+  *p = *q;
+}

Added: cfe/trunk/test/CodeGen/2007-04-24-str-const.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/2007-04-24-str-const.c?rev=136035&view=auto
==============================================================================
--- cfe/trunk/test/CodeGen/2007-04-24-str-const.c (added)
+++ cfe/trunk/test/CodeGen/2007-04-24-str-const.c Mon Jul 25 19:57:50 2011
@@ -0,0 +1,17 @@
+// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
+static char *str;
+
+static const struct {
+ const char *name;
+ unsigned type;
+} scan_special[] = {
+ {"shift", 1},
+ {0, 0}
+};
+
+static void
+sb(void)
+{
+ while (*str == ' ' || *str == '\t')
+  str++;
+}

Added: cfe/trunk/test/CodeGen/2007-05-11-str-const.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/2007-05-11-str-const.c?rev=136035&view=auto
==============================================================================
--- cfe/trunk/test/CodeGen/2007-05-11-str-const.c (added)
+++ cfe/trunk/test/CodeGen/2007-05-11-str-const.c Mon Jul 25 19:57:50 2011
@@ -0,0 +1,5 @@
+// RUN: %clang_cc1 -emit-llvm -g %s  -o /dev/null
+
+static unsigned char out[]={0,1};
+static const unsigned char str1[]="1";
+

Added: cfe/trunk/test/CodeGen/2007-06-05-NoInlineAttribute.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/2007-06-05-NoInlineAttribute.c?rev=136035&view=auto
==============================================================================
--- cfe/trunk/test/CodeGen/2007-06-05-NoInlineAttribute.c (added)
+++ cfe/trunk/test/CodeGen/2007-06-05-NoInlineAttribute.c Mon Jul 25 19:57:50 2011
@@ -0,0 +1,13 @@
+// RUN: %clang_cc1 -O2 -emit-llvm %s -o - | grep call
+
+static int bar(int x, int y) __attribute__((noinline));
+
+static int bar(int x, int y)  
+{
+ return x + y;
+}
+
+int foo(int a, int b) {
+ return  bar(b, a);
+}
+

Added: cfe/trunk/test/CodeGen/2007-09-17-WeakRef.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/2007-09-17-WeakRef.c?rev=136035&view=auto
==============================================================================
--- cfe/trunk/test/CodeGen/2007-09-17-WeakRef.c (added)
+++ cfe/trunk/test/CodeGen/2007-09-17-WeakRef.c Mon Jul 25 19:57:50 2011
@@ -0,0 +1,10 @@
+// RUN: %clang_cc1 -O1 -emit-llvm %s -o - | grep icmp
+// PR1678
+
+extern void B (void);
+static __typeof(B) A __attribute__ ((__weakref__("B")));
+int active (void)
+{
+  static void *const p = __extension__ (void *) &A;
+  return p != 0;
+}

Added: cfe/trunk/test/CodeGen/2010-05-14-Optimized-VarType.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/2010-05-14-Optimized-VarType.c?rev=136035&view=auto
==============================================================================
--- cfe/trunk/test/CodeGen/2010-05-14-Optimized-VarType.c (added)
+++ cfe/trunk/test/CodeGen/2010-05-14-Optimized-VarType.c Mon Jul 25 19:57:50 2011
@@ -0,0 +1,23 @@
+// RUN: %clang_cc1 %s -Os -emit-llvm -g -o - | grep DW_TAG_structure_type | count 1
+// Variable 'a' is optimized but the debug info should preserve its type info.
+#include <stdlib.h>
+
+struct foo {
+	int Attribute;
+};
+
+void *getfoo(void) __attribute__((noinline));
+
+void *getfoo(void)
+{
+	int *x = malloc(sizeof(int));
+	*x = 42;
+	return (void *)x;
+}
+
+int main(int argc, char *argv[]) {
+	struct foo *a = (struct foo *)getfoo();
+
+	return a->Attribute;
+}
+

Added: cfe/trunk/test/CodeGen/2010-07-14-ref-off-end.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/2010-07-14-ref-off-end.c?rev=136035&view=auto
==============================================================================
--- cfe/trunk/test/CodeGen/2010-07-14-ref-off-end.c (added)
+++ cfe/trunk/test/CodeGen/2010-07-14-ref-off-end.c Mon Jul 25 19:57:50 2011
@@ -0,0 +1,24 @@
+// RUN: %clang_cc1 %s -emit-llvm -triple i386-apple-darwin -o - | FileCheck %s
+extern void abort();
+extern void exit(int);
+struct T
+{
+unsigned i:8;
+unsigned c:24;
+};
+f(struct T t)
+{
+struct T s[1];
+s[0]=t;
+return(char)s->c;
+}
+main()
+{
+// CHECK:  getelementptr inbounds [1 x %struct.T]* %s, i32 0, i32 0
+// CHECK:  getelementptr inbounds [1 x %struct.T]* %s, i32 0, i32 0
+struct T t;
+t.i=0xff;
+t.c=0xffff11;
+if(f(t)!=0x11)abort();
+exit(0);
+}

Added: cfe/trunk/test/CodeGen/2011-03-31-ArrayRefFolding.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/2011-03-31-ArrayRefFolding.c?rev=136035&view=auto
==============================================================================
--- cfe/trunk/test/CodeGen/2011-03-31-ArrayRefFolding.c (added)
+++ cfe/trunk/test/CodeGen/2011-03-31-ArrayRefFolding.c Mon Jul 25 19:57:50 2011
@@ -0,0 +1,15 @@
+// RUN: %clang_cc1 -emit-llvm -o - -triple i386-apple-darwin -Os %s | FileCheck %s
+// PR9571
+
+struct t {
+  int x;
+};
+
+extern struct t *cfun;
+
+int f(void) {
+  if (!(cfun + 0))
+    // CHECK: icmp eq %struct.t* %tmp, null
+    return 0;
+  return cfun->x;
+}

Added: cfe/trunk/test/CodeGen/Atomics-no64bit.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/Atomics-no64bit.c?rev=136035&view=auto
==============================================================================
--- cfe/trunk/test/CodeGen/Atomics-no64bit.c (added)
+++ cfe/trunk/test/CodeGen/Atomics-no64bit.c Mon Jul 25 19:57:50 2011
@@ -0,0 +1,172 @@
+// Test frontend handling of __sync builtins.
+// Modified from a gcc testcase.
+// RUN: %clang_cc1 -emit-llvm %s -o - | grep atomic | count 129
+// RUN: %clang_cc1 -emit-llvm %s -o - | grep p0i8 | count 43
+// RUN: %clang_cc1 -emit-llvm %s -o - | grep p0i16 | count 43
+// RUN: %clang_cc1 -emit-llvm %s -o - | grep p0i32 | count 43
+// RUN: %clang_cc1 -emit-llvm %s -o - | grep volatile | count 6
+
+// Currently this is implemented only for Alpha, X86, PowerPC.
+// Add your target here if it doesn't work.
+// This version of the test does not include long long.
+// XFAIL: sparc,arm
+
+signed char sc;
+unsigned char uc;
+signed short ss;
+unsigned short us;
+signed int si;
+unsigned int ui;
+
+void test_op_ignore (void)
+{
+  (void) __sync_fetch_and_add (&sc, 1);
+  (void) __sync_fetch_and_add (&uc, 1);
+  (void) __sync_fetch_and_add (&ss, 1);
+  (void) __sync_fetch_and_add (&us, 1);
+  (void) __sync_fetch_and_add (&si, 1);
+  (void) __sync_fetch_and_add (&ui, 1);
+
+  (void) __sync_fetch_and_sub (&sc, 1);
+  (void) __sync_fetch_and_sub (&uc, 1);
+  (void) __sync_fetch_and_sub (&ss, 1);
+  (void) __sync_fetch_and_sub (&us, 1);
+  (void) __sync_fetch_and_sub (&si, 1);
+  (void) __sync_fetch_and_sub (&ui, 1);
+
+  (void) __sync_fetch_and_or (&sc, 1);
+  (void) __sync_fetch_and_or (&uc, 1);
+  (void) __sync_fetch_and_or (&ss, 1);
+  (void) __sync_fetch_and_or (&us, 1);
+  (void) __sync_fetch_and_or (&si, 1);
+  (void) __sync_fetch_and_or (&ui, 1);
+
+  (void) __sync_fetch_and_xor (&sc, 1);
+  (void) __sync_fetch_and_xor (&uc, 1);
+  (void) __sync_fetch_and_xor (&ss, 1);
+  (void) __sync_fetch_and_xor (&us, 1);
+  (void) __sync_fetch_and_xor (&si, 1);
+  (void) __sync_fetch_and_xor (&ui, 1);
+
+  (void) __sync_fetch_and_and (&sc, 1);
+  (void) __sync_fetch_and_and (&uc, 1);
+  (void) __sync_fetch_and_and (&ss, 1);
+  (void) __sync_fetch_and_and (&us, 1);
+  (void) __sync_fetch_and_and (&si, 1);
+  (void) __sync_fetch_and_and (&ui, 1);
+
+}
+
+void test_fetch_and_op (void)
+{
+  sc = __sync_fetch_and_add (&sc, 11);
+  uc = __sync_fetch_and_add (&uc, 11);
+  ss = __sync_fetch_and_add (&ss, 11);
+  us = __sync_fetch_and_add (&us, 11);
+  si = __sync_fetch_and_add (&si, 11);
+  ui = __sync_fetch_and_add (&ui, 11);
+
+  sc = __sync_fetch_and_sub (&sc, 11);
+  uc = __sync_fetch_and_sub (&uc, 11);
+  ss = __sync_fetch_and_sub (&ss, 11);
+  us = __sync_fetch_and_sub (&us, 11);
+  si = __sync_fetch_and_sub (&si, 11);
+  ui = __sync_fetch_and_sub (&ui, 11);
+
+  sc = __sync_fetch_and_or (&sc, 11);
+  uc = __sync_fetch_and_or (&uc, 11);
+  ss = __sync_fetch_and_or (&ss, 11);
+  us = __sync_fetch_and_or (&us, 11);
+  si = __sync_fetch_and_or (&si, 11);
+  ui = __sync_fetch_and_or (&ui, 11);
+
+  sc = __sync_fetch_and_xor (&sc, 11);
+  uc = __sync_fetch_and_xor (&uc, 11);
+  ss = __sync_fetch_and_xor (&ss, 11);
+  us = __sync_fetch_and_xor (&us, 11);
+  si = __sync_fetch_and_xor (&si, 11);
+  ui = __sync_fetch_and_xor (&ui, 11);
+
+  sc = __sync_fetch_and_and (&sc, 11);
+  uc = __sync_fetch_and_and (&uc, 11);
+  ss = __sync_fetch_and_and (&ss, 11);
+  us = __sync_fetch_and_and (&us, 11);
+  si = __sync_fetch_and_and (&si, 11);
+  ui = __sync_fetch_and_and (&ui, 11);
+
+}
+
+void test_op_and_fetch (void)
+{
+  sc = __sync_add_and_fetch (&sc, uc);
+  uc = __sync_add_and_fetch (&uc, uc);
+  ss = __sync_add_and_fetch (&ss, uc);
+  us = __sync_add_and_fetch (&us, uc);
+  si = __sync_add_and_fetch (&si, uc);
+  ui = __sync_add_and_fetch (&ui, uc);
+
+  sc = __sync_sub_and_fetch (&sc, uc);
+  uc = __sync_sub_and_fetch (&uc, uc);
+  ss = __sync_sub_and_fetch (&ss, uc);
+  us = __sync_sub_and_fetch (&us, uc);
+  si = __sync_sub_and_fetch (&si, uc);
+  ui = __sync_sub_and_fetch (&ui, uc);
+
+  sc = __sync_or_and_fetch (&sc, uc);
+  uc = __sync_or_and_fetch (&uc, uc);
+  ss = __sync_or_and_fetch (&ss, uc);
+  us = __sync_or_and_fetch (&us, uc);
+  si = __sync_or_and_fetch (&si, uc);
+  ui = __sync_or_and_fetch (&ui, uc);
+
+  sc = __sync_xor_and_fetch (&sc, uc);
+  uc = __sync_xor_and_fetch (&uc, uc);
+  ss = __sync_xor_and_fetch (&ss, uc);
+  us = __sync_xor_and_fetch (&us, uc);
+  si = __sync_xor_and_fetch (&si, uc);
+  ui = __sync_xor_and_fetch (&ui, uc);
+
+  sc = __sync_and_and_fetch (&sc, uc);
+  uc = __sync_and_and_fetch (&uc, uc);
+  ss = __sync_and_and_fetch (&ss, uc);
+  us = __sync_and_and_fetch (&us, uc);
+  si = __sync_and_and_fetch (&si, uc);
+  ui = __sync_and_and_fetch (&ui, uc);
+
+}
+
+void test_compare_and_swap (void)
+{
+  sc = __sync_val_compare_and_swap (&sc, uc, sc);
+  uc = __sync_val_compare_and_swap (&uc, uc, sc);
+  ss = __sync_val_compare_and_swap (&ss, uc, sc);
+  us = __sync_val_compare_and_swap (&us, uc, sc);
+  si = __sync_val_compare_and_swap (&si, uc, sc);
+  ui = __sync_val_compare_and_swap (&ui, uc, sc);
+
+  ui = __sync_bool_compare_and_swap (&sc, uc, sc);
+  ui = __sync_bool_compare_and_swap (&uc, uc, sc);
+  ui = __sync_bool_compare_and_swap (&ss, uc, sc);
+  ui = __sync_bool_compare_and_swap (&us, uc, sc);
+  ui = __sync_bool_compare_and_swap (&si, uc, sc);
+  ui = __sync_bool_compare_and_swap (&ui, uc, sc);
+}
+
+void test_lock (void)
+{
+  sc = __sync_lock_test_and_set (&sc, 1);
+  uc = __sync_lock_test_and_set (&uc, 1);
+  ss = __sync_lock_test_and_set (&ss, 1);
+  us = __sync_lock_test_and_set (&us, 1);
+  si = __sync_lock_test_and_set (&si, 1);
+  ui = __sync_lock_test_and_set (&ui, 1);
+
+  __sync_synchronize ();
+
+  __sync_lock_release (&sc);
+  __sync_lock_release (&uc);
+  __sync_lock_release (&ss);
+  __sync_lock_release (&us);
+  __sync_lock_release (&si);
+  __sync_lock_release (&ui);
+}

Added: cfe/trunk/test/CodeGen/inline-asm-mrv.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/inline-asm-mrv.c?rev=136035&view=auto
==============================================================================
--- cfe/trunk/test/CodeGen/inline-asm-mrv.c (added)
+++ cfe/trunk/test/CodeGen/inline-asm-mrv.c Mon Jul 25 19:57:50 2011
@@ -0,0 +1,12 @@
+// RUN: %clang_cc1 -emit-llvm %s -o - -O | not grep alloca
+// PR2094
+
+int sad16_sse2(void *v, unsigned char *blk2, unsigned char *blk1,
+               int stride, int h) {
+    int ret;
+    asm volatile( "%0 %1 %2 %3"
+        : "+r" (h), "+r" (blk1), "+r" (blk2)
+        : "r" ((long)stride));
+    asm volatile("set %0 %1" : "=r"(ret) : "r"(blk1));
+    return ret;
+}

Added: cfe/trunk/test/CodeGen/sret2.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/sret2.c?rev=136035&view=auto
==============================================================================
--- cfe/trunk/test/CodeGen/sret2.c (added)
+++ cfe/trunk/test/CodeGen/sret2.c Mon Jul 25 19:57:50 2011
@@ -0,0 +1,9 @@
+// RUN: %clang_cc1 %s -emit-llvm -O0 -o - | grep sret | count 2
+
+struct abc {
+ long a;
+ long b;
+ long c;
+};
+ 
+struct abc foo2(){}





More information about the cfe-commits mailing list