[Bug bootstrap/84405] [8 Regression] Fails to bootstrap with GCC 4.1.2, GCC 4.2.4

rguenth at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Thu Feb 15 12:14:00 GMT 2018


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84405

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Target|x86_64-*-*                  |x86_64-linux-gnu
      Known to work|                            |4.3.6
      Known to fail|                            |3.4.6, 4.1.2, 4.2.4

--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> ---
Note 3.4.6 I tested was a compiler for i?86-linux.  The hang is when compiling
the following unreduced configure test from libgcc:

/* confdefs.h */
#define PACKAGE_NAME "GNU C Runtime Library"
#define PACKAGE_TARNAME "libgcc"
#define PACKAGE_VERSION "1.0"
#define PACKAGE_STRING "GNU C Runtime Library 1.0"
#define PACKAGE_BUGREPORT ""
#define PACKAGE_URL "http://www.gnu.org/software/libgcc/"
/* end confdefs.h.  */
#include <stdarg.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
struct buf { int x; };
FILE * (*rcsopen) (struct buf *, struct stat *, int);
static char *e (p, i)
     char **p;
     int i;
{
  return p[i];
}
static char *f (char * (*g) (char **, int), char **p, ...)
{
  char *s;
  va_list v;
  va_start (v,p);
  s = g (p, va_arg (v,int));
  va_end (v);
  return s;
}

/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
   function prototypes and stuff, but not '\xHH' hex character constants.
   These don't provoke an error unfortunately, instead are silently treated
   as 'x'.  The following induces an error, until -std is added to get
   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an
   array size at least.  It's necessary to write '\x00'==0 to get something
   that's true only with -std.  */
int osf4_cc_array ['\x00' == 0 ? 1 : -1];

/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
   inside strings and character constants.  */
#define FOO(x) 'x'
int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];

int test (int i, double x);
struct s1 {int (*f) (int a);};
struct s2 {int (*f) (double a);};
int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int,
int);
int argc;
char **argv;
int
main ()
{
return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
  ;
  return 0;
}

Backtrace is

#0  0x08e48e57 in hash_map<edge_def*, auto_vec<edge_var_map, 0u>,
simple_hashmap_traits<default_hash_traits<edge_def*>, auto_vec<edge_var_map,
0u> > >::hash_entry::equal (a=..., b=@0xfffd4590: <edge 0xf71cdce0 (ENTRY ->
2)>)
    at /tmp/trunk/gcc/hash-map.h:44
#1  0x08e4828c in hash_table<hash_map<edge_def*, auto_vec<edge_var_map, 0u>,
simple_hashmap_traits<default_hash_traits<edge_def*>, auto_vec<edge_var_map,
0u> > >::hash_entry, xcallocator>::find_with_hash (this=0xb656a40, 
    comparable=@0xfffd4590: <edge 0xf71cdce0 (ENTRY -> 2)>, hash=4276329372)
    at /tmp/trunk/gcc/hash-table.h:858
#2  0x08e4784f in hash_map<edge_def*, auto_vec<edge_var_map, 0u>,
simple_hashmap_traits<default_hash_traits<edge_def*>, auto_vec<edge_var_map,
0u> > >::get (
    this=0xb656a40, k=@0xfffd4590: <edge 0xf71cdce0 (ENTRY -> 2)>)
    at /tmp/trunk/gcc/hash-map.h:161
#3  0x08e3caf7 in redirect_edge_var_map_clear (
    e=<edge 0xf71cdce0 (ENTRY -> 2)>) at /tmp/trunk/gcc/tree-ssa.c:79
#4  0x08e3cbeb in ssa_redirect_edge (e=<edge 0xf71cdce0 (ENTRY -> 2)>, 
    dest=<basic_block 0xf710c8e8 (3)>) at /tmp/trunk/gcc/tree-ssa.c:145
#5  0x08be9bf5 in gimple_redirect_edge_and_branch (
    e=<edge 0xf71cdce0 (ENTRY -> 2)>, dest=<basic_block 0xf710c8e8 (3)>)
    at /tmp/trunk/gcc/tree-cfg.c:6163
#6  0x085df140 in redirect_edge_and_branch (e=<edge 0xf71cdce0 (ENTRY -> 2)>, 
    dest=<basic_block 0xf710c8e8 (3)>) at /tmp/trunk/gcc/cfghooks.c:369
#7  0x08bde392 in gimple_split_edge (edge_in=<edge 0xf71cdce0 (ENTRY -> 2)>)
    at /tmp/trunk/gcc/tree-cfg.c:2969
#8  0x085dfab1 in split_edge (e=<edge 0xf71cdce0 (ENTRY -> 2)>)
    at /tmp/trunk/gcc/cfghooks.c:648
#9  0x08c46208 in tree_function_versioning (old_decl=
    <function_decl 0xf7236800 f>, 
    new_decl=<function_decl 0xf7241680 f.constprop>, 
    tree_map=0xf7244420 = {...}, update_clones=true, args_to_skip=0x0, 
    skip_return=false, blocks_to_copy=0x0, new_entry=<basic_block 0x0>)
    at /tmp/trunk/gcc/tree-inline.c:6055
#10 0x08621d7d in cgraph_materialize_clone (
    node=<cgraph_node* 0xf71d0424 "f.constprop">)
    at /tmp/trunk/gcc/cgraphclones.c:1024
#11 0x08622194 in symbol_table::materialize_all_clones (this=0xf71020c8)
    at /tmp/trunk/gcc/cgraphclones.c:1125
#12 0x0891eacb in (anonymous namespace)::pass_materialize_all_clones::execute (
    this=0xb5f47f8) at /tmp/trunk/gcc/ipa.c:1429
#13 0x08a6f3a7 in execute_one_pass (
    pass=<opt_pass* 0xb5f47f8 "materialize-all-clones"(90)>)
    at /tmp/trunk/gcc/passes.c:2497
#14 0x08a70419 in execute_ipa_pass_list (
    pass=<opt_pass* 0xb5f47f8 "materialize-all-clones"(90)>)
    at /tmp/trunk/gcc/passes.c:2932
#15 0x0861d030 in symbol_table::compile (this=0xf71020c8)
    at /tmp/trunk/gcc/cgraphunit.c:2589
#16 0x0861d25f in symbol_table::finalize_compilation_unit (this=0xf71020c8)
    at /tmp/trunk/gcc/cgraphunit.c:2717
#17 0x08b90f17 in compile_file () at /tmp/trunk/gcc/toplev.c:480
#18 0x08b936ce in do_compile () at /tmp/trunk/gcc/toplev.c:2097
#19 0x08b93a28 in toplev::main (this=0xfffd4ab0, argc=24, argv=0xfffd4b64)
    at /tmp/trunk/gcc/toplev.c:2232
#20 0x097f0e21 in main (argc=24, argv=0xfffd4b64) at /tmp/trunk/gcc/main.c:39

and it doesn't finish frame #1


More information about the Gcc-bugs mailing list