From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 4042 invoked by alias); 11 Oct 2009 11:23:40 -0000 Received: (qmail 4033 invoked by uid 22791); 11 Oct 2009 11:23:39 -0000 X-SWARE-Spam-Status: No, hits=-7.7 required=5.0 tests=AWL,BAYES_00,RCVD_IN_DNSWL_HI X-Spam-Check-By: sourceware.org Received: from cantor.suse.de (HELO mx1.suse.de) (195.135.220.2) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Sun, 11 Oct 2009 11:23:35 +0000 Received: from relay1.suse.de (relay-ext.suse.de [195.135.221.8]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.suse.de (Postfix) with ESMTP id AC93F5362F for ; Sun, 11 Oct 2009 13:23:32 +0200 (CEST) Date: Sun, 11 Oct 2009 11:48:00 -0000 From: Richard Guenther To: gcc-patches@gcc.gnu.org Subject: [PATCH] Add testcase for PR41555 Message-ID: User-Agent: Alpine 2.00 (LNX 1167 2008-08-23) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org X-SW-Source: 2009-10/txt/msg00684.txt.bz2 Committed. 2009-10-11 Richard Guenther PR tree-optimization/41555 * gcc.dg/torture/pr41555.c: New testcase. Index: gcc/testsuite/gcc.dg/torture/pr41555.c =================================================================== *** gcc/testsuite/gcc.dg/torture/pr41555.c (revision 0) --- gcc/testsuite/gcc.dg/torture/pr41555.c (revision 0) *************** *** 0 **** --- 1,118 ---- + /* { dg-do run } */ + + #include + #include + + extern void abort (void); + + static uint64_t safe_div_func_uint64_t_u_u (uint64_t _ui1, uint64_t _ui2) + { + if (_ui2==0) return _ui1; + return _ui1 / _ui2; + } + + static int64_t safe_div_func_int64_t_s_s (int64_t _si1, int64_t _si2) + { + if (_si2==0 || (_si1==INT64_MIN && _si2==-1)) return _si1; + return _si1 / _si2; + } + + #define safe_add_macro_int8_t_s_s(si1,si2) \ + ((((((int8_t)(si1))>((int8_t)0)) && (((int8_t)(si2))>((int8_t)0)) && (((int8_t)(si1)) > ((INT8_MAX)-((int8_t)(si2))))) \ + || ((((int8_t)(si1))<((int8_t)0)) && (((int8_t)(si2))<((int8_t)0)) && (((int8_t)(si1)) < ((INT8_MIN)-((int8_t)(si2)))))) \ + ? ((int8_t)(si1)) \ + : (((int8_t)(si1)) + ((int8_t)(si2))) \ + ) + + static int8_t + safe_add_func_int8_t_s_s(int8_t _si1, int8_t _si2) + { + return safe_add_macro_int8_t_s_s(_si1,_si2); + } + + #define safe_rshift_macro_uint64_t_u_s(left,right) \ + (((((int)(right)) < ((uint64_t)0)) \ + || (((int)(right)) >= sizeof(uint64_t)*CHAR_BIT)) \ + ? ((uint64_t)(left)) \ + : (((uint64_t)(left)) >> ((int)(right)))) + + static uint64_t + safe_rshift_func_uint64_t_u_s(uint64_t _left, int _right) + { + return safe_rshift_macro_uint64_t_u_s(_left,_right); + } + + #define safe_mul_macro_int32_t_s_s(si1,si2) \ + ((((((int32_t)(si1)) > ((int32_t)0)) && (((int32_t)(si2)) > ((int32_t)0)) && (((int32_t)(si1)) > ((INT32_MAX) / ((int32_t)(si2))))) || \ + ((((int32_t)(si1)) > ((int32_t)0)) && (((int32_t)(si2)) <= ((int32_t)0)) && (((int32_t)(si2)) < ((INT32_MIN) / ((int32_t)(si1))))) || \ + ((((int32_t)(si1)) <= ((int32_t)0)) && (((int32_t)(si2)) > ((int32_t)0)) && (((int32_t)(si1)) < ((INT32_MIN) / ((int32_t)(si2))))) || \ + ((((int32_t)(si1)) <= ((int32_t)0)) && (((int32_t)(si2)) <= ((int32_t)0)) && (((int32_t)(si1)) != ((int32_t)0)) && (((int32_t)(si2)) < ((INT32_MAX) / ((int32_t)(si1)))))) \ + ? ((int32_t)(si1)) \ + : ((int32_t)(si1)) * ((int32_t)(si2))) + + static int32_t + safe_mul_func_int32_t_s_s (int32_t _si1, int32_t _si2) + { + return safe_mul_macro_int32_t_s_s(_si1,_si2); + } + + static int8_t g_39; + static volatile uint8_t g_46; + static uint8_t g_47; + static uint8_t *g_62; + static uint8_t g_79; + static int8_t g_101 = -1L; + static uint8_t *g_114; + static uint8_t *g_126; + static uint8_t g_133; + + static uint16_t func_35 (int32_t * p_36, uint64_t p_37, uint32_t p_38); + static uint16_t func_35 (int32_t * p_36, uint64_t p_37, uint32_t p_38) + { + if (g_62 != 0) + abort (); + for (g_39 = 1; g_39 < 0; g_39 = 1) + { + } + return 1; + } + + static int32_t func_19 (int32_t p_20); + static int32_t func_19 (int32_t p_20) + { + if (1 != + safe_div_func_uint64_t_u_u ((safe_div_func_int64_t_s_s (p_20, 1)), + g_101)) + { + func_35 (0, 1 <= (safe_add_func_int8_t_s_s (g_47, g_46)) > p_20 < 1, 1); + g_133 = 1; + if (g_114 != 0) + abort (); + if (g_126 != 0) + abort (); + } + return 1; + } + + static uint8_t func_2 (int32_t p_6); + static uint8_t func_2 (int32_t p_6) + { + for (1; p_6 > 1; 1) + return 0; + func_19 (g_79); + if (safe_mul_func_int32_t_s_s + ((0, 1 < (safe_rshift_func_uint64_t_u_s (1 ^ p_6, 1))), + (func_35 (&p_6, 1, 1) < 1))) + { + } + return 1; + } + + int main (void) + { + func_2 (1); + if (g_133 != 1) + abort (); + return 0; + } +