public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
* Re: c/6875: IA64 compiler crash when -O3
@ 2003-01-01 18:36 Nathanael Nerode
  0 siblings, 0 replies; 6+ messages in thread
From: Nathanael Nerode @ 2003-01-01 18:36 UTC (permalink / raw)
  To: vmakarov; +Cc: gcc-prs

The following reply was made to PR c/6875; it has been noted by GNATS.

From: Nathanael Nerode <neroden@twcny.rr.com>
To: gcc-gnats@gcc.gnu.org, gcc-prs@gcc.gnu.org, vmakarov@gcc.gnu.org,
   vmakarov@redhat.com, gcc-bugs@gcc.gnu.org
Cc:  
Subject: Re: c/6875: IA64 compiler crash when -O3
Date: Wed, 1 Jan 2003 13:33:55 -0500

 I see there was a patch for this, which appears not to have gone in.
 
 What's the status of this bug?  Why is it in feedback still (7 months later)?
 


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: c/6875: IA64 compiler crash when -O3
@ 2003-04-15 16:18 ehrhardt
  0 siblings, 0 replies; 6+ messages in thread
From: ehrhardt @ 2003-04-15 16:18 UTC (permalink / raw)
  To: gcc-bugs, gcc-prs, vmakarov, vmakarov

Synopsis: IA64 compiler crash when -O3

State-Changed-From-To: feedback->closed
State-Changed-By: cae
State-Changed-When: Tue Apr 15 16:18:13 2003
State-Changed-Why:
    This is essentially a duplicate of PR 7507 which is fixed with this
    patch on all active branches.
    
    2003-01-21  Christian Ehrhardt  <ehrhardt@mathematik.uni-ulm.de>
    
            PR opt/7507
            * calls.c (fix_unsafe_tree): Split out from ...
            (expand_call): ... here.  Use it on the function address too.
    
        regards   Christian
    

http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&pr=6875


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: c/6875: IA64 compiler crash when -O3
@ 2002-05-30 16:16 vmakarov
  0 siblings, 0 replies; 6+ messages in thread
From: vmakarov @ 2002-05-30 16:16 UTC (permalink / raw)
  To: gcc-bugs, gcc-prs, vmakarov, vmakarov

Synopsis: IA64 compiler crash when -O3

State-Changed-From-To: analyzed->feedback
State-Changed-By: vmakarov
State-Changed-When: Thu May 30 16:12:00 2002
State-Changed-Why:
      I don't know well the font-end.  But I see the two ways of the
    problem solution:
    
      o making another copy of tree of the call.
      o clearing RTL code for tree label declarations in the call.
    
      I prefer the 2nd solution as less expensive one.
    
      Here the patch is.  I've tried regression tests and bootstrap on
    ia64/x86 for the patch (everithin looks ok).
    
    Vlad
    
    2002-05-30  Vladimir Makarov  <vmakarov@redhat.com>
    
            * langhooks-def.h (lhd_tree_inlining_walk_tree): New function
            prototype.
            (LANG_HOOKS_TREE_INLINING_INITIALIZER): Add
            LANG_HOOKS_TREE_INLINING_WALK_TREE.
            
            * langhooks.h (lang_hooks_for_tree_inlining): New member
            `walk_tree'.
            
            * langhooks.c (lhd_tree_inlining_walk_tree): New function.
            
            * c-tree.h (c_walk_tree): New function prototype.
    
            * c-objc-common.c (c_walk_tree): New function.
    
            * c-lang.c (LANG_HOOKS_TREE_INLINING_WALK_TREE): Redefine it.
    
            * cp/cp-tree.h (cp_walk_tree): New function prototype.
    
            * cp/tree.c (cp_walk_tree): New function.
    
            * calls.c (clear_label_decls): New function.
            (expand_call): Clear labels for the second pass.
    
    Index: c-lang.c
    ===================================================================
    RCS file: /cvs/gcc/gcc/gcc/c-lang.c,v
    retrieving revision 1.74.6.2
    diff -d -c -p -r1.74.6.2 c-lang.c
    *** c-lang.c    23 May 2002 17:57:26 -0000      1.74.6.2
    --- c-lang.c    30 May 2002 19:40:58 -0000
    *************** static void c_init_options PARAMS ((void
    *** 55,60 ****
    --- 55,62 ----
      #undef LANG_HOOKS_SET_YYDEBUG
      #define LANG_HOOKS_SET_YYDEBUG c_set_yydebug
      
    + #undef LANG_HOOKS_TREE_INLINING_WALK_TREE
    + #define LANG_HOOKS_TREE_INLINING_WALK_TREE c_walk_tree
      #undef LANG_HOOKS_TREE_INLINING_CANNOT_INLINE_TREE_FN
      #define LANG_HOOKS_TREE_INLINING_CANNOT_INLINE_TREE_FN \
        c_cannot_inline_tree_fn
    Index: c-objc-common.c
    ===================================================================
    RCS file: /cvs/gcc/gcc/gcc/c-objc-common.c,v
    retrieving revision 1.3.2.2
    diff -d -c -p -r1.3.2.2 c-objc-common.c
    *** c-objc-common.c     28 Mar 2002 18:49:58 -0000      1.3.2.2
    --- c-objc-common.c     30 May 2002 19:40:58 -0000
    *************** c_missing_noreturn_ok_p (decl)
    *** 51,56 ****
    --- 51,68 ----
        return flag_hosted && MAIN_NAME_P (DECL_ASSEMBLER_NAME (decl));
      }
      
    + 
    + /* The function just calls walk_tree.  */
    + tree 
    + c_walk_tree (tp, func, data, htab)
    +      tree *tp;
    +      walk_tree_fn func;
    +      void *data;
    +      void *htab;
    + {
    +   return walk_tree (tp, func, data, htab);
    + }
    + 
      /* We want to inline `extern inline' functions even if this would
         violate inlining limits.  Some glibc and linux constructs depend on
         such functions always being inlined when optimizing.  */
    Index: c-tree.h
    ===================================================================
    RCS file: /cvs/gcc/gcc/gcc/c-tree.h,v
    retrieving revision 1.81.2.2
    diff -d -c -p -r1.81.2.2 c-tree.h
    *** c-tree.h    28 Mar 2002 18:49:58 -0000      1.81.2.2
    --- c-tree.h    30 May 2002 19:40:58 -0000
    *************** extern void c_expand_decl_stmt          
    *** 221,226 ****
    --- 221,228 ----
      
      
      /* in c-objc-common.c */
    + extern tree c_walk_tree                               PARAMS ((tree *, walk_tree_fn,
    +                                                        void *, void *));
      extern int c_disregard_inline_limits          PARAMS ((tree));
      extern int c_cannot_inline_tree_fn            PARAMS ((tree *));
      extern const char *c_objc_common_init         PARAMS ((const char *));
    Index: calls.c
    ===================================================================
    RCS file: /cvs/gcc/gcc/gcc/calls.c,v
    retrieving revision 1.221.2.2
    diff -d -c -p -r1.221.2.2 calls.c
    *** calls.c     4 Apr 2002 23:28:47 -0000       1.221.2.2
    --- calls.c     30 May 2002 19:40:59 -0000
    *************** Software Foundation, 59 Temple Place - S
    *** 27,32 ****
    --- 27,33 ----
      #include "expr.h"
      #include "libfuncs.h"
      #include "function.h"
    + #include "langhooks.h"
      #include "regs.h"
      #include "toplev.h"
      #include "output.h"
    *************** static int flags_from_decl_or_type              PAR
    *** 219,226 ****
      static rtx try_to_integrate                   PARAMS ((tree, tree, rtx,
                                                             int, tree, rtx));
      static int check_sibcall_argument_overlap_1   PARAMS ((rtx));
    ! static int check_sibcall_argument_overlap     PARAMS ((rtx, struct arg_data *));
    ! 
      static int combine_pending_stack_adjustment_and_call
                                                      PARAMS ((int, struct args_size *, int));
      
    --- 220,229 ----
      static rtx try_to_integrate                   PARAMS ((tree, tree, rtx,
                                                             int, tree, rtx));
      static int check_sibcall_argument_overlap_1   PARAMS ((rtx));
    ! static int check_sibcall_argument_overlap     PARAMS ((rtx,
    !                                                        struct arg_data *));
    ! static tree clear_label_decls                 PARAMS ((tree *, int *,
    !                                                        void *));
      static int combine_pending_stack_adjustment_and_call
                                                      PARAMS ((int, struct args_size *, int));
      
    *************** check_sibcall_argument_overlap (insn, ar
    *** 2062,2067 ****
    --- 2065,2090 ----
        return insn != NULL_RTX;
      }
      
    + /* The following function is called by tree inline hook walk_tree to
    +    clear rtl code for the labels.  */
    + 
    + static tree
    + clear_label_decls (tp, walk_subtrees, data)
    +      tree *tp;
    +      int *walk_subtrees;
    +      void *data ATTRIBUTE_UNUSED;
    + {
    +   *walk_subtrees = 1;
    +   if (TREE_CODE (*tp) == LABEL_DECL)
    +     {
    +       SET_DECL_RTL (*tp, NULL);
    +       *walk_subtrees = 0;
    +     }
    + 
    +   /* Keep iterating.  */
    +   return NULL_TREE;
    + }
    + 
      /* Generate all the code for a function call
         and return an rtx for its value.
         Store the value in TARGET (specified as an rtx) if convenient.
    *************** expand_call (exp, target, ignore)
    *** 2659,2664 ****
    --- 2682,2694 ----
                 able to get rid of them.  */
              expand_start_target_temps ();
            }
    + 
    +       if (pass != 0)
    +       /* EXP may contain label declaration whose LABEL_CODE will be
    +            not defined in the normal call code (2nd pass) unless we
    +            clear its RTL code generated for the sibling call.  */
    +       (*lang_hooks.tree_inlining.walk_tree) (&exp, clear_label_decls,
    +                                              NULL, NULL);
      
            /* Don't let pending stack adjusts add up to too much.
             Also, do all pending adjustments now if there is any chance
    Index: langhooks-def.h
    ===================================================================
    RCS file: /cvs/gcc/gcc/gcc/langhooks-def.h,v
    retrieving revision 1.8.10.2
    diff -d -c -p -r1.8.10.2 langhooks-def.h
    *** langhooks-def.h     23 May 2002 17:57:27 -0000      1.8.10.2
    --- langhooks-def.h     30 May 2002 19:40:59 -0000
    *************** extern void lhd_print_tree_nothing PARAM
    *** 50,55 ****
    --- 50,57 ----
      extern void lhd_set_yydebug PARAMS ((int));
      
      /* Declarations of default tree inlining hooks.  */
    + tree lhd_tree_inlining_walk_tree              PARAMS ((tree *, walk_tree_fn,
    +                                                        void *, void *));
      tree lhd_tree_inlining_walk_subtrees          PARAMS ((tree *, int *,
                                                             walk_tree_fn,
                                                             void *, void *));
    *************** tree lhd_tree_inlining_convert_parm_for_
    *** 87,92 ****
    --- 89,95 ----
      #define LANG_HOOKS_SET_YYDEBUG                lhd_set_yydebug
      
      /* Tree inlining hooks.  */
    + #define LANG_HOOKS_TREE_INLINING_WALK_TREE lhd_tree_inlining_walk_tree
      #define LANG_HOOKS_TREE_INLINING_WALK_SUBTREES lhd_tree_inlining_walk_subtrees
      #define LANG_HOOKS_TREE_INLINING_CANNOT_INLINE_TREE_FN \
        lhd_tree_inlining_cannot_inline_tree_fn
    *************** tree lhd_tree_inlining_convert_parm_for_
    *** 110,115 ****
    --- 113,119 ----
        lhd_tree_inlining_convert_parm_for_inlining
      
      #define LANG_HOOKS_TREE_INLINING_INITIALIZER { \
    +   LANG_HOOKS_TREE_INLINING_WALK_TREE, \
        LANG_HOOKS_TREE_INLINING_WALK_SUBTREES, \
        LANG_HOOKS_TREE_INLINING_CANNOT_INLINE_TREE_FN, \
        LANG_HOOKS_TREE_INLINING_DISREGARD_INLINE_LIMITS, \
    Index: langhooks.c
    ===================================================================
    RCS file: /cvs/gcc/gcc/gcc/langhooks.c,v
    retrieving revision 1.16.2.2
    diff -d -c -p -r1.16.2.2 langhooks.c
    *** langhooks.c 21 Mar 2002 23:12:21 -0000      1.16.2.2
    --- langhooks.c 30 May 2002 19:40:59 -0000
    *************** hook_get_alias_set_0 (t)
    *** 126,131 ****
    --- 126,143 ----
        return 0;
      }
      
    + /* This is the default function for lang_hooks.tree_inlining.walk_tree.  */
    + 
    + tree
    + lhd_tree_inlining_walk_tree (tp, func, data, htab)
    +      tree *tp ATTRIBUTE_UNUSED;
    +      walk_tree_fn func ATTRIBUTE_UNUSED;
    +      void *data ATTRIBUTE_UNUSED;
    +      void *htab ATTRIBUTE_UNUSED;
    + {
    +   return NULL_TREE;
    + }
    + 
      /* lang_hooks.tree_inlining.walk_subtrees is called by walk_tree()
         after handling common cases, but before walking code-specific
         sub-trees.  If this hook is overridden for a language, it should
    Index: langhooks.h
    ===================================================================
    RCS file: /cvs/gcc/gcc/gcc/langhooks.h,v
    retrieving revision 1.15.8.2
    diff -d -c -p -r1.15.8.2 langhooks.h
    *** langhooks.h 23 May 2002 17:57:28 -0000      1.15.8.2
    --- langhooks.h 30 May 2002 19:40:59 -0000
    *************** typedef void (*lang_print_tree_hook) PAR
    *** 29,34 ****
    --- 29,39 ----
      
      struct lang_hooks_for_tree_inlining
      {
    +   union tree_node *(*walk_tree) PARAMS ((union tree_node **,
    +                                        union tree_node *(*)
    +                                        (union tree_node **,
    +                                         int *, void *),
    +                                        void *, void *));
        union tree_node *(*walk_subtrees) PARAMS ((union tree_node **, int *,
                                                 union tree_node *(*)
                                                 (union tree_node **,
    Index: cp/cp-tree.h
    ===================================================================
    RCS file: /cvs/gcc/gcc/gcc/cp/cp-tree.h,v
    retrieving revision 1.681.2.12
    diff -d -c -p -r1.681.2.12 cp-tree.h
    *** cp/cp-tree.h        23 May 2002 17:57:42 -0000      1.681.2.12
    --- cp/cp-tree.h        30 May 2002 19:40:59 -0000
    *************** extern int char_type_p                  
    *** 4280,4285 ****
    --- 4280,4287 ----
      extern void verify_stmt_tree                    PARAMS ((tree));
      extern tree find_tree                           PARAMS ((tree, tree));
      extern linkage_kind decl_linkage                PARAMS ((tree));
    + extern tree cp_walk_tree                      PARAMS ((tree *, walk_tree_fn,
    +                                                        void *, void *));
      extern tree cp_walk_subtrees PARAMS ((tree*, int*, walk_tree_fn,
                                          void*, void*));
      extern int cp_cannot_inline_tree_fn PARAMS ((tree*));
    Index: cp/tree.c
    ===================================================================
    RCS file: /cvs/gcc/gcc/gcc/cp/tree.c,v
    retrieving revision 1.268.2.4
    diff -d -c -p -r1.268.2.4 tree.c
    *** cp/tree.c   16 May 2002 02:09:15 -0000      1.268.2.4
    --- cp/tree.c   30 May 2002 19:41:00 -0000
    *************** make_ptrmem_cst (type, member)
    *** 2077,2082 ****
    --- 2077,2094 ----
        return ptrmem_cst;
      }
      
    + /* The function just calls walk_tree.  */
    + 
    + tree 
    + cp_walk_tree (tp, func, data, htab)
    +      tree *tp;
    +      walk_tree_fn func;
    +      void *data;
    +      void *htab;
    + {
    +   return walk_tree (tp, func, data, htab);
    + }
    + 
      /* Apply FUNC to all language-specific sub-trees of TP in a pre-order
         traversal.  Called from walk_tree().  */
      

http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&pr=6875


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: c/6875: IA64 compiler crash when -O3
@ 2002-05-30 16:12 vmakarov
  0 siblings, 0 replies; 6+ messages in thread
From: vmakarov @ 2002-05-30 16:12 UTC (permalink / raw)
  To: gcc-bugs, gcc-prs, vmakarov, vmakarov

Synopsis: IA64 compiler crash when -O3

State-Changed-From-To: open->analyzed
State-Changed-By: vmakarov
State-Changed-When: Thu May 30 16:10:13 2002
State-Changed-Why:
    The problem occurs because tree inliner creates a label in
    
    expand_call_inline (tp, walk_subtrees, data)
    {
      ...
      /* Return statements in the function body will be replaced by jumps
         to the RET_LABEL.  */
      id->ret_label = build_decl (LABEL_DECL, NULL_TREE, NULL_TREE);
      ...
    }
    
    The label is expanded twice in expand_call for normal call and sibling
    call.  The corresponding RTL CODE_LABEL is generated only once for sibling call
    because of the standard code:
    
    rtx
    label_rtx (label)
         tree label;
    {
      if (TREE_CODE (label) != LABEL_DECL)
        abort ();
    
      if (!DECL_RTL_SET_P (label))
        SET_DECL_RTL (label, gen_label_rtx ());
    
      return DECL_RTL (label);
    }
    
    So we have usage of the RTL label in two code sequences and the
    CODE_LABEL (29) only definitio in sibling call.  Here the code for
    sibling code:
    
    (note 11 0 13 0x20000000006e6c80 NOTE_INSN_BLOCK_BEG)
    
    (insn 13 11 14 (set (reg:SI 343)
            (const_int 1 [0x1])) -1 (nil)
        (expr_list:REG_EQUAL (const_int 1 [0x1])
            (nil)))
    
    (insn 14 13 15 (set (mem/f:SI (addressof:DI (reg/v:SI 342) 341 0x20000000006edfb0) [2 x+0 S4 A32])
            (reg:SI 343)) -1 (nil)
        (nil))
    
    (note 15 14 16 NOTE_INSN_DELETED)
    
    (note 16 15 18 NOTE_INSN_DELETED)
    
    (insn 18 16 20 (set (reg:DI 120 out0)
            (addressof:DI (reg/v:SI 342) 341 0x20000000006edfb0)) -1 (nil)
        (nil))
    
    (insn 20 18 21 (set (reg:DI 345)
            (reg:DI 1 r1)) -1 (nil)
        (nil))
    
    (call_insn 21 20 23 (parallel[ 
                (set (reg:SI 8 r8)
                    (call (mem:DI (symbol_ref/v:DI ("nothing")) [0 S8 A64])
                        (const_int 1 [0x1])))
                (use (unspec[ 
                            (reg:DI 1 r1)
                        ]  9))
                (clobber (reg:DI 320 b0))
            ] ) -1 (nil)
        (nil)
        (expr_list (use (reg:DI 120 out0))
            (nil)))
    
    (insn 23 21 24 (set (reg:DI 1 r1)
            (reg:DI 345)) -1 (nil)
        (nil))
    
    (insn 24 23 25 (set (reg:DI 346)
            (plus:DI (reg:DI 1 r1)
                (symbol_ref/v:DI ("fi")))) -1 (nil)
        (nil))
    
    (insn 25 24 26 (set (reg/v/f:DI 344)
            (mem/u:DI (reg:DI 346) [0 S8 A64])) -1 (nil)
        (nil))
    
    (jump_insn 26 25 27 (set (pc)
            (label_ref 29)) -1 (nil)
        (nil))
    
    (barrier 27 26 28)
    
    (note 28 27 29 0x20000000006e6c80 NOTE_INSN_BLOCK_END)
    
    (code_label 29 28 31 2 "" "" [0 uses])
    
    ^^^^^^^^^^^^^^^^^^^
    
    (insn 31 29 33 (set (reg:SI 120 out0)
            (const_int 2 [0x2])) -1 (nil)
        (nil))
    
    (insn 33 31 35 (set (reg:DI 345)
            (reg:DI 1 r1)) -1 (nil)
        (nil))
    
    (insn 35 33 37 (set (reg:DI 347)
            (mem:DI (reg/v/f:DI 344) [0 S8 A64])) -1 (nil)
        (nil))
    
    (insn 37 35 38 (set (reg:DI 348)
            (reg/v/f:DI 344)) -1 (nil)
        (nil))
    
    (insn 38 37 40 (set (reg/f:DI 349)
            (plus:DI (reg/v/f:DI 344)
                (const_int 8 [0x8]))) -1 (nil)
        (nil))
    
    (insn 40 38 41 (set (reg:DI 1 r1)
            (mem:DI (reg/f:DI 349) [0 S8 A64])) -1 (nil)
        (nil))
    
    (call_insn 41 40 43 (parallel[ 
                (set (reg:SI 8 r8)
                    (call (mem:DI (reg:DI 347) [0 S8 A64])
                        (const_int 1 [0x1])))
                (use (unspec[ 
                            (reg:DI 1 r1)
                        ]  9))
                (clobber (reg:DI 320 b0))
            ] ) -1 (nil)
        (nil)
        (expr_list (use (reg:SI 120 out0))
            (nil)))
    
    (insn 43 41 45 (set (reg:DI 1 r1)
            (reg:DI 345)) -1 (nil)
        (nil))
    
    (insn 45 43 0 (set (reg:SI 350)
            (reg:SI 8 r8)) -1 (nil)
        (nil))
    
      Here the code for normal call is:
    
    
    (note 50 0 52 0x20000000006e6c80 NOTE_INSN_BLOCK_BEG)
    
    (insn 52 50 53 (set (reg:SI 351)
            (const_int 1 [0x1])) -1 (nil)
        (expr_list:REG_EQUAL (const_int 1 [0x1])
            (nil)))
    
    (insn 53 52 54 (set (mem/f:SI (addressof:DI (reg/v:SI 342) 341 0x20000000006edfb0) [2 x+0 S4 A32])
            (reg:SI 351)) -1 (nil)
        (nil))
    
    (note 54 53 55 NOTE_INSN_DELETED)
    
    (note 55 54 57 NOTE_INSN_DELETED)
    
    (insn 57 55 59 (set (reg:DI 120 out0)
            (addressof:DI (reg/v:SI 342) 341 0x20000000006edfb0)) -1 (nil)
        (nil))
    
    (insn 59 57 60 (set (reg:DI 345)
            (reg:DI 1 r1)) -1 (nil)
        (nil))
    
    (call_insn 60 59 62 (parallel[ 
                (set (reg:SI 8 r8)
                    (call (mem:DI (symbol_ref/v:DI ("nothing")) [0 S8 A64])
                        (const_int 1 [0x1])))
                (use (unspec[ 
                            (reg:DI 1 r1)
                        ]  9))
                (clobber (reg:DI 320 b0))
            ] ) -1 (nil)
        (nil)
        (expr_list (use (reg:DI 120 out0))
            (nil)))
    
    (insn 62 60 63 (set (reg:DI 1 r1)
            (reg:DI 345)) -1 (nil)
        (nil))
    
    (insn 63 62 64 (set (reg:DI 352)
            (plus:DI (reg:DI 1 r1)
                (symbol_ref/v:DI ("fi")))) -1 (nil)
        (nil))
    
    (insn 64 63 65 (set (reg/v/f:DI 344)
            (mem/u:DI (reg:DI 352) [0 S8 A64])) -1 (nil)
        (nil))
    
    (jump_insn 65 64 66 (set (pc)
            (label_ref 29)) -1 (nil)
        (nil))
    
    ^^^^^^^^^^^^^^^^^^^^  There is no corresponding label_code.
    
    (barrier 66 65 67)
    
    (note 67 66 69 0x20000000006e6c80 NOTE_INSN_BLOCK_END)
    
    (insn 69 67 71 (set (reg:SI 120 out0)
            (const_int 2 [0x2])) -1 (nil)
        (nil))
    
    (insn 71 69 73 (set (reg:DI 345)
            (reg:DI 1 r1)) -1 (nil)
        (nil))
    
    (insn 73 71 75 (set (reg:DI 353)
            (mem:DI (reg/v/f:DI 344) [0 S8 A64])) -1 (nil)
        (nil))
    
    (insn 75 73 76 (set (reg:DI 354)
            (reg/v/f:DI 344)) -1 (nil)
        (nil))
    
    (insn 76 75 78 (set (reg/f:DI 355)
            (plus:DI (reg/v/f:DI 344)
                (const_int 8 [0x8]))) -1 (nil)
        (nil))
    
    (insn 78 76 79 (set (reg:DI 1 r1)
            (mem:DI (reg/f:DI 355) [0 S8 A64])) -1 (nil)
        (nil))
    
    (call_insn 79 78 81 (parallel[ 
                (set (reg:SI 8 r8)
                    (call (mem:DI (reg:DI 353) [0 S8 A64])
                        (const_int 1 [0x1])))
                (use (unspec[ 
                            (reg:DI 1 r1)
                        ]  9))
                (clobber (reg:DI 320 b0))
            ] ) -1 (nil)
        (nil)
        (expr_list (use (reg:SI 120 out0))
            (nil)))
    
    (insn 81 79 83 (set (reg:DI 1 r1)
            (reg:DI 345)) -1 (nil)
        (nil))
    
    (insn 83 81 0 (set (reg:SI 356)
            (reg:SI 8 r8)) -1 (nil)
        (nil))
    
    
      After that the normal call code is choosen in sibling optimization
    and the compiler crashes in cfg.c
    
    Program received signal SIGSEGV, Segmentation fault.
    cached_make_edge (edge_cache=0x0, src=0x600000000010a670, dst=0x0, flags=0)
        at /home/vmakarov/build/gcc-31-branch/gcc/gcc/cfg.c:307
    

http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&pr=6875


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: c/6875: IA64 compiler crash when -O3
@ 2002-05-30 16:10 vmakarov
  0 siblings, 0 replies; 6+ messages in thread
From: vmakarov @ 2002-05-30 16:10 UTC (permalink / raw)
  To: gcc-bugs, gcc-prs, nobody, vmakarov, vmakarov

Synopsis: IA64 compiler crash when -O3

Responsible-Changed-From-To: unassigned->vmakarov
Responsible-Changed-By: vmakarov
Responsible-Changed-When: Thu May 30 16:08:19 2002
Responsible-Changed-Why:
    I am working on this.

http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&pr=6875


^ permalink raw reply	[flat|nested] 6+ messages in thread

* c/6875: IA64 compiler crash when -O3
@ 2002-05-30 16:08 vmakarov
  0 siblings, 0 replies; 6+ messages in thread
From: vmakarov @ 2002-05-30 16:08 UTC (permalink / raw)
  To: gcc-gnats


>Number:         6875
>Category:       c
>Synopsis:       IA64 compiler crash when -O3
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Thu May 30 16:06:00 PDT 2002
>Closed-Date:
>Last-Modified:
>Originator:     Vladimir Makarov
>Release:        3.1 and the main line
>Organization:
>Environment:
ia64-unknown-linux
>Description:
  Hello, IA64 compiler (the 3.1 branch and the main line) crashes on
the following program with -O3

extern void foo  (int);
extern int something(int);
extern int nothing(int *);
int fi (int i) { return something(i); }
typedef int (*pfi)(int i);
pfi bar(int x) { nothing(&x); return &fi; }

main ()
{
  foo (bar (1)(2));
}

b.i: In function `main':
b.i:11: internal error: Segmentation fault
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://www.gnu.org/software/gcc/bugs.html> for instructions.

>How-To-Repeat:
Compile the test with -O3
>Fix:

>Release-Note:
>Audit-Trail:
>Unformatted:


^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2003-04-15 16:18 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-01-01 18:36 c/6875: IA64 compiler crash when -O3 Nathanael Nerode
  -- strict thread matches above, loose matches on Subject: below --
2003-04-15 16:18 ehrhardt
2002-05-30 16:16 vmakarov
2002-05-30 16:12 vmakarov
2002-05-30 16:10 vmakarov
2002-05-30 16:08 vmakarov

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).