This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug target/23980] Bad assembly output in Thumb mode with -O2
- From: "czimman at bloomberg dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 20 Sep 2005 17:25:35 -0000
- Subject: [Bug target/23980] Bad assembly output in Thumb mode with -O2
- References: <20050920161531.23980.czimman@bloomberg.com>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- 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