This is the mail archive of the gcc-bugs@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]
Other format: [Raw text]

Re: optimization/8396: [sparc] optimizer ICE


Old Synopsis: optimizer ICE on SPARC
New Synopsis: [sparc] optimizer ICE

State-Changed-From-To: open->analyzed
State-Changed-By: cae
State-Changed-When: Fri Dec 20 06:49:25 2002
State-Changed-Why:
    Confirmed with 3.2 and 3.4, it is a regression from 2.95.
    An even simpler testcase is this:
    
    ---------------------------- cut ---------------------------
    struct Foo {
    	static void bar(const short xs, const short xe) {
    		if (xe && (xs < xe ))
    			;
    	}
    };
     
    int main()
    {   
    	short xe;
    	Foo::bar(0, xe);
    }
    ---------------------------- cut ---------------------------
    
    It ICEs in explow.c:731 in this function because GET_MODE(x) == HImode:
    
    rtx
    copy_to_mode_reg (mode, x)
         enum machine_mode mode;
         rtx x;
    { 
      rtx temp = gen_reg_rtx (mode);
    
      /* If not an operand, must be an address with PLUS and MULT so
         do the computation.  */
      if (! general_operand (x, VOIDmode))
        x = force_operand (x, temp);
    
      if (GET_MODE (x) != mode && GET_MODE (x) != VOIDmode)
        abort ();
      if (x != temp)
        emit_move_insn (temp, x);
      return temp;
    }
    
         regards   Christian

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


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