public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
* Re: optimization/2692: excessive compile time with optimization
@ 2002-04-12 16:43 rth
  0 siblings, 0 replies; 6+ messages in thread
From: rth @ 2002-04-12 16:43 UTC (permalink / raw)
  To: gcc-bugs, gcc-prs, rth, snyder

Synopsis: excessive compile time with optimization

State-Changed-From-To: open->analyzed
State-Changed-By: rth
State-Changed-When: Fri Apr 12 16:43:50 2002
State-Changed-Why:
    http://gcc.gnu.org/ml/gcc-patches/2002-04/msg00626.html
    Doesn't actually work, but highlights the problem.
    
    

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


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

* Re: optimization/2692: excessive compile time with optimization
@ 2002-04-02  1:56 Richard Henderson
  0 siblings, 0 replies; 6+ messages in thread
From: Richard Henderson @ 2002-04-02  1:56 UTC (permalink / raw)
  To: rth; +Cc: gcc-prs

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

From: Richard Henderson <rth@redhat.com>
To: Scott Snyder <snyder@fnal.gov>
Cc: rth@gcc.gnu.org, gcc-bugs@gcc.gnu.org, gcc-prs@gcc.gnu.org,
   nobody@gcc.gnu.org, gcc-gnats@gcc.gnu.org
Subject: Re: optimization/2692: excessive compile time with optimization
Date: Tue, 2 Apr 2002 01:49:27 -0800

 FWIW, 3.1 20020326 "only" took 12 minutes to compile this
 test case, and "only" used 45MB.  CPU users were
 
  expand                : 438.54 (63%) usr   0.11 ( 4%) sys 438.62 (62%) wall
  reload CSE regs       :  93.51 (14%) usr   0.01 ( 0%) sys  93.50 (13%) wall
  global alloc          :  77.31 (11%) usr   0.05 ( 2%) sys  77.38 (11%) wall
  regmove               :  46.59 ( 7%) usr   0.01 ( 0%) sys  46.56 ( 7%) wall
 
 
 r~


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

* Re: optimization/2692: excessive compile time with optimization
@ 2002-04-02  1:34 rth
  0 siblings, 0 replies; 6+ messages in thread
From: rth @ 2002-04-02  1:34 UTC (permalink / raw)
  To: gcc-bugs, gcc-prs, nobody, rth, snyder

Synopsis: excessive compile time with optimization

Responsible-Changed-From-To: unassigned->rth
Responsible-Changed-By: rth
Responsible-Changed-When: Tue Apr  2 01:34:53 2002
Responsible-Changed-Why:
    .
State-Changed-From-To: feedback->open
State-Changed-By: rth
State-Changed-When: Tue Apr  2 01:34:53 2002
State-Changed-Why:
    Got test case.

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


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

* Re: optimization/2692: excessive compile time with optimization
@ 2002-04-02  1:16 Scott Snyder
  0 siblings, 0 replies; 6+ messages in thread
From: Scott Snyder @ 2002-04-02  1:16 UTC (permalink / raw)
  To: nobody; +Cc: gcc-prs

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

From: Scott Snyder <snyder@fnal.gov>
To: rth@gcc.gnu.org, gcc-bugs@gcc.gnu.org, gcc-prs@gcc.gnu.org,
        nobody@gcc.gnu.org, snyder@fnal.gov, gcc-gnats@gcc.gnu.org
Cc:  
Subject: Re: optimization/2692: excessive compile time with optimization
Date: 02 Apr 2002 03:11:25 -0600

 From: scott snyder <snyder@fnal.gov>
 Subject: optimization/2692: excessive compile time with optimization
 To: gcc-bugs@gcc.gnu.org
 Date: Fri, 18 May 2001 15:34:07 -0500
 
 
 hi -
 
 I just noticed that somehow the code sample for this report didn't make
 it into gnats.  I'm not sure what happened --- it's in my local copy
 of the report that i saved before sending it.
 
 Anyway, here's the complete version, including the code.
 
 sss
 
 SEND-PR: -*- send-pr -*-
 SEND-PR: Lines starting with `SEND-PR' will be removed automatically, as
 SEND-PR: will all comments (text enclosed in `<' and `>').
 SEND-PR: 
 SEND-PR: Please consult the GCC manual if you are not sure how to
 SEND-PR: fill out a problem report.
 SEND-PR: Note that the Synopsis field is mandatory.  The Subject (for
 SEND-PR: the mail) will be made the same as Synopsis unless explicitly
 SEND-PR: changed.
 SEND-PR:
 SEND-PR: Choose from the following categories:
 SEND-PR:
 SEND-PR: c++ c debug fortran java libf2c libgcj libobjc libstdc++ middle-end objc optimization other preprocessor target web 
 SEND-PR: 
 SEND-PR:
 To: gcc-gnats@gcc.gnu.org
 Subject: excessive compile time with optimization
 From: snyder@fnal.gov
 Reply-To: snyder@fnal.gov
 Cc: 
 X-send-pr-version: 3.113
 X-GNATS-Notify: 
 
 
 >Submitter-Id:	net
 >Originator:	scott snyder
 >Organization:	<organization of PR author (multiple lines)>
 >Confidential:	no
 SEND-PR: Leave "Confidential" as "no"; all GCC PRs are public.
 >Synopsis:	excessive compile time with optimization
 >Severity:	serious
 SEND-PR: critical     GCC is completely not operational; no work-around known.
 SEND-PR: serious      GCC is not working properly; a work-around is possible.
 SEND-PR: non-critical Report indicates minor problem.
 >Priority:	low
 SEND-PR: high         A solution is necessary as soon as possible.
 SEND-PR: medium       The problem should be solved in the next release.
 SEND-PR: low          The problem should be solve in a future release.
 >Category:	optimization
 >Class:		sw-bug
 SEND-PR: doc-bug          The doumentation is incorrect.
 SEND-PR: accepts-illegal  GCC fails to reject erroneous code.
 SEND-PR: rejects-legal    GCC gives an error message for correct code.
 SEND-PR: wrong-code       The machine code generated by gcc is incorrect.
 SEND-PR: ice-on-legal-code   GCC gives an Internal Compiler Error (ICE)
 SEND-PR:                     for correct code
 SEND-PR: ice-on-illegal-code GCC gives an ICE instead of reporting an error
 SEND-PR: pessimizes-code     GCC misses an important optimization opportunity
 SEND-PR: sw-bug              Software bug of some other class than above
 SEND-PR: change-request      A feature in GCC is missing.
 SEND-PR: support             I need help with gcc.
 >Release:	3.0 20010429 (prerelease)
 >Environment:
 System: Linux karma 2.2.16-22 #1 Tue Aug 22 16:49:06 EDT 2000 i686 unknown
 Architecture: i686
 
 	<machine, os, target, libraries (multiple lines)>
 host: i686-pc-linux-gnu
 build: i686-pc-linux-gnu
 target: i686-pc-linux-gnu
 configured with: ../egcs/configure --prefix=/usr/local/egcs --enable-threads=posix --enable-long-long
 >Description:
 
 If i try to compile the source below with -O2, gcc runs for over 45 minutes
 and grows to over 300 MB.  On my machine, it exhausts the available
 swap space and dies before completing.
 
 Without optimization, it completes in a couple minutes.
 
 gcc 2.95.2 dies immediately with an ICE on this source, regardless
 of whether or not optimization is on, so i guess this isn't a regression.
 
 >How-To-Repeat:
 
 
 namespace std
 {
 
 
   class dcomplex
   {
   public:
     typedef double value_type;
 
     dcomplex(double  =0.0, double =0.0);
         
     double real() const;
     double imag() const;
         
     dcomplex& operator=(double);
     
     dcomplex& operator=(const dcomplex&);
     dcomplex& operator+=(const dcomplex&);
     dcomplex& operator-=(const dcomplex&);
     dcomplex& operator*=(const dcomplex&);
     
   private:
     typedef __complex__ double _ComplexT;
     _ComplexT _M_value;
 
     dcomplex(_ComplexT __z) : _M_value(__z) { }
   };
 
 inline dcomplex
 operator*(const dcomplex& __x, const dcomplex& __y)
 { return dcomplex (__x) *= __y; }
 
 inline dcomplex
 operator-(const dcomplex& __x, const dcomplex& __y)
 { return dcomplex (__x) -= __y; }
 
 inline dcomplex
 operator+(const dcomplex& __x, const dcomplex& __y)
 { return dcomplex (__x) += __y; }
 
   inline double
   dcomplex::real() const
   { return __real__ _M_value; }
 
   inline double
   dcomplex::imag() const
   { return __imag__ _M_value; }
 
   inline
   dcomplex::dcomplex(double __r, double __i)
   {
     __real__ _M_value = __r;
     __imag__ _M_value = __i;
   }
 
   inline dcomplex&
   dcomplex::operator=(double __d)
   {
     __real__ _M_value = __d;
     __imag__ _M_value = 0.0;
     return *this;
   }
 
 
 
     inline dcomplex&
     dcomplex::operator=(const dcomplex& __z)
     {
       __real__ _M_value = __z.real();
       __imag__ _M_value = __z.imag();
       return *this;
     }
     
     inline dcomplex&
     dcomplex::operator+=(const dcomplex& __z)
     {
       __real__ _M_value += __z.real();
       __imag__ _M_value += __z.imag();
       return *this;
     }
 
     inline dcomplex&
     dcomplex::operator-=(const dcomplex& __z)
     {
       __real__ _M_value -= __z.real();
       __imag__ _M_value -= __z.imag();
       return *this;
     }
 
     inline dcomplex&
     dcomplex::operator*=(const dcomplex& __z)
     {
       _ComplexT __t;
       __real__ __t = __z.real();
       __imag__ __t = __z.imag();
       _M_value *= __t;
       return *this;
     }
 
 
 } // namespace std
 
 
 
 
 
 typedef std::dcomplex Complex8;
 
 Complex8 determinant(Complex8 _m[6][6])
 {
   Complex8 ret  ( 0.0, 0.0 );
   Complex8 ret5 ( 0.0, 0.0 );
   Complex8 ret4 ( 0.0, 0.0 );
   Complex8 ret3 ( 0.0, 0.0 );
 
   ret3 =
     ( _m[0][0] * _m[1][1] - _m[0][1] * _m[1][0] ) * _m[2][2]
   + ( _m[0][1] * _m[1][2] - _m[0][2] * _m[1][1] ) * _m[2][0]
   + ( _m[0][2] * _m[1][0] - _m[0][0] * _m[1][2] ) * _m[2][1];
 
   ret4 += _m[3][3] * ret3;
 
   ret3 =
     ( _m[0][3] * _m[1][2] - _m[0][2] * _m[1][3] ) * _m[2][1]
   + ( _m[0][1] * _m[1][3] - _m[0][3] * _m[1][1] ) * _m[2][2]
   + ( _m[0][2] * _m[1][1] - _m[0][1] * _m[1][2] ) * _m[2][3];
 
   ret4 += _m[3][0] * ret3;
 
   ret3 =
     ( _m[0][0] * _m[1][2] - _m[0][2] * _m[1][0] ) * _m[2][3]
   + ( _m[0][2] * _m[1][3] - _m[0][3] * _m[1][2] ) * _m[2][0]
   + ( _m[0][3] * _m[1][0] - _m[0][0] * _m[1][3] ) * _m[2][2];
 
   ret4 += _m[3][1] * ret3;
 
   ret3 =
     ( _m[0][0] * _m[1][3] - _m[0][3] * _m[1][0] ) * _m[2][1]
   + ( _m[0][1] * _m[1][0] - _m[0][0] * _m[1][1] ) * _m[2][3]
   + ( _m[0][3] * _m[1][1] - _m[0][1] * _m[1][3] ) * _m[2][0];
 
 
   ret4 += _m[3][2] * ret3;
 
   ret5 += _m[4][4] * ret4;
   ret4 = 0.0;
 
   ret3 =
     ( _m[0][1] * _m[1][3] - _m[0][3] * _m[1][1] ) * _m[2][4]
   + ( _m[0][3] * _m[1][4] - _m[0][4] * _m[1][3] ) * _m[2][1]
   + ( _m[0][4] * _m[1][1] - _m[0][1] * _m[1][4] ) * _m[2][3];
 
   ret4 += _m[3][2] * ret3;
 
   ret3 =
     ( _m[0][1] * _m[1][4] - _m[0][4] * _m[1][1] ) * _m[2][2]
   + ( _m[0][2] * _m[1][1] - _m[0][1] * _m[1][2] ) * _m[2][4]
   + ( _m[0][4] * _m[1][2] - _m[0][2] * _m[1][4] ) * _m[2][1];
 
   ret4 += _m[3][3] * ret3;
 
   ret3 =
     ( _m[0][2] * _m[1][3] - _m[0][3] * _m[1][2] ) * _m[2][1]
   + ( _m[0][3] * _m[1][1] - _m[0][1] * _m[1][3] ) * _m[2][2]
   + ( _m[0][1] * _m[1][2] - _m[0][2] * _m[1][1] ) * _m[2][3];
 
   ret4 += _m[3][4] * ret3;
 
   ret3 =
     ( _m[0][2] * _m[1][4] - _m[0][4] * _m[1][2] ) * _m[2][3]
   + ( _m[0][3] * _m[1][2] - _m[0][2] * _m[1][3] ) * _m[2][4]
   + ( _m[0][4] * _m[1][3] - _m[0][3] * _m[1][4] ) * _m[2][2];
 
   ret4 += _m[3][1] * ret3;
 
   ret5 += _m[4][0] * ret4;
   ret4 = 0.0;
 
   ret3 =
     ( _m[0][3] * _m[1][4] - _m[0][4] * _m[1][3] ) * _m[2][2]
   + ( _m[0][4] * _m[1][2] - _m[0][2] * _m[1][4] ) * _m[2][3]
   + ( _m[0][2] * _m[1][3] - _m[0][3] * _m[1][2] ) * _m[2][4];
 
   ret4 += _m[3][0] * ret3;
 
   ret3 =
     ( _m[0][3] * _m[1][0] - _m[0][0] * _m[1][3] ) * _m[2][4]
   + ( _m[0][4] * _m[1][3] - _m[0][3] * _m[1][4] ) * _m[2][0]
   + ( _m[0][0] * _m[1][4] - _m[0][4] * _m[1][0] ) * _m[2][3];
 
   ret4 += _m[3][2] * ret3;
 
   ret3 =
     ( _m[0][4] * _m[1][0] - _m[0][0] * _m[1][4] ) * _m[2][2]
   + ( _m[0][0] * _m[1][2] - _m[0][2] * _m[1][0] ) * _m[2][4]
   + ( _m[0][2] * _m[1][4] - _m[0][4] * _m[1][2] ) * _m[2][0];
 
   ret4 += _m[3][3] * ret3;
 
   ret3 =
     ( _m[0][3] * _m[1][2] - _m[0][2] * _m[1][3] ) * _m[2][0]
   + ( _m[0][0] * _m[1][3] - _m[0][3] * _m[1][0] ) * _m[2][2]
   + ( _m[0][2] * _m[1][0] - _m[0][0] * _m[1][2] ) * _m[2][3];
 
 
   ret4 += _m[3][4] * ret3;
 
   ret5 += _m[4][1] * ret4;
   ret4 = 0.0;
 
   ret3 =
     ( _m[0][0] * _m[1][1] - _m[0][1] * _m[1][0] ) * _m[2][3]
   + ( _m[0][1] * _m[1][3] - _m[0][3] * _m[1][1] ) * _m[2][0]
   + ( _m[0][3] * _m[1][0] - _m[0][0] * _m[1][3] ) * _m[2][1];
 
   ret4 += _m[3][4] * ret3;
 
   ret3 =
     ( _m[0][4] * _m[1][3] - _m[0][3] * _m[1][4] ) * _m[2][1]
   + ( _m[0][1] * _m[1][4] - _m[0][4] * _m[1][1] ) * _m[2][3]
   + ( _m[0][3] * _m[1][1] - _m[0][1] * _m[1][3] ) * _m[2][4];
 
   ret4 += _m[3][0] * ret3;
 
   ret3 =
     ( _m[0][0] * _m[1][3] - _m[0][3] * _m[1][0] ) * _m[2][4]
   + ( _m[0][3] * _m[1][4] - _m[0][4] * _m[1][3] ) * _m[2][0]
   + ( _m[0][4] * _m[1][0] - _m[0][0] * _m[1][4] ) * _m[2][3];
 
   ret4 += _m[3][1] * ret3;
 
   ret3 =
     ( _m[0][0] * _m[1][4] - _m[0][4] * _m[1][0] ) * _m[2][1]
   + ( _m[0][1] * _m[1][0] - _m[0][0] * _m[1][1] ) * _m[2][4]
   + ( _m[0][4] * _m[1][1] - _m[0][1] * _m[1][4] ) * _m[2][0];
 
 
   ret4 += _m[3][3] * ret3;
 
   ret5 += _m[4][2] * ret4;
   ret4 = 0.0;
 
   ret3 =
     ( _m[0][1] * _m[1][4] - _m[0][4] * _m[1][1] ) * _m[2][0]
   + ( _m[0][4] * _m[1][0] - _m[0][0] * _m[1][4] ) * _m[2][1]
   + ( _m[0][0] * _m[1][1] - _m[0][1] * _m[1][0] ) * _m[2][4];
 
   ret4 += _m[3][2] * ret3;
 
   ret3 =
     ( _m[0][1] * _m[1][0] - _m[0][0] * _m[1][1] ) * _m[2][2]
   + ( _m[0][2] * _m[1][1] - _m[0][1] * _m[1][2] ) * _m[2][0]
   + ( _m[0][0] * _m[1][2] - _m[0][2] * _m[1][0] ) * _m[2][1];
 
   ret4 += _m[3][4] * ret3;
 
   ret3 =
     ( _m[0][2] * _m[1][4] - _m[0][4] * _m[1][2] ) * _m[2][1]
   + ( _m[0][4] * _m[1][1] - _m[0][1] * _m[1][4] ) * _m[2][2]
   + ( _m[0][1] * _m[1][2] - _m[0][2] * _m[1][1] ) * _m[2][4];
 
   ret4 += _m[3][0] * ret3;
 
   ret3 =
     ( _m[0][2] * _m[1][0] - _m[0][0] * _m[1][2] ) * _m[2][4]
   + ( _m[0][4] * _m[1][2] - _m[0][2] * _m[1][4] ) * _m[2][0]
   + ( _m[0][0] * _m[1][4] - _m[0][4] * _m[1][0] ) * _m[2][2];
 
 
   ret4 += _m[3][1] * ret3;
 
   ret5 += _m[4][3] * ret4;
   ret4 = 0.0;
 
   ret += _m[5][5] * ret5;
   ret5 = 0.0;
 
 
   ret3 =
     ( _m[0][4] * _m[1][5] - _m[0][5] * _m[1][4] ) * _m[2][2]
   + ( _m[0][5] * _m[1][2] - _m[0][2] * _m[1][5] ) * _m[2][4]
   + ( _m[0][2] * _m[1][4] - _m[0][4] * _m[1][2] ) * _m[2][5];
 
   ret4 += _m[3][1] * ret3;
 
   ret3 =
     ( _m[0][4] * _m[1][1] - _m[0][1] * _m[1][4] ) * _m[2][5]
   + ( _m[0][5] * _m[1][4] - _m[0][4] * _m[1][5] ) * _m[2][1]
   + ( _m[0][1] * _m[1][5] - _m[0][5] * _m[1][1] ) * _m[2][4];
 
   ret4 += _m[3][2] * ret3;
 
   ret3 =
     ( _m[0][5] * _m[1][1] - _m[0][1] * _m[1][5] ) * _m[2][2]
   + ( _m[0][1] * _m[1][2] - _m[0][2] * _m[1][1] ) * _m[2][5]
   + ( _m[0][2] * _m[1][5] - _m[0][5] * _m[1][2] ) * _m[2][1];
 
   ret4 += _m[3][4] * ret3;
 
   ret3 =
     ( _m[0][4] * _m[1][2] - _m[0][2] * _m[1][4] ) * _m[2][1]
   + ( _m[0][1] * _m[1][4] - _m[0][4] * _m[1][1] ) * _m[2][2]
   + ( _m[0][2] * _m[1][1] - _m[0][1] * _m[1][2] ) * _m[2][4];
 
 
   ret4 += _m[3][5] * ret3;
 
   ret5 += _m[4][3] * ret4;
   ret4 = 0.0;
 
 
   ret3 =
     ( _m[0][1] * _m[1][2] - _m[0][2] * _m[1][1] ) * _m[2][3]
   + ( _m[0][2] * _m[1][3] - _m[0][3] * _m[1][2] ) * _m[2][1]
   + ( _m[0][3] * _m[1][1] - _m[0][1] * _m[1][3] ) * _m[2][2];
 
   ret4 += _m[3][5] * ret3;
 
   ret3 =
     ( _m[0][5] * _m[1][3] - _m[0][3] * _m[1][5] ) * _m[2][2]
   + ( _m[0][2] * _m[1][5] - _m[0][5] * _m[1][2] ) * _m[2][3]
   + ( _m[0][3] * _m[1][2] - _m[0][2] * _m[1][3] ) * _m[2][5];
 
   ret4 += _m[3][1] * ret3;
 
   ret3 =
     ( _m[0][1] * _m[1][3] - _m[0][3] * _m[1][1] ) * _m[2][5]
   + ( _m[0][3] * _m[1][5] - _m[0][5] * _m[1][3] ) * _m[2][1]
   + ( _m[0][5] * _m[1][1] - _m[0][1] * _m[1][5] ) * _m[2][3];
 
   ret4 += _m[3][2] * ret3;
 
   ret3 =
     ( _m[0][1] * _m[1][5] - _m[0][5] * _m[1][1] ) * _m[2][2]
   + ( _m[0][2] * _m[1][1] - _m[0][1] * _m[1][2] ) * _m[2][5]
   + ( _m[0][5] * _m[1][2] - _m[0][2] * _m[1][5] ) * _m[2][1];
 
 
   ret4 += _m[3][3] * ret3;
 
   ret5 += _m[4][4] * ret4;
   ret4 = 0.0;
 
   ret3 =
     ( _m[0][2] * _m[1][4] - _m[0][4] * _m[1][2] ) * _m[2][1]
   + ( _m[0][4] * _m[1][1] - _m[0][1] * _m[1][4] ) * _m[2][2]
   + ( _m[0][1] * _m[1][2] - _m[0][2] * _m[1][1] ) * _m[2][4];
 
   ret4 += _m[3][3] * ret3;
 
   ret3 =
     ( _m[0][2] * _m[1][1] - _m[0][1] * _m[1][2] ) * _m[2][3]
   + ( _m[0][3] * _m[1][2] - _m[0][2] * _m[1][3] ) * _m[2][1]
   + ( _m[0][1] * _m[1][3] - _m[0][3] * _m[1][1] ) * _m[2][2];
 
   ret4 += _m[3][4] * ret3;
 
   ret3 =
     ( _m[0][3] * _m[1][4] - _m[0][4] * _m[1][3] ) * _m[2][2]
   + ( _m[0][4] * _m[1][2] - _m[0][2] * _m[1][4] ) * _m[2][3]
   + ( _m[0][2] * _m[1][3] - _m[0][3] * _m[1][2] ) * _m[2][4];
 
   ret4 += _m[3][1] * ret3;
 
   ret3 =
     ( _m[0][3] * _m[1][1] - _m[0][1] * _m[1][3] ) * _m[2][4]
   + ( _m[0][4] * _m[1][3] - _m[0][3] * _m[1][4] ) * _m[2][1]
   + ( _m[0][1] * _m[1][4] - _m[0][4] * _m[1][1] ) * _m[2][3];
 
 
   ret4 += _m[3][2] * ret3;
 
   ret5 += _m[4][5] * ret4;
   ret4 = 0.0;
 
   ret3 =
     ( _m[0][4] * _m[1][5] - _m[0][5] * _m[1][4] ) * _m[2][3]
   + ( _m[0][5] * _m[1][3] - _m[0][3] * _m[1][5] ) * _m[2][4]
   + ( _m[0][3] * _m[1][4] - _m[0][4] * _m[1][3] ) * _m[2][5];
 
   ret4 += _m[3][2] * ret3;
 
   ret3 =
     ( _m[0][4] * _m[1][2] - _m[0][2] * _m[1][4] ) * _m[2][5]
   + ( _m[0][5] * _m[1][4] - _m[0][4] * _m[1][5] ) * _m[2][2]
   + ( _m[0][2] * _m[1][5] - _m[0][5] * _m[1][2] ) * _m[2][4];
 
   ret4 += _m[3][3] * ret3;
 
   ret3 =
     ( _m[0][5] * _m[1][2] - _m[0][2] * _m[1][5] ) * _m[2][3]
   + ( _m[0][2] * _m[1][3] - _m[0][3] * _m[1][2] ) * _m[2][5]
   + ( _m[0][3] * _m[1][5] - _m[0][5] * _m[1][3] ) * _m[2][2];
 
   ret4 += _m[3][4] * ret3;
 
   ret3 =
     ( _m[0][4] * _m[1][3] - _m[0][3] * _m[1][4] ) * _m[2][2]
   + ( _m[0][2] * _m[1][4] - _m[0][4] * _m[1][2] ) * _m[2][3]
   + ( _m[0][3] * _m[1][2] - _m[0][2] * _m[1][3] ) * _m[2][4];
 
 
   ret4 += _m[3][5] * ret3;
 
   ret5 += _m[4][1] * ret4;
   ret4 = 0.0;
 
 
   ret3 =
     ( _m[0][1] * _m[1][3] - _m[0][3] * _m[1][1] ) * _m[2][4]
   + ( _m[0][3] * _m[1][4] - _m[0][4] * _m[1][3] ) * _m[2][1]
   + ( _m[0][4] * _m[1][1] - _m[0][1] * _m[1][4] ) * _m[2][3];
 
   ret4 += _m[3][5] * ret3;
 
   ret3 =
     ( _m[0][5] * _m[1][4] - _m[0][4] * _m[1][5] ) * _m[2][3]
   + ( _m[0][3] * _m[1][5] - _m[0][5] * _m[1][3] ) * _m[2][4]
   + ( _m[0][4] * _m[1][3] - _m[0][3] * _m[1][4] ) * _m[2][5];
 
   ret4 += _m[3][1] * ret3;
 
   ret3 =
     ( _m[0][1] * _m[1][4] - _m[0][4] * _m[1][1] ) * _m[2][5]
   + ( _m[0][4] * _m[1][5] - _m[0][5] * _m[1][4] ) * _m[2][1]
   + ( _m[0][5] * _m[1][1] - _m[0][1] * _m[1][5] ) * _m[2][4];
 
   ret4 += _m[3][3] * ret3;
 
   ret3 =
     ( _m[0][1] * _m[1][5] - _m[0][5] * _m[1][1] ) * _m[2][3]
   + ( _m[0][3] * _m[1][1] - _m[0][1] * _m[1][3] ) * _m[2][5]
   + ( _m[0][5] * _m[1][3] - _m[0][3] * _m[1][5] ) * _m[2][1];
 
   ret4 += _m[3][4] * ret3;
 
   ret5 += _m[4][2] * ret4;
   ret4 = 0.0;
 
   ret += _m[5][0] * ret5;
   ret5 = 0.0;
 
 
   ret3 =
     ( _m[0][3] * _m[1][5] - _m[0][5] * _m[1][3] ) * _m[2][0]
   + ( _m[0][5] * _m[1][0] - _m[0][0] * _m[1][5] ) * _m[2][3]
   + ( _m[0][0] * _m[1][3] - _m[0][3] * _m[1][0] ) * _m[2][5];
 
   ret4 += _m[3][4] * ret3;
 
   ret3 =
     ( _m[0][3] * _m[1][0] - _m[0][0] * _m[1][3] ) * _m[2][4]
   + ( _m[0][4] * _m[1][3] - _m[0][3] * _m[1][4] ) * _m[2][0]
   + ( _m[0][0] * _m[1][4] - _m[0][4] * _m[1][0] ) * _m[2][3];
 
   ret4 += _m[3][5] * ret3;
 
   ret3 =
     ( _m[0][4] * _m[1][5] - _m[0][5] * _m[1][4] ) * _m[2][3]
   + ( _m[0][5] * _m[1][3] - _m[0][3] * _m[1][5] ) * _m[2][4]
   + ( _m[0][3] * _m[1][4] - _m[0][4] * _m[1][3] ) * _m[2][5];
 
   ret4 += _m[3][0] * ret3;
 
   ret3 =
     ( _m[0][4] * _m[1][0] - _m[0][0] * _m[1][4] ) * _m[2][5]
   + ( _m[0][5] * _m[1][4] - _m[0][4] * _m[1][5] ) * _m[2][0]
   + ( _m[0][0] * _m[1][5] - _m[0][5] * _m[1][0] ) * _m[2][4];
 
 
   ret4 += _m[3][3] * ret3;
 
   ret5 += _m[4][2] * ret4;
   ret4 = 0.0;
 
 
   ret3 =
     ( _m[0][5] * _m[1][0] - _m[0][0] * _m[1][5] ) * _m[2][4]
   + ( _m[0][0] * _m[1][4] - _m[0][4] * _m[1][0] ) * _m[2][5]
   + ( _m[0][4] * _m[1][5] - _m[0][5] * _m[1][4] ) * _m[2][0];
 
   ret4 += _m[3][2] * ret3;
 
   ret3 =
     ( _m[0][5] * _m[1][2] - _m[0][2] * _m[1][5] ) * _m[2][0]
   + ( _m[0][0] * _m[1][5] - _m[0][5] * _m[1][0] ) * _m[2][2]
   + ( _m[0][2] * _m[1][0] - _m[0][0] * _m[1][2] ) * _m[2][5];
 
   ret4 += _m[3][4] * ret3;
 
   ret3 =
     ( _m[0][0] * _m[1][2] - _m[0][2] * _m[1][0] ) * _m[2][4]
   + ( _m[0][2] * _m[1][4] - _m[0][4] * _m[1][2] ) * _m[2][0]
   + ( _m[0][4] * _m[1][0] - _m[0][0] * _m[1][4] ) * _m[2][2];
 
   ret4 += _m[3][5] * ret3;
 
   ret3 =
     ( _m[0][5] * _m[1][4] - _m[0][4] * _m[1][5] ) * _m[2][2]
   + ( _m[0][2] * _m[1][5] - _m[0][5] * _m[1][2] ) * _m[2][4]
   + ( _m[0][4] * _m[1][2] - _m[0][2] * _m[1][4] ) * _m[2][5];
 
 
   ret4 += _m[3][0] * ret3;
 
   ret5 += _m[4][3] * ret4;
   ret4 = 0.0;
 
 
   ret3 =
     ( _m[0][2] * _m[1][3] - _m[0][3] * _m[1][2] ) * _m[2][5]
   + ( _m[0][3] * _m[1][5] - _m[0][5] * _m[1][3] ) * _m[2][2]
   + ( _m[0][5] * _m[1][2] - _m[0][2] * _m[1][5] ) * _m[2][3];
 
   ret4 += _m[3][0] * ret3;
 
   ret3 =
     ( _m[0][0] * _m[1][5] - _m[0][5] * _m[1][0] ) * _m[2][3]
   + ( _m[0][3] * _m[1][0] - _m[0][0] * _m[1][3] ) * _m[2][5]
   + ( _m[0][5] * _m[1][3] - _m[0][3] * _m[1][5] ) * _m[2][0];
 
   ret4 += _m[3][2] * ret3;
 
   ret3 =
     ( _m[0][2] * _m[1][5] - _m[0][5] * _m[1][2] ) * _m[2][0]
   + ( _m[0][5] * _m[1][0] - _m[0][0] * _m[1][5] ) * _m[2][2]
   + ( _m[0][0] * _m[1][2] - _m[0][2] * _m[1][0] ) * _m[2][5];
 
   ret4 += _m[3][3] * ret3;
 
   ret3 =
     ( _m[0][2] * _m[1][0] - _m[0][0] * _m[1][2] ) * _m[2][3]
   + ( _m[0][3] * _m[1][2] - _m[0][2] * _m[1][3] ) * _m[2][0]
   + ( _m[0][0] * _m[1][3] - _m[0][3] * _m[1][0] ) * _m[2][2];
 
 
   ret4 += _m[3][5] * ret3;
 
   ret5 += _m[4][4] * ret4;
   ret4 = 0.0;
 
 
   ret3 =
     ( _m[0][3] * _m[1][0] - _m[0][0] * _m[1][3] ) * _m[2][2]
   + ( _m[0][0] * _m[1][2] - _m[0][2] * _m[1][0] ) * _m[2][3]
   + ( _m[0][2] * _m[1][3] - _m[0][3] * _m[1][2] ) * _m[2][0];
 
   ret4 += _m[3][4] * ret3;
 
   ret3 =
     ( _m[0][3] * _m[1][2] - _m[0][2] * _m[1][3] ) * _m[2][4]
   + ( _m[0][4] * _m[1][3] - _m[0][3] * _m[1][4] ) * _m[2][2]
   + ( _m[0][2] * _m[1][4] - _m[0][4] * _m[1][2] ) * _m[2][3];
 
   ret4 += _m[3][0] * ret3;
 
   ret3 =
     ( _m[0][4] * _m[1][0] - _m[0][0] * _m[1][4] ) * _m[2][3]
   + ( _m[0][0] * _m[1][3] - _m[0][3] * _m[1][0] ) * _m[2][4]
   + ( _m[0][3] * _m[1][4] - _m[0][4] * _m[1][3] ) * _m[2][0];
 
   ret4 += _m[3][2] * ret3;
 
   ret3 =
     ( _m[0][4] * _m[1][2] - _m[0][2] * _m[1][4] ) * _m[2][0]
   + ( _m[0][0] * _m[1][4] - _m[0][4] * _m[1][0] ) * _m[2][2]
   + ( _m[0][2] * _m[1][0] - _m[0][0] * _m[1][2] ) * _m[2][4];
 
 
   ret4 += _m[3][3] * ret3;
 
   ret5 += _m[4][5] * ret4;
   ret4 = 0.0;
 
 
   ret3 =
     ( _m[0][5] * _m[1][2] - _m[0][2] * _m[1][5] ) * _m[2][4]
   + ( _m[0][2] * _m[1][4] - _m[0][4] * _m[1][2] ) * _m[2][5]
   + ( _m[0][4] * _m[1][5] - _m[0][5] * _m[1][4] ) * _m[2][2];
 
   ret4 += _m[3][3] * ret3;
 
   ret3 =
     ( _m[0][5] * _m[1][3] - _m[0][3] * _m[1][5] ) * _m[2][2]
   + ( _m[0][2] * _m[1][5] - _m[0][5] * _m[1][2] ) * _m[2][3]
   + ( _m[0][3] * _m[1][2] - _m[0][2] * _m[1][3] ) * _m[2][5];
 
   ret4 += _m[3][4] * ret3;
 
   ret3 =
     ( _m[0][2] * _m[1][3] - _m[0][3] * _m[1][2] ) * _m[2][4]
   + ( _m[0][3] * _m[1][4] - _m[0][4] * _m[1][3] ) * _m[2][2]
   + ( _m[0][4] * _m[1][2] - _m[0][2] * _m[1][4] ) * _m[2][3];
 
   ret4 += _m[3][5] * ret3;
 
   ret3 =
     ( _m[0][5] * _m[1][4] - _m[0][4] * _m[1][5] ) * _m[2][3]
   + ( _m[0][3] * _m[1][5] - _m[0][5] * _m[1][3] ) * _m[2][4]
   + ( _m[0][4] * _m[1][3] - _m[0][3] * _m[1][4] ) * _m[2][5];
 
 
   ret4 += _m[3][2] * ret3;
 
   ret5 += _m[4][0] * ret4;
   ret4 = 0.0;
 
   ret += _m[5][1] * ret5;
   ret5 = 0.0;
 
   ret3 =
     ( _m[0][3] * _m[1][4] - _m[0][4] * _m[1][3] ) * _m[2][5]
   + ( _m[0][4] * _m[1][5] - _m[0][5] * _m[1][4] ) * _m[2][3]
   + ( _m[0][5] * _m[1][3] - _m[0][3] * _m[1][5] ) * _m[2][4];
 
   ret4 += _m[3][1] * ret3;
 
   ret3 =
     ( _m[0][1] * _m[1][5] - _m[0][5] * _m[1][1] ) * _m[2][4]
   + ( _m[0][4] * _m[1][1] - _m[0][1] * _m[1][4] ) * _m[2][5]
   + ( _m[0][5] * _m[1][4] - _m[0][4] * _m[1][5] ) * _m[2][1];
 
   ret4 += _m[3][3] * ret3;
 
   ret3 =
     ( _m[0][3] * _m[1][5] - _m[0][5] * _m[1][3] ) * _m[2][1]
   + ( _m[0][5] * _m[1][1] - _m[0][1] * _m[1][5] ) * _m[2][3]
   + ( _m[0][1] * _m[1][3] - _m[0][3] * _m[1][1] ) * _m[2][5];
 
   ret4 += _m[3][4] * ret3;
 
   ret3 =
     ( _m[0][3] * _m[1][1] - _m[0][1] * _m[1][3] ) * _m[2][4]
   + ( _m[0][4] * _m[1][3] - _m[0][3] * _m[1][4] ) * _m[2][1]
   + ( _m[0][1] * _m[1][4] - _m[0][4] * _m[1][1] ) * _m[2][3];
 
 
   ret4 += _m[3][5] * ret3;
 
   ret5 += _m[4][0] * ret4;
   ret4 = 0.0;
 
   ret3 =
     ( _m[0][4] * _m[1][0] - _m[0][0] * _m[1][4] ) * _m[2][3]
   + ( _m[0][0] * _m[1][3] - _m[0][3] * _m[1][0] ) * _m[2][4]
   + ( _m[0][3] * _m[1][4] - _m[0][4] * _m[1][3] ) * _m[2][0];
 
   ret4 += _m[3][5] * ret3;
 
   ret3 =
     ( _m[0][4] * _m[1][3] - _m[0][3] * _m[1][4] ) * _m[2][5]
   + ( _m[0][5] * _m[1][4] - _m[0][4] * _m[1][5] ) * _m[2][3]
   + ( _m[0][3] * _m[1][5] - _m[0][5] * _m[1][3] ) * _m[2][4];
 
   ret4 += _m[3][0] * ret3;
 
   ret3 =
     ( _m[0][5] * _m[1][0] - _m[0][0] * _m[1][5] ) * _m[2][4]
   + ( _m[0][0] * _m[1][4] - _m[0][4] * _m[1][0] ) * _m[2][5]
   + ( _m[0][4] * _m[1][5] - _m[0][5] * _m[1][4] ) * _m[2][0];
 
   ret4 += _m[3][3] * ret3;
 
   ret3 =
     ( _m[0][5] * _m[1][3] - _m[0][3] * _m[1][5] ) * _m[2][0]
   + ( _m[0][0] * _m[1][5] - _m[0][5] * _m[1][0] ) * _m[2][3]
   + ( _m[0][3] * _m[1][0] - _m[0][0] * _m[1][3] ) * _m[2][5];
 
 
   ret4 += _m[3][4] * ret3;
 
   ret5 += _m[4][1] * ret4;
   ret4 = 0.0;
 
   ret3 =
     ( _m[0][0] * _m[1][1] - _m[0][1] * _m[1][0] ) * _m[2][5]
   + ( _m[0][1] * _m[1][5] - _m[0][5] * _m[1][1] ) * _m[2][0]
   + ( _m[0][5] * _m[1][0] - _m[0][0] * _m[1][5] ) * _m[2][1];
 
   ret4 += _m[3][4] * ret3;
 
   ret3 =
     ( _m[0][0] * _m[1][4] - _m[0][4] * _m[1][0] ) * _m[2][1]
   + ( _m[0][1] * _m[1][0] - _m[0][0] * _m[1][1] ) * _m[2][4]
   + ( _m[0][4] * _m[1][1] - _m[0][1] * _m[1][4] ) * _m[2][0];
 
   ret4 += _m[3][5] * ret3;
 
   ret3 =
     ( _m[0][1] * _m[1][4] - _m[0][4] * _m[1][1] ) * _m[2][5]
   + ( _m[0][4] * _m[1][5] - _m[0][5] * _m[1][4] ) * _m[2][1]
   + ( _m[0][5] * _m[1][1] - _m[0][1] * _m[1][5] ) * _m[2][4];
 
   ret4 += _m[3][0] * ret3;
 
   ret3 =
     ( _m[0][0] * _m[1][5] - _m[0][5] * _m[1][0] ) * _m[2][4]
   + ( _m[0][4] * _m[1][0] - _m[0][0] * _m[1][4] ) * _m[2][5]
   + ( _m[0][5] * _m[1][4] - _m[0][4] * _m[1][5] ) * _m[2][0];
 
 
   ret4 += _m[3][1] * ret3;
 
   ret5 += _m[4][3] * ret4;
   ret4 = 0.0;
 
   ret3 =
     ( _m[0][3] * _m[1][5] - _m[0][5] * _m[1][3] ) * _m[2][0]
   + ( _m[0][5] * _m[1][0] - _m[0][0] * _m[1][5] ) * _m[2][3]
   + ( _m[0][0] * _m[1][3] - _m[0][3] * _m[1][0] ) * _m[2][5];
 
   ret4 += _m[3][1] * ret3;
 
   ret3 =
     ( _m[0][1] * _m[1][0] - _m[0][0] * _m[1][1] ) * _m[2][5]
   + ( _m[0][5] * _m[1][1] - _m[0][1] * _m[1][5] ) * _m[2][0]
   + ( _m[0][0] * _m[1][5] - _m[0][5] * _m[1][0] ) * _m[2][1];
 
   ret4 += _m[3][3] * ret3;
 
   ret3 =
     ( _m[0][3] * _m[1][0] - _m[0][0] * _m[1][3] ) * _m[2][1]
   + ( _m[0][0] * _m[1][1] - _m[0][1] * _m[1][0] ) * _m[2][3]
   + ( _m[0][1] * _m[1][3] - _m[0][3] * _m[1][1] ) * _m[2][0];
 
   ret4 += _m[3][5] * ret3;
 
   ret3 =
     ( _m[0][3] * _m[1][1] - _m[0][1] * _m[1][3] ) * _m[2][5]
   + ( _m[0][5] * _m[1][3] - _m[0][3] * _m[1][5] ) * _m[2][1]
   + ( _m[0][1] * _m[1][5] - _m[0][5] * _m[1][1] ) * _m[2][3];
 
 
   ret4 += _m[3][0] * ret3;
 
   ret5 += _m[4][4] * ret4;
   ret4 = 0.0;
 
   ret3 =
     ( _m[0][4] * _m[1][1] - _m[0][1] * _m[1][4] ) * _m[2][3]
   + ( _m[0][1] * _m[1][3] - _m[0][3] * _m[1][1] ) * _m[2][4]
   + ( _m[0][3] * _m[1][4] - _m[0][4] * _m[1][3] ) * _m[2][1];
 
   ret4 += _m[3][0] * ret3;
 
   ret3 =
     ( _m[0][4] * _m[1][3] - _m[0][3] * _m[1][4] ) * _m[2][0]
   + ( _m[0][0] * _m[1][4] - _m[0][4] * _m[1][0] ) * _m[2][3]
   + ( _m[0][3] * _m[1][0] - _m[0][0] * _m[1][3] ) * _m[2][4];
 
   ret4 += _m[3][1] * ret3;
 
   ret3 =
     ( _m[0][0] * _m[1][1] - _m[0][1] * _m[1][0] ) * _m[2][4]
   + ( _m[0][1] * _m[1][4] - _m[0][4] * _m[1][1] ) * _m[2][0]
   + ( _m[0][4] * _m[1][0] - _m[0][0] * _m[1][4] ) * _m[2][1];
 
   ret4 += _m[3][3] * ret3;
 
   ret3 =
     ( _m[0][0] * _m[1][3] - _m[0][3] * _m[1][0] ) * _m[2][1]
   + ( _m[0][1] * _m[1][0] - _m[0][0] * _m[1][1] ) * _m[2][3]
   + ( _m[0][3] * _m[1][1] - _m[0][1] * _m[1][3] ) * _m[2][0];
 
 
   ret4 += _m[3][4] * ret3;
 
   ret5 += _m[4][5] * ret4;
   ret4 = 0.0;
 
   ret += _m[5][2] * ret5;
   ret5 = 0.0;
 
 
   ret3 =
     ( _m[0][1] * _m[1][2] - _m[0][2] * _m[1][1] ) * _m[2][0]
   + ( _m[0][2] * _m[1][0] - _m[0][0] * _m[1][2] ) * _m[2][1]
   + ( _m[0][0] * _m[1][1] - _m[0][1] * _m[1][0] ) * _m[2][2];
 
   ret4 += _m[3][4] * ret3;
 
   ret3 =
     ( _m[0][1] * _m[1][4] - _m[0][4] * _m[1][1] ) * _m[2][2]
   + ( _m[0][2] * _m[1][1] - _m[0][1] * _m[1][2] ) * _m[2][4]
   + ( _m[0][4] * _m[1][2] - _m[0][2] * _m[1][4] ) * _m[2][1];
 
   ret4 += _m[3][0] * ret3;
 
   ret3 =
     ( _m[0][2] * _m[1][4] - _m[0][4] * _m[1][2] ) * _m[2][0]
   + ( _m[0][4] * _m[1][0] - _m[0][0] * _m[1][4] ) * _m[2][2]
   + ( _m[0][0] * _m[1][2] - _m[0][2] * _m[1][0] ) * _m[2][4];
 
   ret4 += _m[3][1] * ret3;
 
   ret3 =
     ( _m[0][1] * _m[1][0] - _m[0][0] * _m[1][1] ) * _m[2][4]
   + ( _m[0][4] * _m[1][1] - _m[0][1] * _m[1][4] ) * _m[2][0]
   + ( _m[0][0] * _m[1][4] - _m[0][4] * _m[1][0] ) * _m[2][1];
 
 
   ret4 += _m[3][2] * ret3;
 
   ret5 += _m[4][5] * ret4;
   ret4 = 0.0;
 
   ret3 =
     ( _m[0][4] * _m[1][5] - _m[0][5] * _m[1][4] ) * _m[2][1]
   + ( _m[0][5] * _m[1][1] - _m[0][1] * _m[1][5] ) * _m[2][4]
   + ( _m[0][1] * _m[1][4] - _m[0][4] * _m[1][1] ) * _m[2][5];
 
   ret4 += _m[3][2] * ret3;
 
   ret3 =
     ( _m[0][2] * _m[1][1] - _m[0][1] * _m[1][2] ) * _m[2][5]
   + ( _m[0][5] * _m[1][2] - _m[0][2] * _m[1][5] ) * _m[2][1]
   + ( _m[0][1] * _m[1][5] - _m[0][5] * _m[1][1] ) * _m[2][2];
 
   ret4 += _m[3][4] * ret3;
 
   ret3 =
     ( _m[0][4] * _m[1][1] - _m[0][1] * _m[1][4] ) * _m[2][2]
   + ( _m[0][1] * _m[1][2] - _m[0][2] * _m[1][1] ) * _m[2][4]
   + ( _m[0][2] * _m[1][4] - _m[0][4] * _m[1][2] ) * _m[2][1];
 
   ret4 += _m[3][5] * ret3;
 
   ret3 =
     ( _m[0][4] * _m[1][2] - _m[0][2] * _m[1][4] ) * _m[2][5]
   + ( _m[0][5] * _m[1][4] - _m[0][4] * _m[1][5] ) * _m[2][2]
   + ( _m[0][2] * _m[1][5] - _m[0][5] * _m[1][2] ) * _m[2][4];
 
 
   ret4 += _m[3][1] * ret3;
 
   ret5 += _m[4][0] * ret4;
   ret4 = 0.0;
 
   ret3 =
     ( _m[0][5] * _m[1][2] - _m[0][2] * _m[1][5] ) * _m[2][4]
   + ( _m[0][2] * _m[1][4] - _m[0][4] * _m[1][2] ) * _m[2][5]
   + ( _m[0][4] * _m[1][5] - _m[0][5] * _m[1][4] ) * _m[2][2];
 
   ret4 += _m[3][0] * ret3;
 
   ret3 =
     ( _m[0][5] * _m[1][4] - _m[0][4] * _m[1][5] ) * _m[2][0]
   + ( _m[0][0] * _m[1][5] - _m[0][5] * _m[1][0] ) * _m[2][4]
   + ( _m[0][4] * _m[1][0] - _m[0][0] * _m[1][4] ) * _m[2][5];
 
   ret4 += _m[3][2] * ret3;
 
   ret3 =
     ( _m[0][0] * _m[1][2] - _m[0][2] * _m[1][0] ) * _m[2][5]
   + ( _m[0][2] * _m[1][5] - _m[0][5] * _m[1][2] ) * _m[2][0]
   + ( _m[0][5] * _m[1][0] - _m[0][0] * _m[1][5] ) * _m[2][2];
 
   ret4 += _m[3][4] * ret3;
 
   ret3 =
     ( _m[0][0] * _m[1][4] - _m[0][4] * _m[1][0] ) * _m[2][2]
   + ( _m[0][2] * _m[1][0] - _m[0][0] * _m[1][2] ) * _m[2][4]
   + ( _m[0][4] * _m[1][2] - _m[0][2] * _m[1][4] ) * _m[2][0];
 
 
   ret4 += _m[3][5] * ret3;
 
   ret5 += _m[4][1] * ret4;
   ret4 = 0.0;
 
   ret3 =
     ( _m[0][1] * _m[1][4] - _m[0][4] * _m[1][1] ) * _m[2][0]
   + ( _m[0][4] * _m[1][0] - _m[0][0] * _m[1][4] ) * _m[2][1]
   + ( _m[0][0] * _m[1][1] - _m[0][1] * _m[1][0] ) * _m[2][4];
 
   ret4 += _m[3][5] * ret3;
 
   ret3 =
     ( _m[0][1] * _m[1][5] - _m[0][5] * _m[1][1] ) * _m[2][4]
   + ( _m[0][4] * _m[1][1] - _m[0][1] * _m[1][4] ) * _m[2][5]
   + ( _m[0][5] * _m[1][4] - _m[0][4] * _m[1][5] ) * _m[2][1];
 
   ret4 += _m[3][0] * ret3;
 
   ret3 =
     ( _m[0][4] * _m[1][5] - _m[0][5] * _m[1][4] ) * _m[2][0]
   + ( _m[0][5] * _m[1][0] - _m[0][0] * _m[1][5] ) * _m[2][4]
   + ( _m[0][0] * _m[1][4] - _m[0][4] * _m[1][0] ) * _m[2][5];
 
   ret4 += _m[3][1] * ret3;
 
   ret3 =
     ( _m[0][1] * _m[1][0] - _m[0][0] * _m[1][1] ) * _m[2][5]
   + ( _m[0][5] * _m[1][1] - _m[0][1] * _m[1][5] ) * _m[2][0]
   + ( _m[0][0] * _m[1][5] - _m[0][5] * _m[1][0] ) * _m[2][1];
 
 
   ret4 += _m[3][4] * ret3;
 
   ret5 += _m[4][2] * ret4;
   ret4 = 0.0;
 
   ret3 =
     ( _m[0][5] * _m[1][0] - _m[0][0] * _m[1][5] ) * _m[2][1]
   + ( _m[0][0] * _m[1][1] - _m[0][1] * _m[1][0] ) * _m[2][5]
   + ( _m[0][1] * _m[1][5] - _m[0][5] * _m[1][1] ) * _m[2][0];
 
   ret4 += _m[3][2] * ret3;
 
   ret3 =
     ( _m[0][2] * _m[1][1] - _m[0][1] * _m[1][2] ) * _m[2][0]
   + ( _m[0][0] * _m[1][2] - _m[0][2] * _m[1][0] ) * _m[2][1]
   + ( _m[0][1] * _m[1][0] - _m[0][0] * _m[1][1] ) * _m[2][2];
 
   ret4 += _m[3][5] * ret3;
 
   ret3 =
     ( _m[0][5] * _m[1][1] - _m[0][1] * _m[1][5] ) * _m[2][2]
   + ( _m[0][1] * _m[1][2] - _m[0][2] * _m[1][1] ) * _m[2][5]
   + ( _m[0][2] * _m[1][5] - _m[0][5] * _m[1][2] ) * _m[2][1];
 
   ret4 += _m[3][0] * ret3;
 
   ret3 =
     ( _m[0][5] * _m[1][2] - _m[0][2] * _m[1][5] ) * _m[2][0]
   + ( _m[0][0] * _m[1][5] - _m[0][5] * _m[1][0] ) * _m[2][2]
   + ( _m[0][2] * _m[1][0] - _m[0][0] * _m[1][2] ) * _m[2][5];
 
 
   ret4 += _m[3][1] * ret3;
 
   ret5 += _m[4][4] * ret4;
   ret4 = 0.0;
 
   ret += _m[5][3] * ret5;
   ret5 = 0.0;
 
   ret3 =
     ( _m[0][0] * _m[1][2] - _m[0][2] * _m[1][0] ) * _m[2][5]
   + ( _m[0][2] * _m[1][5] - _m[0][5] * _m[1][2] ) * _m[2][0]
   + ( _m[0][5] * _m[1][0] - _m[0][0] * _m[1][5] ) * _m[2][2];
 
   ret4 += _m[3][1] * ret3;
 
   ret3 =
     ( _m[0][0] * _m[1][5] - _m[0][5] * _m[1][0] ) * _m[2][1]
   + ( _m[0][1] * _m[1][0] - _m[0][0] * _m[1][1] ) * _m[2][5]
   + ( _m[0][5] * _m[1][1] - _m[0][1] * _m[1][5] ) * _m[2][0];
 
   ret4 += _m[3][2] * ret3;
 
   ret3 =
     ( _m[0][1] * _m[1][2] - _m[0][2] * _m[1][1] ) * _m[2][0]
   + ( _m[0][2] * _m[1][0] - _m[0][0] * _m[1][2] ) * _m[2][1]
   + ( _m[0][0] * _m[1][1] - _m[0][1] * _m[1][0] ) * _m[2][2];
 
   ret4 += _m[3][5] * ret3;
 
   ret3 =
     ( _m[0][1] * _m[1][5] - _m[0][5] * _m[1][1] ) * _m[2][2]
   + ( _m[0][2] * _m[1][1] - _m[0][1] * _m[1][2] ) * _m[2][5]
   + ( _m[0][5] * _m[1][2] - _m[0][2] * _m[1][5] ) * _m[2][1];
 
 
   ret4 += _m[3][0] * ret3;
 
   ret5 += _m[4][3] * ret4;
   ret4 = 0.0;
 
   ret3 =
     ( _m[0][2] * _m[1][3] - _m[0][3] * _m[1][2] ) * _m[2][1]
   + ( _m[0][3] * _m[1][1] - _m[0][1] * _m[1][3] ) * _m[2][2]
   + ( _m[0][1] * _m[1][2] - _m[0][2] * _m[1][1] ) * _m[2][3];
 
   ret4 += _m[3][0] * ret3;
 
   ret3 =
     ( _m[0][2] * _m[1][0] - _m[0][0] * _m[1][2] ) * _m[2][3]
   + ( _m[0][3] * _m[1][2] - _m[0][2] * _m[1][3] ) * _m[2][0]
   + ( _m[0][0] * _m[1][3] - _m[0][3] * _m[1][0] ) * _m[2][2];
 
   ret4 += _m[3][1] * ret3;
 
   ret3 =
     ( _m[0][3] * _m[1][0] - _m[0][0] * _m[1][3] ) * _m[2][1]
   + ( _m[0][0] * _m[1][1] - _m[0][1] * _m[1][0] ) * _m[2][3]
   + ( _m[0][1] * _m[1][3] - _m[0][3] * _m[1][1] ) * _m[2][0];
 
   ret4 += _m[3][2] * ret3;
 
   ret3 =
     ( _m[0][2] * _m[1][1] - _m[0][1] * _m[1][2] ) * _m[2][0]
   + ( _m[0][0] * _m[1][2] - _m[0][2] * _m[1][0] ) * _m[2][1]
   + ( _m[0][1] * _m[1][0] - _m[0][0] * _m[1][1] ) * _m[2][2];
 
 
   ret4 += _m[3][3] * ret3;
 
   ret5 += _m[4][5] * ret4;
   ret4 = 0.0;
 
   ret3 =
     ( _m[0][5] * _m[1][1] - _m[0][1] * _m[1][5] ) * _m[2][2]
   + ( _m[0][1] * _m[1][2] - _m[0][2] * _m[1][1] ) * _m[2][5]
   + ( _m[0][2] * _m[1][5] - _m[0][5] * _m[1][2] ) * _m[2][1];
 
   ret4 += _m[3][3] * ret3;
 
   ret3 =
     ( _m[0][3] * _m[1][2] - _m[0][2] * _m[1][3] ) * _m[2][1]
   + ( _m[0][1] * _m[1][3] - _m[0][3] * _m[1][1] ) * _m[2][2]
   + ( _m[0][2] * _m[1][1] - _m[0][1] * _m[1][2] ) * _m[2][3];
 
   ret4 += _m[3][5] * ret3;
 
   ret3 =
     ( _m[0][5] * _m[1][2] - _m[0][2] * _m[1][5] ) * _m[2][3]
   + ( _m[0][2] * _m[1][3] - _m[0][3] * _m[1][2] ) * _m[2][5]
   + ( _m[0][3] * _m[1][5] - _m[0][5] * _m[1][3] ) * _m[2][2];
 
   ret4 += _m[3][1] * ret3;
 
   ret3 =
     ( _m[0][5] * _m[1][3] - _m[0][3] * _m[1][5] ) * _m[2][1]
   + ( _m[0][1] * _m[1][5] - _m[0][5] * _m[1][1] ) * _m[2][3]
   + ( _m[0][3] * _m[1][1] - _m[0][1] * _m[1][3] ) * _m[2][5];
 
 
   ret4 += _m[3][2] * ret3;
 
   ret5 += _m[4][0] * ret4;
   ret4 = 0.0;
 
   ret3 =
     ( _m[0][0] * _m[1][3] - _m[0][3] * _m[1][0] ) * _m[2][5]
   + ( _m[0][3] * _m[1][5] - _m[0][5] * _m[1][3] ) * _m[2][0]
   + ( _m[0][5] * _m[1][0] - _m[0][0] * _m[1][5] ) * _m[2][3];
 
   ret4 += _m[3][2] * ret3;
 
   ret3 =
     ( _m[0][0] * _m[1][5] - _m[0][5] * _m[1][0] ) * _m[2][2]
   + ( _m[0][2] * _m[1][0] - _m[0][0] * _m[1][2] ) * _m[2][5]
   + ( _m[0][5] * _m[1][2] - _m[0][2] * _m[1][5] ) * _m[2][0];
 
   ret4 += _m[3][3] * ret3;
 
   ret3 =
     ( _m[0][2] * _m[1][3] - _m[0][3] * _m[1][2] ) * _m[2][0]
   + ( _m[0][3] * _m[1][0] - _m[0][0] * _m[1][3] ) * _m[2][2]
   + ( _m[0][0] * _m[1][2] - _m[0][2] * _m[1][0] ) * _m[2][3];
 
   ret4 += _m[3][5] * ret3;
 
   ret3 =
     ( _m[0][2] * _m[1][5] - _m[0][5] * _m[1][2] ) * _m[2][3]
   + ( _m[0][3] * _m[1][2] - _m[0][2] * _m[1][3] ) * _m[2][5]
   + ( _m[0][5] * _m[1][3] - _m[0][3] * _m[1][5] ) * _m[2][2];
 
 
   ret4 += _m[3][0] * ret3;
 
   ret5 += _m[4][1] * ret4;
   ret4 = 0.0;
 
   ret3 =
     ( _m[0][3] * _m[1][5] - _m[0][5] * _m[1][3] ) * _m[2][1]
   + ( _m[0][5] * _m[1][1] - _m[0][1] * _m[1][5] ) * _m[2][3]
   + ( _m[0][1] * _m[1][3] - _m[0][3] * _m[1][1] ) * _m[2][5];
 
   ret4 += _m[3][0] * ret3;
 
   ret3 =
     ( _m[0][3] * _m[1][0] - _m[0][0] * _m[1][3] ) * _m[2][5]
   + ( _m[0][5] * _m[1][3] - _m[0][3] * _m[1][5] ) * _m[2][0]
   + ( _m[0][0] * _m[1][5] - _m[0][5] * _m[1][0] ) * _m[2][3];
 
   ret4 += _m[3][1] * ret3;
 
   ret3 =
     ( _m[0][5] * _m[1][0] - _m[0][0] * _m[1][5] ) * _m[2][1]
   + ( _m[0][0] * _m[1][1] - _m[0][1] * _m[1][0] ) * _m[2][5]
   + ( _m[0][1] * _m[1][5] - _m[0][5] * _m[1][1] ) * _m[2][0];
 
   ret4 += _m[3][3] * ret3;
 
   ret3 =
     ( _m[0][3] * _m[1][1] - _m[0][1] * _m[1][3] ) * _m[2][0]
   + ( _m[0][0] * _m[1][3] - _m[0][3] * _m[1][0] ) * _m[2][1]
   + ( _m[0][1] * _m[1][0] - _m[0][0] * _m[1][1] ) * _m[2][3];
 
   ret4 += _m[3][5] * ret3;
   ret5 += _m[4][2] * ret4;
   ret  += _m[5][4] * ret5;
 
   return ret;
 }
 
 
 
 >Fix:
 	<how to correct or work around the problem, if known (multiple lines)>


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

* Re: optimization/2692: excessive compile time with optimization
@ 2002-04-02  0:31 rth
  0 siblings, 0 replies; 6+ messages in thread
From: rth @ 2002-04-02  0:31 UTC (permalink / raw)
  To: gcc-bugs, gcc-prs, nobody, snyder

Synopsis: excessive compile time with optimization

State-Changed-From-To: open->feedback
State-Changed-By: rth
State-Changed-When: Tue Apr  2 00:31:55 2002
State-Changed-Why:
    No test case.

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


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

* optimization/2692: excessive compile time with optimization
@ 2001-04-29 21:06 snyder
  0 siblings, 0 replies; 6+ messages in thread
From: snyder @ 2001-04-29 21:06 UTC (permalink / raw)
  To: gcc-gnats

>Number:         2692
>Category:       optimization
>Synopsis:       excessive compile time with optimization
>Confidential:   no
>Severity:       serious
>Priority:       low
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Sun Apr 29 21:06:01 PDT 2001
>Closed-Date:
>Last-Modified:
>Originator:     scott snyder
>Release:        3.0 20010429 (prerelease)
>Organization:
>Environment:
System: Linux karma 2.2.16-22 #1 Tue Aug 22 16:49:06 EDT 2000 i686 unknown
Architecture: i686

	
host: i686-pc-linux-gnu
build: i686-pc-linux-gnu
target: i686-pc-linux-gnu
configured with: ../egcs/configure --prefix=/usr/local/egcs --enable-threads=posix --enable-long-long
>Description:

If i try to compile the source below with -O2, gcc runs for over 45 minutes
and grows to over 300 MB.  On my machine, it exhausts the available
swap space and dies before completing.

Without optimization, it completes in a couple minutes.

gcc 2.95.2 dies immediately with an ICE on this source, regardless
of whether or not optimization is on, so i guess this isn't a regression.

>How-To-Repeat:
	
>Fix:
	
>Release-Note:
>Audit-Trail:
>Unformatted:


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

end of thread, other threads:[~2002-04-12 23:43 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2002-04-12 16:43 optimization/2692: excessive compile time with optimization rth
  -- strict thread matches above, loose matches on Subject: below --
2002-04-02  1:56 Richard Henderson
2002-04-02  1:34 rth
2002-04-02  1:16 Scott Snyder
2002-04-02  0:31 rth
2001-04-29 21:06 snyder

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).