From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 11212 invoked by alias); 20 Sep 2005 17:25:48 -0000 Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org Received: (qmail 11000 invoked by uid 48); 20 Sep 2005 17:25:35 -0000 Date: Tue, 20 Sep 2005 17:25:00 -0000 Message-ID: <20050920172535.10999.qmail@sourceware.org> From: "czimman at bloomberg dot com" To: gcc-bugs@gcc.gnu.org In-Reply-To: <20050920161531.23980.czimman@bloomberg.com> References: <20050920161531.23980.czimman@bloomberg.com> Reply-To: gcc-bugzilla@gcc.gnu.org Subject: [Bug target/23980] Bad assembly output in Thumb mode with -O2 X-Bugzilla-Reason: CC X-SW-Source: 2005-09/txt/msg02534.txt.bz2 List-Id: ------- Additional Comments From czimman at bloomberg dot com 2005-09-20 17:25 ------- -Wall gives a warning about i not being used, but that's it. We normally always build with -Wall enabled. Here's the preprocessed output: int mmcsd_read(void * dst, void * src, unsigned int len) { int return_val = NETI_OK; int i = 0; cyg_mutex_lock(&mmcsd.mutex); if(!mmcsd.card_initialized) { cyg_mutex_unlock(&mmcsd.mutex); printf("mmcsd_read(buf, 0x%x, %d) returnign error\n",(unsigned int) src, len); return NETI_MMCSD_CARD_UNINITIALIZED; } *((volatile CYG_WORD32 *)(({ CYG_ADDRWORD _p = (CYG_ADDRWORD)(0x00214000 + 0x24); if (_p >= 0x12000000 && _p < (0x12000000 +0x00400000)) _p = (_p & (0x00400000 -1)) + 0x00000000; else if (_p >= 0x00200000 && _p < (0x00200000 +0x00100000)) _p = (_p & (0x00100000 -1)) + 0xA0000000; _p; }))) |= ((1 << 6)); disconnect_card_detect_pullup(); if(!len) { cyg_mutex_unlock(&mmcsd.mutex); printf("mmcsd_read(buf, 0x%x, %d) returning len = 0\n",(unsigned int) src, len); return NETI_OK; } if((((unsigned int)src)/512 + len/512) > mmcsd.device_size) { cyg_mutex_unlock(&mmcsd.mutex); printf("mmcsd_read(buf, 0x%x, %d) returnign error\n",(unsigned int) src, len); return NETI_MMCSD_INVALID_CARD_ADDRESS; } if(len % 512) { cyg_mutex_unlock(&mmcsd.mutex); printf("mmcsd_read(buf, 0x%x, %d) returnign error\n",(unsigned int) src, len); return NETI_MMCSD_INVALID_CARD_ADDRESS; } if(((unsigned int)src) % 512) { cyg_mutex_unlock(&mmcsd.mutex); printf("mmcsd_read(buf, 0x%x, %d) returnign error\n",(unsigned int) src, len); return NETI_MMCSD_INVALID_CARD_ADDRESS; } if((return_val = mmcsd_dma_read_blks(dst, (unsigned int) src, len/512)) != NETI_OK) { cyg_mutex_unlock(&mmcsd.mutex); printf("mmcsd_read(buf, 0x%x, %d) returnign error\n",(unsigned int) src, len); return return_val; } connect_card_detect_pullup(); *((volatile CYG_WORD32 *)(({ CYG_ADDRWORD _p = (CYG_ADDRWORD)(0x00214000 + 0x24); if (_p >= 0x12000000 && _p < (0x12000000 +0x00400000)) _p = (_p & (0x00400000 -1)) + 0x00000000; else if (_p >= 0x00200000 && _p < (0x00200000 +0x00100000)) _p = (_p & (0x00100000 -1)) + 0xA0000000; _p; }))) = *((volatile CYG_WORD32 *)(({ CYG_ADDRWORD _p = (CYG_ADDRWORD)(0x00214000 + 0x24); if (_p >= 0x12000000 && _p < (0x12000000 +0x00400000)) _p = (_p & (0x00400000 -1)) + 0x00000000; else if (_p >= 0x00200000 && _p < (0x00200000 +0x00100000)) _p = (_p & (0x00100000 -1)) + 0xA0000000; _p; }))) & ~((1 << 6)); cyg_mutex_unlock(&mmcsd.mutex); return return_val; } -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23980