1 /* 2 * CDDL HEADER START 3 * 4 * The contents of this file are subject to the terms of the 5 * Common Development and Distribution License (the "License"). 6 * You may not use this file except in compliance with the License. 7 * 8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9 * or http://www.opensolaris.org/os/licensing. 10 * See the License for the specific language governing permissions 11 * and limitations under the License. 12 * 13 * When distributing Covered Code, include this CDDL HEADER in each 14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15 * If applicable, add the following below this CDDL HEADER, with the 16 * fields enclosed by brackets "[]" replaced with your own identifying 17 * information: Portions Copyright [yyyy] [name of copyright owner] 18 * 19 * CDDL HEADER END 20 */ 21 22 /* 23 * Copyright 2006 Sun Microsystems, Inc. All rights reserved. 24 * Use is subject to license terms. 25 */ 26 27 /* 28 * ASSERTION: 29 * Verify relational operators with pointers 30 * 31 * SECTION: Types, Operators, and Expressions/Relational Operators; 32 * Types, Operators, and Expressions/Logical Operators; 33 * Types, Operators, and Expressions/Precedence 34 * 35 */ 36 37 #pragma D option quiet 38 39 40 BEGIN 41 { 42 ptr_1 = &`kmem_flags; 43 ptr_2 = (&`kmem_flags) + 1; 44 ptr_3 = (&`kmem_flags) - 1 ; 45 } 46 47 tick-1 48 /ptr_1 >= ptr_2 || ptr_2 <= ptr_1 || ptr_1 == ptr_2/ 49 { 50 printf("Shouldn't end up here (1)\n"); 51 printf("ptr_1 = %x ptr_2 = %x ptr_3 = %x\n", 52 (int) ptr_1, (int) ptr_2, (int) ptr_3); 53 exit(1); 54 } 55 56 tick-1 57 /ptr_3 > ptr_1 || ptr_1 < ptr_3 || ptr_3 == ptr_1/ 58 { 59 printf("Shouldn't end up here (2)\n"); 60 printf("ptr_1 = %x ptr_2 = %x ptr_3 = %x\n", 61 (int) ptr_1, (int) ptr_2, (int) ptr_3); 62 exit(1); 63 } 64 65 tick-1 66 /ptr_3 > ptr_2 || ptr_1 < ptr_2 ^^ ptr_3 == ptr_2 && !(ptr_1 != ptr_2)/ 67 { 68 exit(0); 69 } 70