[llvm-commits] [dragonegg] r159117 - in /dragonegg/trunk/test/validator/objc: ./ 2007-04-03-ObjcEH.m 2007-05-02-Strong.m 2007-10-18-ProDescriptor.m 2007-10-23-GC-WriteBarrier.m 2008-10-3-EhValue.m 2008-11-12-Metadata.m 2009-02-05-VolatileProp.m 2009-04-28-bitfield-vs-vbc.m 2010-02-23-DbgInheritance.m 2010-03-17-StructRef.m

Duncan Sands baldrick at free.fr
Sun Jun 24 09:23:27 PDT 2012


Author: baldrick
Date: Sun Jun 24 11:23:27 2012
New Revision: 159117

URL: http://llvm.org/viewvc/llvm-project?rev=159117&view=rev
Log:
Add a few objective-c testcases.

Added:
    dragonegg/trunk/test/validator/objc/
    dragonegg/trunk/test/validator/objc/2007-04-03-ObjcEH.m
    dragonegg/trunk/test/validator/objc/2007-05-02-Strong.m
    dragonegg/trunk/test/validator/objc/2007-10-18-ProDescriptor.m
    dragonegg/trunk/test/validator/objc/2007-10-23-GC-WriteBarrier.m
    dragonegg/trunk/test/validator/objc/2008-10-3-EhValue.m
    dragonegg/trunk/test/validator/objc/2008-11-12-Metadata.m
    dragonegg/trunk/test/validator/objc/2009-02-05-VolatileProp.m
    dragonegg/trunk/test/validator/objc/2009-04-28-bitfield-vs-vbc.m
    dragonegg/trunk/test/validator/objc/2010-02-23-DbgInheritance.m
    dragonegg/trunk/test/validator/objc/2010-03-17-StructRef.m

Added: dragonegg/trunk/test/validator/objc/2007-04-03-ObjcEH.m
URL: http://llvm.org/viewvc/llvm-project/dragonegg/trunk/test/validator/objc/2007-04-03-ObjcEH.m?rev=159117&view=auto
==============================================================================
--- dragonegg/trunk/test/validator/objc/2007-04-03-ObjcEH.m (added)
+++ dragonegg/trunk/test/validator/objc/2007-04-03-ObjcEH.m Sun Jun 24 11:23:27 2012
@@ -0,0 +1,29 @@
+// RUN: %dragonegg -fobjc-exceptions -S %s -o /dev/null
+
+ at interface B 
+-(int)bar;
+ at end
+
+ at interface A
+-(void) Foo:(int) state;
+ at end
+
+ at implementation A 
+- (void) Foo:(int) state {
+
+        int wasResponded = 0;
+        @try {
+        if (state) {
+           B * b = 0;
+           @try { }
+           @finally {
+             wasResponded = ![b bar];
+           }
+        }
+        }
+        @finally {
+        }
+}
+ at end
+
+

Added: dragonegg/trunk/test/validator/objc/2007-05-02-Strong.m
URL: http://llvm.org/viewvc/llvm-project/dragonegg/trunk/test/validator/objc/2007-05-02-Strong.m?rev=159117&view=auto
==============================================================================
--- dragonegg/trunk/test/validator/objc/2007-05-02-Strong.m (added)
+++ dragonegg/trunk/test/validator/objc/2007-05-02-Strong.m Sun Jun 24 11:23:27 2012
@@ -0,0 +1,23 @@
+// RUN: %dragonegg -S %s -fobjc-gc -o /dev/null
+typedef int NSInteger;
+typedef struct _NSRect {
+  int origin;
+  int size;
+} NSRect;
+
+__attribute__((objc_gc(strong))) NSRect *_cachedRectArray;
+extern const NSRect NSZeroRect;
+ at interface A{
+}
+-(void)bar:(NSInteger *)rectCount;
+ at end
+
+ at implementation A 
+
+-(void)bar:(NSInteger *)rectCount {
+  NSRect appendRect = NSZeroRect; 
+
+  _cachedRectArray[*rectCount - 1] = NSZeroRect; 
+}
+
+ at end

Added: dragonegg/trunk/test/validator/objc/2007-10-18-ProDescriptor.m
URL: http://llvm.org/viewvc/llvm-project/dragonegg/trunk/test/validator/objc/2007-10-18-ProDescriptor.m?rev=159117&view=auto
==============================================================================
--- dragonegg/trunk/test/validator/objc/2007-10-18-ProDescriptor.m (added)
+++ dragonegg/trunk/test/validator/objc/2007-10-18-ProDescriptor.m Sun Jun 24 11:23:27 2012
@@ -0,0 +1,19 @@
+// RUN: %dragonegg -x objective-c -S %s -o /dev/null
+ at protocol O
+ at end
+ at interface O < O > {
+}
+ at end
+struct A {
+};
+ at protocol AB
+- (unsigned) ver;
+ at end
+ at interface AGy:O < AB > {
+}
+ at end
+ at implementation AGy
+- (unsigned) ver {
+}
+ at end
+

Added: dragonegg/trunk/test/validator/objc/2007-10-23-GC-WriteBarrier.m
URL: http://llvm.org/viewvc/llvm-project/dragonegg/trunk/test/validator/objc/2007-10-23-GC-WriteBarrier.m?rev=159117&view=auto
==============================================================================
--- dragonegg/trunk/test/validator/objc/2007-10-23-GC-WriteBarrier.m (added)
+++ dragonegg/trunk/test/validator/objc/2007-10-23-GC-WriteBarrier.m Sun Jun 24 11:23:27 2012
@@ -0,0 +1,9 @@
+// RUN: %dragonegg -x objective-c -S %s -o /dev/null -fobjc-gc
+// rdar://5541393
+
+typedef unsigned int NSUInteger;
+__attribute__((objc_gc(strong))) float *_scores;
+
+void foo(int i, float f) {
+  _scores[i] = f; 
+}

Added: dragonegg/trunk/test/validator/objc/2008-10-3-EhValue.m
URL: http://llvm.org/viewvc/llvm-project/dragonegg/trunk/test/validator/objc/2008-10-3-EhValue.m?rev=159117&view=auto
==============================================================================
--- dragonegg/trunk/test/validator/objc/2008-10-3-EhValue.m (added)
+++ dragonegg/trunk/test/validator/objc/2008-10-3-EhValue.m Sun Jun 24 11:23:27 2012
@@ -0,0 +1,50 @@
+// RUN: %dragonegg -fobjc-exceptions -w -x objective-c -S %s -o /dev/null
+
+ at interface Object {
+ at public
+     Class isa;
+}
++initialize;
++alloc;
++new;
++free;
+-free;
++(Class)class;
+-(Class)class;
+-init;
+-superclass;
+-(const char *)name;
+ at end
+
+ at interface Frob: Object
+ at end
+
+ at implementation Frob: Object
+ at end
+
+static Frob* _connection = ((void *)0);
+
+extern void abort(void);
+
+void test (Object* sendPort)
+{
+ int cleanupPorts = 1;
+ Frob* receivePort = ((void *)0);
+
+ @try {
+  receivePort = (Frob *) -1;
+  _connection = (Frob *) -1;
+  receivePort = ((void *)0);
+  sendPort = ((void *)0);
+  cleanupPorts = 0;
+  @throw [Object new];
+ }
+ @catch(Frob *obj) {
+  if(!(0)) abort();
+ }
+ @catch(id exc) {
+  if(!(!receivePort)) abort();
+  if(!(!sendPort)) abort();
+  if(!(!cleanupPorts)) abort();
+ }
+}

Added: dragonegg/trunk/test/validator/objc/2008-11-12-Metadata.m
URL: http://llvm.org/viewvc/llvm-project/dragonegg/trunk/test/validator/objc/2008-11-12-Metadata.m?rev=159117&view=auto
==============================================================================
--- dragonegg/trunk/test/validator/objc/2008-11-12-Metadata.m (added)
+++ dragonegg/trunk/test/validator/objc/2008-11-12-Metadata.m Sun Jun 24 11:23:27 2012
@@ -0,0 +1,14 @@
+// RUN: %dragonegg -x objective-c -m64 -S %s -o /dev/null
+
+ at interface A
+ at end
+ at protocol P
+ at end
+ at interface B : A <P>
+{
+}
+ at end
+ at implementation B
+- (void)test {
+}
+ at end

Added: dragonegg/trunk/test/validator/objc/2009-02-05-VolatileProp.m
URL: http://llvm.org/viewvc/llvm-project/dragonegg/trunk/test/validator/objc/2009-02-05-VolatileProp.m?rev=159117&view=auto
==============================================================================
--- dragonegg/trunk/test/validator/objc/2009-02-05-VolatileProp.m (added)
+++ dragonegg/trunk/test/validator/objc/2009-02-05-VolatileProp.m Sun Jun 24 11:23:27 2012
@@ -0,0 +1,11 @@
+/* RUN: %dragonegg -fobjc-exceptions -w -x objective-c -S %s -o /dev/null -pedantic-errors
+   rdar://6551276 */
+
+void foo(const unsigned short *);
+void bar() {
+  unsigned short *s[3];
+  int i;
+  @try { } @catch (id anException) { }
+  foo(2+s[i]);
+}
+

Added: dragonegg/trunk/test/validator/objc/2009-04-28-bitfield-vs-vbc.m
URL: http://llvm.org/viewvc/llvm-project/dragonegg/trunk/test/validator/objc/2009-04-28-bitfield-vs-vbc.m?rev=159117&view=auto
==============================================================================
--- dragonegg/trunk/test/validator/objc/2009-04-28-bitfield-vs-vbc.m (added)
+++ dragonegg/trunk/test/validator/objc/2009-04-28-bitfield-vs-vbc.m Sun Jun 24 11:23:27 2012
@@ -0,0 +1,127 @@
+// RUN: %dragonegg -S -x objective-c -m32 %s -o /dev/null
+// This used to crash, 6831493.
+#include <stdlib.h>
+
+struct s0 {
+  double x;
+};
+
+ at interface I2 {
+  struct s0 _iv1;
+}
+ at end
+
+ at interface I3 : I2 {
+  unsigned int _iv2 :1;
+  unsigned : 0;
+  unsigned int _iv3 : 3;
+}
+ at end
+
+ at interface I4 : I3 {
+  char _iv4;
+}
+ at end
+
+ at interface I5 : I4 {
+  char _iv5;
+  int _iv6;
+  int _iv7;
+}
+
+ at property int P1;
+ at end
+
+ at implementation I2
+ at end
+
+ at implementation I3
+ at end
+
+ at implementation I4 
+ at end
+
+ at interface I5 ()
+ at property int P2;
+ at end
+
+#if 0
+int g2 = sizeof(I2);
+int g3 = sizeof(I3);
+int g4 = sizeof(I4);
+int g5_0 = sizeof(I5);
+#endif
+
+ at implementation I5
+#ifdef __x86_64
+ at synthesize P1 = _MadeUpName;
+ at synthesize P2 = _AnotherMadeUpName;
+#else
+ at synthesize P1 = _iv6;
+ at synthesize P2 = _iv7;
+#endif
+ at end
+
+#if 0
+int g5_1 = sizeof(I5);
+#endif
+
+ at interface T0_I0 {
+  double iv_A_0;
+  char iv_A_1;
+}
+ at end
+
+ at interface T0_I1 : T0_I0 {
+  char iv_B_0;
+}
+ at end
+
+ at interface T0_I2 : T0_I1 {
+  char iv_C_0;
+}
+ at end
+
+#if 0
+int g6 = sizeof(T0_I0);
+int g7 = sizeof(T0_I1);
+int g8 = sizeof(T0_I2);
+#endif
+  
+ at implementation T0_I0 @end
+ at implementation T0_I1 @end  
+ at implementation T0_I2 @end
+
+void f0(I2*i2,I3*i3,I4*i4,I5*i5,T0_I0*t0_i0,T0_I1*t0_i1,T0_I2*t0_i2) {
+}
+
+// Thomas Wang's ui32 hash.
+unsigned hash_ui32_to_ui32(unsigned a) {
+  a = (a ^ 61) ^ (a >> 16);
+  a = a + (a << 3);
+  a = a ^ (a >> 4);
+  a = a * 0x27d4eb2d;
+  a = a ^ (a >> 15);
+  return a;
+}
+
+unsigned char hash_ui32_to_ui8(unsigned ui) {
+  ui = hash_ui32_to_ui32(ui);
+  ui ^= ui>>8;
+  ui ^= ui>>8;
+  ui ^= ui>>8;
+  return (unsigned char) ui;
+}
+
+void *init() {
+  unsigned i, N = 1024;
+  unsigned char *p = malloc(N);
+  for (i=0; i != N; ++i)
+    p[i] = hash_ui32_to_ui8(i);
+  return p;
+}
+
+int main(){
+  void *p = init();
+  f0(p,p,p,p,p,p,p);
+}

Added: dragonegg/trunk/test/validator/objc/2010-02-23-DbgInheritance.m
URL: http://llvm.org/viewvc/llvm-project/dragonegg/trunk/test/validator/objc/2010-02-23-DbgInheritance.m?rev=159117&view=auto
==============================================================================
--- dragonegg/trunk/test/validator/objc/2010-02-23-DbgInheritance.m (added)
+++ dragonegg/trunk/test/validator/objc/2010-02-23-DbgInheritance.m Sun Jun 24 11:23:27 2012
@@ -0,0 +1,10 @@
+// RUN: %dragonegg %s -S -g -o - | FileCheck %s
+// CHECK-NOT: DW_TAG_member
+// Interface P should not be a member of interface I in debug info.
+ at interface P 
+ at end
+
+ at interface I : P 
+ at end
+
+void fn(I *iptr) {}

Added: dragonegg/trunk/test/validator/objc/2010-03-17-StructRef.m
URL: http://llvm.org/viewvc/llvm-project/dragonegg/trunk/test/validator/objc/2010-03-17-StructRef.m?rev=159117&view=auto
==============================================================================
--- dragonegg/trunk/test/validator/objc/2010-03-17-StructRef.m (added)
+++ dragonegg/trunk/test/validator/objc/2010-03-17-StructRef.m Sun Jun 24 11:23:27 2012
@@ -0,0 +1,43 @@
+// RUN: %dragonegg %s -m64 -S -o - | FileCheck %s
+// Bitfield references must not touch memory outside of the enclosing
+// struct.   Radar 7639995
+typedef signed char BOOL;
+ at protocol NSObject
+- (id)init;
+ at end
+ at interface NSObject <NSObject> {}
+ at end
+ at interface IMAVChatParticipant : NSObject {
+  int _ardRole;
+  int _state;
+  int _avRelayStatus;
+  int _chatEndedReason;
+  int _chatError;
+  unsigned _sendingAudio:1;
+  unsigned _sendingVideo:1;
+  unsigned _sendingAuxVideo:1;
+  unsigned _audioMuted:1;
+  unsigned _videoPaused:1;
+  unsigned _networkStalled:1;
+  unsigned _isInitiator:1;
+  unsigned _isAOLInterop:1;
+  unsigned _isRecording:1;
+  unsigned _isUsingICE:1;
+}
+ at end
+ at implementation IMAVChatParticipant
+- (id) init {
+  self = [super init];
+  if ( self ) {
+    BOOL blah = (BOOL)1;
+    // We're expecting these three bitfield assignments will generate i8 stores.
+    _sendingAudio = (BOOL)1;
+    _isUsingICE = (BOOL)1;
+    _isUsingICE = blah;
+    // CHECK: store i8
+    // CHECK: store i8
+    // CHECK: store i8
+  }
+  return self;
+}
+ at end





More information about the llvm-commits mailing list