1178476Sjb/* 2178476Sjb * CDDL HEADER START 3178476Sjb * 4178476Sjb * The contents of this file are subject to the terms of the 5178476Sjb * Common Development and Distribution License (the "License"). 6178476Sjb * You may not use this file except in compliance with the License. 7178476Sjb * 8178476Sjb * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9178476Sjb * or http://www.opensolaris.org/os/licensing. 10178476Sjb * See the License for the specific language governing permissions 11178476Sjb * and limitations under the License. 12178476Sjb * 13178476Sjb * When distributing Covered Code, include this CDDL HEADER in each 14178476Sjb * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15178476Sjb * If applicable, add the following below this CDDL HEADER, with the 16178476Sjb * fields enclosed by brackets "[]" replaced with your own identifying 17178476Sjb * information: Portions Copyright [yyyy] [name of copyright owner] 18178476Sjb * 19178476Sjb * CDDL HEADER END 20178476Sjb */ 21178476Sjb 22178476Sjb/* 23178476Sjb * Copyright 2006 Sun Microsystems, Inc. All rights reserved. 24178476Sjb * Use is subject to license terms. 25178476Sjb */ 26178476Sjb 27178476Sjb#pragma ident "%Z%%M% %I% %E% SMI" 28178476Sjb 29178476Sjb/* 30178476Sjb * ASSERTION: Declare arrays of different data types and verify that the 31178476Sjb * addresses of the individual elements differ by an amount equal to the number 32178476Sjb * elements separating them multiplied by the size of each element. 33178476Sjb * 34178476Sjb * SECTION: Pointers and Arrays/Array Declarations and Storage; 35178476Sjb * Pointers and Arrays/Pointer Arithmetic 36178476Sjb * 37178476Sjb * NOTES: 38178476Sjb * 39178476Sjb */ 40178476Sjb 41178476Sjb#pragma D option quiet 42178476Sjb 43178476Sjbchar char_array[5]; 44178476Sjbshort short_array[5]; 45178476Sjbint int_array[5]; 46178476Sjblong long_array[5]; 47178476Sjblong long long_long_array[5]; 48178476Sjbint8_t int8_array[5]; 49178476Sjbint16_t int16_array[5]; 50178476Sjbint32_t int32_array[5]; 51178476Sjbint64_t int64_array[5]; 52178476Sjbintptr_t intptr_array[5]; 53178476Sjbuint8_t uint8_array[5]; 54178476Sjbuint16_t uint16_array[5]; 55178476Sjbuint32_t uint32_array[5]; 56178476Sjbuint64_t uint64_array[5]; 57178476Sjbuintptr_t uintptr_array[5]; 58178476Sjb 59178476Sjb/* 60178476Sjbfloat float_array[5]; 61178476Sjbdouble double_array[5]; 62178476Sjblong double long_double_array[5]; 63178476Sjb 64178476Sjbstring string_array[5]; 65178476Sjb*/ 66178476Sjb 67178476Sjbstruct record { 68178476Sjb char ch; 69178476Sjb int in; 70178476Sjb} struct_array[5]; 71178476Sjb 72178476Sjbstruct { 73178476Sjb char ch; 74178476Sjb int in; 75178476Sjb} anon_struct_array[5]; 76178476Sjb 77178476Sjbunion record { 78178476Sjb char ch; 79178476Sjb int in; 80178476Sjb} union_array[5]; 81178476Sjb 82178476Sjbunion { 83178476Sjb char ch; 84178476Sjb int in; 85178476Sjb} anon_union_array[5]; 86178476Sjb 87178476Sjbenum colors { 88178476Sjb RED, 89178476Sjb GREEN, 90178476Sjb BLUE 91178476Sjb} enum_array[5]; 92178476Sjb 93178476SjbBEGIN 94178476Sjb{ 95178476Sjb char_var0 = &char_array[0]; char_var2 = &char_array[2]; 96178476Sjb short_var0 = &short_array[0]; short_var3 = &short_array[3]; 97178476Sjb int_var3 = &int_array[3]; int_var5 = &int_array[5]; 98178476Sjb 99178476Sjb long_var0 = &long_array[0]; long_var4 = &long_array[4]; 100178476Sjb long_long_var0 = &long_long_array[0]; 101178476Sjb long_long_var2 = &long_long_array[2]; 102178476Sjb int8_var3 = &int8_array[3]; int8_var5 = &int8_array[5]; 103178476Sjb 104178476Sjb int16_var0 = &int16_array[0]; int16_var4 = &int16_array[4]; 105178476Sjb int32_var0 = &int32_array[0]; int32_var3 = &int32_array[3]; 106178476Sjb int64_var0 = &int64_array[0]; int64_var1 = &int64_array[1]; 107178476Sjb 108178476Sjb uintptr_var0 = &uintptr_array[0]; uintptr_var2 = &uintptr_array[2]; 109178476Sjb struct_var0 = &struct_array[0]; struct_var2 = &struct_array[2]; 110178476Sjb anon_struct_var3 = &anon_struct_array[3]; 111178476Sjb anon_struct_var5 = &anon_struct_array[5]; 112178476Sjb 113178476Sjb union_var0 = &union_array[0]; union_var3 = &union_array[3]; 114178476Sjb anon_union_var0 = &anon_union_array[0]; 115178476Sjb anon_union_var4 = &anon_union_array[4]; 116178476Sjb enum_var0 = &enum_array[0]; enum_var2 = &enum_array[2]; 117178476Sjb 118178476Sjb printf("char_var2 - char_var0: %d\n", 119178476Sjb (int) char_var2 - (int) char_var0); 120178476Sjb printf("short_var3 - short_var0: %d\n", 121178476Sjb (int) short_var3 - (int) short_var0); 122178476Sjb printf("int_var5 - int_var3: %d\n", (int) int_var5 - (int) int_var3); 123178476Sjb 124178476Sjb printf("long_var4 - long_var0: %d\n", 125178476Sjb (int) long_var4 - (int) long_var0); 126178476Sjb printf("long_long_var2 - long_long_var0: %d\n", 127178476Sjb (int) long_long_var2 - (int) long_long_var0); 128178476Sjb printf("int8_var5 - int8_var3: %d\n", 129178476Sjb (int) int8_var5 - (int) int8_var3); 130178476Sjb 131178476Sjb printf("int16_var4 - int16_var0: %d\n", 132178476Sjb (int) int16_var4 - (int) int16_var0); 133178476Sjb printf("int32_var3 - int32_var0: %d\n", 134178476Sjb (int) int32_var3 - (int) int32_var0); 135178476Sjb printf("int64_var1 - int64_var0: %d\n", 136178476Sjb (int) int64_var1 - (int) int64_var0); 137178476Sjb 138178476Sjb printf("uintptr_var2 - uintptr_var0: %d\n", 139178476Sjb (int) uintptr_var2 - (int) uintptr_var0); 140178476Sjb printf("struct_var2 - struct_var0: %d\n", 141178476Sjb (int) struct_var2 - (int) struct_var0); 142178476Sjb printf("anon_struct_var5 - anon_struct_var3: %d\n", 143178476Sjb (int) anon_struct_var5 - (int) anon_struct_var3); 144178476Sjb 145178476Sjb printf("union_var3 - union_var0: %d\n", 146178476Sjb (int) union_var3 - (int) union_var0); 147178476Sjb printf("anon_union_var4 - anon_union_var0: %d\n", 148178476Sjb (int) anon_union_var4 - (int) anon_union_var0); 149178476Sjb printf("enum_var2 - enum_var0: %d\n", 150178476Sjb (int) enum_var2 - (int) enum_var0); 151178476Sjb exit(0); 152178476Sjb} 153178476Sjb 154178476SjbEND 155178476Sjb/(2 != ((int) char_var2 - (int) char_var0)) || 156178476Sjb (6 != ((int) short_var3 - (int) short_var0)) || 157178476Sjb (8 != ((int) int_var5 - (int) int_var3)) || 158178476Sjb ((32 != ((int) long_var4 - (int) long_var0)) && 159178476Sjb (16 != ((int) long_var4 - (int) long_var0))) || 160178476Sjb (16 != ((int) long_long_var2 - (int) long_long_var0)) || 161178476Sjb (2 != ((int) int8_var5 - (int) int8_var3)) 162178476Sjb || (8 != ((int) int16_var4 - (int) int16_var0)) || 163178476Sjb (12 != ((int) int32_var3 - (int) int32_var0)) || 164178476Sjb (8 != ((int) int64_var1 - (int) int64_var0)) || 165178476Sjb ((16 != ((int) uintptr_var2 - (int) uintptr_var0)) 166178476Sjb && (8 != ((int) uintptr_var2 - (int) uintptr_var0))) || 167178476Sjb (16 != ((int) struct_var2 - (int) struct_var0)) || 168178476Sjb (16 != ((int) anon_struct_var5 - (int) anon_struct_var3)) 169178476Sjb || (12 != ((int) union_var3 - (int) union_var0)) || 170178476Sjb (16 != ((int) anon_union_var4 - (int) anon_union_var0)) || 171178476Sjb (8 != ((int) enum_var2 - (int) enum_var0))/ 172178476Sjb{ 173178476Sjb exit(1); 174178476Sjb} 175