1/* Check if class references (generated for the NeXT runtime) are appropriately 2 folded. This test is safe to run on all targets. */ 3/* Author: Ziemowit Laski <zlaski@apple.com>. */ 4 5/* { dg-do compile } */ 6/* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */ 7 8#include "../objc-obj-c++-shared/TestsuiteObject.h" 9 10typedef TestsuiteObject ObjectTypedef1; 11typedef ObjectTypedef1 ObjectTypedef2; 12@compatibility_alias ObjectAlias1 ObjectTypedef2; 13@compatibility_alias ObjectAlias2 ObjectAlias1; 14typedef ObjectAlias2 ObjectTypedef3; 15 16void foo(void) { 17 id obj = [TestsuiteObject new]; 18 obj = [ObjectTypedef1 new]; 19 obj = [ObjectTypedef2 new]; 20 obj = [ObjectTypedef3 new]; 21 obj = [ObjectAlias1 new]; 22 obj = [ObjectAlias2 new]; 23} 24 25/* { dg-final { scan-assembler "_OBJC_ClassRefs_0" { target { *-*-darwin* && { ! lp64 } } } } } */ 26/* { dg-final { scan-assembler "_OBJC_ClassRef_TestsuiteObject" { target { *-*-darwin* && { lp64 } } } } } */ 27/* { dg-final { scan-assembler-not "_OBJC_ClassRefs_1" { target { *-*-darwin* && { ! lp64 } } } } } */ 28/* { dg-final { scan-assembler-not "_OBJC_ClassRef_ObjectTypedef" { target { *-*-darwin* && { lp64 } } } } } */ 29/* { dg-final { scan-assembler-not "_OBJC_ClassRef_ObjectAlias" { target { *-*-darwin* && { lp64 } } } } } */ 30