This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug target/23980] Bad assembly output in Thumb mode with -O2


------- 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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]