Bug 52800 - [4.8 Regression] eglibc build broken with internal compiler error in cfgloop .
Summary: [4.8 Regression] eglibc build broken with internal compiler error in cfgloop .
Status: RESOLVED FIXED
Alias: None
Product: gcc
Classification: Unclassified
Component: middle-end (show other bugs)
Version: 4.8.0
: P3 normal
Target Milestone: 4.8.0
Assignee: Richard Biener
URL:
Keywords: ice-on-valid-code
Depends on:
Blocks:
 
Reported: 2012-03-30 23:17 UTC by Ramana Radhakrishnan
Modified: 2012-04-02 12:00 UTC (History)
1 user (show)

See Also:
Host: x86_64-linux-gnu
Target: arm-linux-gnueabi
Build: x86_64-linux-gnu
Known to work:
Known to fail:
Last reconfirmed: 2012-04-02 00:00:00


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Ramana Radhakrishnan 2012-03-30 23:17:49 UTC
eglibc builds broken with trunk on arm-linux-gnueabi with an internal compiler error in cfgloop.c  - it has happened in about the last 3 days or so since my last successful build was on 27th March. 

$>  /work/cross-build/fsf/arm-none-linux-gnueabi/tools-lowersubregchanges-patched/bin/arm-none-linux-gnueabi-gcc -c -O2 ./besttry.c  -mfloat-abi=soft -march=armv5te
./besttry.c: In function ‘_IO_new_file_write’:
./besttry.c:36:1: internal compiler error: in get_loop_body, at cfgloop.c:831


__extension__ typedef int __ssize_t;
extern __thread int __libc_errno __attribute__ ((tls_model ("initial-exec")));
struct _IO_FILE {
  int _fileno;
  int _flags2;
};
typedef struct _IO_FILE _IO_FILE;
_IO_new_file_write (f,
      data,
      n)
     _IO_FILE *f;
{
  __ssize_t to_do = n;
  while (to_do>  0)
    {
      __ssize_t count =
 (__builtin_expect (f->_flags2&  2, 0) ?

  ({ unsigned int _sys_result = ({ register int _a1 asm ("r0"), _nr asm ("r7");
        int _a3tmp = (int) ((to_do));
        int _a2tmp = (int) ((data));
        register int _a2 asm ("a2") = _a2tmp;
        register int _a3 asm ("a3") = _a3tmp; _nr = ((0 + 4));
        asm volatile ("swi     0x0     @ syscall " "SYS_ify(write)" : "=r"
(_a1) : "r" (_nr) , "r" (_a1), "r" (_a2), "r" (_a3) : "memory"); _a1;
});
    if (__builtin_expect (((unsigned int) (_sys_result)>= 0xfffff001u), 0))
      { (__libc_errno = ((-(_sys_result))));
        _sys_result = (unsigned int) -1; }
    (int) _sys_result; })
  : __write (f->_fileno, data, to_do));
      if (count<  0)
 {
   break;
        }
      to_do -= count;
    }
}
Comment 1 Ramana Radhakrishnan 2012-03-30 23:34:41 UTC
Richi - probably yours - 

svn+ssh://gcc.gnu.org/svn/gcc/trunk@185913 broken 
svn+ssh://gcc.gnu.org/svn/gcc/trunk@185910 good 


regards,
Ramana
Comment 2 Richard Biener 2012-04-02 10:34:03 UTC
Fixed by

Index: gcc/cprop.c
===================================================================
--- gcc/cprop.c (revision 186066)
+++ gcc/cprop.c (working copy)
@@ -1916,7 +1916,7 @@ execute_rtl_cprop (void)
   changed = one_cprop_pass ();
   flag_rerun_cse_after_global_opts |= changed;
   if (changed)
-    cleanup_cfg (0);
+    cleanup_cfg (CLEANUP_CFG_CHANGED);
   return 0;
 }
Comment 3 Richard Biener 2012-04-02 12:00:34 UTC
Author: rguenth
Date: Mon Apr  2 12:00:30 2012
New Revision: 186081

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=186081
Log:
2012-04-02  Richard Guenther  <rguenther@suse.de>

	PR rtl-optimization/52800
	* cprop.c (execute_rtl_cprop): Call cleanup_cfg with
	CLEANUP_CFG_CHANGED.

Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/cprop.c
Comment 4 Richard Biener 2012-04-02 12:00:39 UTC
Fixed.