The following code...

#include <stdlib.h>
extern int *MMAPMON (int m, int *A);
extern void MMAPREM (int m, int *A, int *B);


int *MMAPGCD(p,A,B)
      int p,*A,*B;
{
      int *A1,*A2,*t,*C,m,n;


      if (((A[-1]) == 0 && (A[0]) == 0)) {
  C = MMAPMON(p,B);
  goto Return; }
      if (((B[-1]) == 0 && (B[0]) == 0)) {
  C = MMAPMON(p,A);
  goto Return; }


      m = (A[-1]);
      n = (B[-1]);
      if (m >= n) {
  A1 = MMAPMON(p,A);
  A2 = MMAPMON(p,B); }
      else {
  A1 = MMAPMON(p,B);
  A2 = MMAPMON(p,A); }
      do {
  MMAPREM(p,A1,A2);
  t = A1;
  A1 = A2;
  A2 = t; }
      while (!((A2[-1]) == 0 && (A2[0]) == 0));
      C = MMAPMON(p,A1);


      free(((A1)-1));
      free(((A2)-1));


Return:
      return(C);
}

hangs the gcc 4.4.0 and gcc-4_4-branch gcc compiler at -O2 when compiled
with...

gcc-4 -c foo.c -O2 -Wall -Wextra -Wstrict-prototypes -Wstrict- aliasing=2

The problem is observed on i686-apple-darwin9, x86_64-apple-darwin10 and
x86_64-redhat-linux. On x86_64-apple-darwin10, sampling during the hang
shows...

Sampling process 30978 for 1 seconds with 1 millisecond of run time between
samp
les
Sampling completed, processing symbols...
Analysis of sampling cc1 (pid 30978) every 1 millisecond
Call graph:
    852 Thread_2d07
      852 start
        852 toplev_main
          852 c_write_global_declarations
            852 cgraph_optimize
              852 cgraph_expand_function
                852 tree_rest_of_compilation
                  852 execute_pass_list
                    852 execute_pass_list
                      852 execute_one_pass
                        852 do_pre
                          852 execute_pre
                            850 compute_antic
                              359 phi_translate_set
                                88 sorted_array_from_bitmap_set
                                  76 sorted_array_from_bitmap_set
                                  6 bitmap_bit_p
                                    6 bitmap_bit_p
                                  6 vec_heap_o_reserve_1
                                    6 xrealloc
                                      4 xrealloc
                                      2 malloc
                                        2 malloc_zone_malloc
                                          2 szone_malloc
                                            2 szone_malloc
                                58 bitmap_insert_into_set_1
                                  36 htab_find_slot_with_hash
                                    17 vn_nary_op_eq
                                      11 types_compatible_p
                                        8 useless_type_conversion_p
                                          4 get_alias_set
                                            4 get_alias_set
                                          4 useless_type_conversion_p
                                        3 types_compatible_p
                                      3 expressions_equal_p
                                        3 expressions_equal_p
                                      3 vn_nary_op_eq
                                    15 htab_find_slot_with_hash
                                    4 pre_expr_eq
                                      4 pre_expr_eq
                                  7 bitmap_set_bit
                                    4 bitmap_set_bit
                                    2 bitmap_element_link
                                      2 bitmap_element_link
                                    1 bitmap_element_allocate
                                      1 bitmap_element_allocate
                                  6 bitmap_insert_into_set_1
                                  4 iterative_hash_hashval_t
                                    4 iterative_hash_hashval_t
                                  2 get_expr_value_id
                                    2 get_expr_value_id
                                  2 htab_find_slot
                                    2 pre_expr_hash
                                      2 pre_expr_hash
                                  1 value_id_constant_p
                                    1 bitmap_bit_p
                                      1 bitmap_bit_p
                                54 phi_translate_1
                                  35 htab_find_slot_with_hash
                                    16 htab_find_slot_with_hash
                                    11 vn_nary_op_eq
                                      8 types_compatible_p
                                        6 useless_type_conversion_p
                                          4 useless_type_conversion_p
                                          2 get_alias_set
                                            2 get_alias_set
                                        2 types_compatible_p
                                      2 vn_nary_op_eq
                                      1 expressions_equal_p
                                        1 expressions_equal_p
                                    7 pre_expr_eq
                                      7 pre_expr_eq
                                    1 expr_pred_trans_eq
                                      1 expr_pred_trans_eq
                                  10 get_expr_value_id
                                    8 get_expr_value_id
                                    2 VN_INFO
                                      2 VN_INFO
                                  6 phi_translate_1
                                  1 expr_pred_trans_eq
                                    1 expr_pred_trans_eq
                                  1 pre_expr_hash
                                    1 pre_expr_hash
                                  1 value_id_constant_p
                                    1 bitmap_bit_p
                                      1 bitmap_bit_p
                                42 htab_find_slot_with_hash
                                  20 htab_find_slot_with_hash
                                  17 vn_nary_op_eq
                                    12 types_compatible_p
                                      9 useless_type_conversion_p
                                        6 useless_type_conversion_p
                                        3 get_alias_set
                                          3 get_alias_set
                                      3 types_compatible_p
                                    3 vn_nary_op_eq
                                    2 expressions_equal_p
                                      2 expressions_equal_p
                                  3 expr_pred_trans_eq
                                    3 expr_pred_trans_eq
                                  2 pre_expr_eq
                                    2 pre_expr_eq
                                27 xmalloc
                                  23 malloc
                                    21 malloc_zone_malloc
                                      18 szone_malloc
                                        10 tiny_malloc_from_free_list
                                          10 tiny_malloc_from_free_list
                                        8 szone_malloc
                                      3 malloc_zone_malloc
                                    2 malloc
                                  4 xmalloc
                                22 bitmap_value_insert_into_set
                                  13 bitmap_set_contains_value
                                    6 bitmap_set_contains_value
                                    4 bitmap_bit_p
                                      4 bitmap_bit_p
                                    3 value_id_constant_p
                                      2 value_id_constant_p
                                      1 bitmap_bit_p
                                        1 bitmap_bit_p
                                  4 get_expr_value_id
                                    2 VN_INFO
                                      2 VN_INFO
                                    2 get_expr_value_id
                                  3 bitmap_value_insert_into_set
                                  2 value_id_constant_p
                                    1 bitmap_bit_p
                                      1 bitmap_bit_p
                                    1 value_id_constant_p
                                22 szone_free
                                  22 szone_free
                                13 iterative_hash_hashval_t
                                  13 iterative_hash_hashval_t
                                7 phi_translate_set
                                5 free
                                  5 free
                                5 phi_translate
                                  3 phi_translate
                                  2 bitmap_clear
                                    2 bitmap_clear
                                4 pre_expr_hash
                                  4 pre_expr_hash
                                3 malloc_zone_free
                                  3 malloc_zone_free
                                2 bitmap_bit_p
                                  2 bitmap_bit_p
                                2 bitmap_set_bit
                                  1 bitmap_element_allocate
                                    1 bitmap_element_allocate
                                  1 bitmap_set_bit
                                2 dyld_stub_malloc
                                  2 dyld_stub_malloc
                                1 expr_pred_trans_eq
                                  1 expr_pred_trans_eq
                                1 htab_find_slot
                                  1 htab_find_slot
                                1 vec_heap_o_reserve_1
                                  1 vec_heap_o_reserve_1
                              110 sorted_array_from_bitmap_set
                                84 sorted_array_from_bitmap_set
                                18 vec_heap_o_reserve_1
                                  16 xrealloc
                                    12 malloc
                                      11 malloc_zone_malloc
                                        10 szone_malloc
                                          5 szone_malloc
                                          5 tiny_malloc_from_free_list
                                            5 tiny_malloc_from_free_list
                                        1 malloc_zone_malloc
                                      1 malloc
                                    4 realloc
                                      4 malloc_zone_realloc
                                        3 szone_realloc
                                          2 __memcpy
                                            2 __memcpy
                                          1 szone_malloc
                                            1 szone_malloc
                                        1 memcpy
                                          1 memcpy
                                  1 dyld_stub_malloc
                                    1 dyld_stub_malloc
                                  1 vec_heap_o_reserve_1
                                8 bitmap_bit_p
                                  8 bitmap_bit_p
                              76 bitmap_set_subtract
                                23 bitmap_set_new
                                  12 bitmap_set_new
                                  6 bitmap_obstack_alloc_stat
                                    6 bitmap_obstack_alloc_stat
                                  5 pool_alloc
                                    4 pool_alloc
                                    1 xmalloc
                                      1 malloc
                                        1 malloc_zone_malloc
                                          1 szone_malloc
                                            1 tiny_malloc_from_region_no_lock
                                              1 allocate_pages
                                                1 __mmap
                                                  1 __mmap
                                22 bitmap_set_subtract
                                12 bitmap_and_compl
                                  10 bitmap_and_compl
                                  2 bitmap_elt_insert_after
                                    2 bitmap_elt_insert_after
                                10 get_expr_value_id
                                  6 get_expr_value_id
                                  4 VN_INFO
                                    4 VN_INFO
                                9 bitmap_set_bit
                                  6 bitmap_set_bit
                                  2 bitmap_element_allocate
                                    2 bitmap_element_allocate
                                  1 bitmap_element_link
                                    1 bitmap_element_link
                              65 bitmap_insert_into_set_1
                                36 htab_find_slot_with_hash
                                  20 vn_nary_op_eq
                                    16 types_compatible_p
                                      13 useless_type_conversion_p
                                        9 get_alias_set
                                          9 get_alias_set
                                        4 useless_type_conversion_p
                                      3 types_compatible_p
                                    4 vn_nary_op_eq
                                  11 htab_find_slot_with_hash
                                  5 pre_expr_eq
                                    5 pre_expr_eq
                                8 bitmap_set_bit
                                  6 bitmap_set_bit
                                  1 bitmap_element_allocate
                                    1 bitmap_element_allocate
                                  1 bitmap_element_link
                                    1 bitmap_element_link
                                5 bitmap_insert_into_set_1
                                5 get_expr_value_id
                                  4 get_expr_value_id
                                  1 VN_INFO
                                    1 VN_INFO
                                5 htab_find_slot
                                  2 htab_find_slot
                                  2 pre_expr_hash
                                    2 pre_expr_hash
                                  1 iterative_hash_hashval_t
                                    1 iterative_hash_hashval_t
                                3 iterative_hash_hashval_t
                                  3 iterative_hash_hashval_t
                                3 value_id_constant_p
                                  2 value_id_constant_p
                                  1 bitmap_bit_p
                                    1 bitmap_bit_p
                              56 compute_antic
                              42 valid_in_sets
                                15 valid_in_sets
                                10 htab_find_slot_with_hash
                                  9 htab_find_slot_with_hash
                                  1 pre_expr_eq
                                    1 pre_expr_eq
                                7 bitmap_set_contains_value
                                  5 bitmap_set_contains_value
                                  1 bitmap_bit_p
                                    1 bitmap_bit_p
                                  1 value_id_constant_p
                                    1 value_id_constant_p
                                5 iterative_hash_hashval_t
                                  5 iterative_hash_hashval_t
                                3 bitmap_bit_p
                                  3 bitmap_bit_p
                                2 htab_find_slot
                                  2 iterative_hash_hashval_t
                                    2 iterative_hash_hashval_t
                              27 bitmap_value_insert_into_set
                                10 bitmap_set_contains_value
                                  6 bitmap_set_contains_value
                                  2 bitmap_bit_p
                                    2 bitmap_bit_p
                                  2 value_id_constant_p
                                    2 bitmap_bit_p
                                      2 bitmap_bit_p
                                7 get_expr_value_id
                                  7 get_expr_value_id
                                6 bitmap_value_insert_into_set
                                2 value_id_constant_p
                                  2 bitmap_bit_p
                                    2 bitmap_bit_p
                                1 VN_INFO
                                  1 VN_INFO
                                1 bitmap_bit_p
                                  1 bitmap_bit_p
                              25 szone_free
                                17 szone_free
                                8 tiny_free_list_add_ptr
                                  8 tiny_free_list_add_ptr
                              21 iterative_hash_hashval_t
                                21 iterative_hash_hashval_t
                              16 bitmap_set_free
                                12 bitmap_obstack_free
                                  10 bitmap_elt_clear_from
                                    10 bitmap_elt_clear_from
                                  2 bitmap_obstack_free
                                4 bitmap_set_free
                              14 bitmap_set_new
                                7 bitmap_set_new
                                5 bitmap_obstack_alloc_stat
                                  5 bitmap_obstack_alloc_stat
                                2 pool_alloc
                                  2 pool_alloc
                              10 bitmap_set_and
                                8 bitmap_set_and
                                1 bitmap_bit_p
                                  1 bitmap_bit_p
                                1 bitmap_copy
                                  1 bitmap_copy
                              9 bitmap_set_bit
                                6 bitmap_set_bit
                                2 bitmap_element_link
                                  2 bitmap_element_link
                                1 bitmap_element_allocate
                                  1 bitmap_element_allocate
                              7 bitmap_remove_from_set
                                4 bitmap_clear_bit
                                  4 bitmap_clear_bit
                                2 bitmap_remove_from_set
                                1 get_expr_value_id
                                  1 get_expr_value_id
                              5 free
                                5 free
                              2 bitmap_copy
                                2 bitmap_copy
                              2 vec_heap_o_reserve_1
                                2 xrealloc
                                  2 malloc
                                    1 malloc
                                    1 malloc_zone_malloc
                                      1 szone_malloc
                                        1 szone_malloc
                              1 bitmap_equal_p
                                1 bitmap_equal_p
                              1 dyld_stub_malloc_zone_free
                                1 dyld_stub_malloc_zone_free
                              1 malloc_zone_free
                                1 malloc_zone_free
                              1 vec_heap_p_reserve
                                1 vec_heap_p_reserve
                            1 bitmap_insert_into_set_1
                              1 bitmap_insert_into_set_1
                            1 dyld_stub_free
                              1 dyld_stub_free

Total number in stack (recursive counted multiple, when >=5):
        16       bitmap_bit_p
        8       value_id_constant_p
        7       get_expr_value_id
        7       iterative_hash_hashval_t
        6       szone_malloc
        5       VN_INFO
        5       bitmap_element_allocate
        5       bitmap_set_bit
        5       htab_find_slot_with_hash
        5       malloc
        5       malloc_zone_malloc
        5       pre_expr_eq

Sort by top of stack, same collapsed (when >= 5):
        sorted_array_from_bitmap_set        160
        htab_find_slot_with_hash        71
        compute_antic        56
        iterative_hash_hashval_t        49
        szone_free        39
        bitmap_bit_p        37
        get_expr_value_id        30
        bitmap_set_bit        23
        bitmap_set_subtract        22
        bitmap_set_new        19
        pre_expr_eq        19
        get_alias_set        18
        useless_type_conversion_p        18
        bitmap_set_contains_value        17
        szone_malloc        17
        tiny_malloc_from_free_list        15
        valid_in_sets        15
        bitmap_insert_into_set_1        12
        vn_nary_op_eq        12
        bitmap_obstack_alloc_stat        11
        types_compatible_p        11
        VN_INFO        10
        bitmap_and_compl        10
        bitmap_elt_clear_from        10
        free        10
        bitmap_value_insert_into_set        9
        pre_expr_hash        9
        bitmap_set_and        8
        tiny_free_list_add_ptr        8
        phi_translate_set        7
        bitmap_element_allocate        6
        bitmap_element_link        6
        expr_pred_trans_eq        6
        expressions_equal_p        6
        phi_translate_1        6
        pool_alloc        6
        value_id_constant_p        6
Sample analysis of process 30978 written to file /dev/stdout


-- 
           Summary: gcc 4.4.0 compiles in infinite loop
           Product: gcc
           Version: 4.4.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: howarth at nitro dot med dot uc dot edu
 GCC build triplet: *-apple-darwin*
  GCC host triplet: *-apple-darwin*
GCC target triplet: *-apple-darwin*


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39999

Reply via email to