1/* Test to make sure that the const objc strings are the same across
2   scopes.  */
3/* Developed by Andrew Pinski <pinskia@physics.uc.edu> */
4
5/* { dg-do run } */
6/* { dg-options "-fconstant-string-class=Foo" } */
7/* { dg-options "-mno-constant-cfstrings -fconstant-string-class=Foo" { target *-*-darwin* } } */
8
9#include "../../../objc-obj-c++-shared/TestsuiteObject.m"
10#include <stdio.h>
11#include <stdlib.h>
12#include <string.h>
13#include <objc/objc.h>
14
15@interface Foo: TestsuiteObject {
16  char *cString;
17  unsigned int len;
18}
19- (char *)customString;
20@end
21
22#ifdef __NEXT_RUNTIME__
23#ifdef NEXT_OBJC_USE_NEW_INTERFACE
24Class  _FooClassReference;
25#else
26struct objc_class _FooClassReference;
27#endif
28#endif
29
30@implementation Foo : TestsuiteObject
31- (char *)customString {
32  return cString;
33}
34@end
35
36
37int main () {
38  Foo *string = @"bla";
39  {
40    Foo *string2 = @"bla";
41
42    if(string != string2)
43      abort();
44    printf("Strings are being uniqued properly\n");
45   }
46  return 0;
47}
48