------- Comment #7 from ramana at gcc dot gnu dot org 2010-01-15 01:15 ------- With trunk I still see the dump as per the original attachment .
I think these 3 lines in the dump cause it to fail . The question though is why the +4 and -4 are not folded out on the ARM port D.1844_3 = (unsigned int *) D.1824_2; D.1845_4 = D.1844_3 + 4; D.1846_5 = D.1845_4 + -4; Looking at .004t.gimple I can see that this is generated out of it for the following expression. D.1820 = operator new [] (15); try { D.1846 = (unsigned int *) D.1820; D.1847 = D.1846 + 4; D.1848 = D.1847 + -4; *D.1848 = 1; D.1846 = (unsigned int *) D.1820; D.1847 = D.1846 + 4; *D.1847 = 7; D.1849 = (struct D *) D.1820; D.1850 = D.1849 + 8; smart_ptr::smart_ptr (&p, D.1850); } for ;; Function int test01() (null) ;; enabled by -tree-original { struct smart_ptr p; struct smart_ptr p; <<cleanup_point <<< Unknown tree: expr_stmt (void) smart_ptr::smart_ptr (&p, (TARGET_EXPR <D.1820, operator new [] (15)>;, *(((unsigned int *) D.1820 + 4) + -4) = 1;, *((unsigned int *) D.1820 + 4) = 7;;, (struct D *) D.1820 + 8;)) >>> >>; try { return <retval> = 0; } finally { (void) smart_ptr::~smart_ptr (&p); } } Is this a problem with the fix for PR36633 not being implemented for ARM ? Knowing that the ARM C++ ABI is slightly off in comparison to the standard but not knowing enough of the ARM C++ ABI , it appears as though the fix for PR36633 doesn't apply on the ARM EABI port. Mark : could you take a quick look and comment on this, please ? cheers Ramana -- ramana at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |mark at codesourcery dot com Known to fail| |4.5.0 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39251