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 * Test the code generation and results of the various kinds of inlines.
31178476Sjb * In particular, we test constant and expression-based scalar inlines,
32178476Sjb * associative array inlines, and inlines using translators.
33178476Sjb */
34178476Sjb
35178476Sjb#pragma D option quiet
36178476Sjb
37178476Sjbinline int i0 = 100 + 23;		/* constant-folded integer constant */
38178476Sjbinline string i1 = probename;		/* string variable reference */
39178476Sjbinline int i2 = pid != 0;		/* expression involving a variable */
40178476Sjb
41178476Sjbstruct s {
42178476Sjb	int s_x;
43178476Sjb};
44178476Sjb
45178476Sjbtranslator struct s < int T > {
46178476Sjb	s_x = T + 1;
47178476Sjb};
48178476Sjb
49178476Sjbinline struct s i3 = xlate < struct s > (i0);		/* translator */
50178476Sjbinline int i4[int x, int y] = x + y;			/* associative array */
51178476Sjbinline int i5[int x] = (xlate < struct s > (x)).s_x;	/* array by xlate */
52178476Sjb
53178476SjbBEGIN
54178476Sjb{
55178476Sjb	printf("i0 = %d\n", i0);
56178476Sjb	printf("i1 = %s\n", i1);
57178476Sjb	printf("i2 = %d\n", i2);
58178476Sjb
59178476Sjb	printf("i3.s_x = %d\n", i3.s_x);
60178476Sjb	printf("i4[10, 20] = %d\n", i4[10, 20]);
61178476Sjb	printf("i5[123] = %d\n", i5[123]);
62178476Sjb
63178476Sjb	exit(0);
64178476Sjb}
65