This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: MEM tracking, round 3


On i686-pc-linux-gnu the following warning regression is caused by your patch

../../gcc/gcc/config/i386/i386.c: In function `ix86_expand_builtin':
../../gcc/gcc/config/i386/i386.c:9877: warning: `op0' might be used uninitialized in this function

I think this part of your patch contains a typo:

*************** ix86_expand_builtin (exp, target, subtar
*** 10198,10213 ****
      case IX86_BUILTIN_SETPS:
        target = assign_386_stack_local (V4SFmode, 0);
-       op0 = adjust_address (target, SFmode, 0);
        arg0 = TREE_VALUE (arglist);
        arg1 = TREE_VALUE (TREE_CHAIN (arglist));
        arg2 = TREE_VALUE (TREE_CHAIN (TREE_CHAIN (arglist)));
        arg3 = TREE_VALUE (TREE_CHAIN (TREE_CHAIN (TREE_CHAIN (arglist))));
!       emit_move_insn (op0,
                      expand_expr (arg0, NULL_RTX, VOIDmode, 0));
!       emit_move_insn (adj_offsettable_operand (op0, 4),
                      expand_expr (arg1, NULL_RTX, VOIDmode, 0));
!       emit_move_insn (adj_offsettable_operand (op0, 8),
                      expand_expr (arg2, NULL_RTX, VOIDmode, 0));
!       emit_move_insn (adj_offsettable_operand (op0, 12),
                      expand_expr (arg3, NULL_RTX, VOIDmode, 0));
        op0 = gen_reg_rtx (V4SFmode);
--- 10190,10204 ----
      case IX86_BUILTIN_SETPS:
        target = assign_386_stack_local (V4SFmode, 0);
        arg0 = TREE_VALUE (arglist);
        arg1 = TREE_VALUE (TREE_CHAIN (arglist));
        arg2 = TREE_VALUE (TREE_CHAIN (TREE_CHAIN (arglist)));
        arg3 = TREE_VALUE (TREE_CHAIN (TREE_CHAIN (TREE_CHAIN (arglist))));
!       emit_move_insn (adjust_address (op0, SFmode, 0),
                      expand_expr (arg0, NULL_RTX, VOIDmode, 0));
!       emit_move_insn (adjust_address (op0, SFmode, 4),
                      expand_expr (arg1, NULL_RTX, VOIDmode, 0));
!       emit_move_insn (adjust_address (op0, SFmode, 8),
                      expand_expr (arg2, NULL_RTX, VOIDmode, 0));
!       emit_move_insn (adjust_address (op0, SFmode, 12),
                      expand_expr (arg3, NULL_RTX, VOIDmode, 0));
        op0 = gen_reg_rtx (V4SFmode);

When you apply the following on top of the current sources, things should be ok 
again.

Thanks,
jan

*** /loc_home/vanmale/cvsorg/gcc/gcc/config/i386/i386.c	Tue Jul  3 21:44:09 2001
--- i386.c	Wed Jul  4 14:24:36 2001
*************** ix86_expand_builtin (exp, target, subtar
*** 10193,10205 ****
        arg1 = TREE_VALUE (TREE_CHAIN (arglist));
        arg2 = TREE_VALUE (TREE_CHAIN (TREE_CHAIN (arglist)));
        arg3 = TREE_VALUE (TREE_CHAIN (TREE_CHAIN (TREE_CHAIN (arglist))));
!       emit_move_insn (adjust_address (op0, SFmode, 0),
  		      expand_expr (arg0, NULL_RTX, VOIDmode, 0));
!       emit_move_insn (adjust_address (op0, SFmode, 4),
  		      expand_expr (arg1, NULL_RTX, VOIDmode, 0));
!       emit_move_insn (adjust_address (op0, SFmode, 8),
  		      expand_expr (arg2, NULL_RTX, VOIDmode, 0));
!       emit_move_insn (adjust_address (op0, SFmode, 12),
  		      expand_expr (arg3, NULL_RTX, VOIDmode, 0));
        op0 = gen_reg_rtx (V4SFmode);
        emit_insn (gen_sse_movaps (op0, target));
--- 10193,10205 ----
        arg1 = TREE_VALUE (TREE_CHAIN (arglist));
        arg2 = TREE_VALUE (TREE_CHAIN (TREE_CHAIN (arglist)));
        arg3 = TREE_VALUE (TREE_CHAIN (TREE_CHAIN (TREE_CHAIN (arglist))));
!       emit_move_insn (adjust_address (target, SFmode, 0),
  		      expand_expr (arg0, NULL_RTX, VOIDmode, 0));
!       emit_move_insn (adjust_address (target, SFmode, 4),
  		      expand_expr (arg1, NULL_RTX, VOIDmode, 0));
!       emit_move_insn (adjust_address (target, SFmode, 8),
  		      expand_expr (arg2, NULL_RTX, VOIDmode, 0));
!       emit_move_insn (adjust_address (target, SFmode, 12),
  		      expand_expr (arg3, NULL_RTX, VOIDmode, 0));
        op0 = gen_reg_rtx (V4SFmode);
        emit_insn (gen_sse_movaps (op0, target));


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]