[Bug fortran/20986] New: erreur dans gfc_conv_string_tmp

2005-04-13 Thread antoine dot letellier at free dot fr
it is fortran 77 code, if it is irrelevant please tell me. if you are interested
i have other bugs.

/home/antoine/bin/gfortran  -v
Utilisation des specs internes.
Target: x86_64-unknown-linux-gnu
Configuré avec: ../gcc-4.0-20050402/configure --prefix=/home/antoine
--with-gmp=/home/antoine/ --without-libiberty
Modèle de thread: posix
version gcc 4.0.0 20050402 (prerelease)


the command
/home/antoine/bin/gfortran -B/home/antoine  -c -O2 -ffixed-form
-fdefault-integer-8 -fdefault-real-8zzfimp.f

the output :
zzfimp.f: In function 'zzfimp':
zzfimp.f:434: erreur interne du compilateur: dans gfc_conv_string_tmp, à
fortran/trans-expr.c:736
Veuillez soumettre un rapport complet d'anomalies,
avec le source pré-traité si nécessaire.

the source :

  SUBROUTINE ZZFIMP(MTABX,MTAB1)
  IMPLICIT INTEGER(I-N)
  IMPLICIT REAL*8 (A-H,O-Z)
  COMMON/COPTIO/IPLLB
  COMMON/COPTIO/IERPER,  IERMAX, IERR
  REAL*4 REAERR
  COMMON/COPTIO/INTERR(10),REAERR(10)
  CHARACTER*40 MOTERR
  CHARACTER*72 TITREE
  CHARACTER*4 LOCERR
  COMMON/COPTIC/MOTERR,TITREE,LOCERR
  COMMON /COPTIO/IOTER,   IOLEC,  IOIMP, IOCAR,  IOACQ
  COMMON /COPTIO/IOPER,   IOSGB,  IOGRA, IOSAU,  IORES
  COMMON/COPTIO/IECHO,   IIMPI,IOSPI
  COMMON/COPTIO/IDIM, MCOORD
  COMMON/COPTIO/IFOMOD
  COMMON/COPTIO/NIFOUR
  COMMON/COPTIO/IFOUR
  COMMON/COPTIO/NSDPGE
  REAL*4 DIOCAD,DIOCAE
  COMMON/COPTIO/DIOCAD, DIOCAE
  LOGICAL ZHORIZ , ZINIPS
  COMMON/COPTIO/ZHORIZ , ZINIPS
  COMMON/COPTIO/IONIVE
  COMMON/COPTIO/NGMAXY
  COMMON/COPTIO/IZROSF
  COMMON/COPTIO/ISOTYP
  COMMON/COPTIO/IEPTR
  CHARACTER*72 DATVER
  COMMON/COPTIC/DATVER
  COMMON/COPTIO/IOSCR,LTEXLU
  COMMON/COPTIC/TEXLU
  CHARACTER*500 TEXLU
  COMMON/COPTIO/NORINC,NORVAL,NORIND,NORVAD
  COMMON/COPTIO/NUCROU
  COMMON/COPTIC/LANGUE
  CHARACTER*4 LANGUE
  COMMON/COPTIO/IPSAUV
  COMMON/COPTIC/NOMFIC,NOMRES
  CHARACTER*72 NOMFIC,NOMRES
  COMMON/COPTIO/IPREFI,IFICLE,DIMATT,DIMFIC
  REAL*4 DIMATT,DIMFIC
  COMMON/COPTIO/IREFOR,ISAFOR
  REAL*4 DENSIT,DENSIU
  COMMON /CGEOME/DENSIT, DENSIU
  COMMON /CGEOME/NOMBR
  CHARACTER*4 NOMS
  COMMON /CGEOMC/NOMS(100)
  COMMON /CGEOME/ILCOUR
  COMMON/CGEOME/NBNNE(100),KDEGRE(100),KSURF(100)
  COMMON/CGEOME/NBSOM(100),NSPOS(100)
  COMMON/CGEOME/LPL(100),LPT(100)
  COMMON/CGEOME/IBSOM(300)
  COMMON/CGEOME/KSEGM(1500)
  COMMON/CGEOME/KDFAC(3,20),KFAC(1000),LFAC(1000)
  COMMON/CGEOME/LDEL(2,100),LTEL(2,100)
  COMMON/CGEOME/KSIF(11)
  COMMON /CGEOME/NBCOUL
  CHARACTER*4 NCOUL
  COMMON /CGEOMC/NCOUL(0:100)
  COMMON /CGEOME/IDCOUL
  COMMON/CGEOME/ITABM(0:10,0:10)
  COMMON/CGEOME/IOMBRE
  COMMON/CGEOME/IOEIL
C SEGMENT,MCHELM
C POINTEUR MCHEL1.MCHELM,MCHEL2.MCHELM,MCHEL3.MCHELM
C POINTEUR MCHEL4.MCHELM,MCHEL5.MCHELM,MCHEL6.MCHELM
C SEGMENT,MCHAML
C POINTEUR MCHAM1.MCHAML,MCHAM2.MCHAML,MCHAM3.MCHAML
C POINTEUR MCHAM4.MCHAML,MCHAM5.MCHAML,MCHAM6.MCHAML
C SEGMENT,MELVAL
C POINTEUR MELVA1.MELVAL,MELVA2.MELVAL,MELVA3.MELVAL
C POINTEUR MELVA4.MELVAL,MELVA5.MELVAL,MELVA6.MELVAL
C SEGMENT  MCOORD
C SEGMENT/MLENTI/(LECT(JG)),MLENT1.MLENTI,MLENT2.MLENTI,
C1 MLENT3.MLENTI
C SEGMENT  MELEME
C POINTEUR IPT1.MELEME,IPT2.MELEME,IPT3.MELEME,IPT4.MELEME
C POINTEUR IPT5.MELEME,IPT6.MELEME,IPT7.MELEME,IPT8.MELEME
C POINTEUR IPT9.MELEME
C POINTEUR MELEM1.MELEME,SPGID.MELEME,SPGZ.MELEME
C POINTEUR MELEMP.MELEME
C SEGMENT MCHPOI
C POINTEUR MCHPO1.MCHPOI,MCHPO2.MCHPOI,MCHPO3.MCHPOI,MCHPO4.MCHPOI
C SEGMENT MSOUPO
C POINTEUR MSOUP1.MSOUPO,MSOUP2.MSOUPO,MSOUP3.MSOUPO,
C# MSOUP4.MSOUPO,MSOUP5.MSOUPO
C SEGMENT MPOVAL
C POINTEUR MPOVA1.MPOVAL,MPOVA2.MPOVAL,MPOVA3.MPOVAL,
C# MPOVA4.MPOVAL,MPOVA5.MPOVAL,MPOVA6.MPOVAL
C POINTEUR IZG1.MCHPOI, IZGG1.MPOVAL
C POINTEUR IZTU1.MPOVAL
C POINTEUR MZFLU.MPOVAL
C POINTEUR IZVOL.MPOVAL
C SEGMENT IZFFM
C SEGMENT IZHR
C POINTEUR IZF1.IZFFM
C SEGMENT MLMOTS
C POINTEUR MLMOT1.MLMOTS,MLMOT2.MLMOTS,MLMOT3.MLMOTS
C POINTEUR MLMOT4.MLMOTS,MLMOT5.MLMOTS,MLMOT6.MLMOTS
C POINTEUR LINCO.MLMOTS
  COMMON/OOOCOM/OOA(1),OOT,OOV(8),MOT_01,IPC_02,NOC_03,LIS_04,ICH_05
 *,IEL_06,LEC_07,NUM_08,VEL_09,VPO_10,VPO_11,ITY_12,KZH_13,KTP_14,XY
 *Z_15,XCO_16,FN_17,GR_18,PG_19,HR_20,PGS_21,RPG_22,NUM_23,FN_24
  INTEGEROOA,OOT,OOV,OOO,OO1,OO2,OO3,OO4,MCHELM,OO5
  INTEGEROO6,OO7,OO8,OO9,OO10,MCHEL1,MCHEL2,MCHEL3,MCHEL4,MCHEL5
  INTEGERMCHEL6,MCHAML,MCHAM1,MCHAM2,MCHAM3,MCHAM4,MCHAM5,MCHAM6,MEL
 *VAL,MELVA1
  INTEGERMELVA2,MELVA3,MELVA4,MELVA5,MELVA6,MCOORD,MLENTI,MLENT1,MLE
 *NT2,MLENT3
  INTEGERMELEME,IPT1,IPT2,IPT3,IPT4,IPT5,IPT6,IPT7,IPT8,IPT9
  INTEGERMELEM1,SPGID,SPGZ,MELEMP,MCHPOI,MCHPO1,MCHPO2,M

[Bug c++/20987] New: friend declaration links to two functions

2005-04-13 Thread wolfgang dot roehrl at de dot gi-de dot com
Dear all,

I would like to post a bug report for the GNU C/C++ compiler 3.3-e500.

We use the compiler to generate code for a PowerPC processor.

Used invokation line for the GNU C++ compiler:

ccppc -c -x c++ -ansi -Wall -Werror -mcpu=8540 -fverbose-asm -mbig
  -fmerge-templates -mmultiple -mno-string -mstrict-align -O3
  -fno-exceptions -fno-rtti -fno-builtin-printf
  -I
  -D
  X.CPP -oX.O


// file X.CPP

struct S
{
static int f4 ();

class C
{
public:
C ();
~C ();
private:
friend int f4 ();

static int i;
};
};

int f4 () { return S::C::i; }

int S::f4 () { return C::i; }// Comeau: member "S::C::i" is inaccessible


The code above compiles fine with GNU. Obviously the compiler binds the friend
declaration in class C to tow functions: to S::f4() and to ::f4() since both
functions can access the private member S::C::i.

It is not clear if the friend declaration should link to S::f4(). There is a
defect report (DR 138) which covers this case.


Kind regards
W. Roehrl

-- 
   Summary: friend declaration links to two functions
   Product: gcc
   Version: 3.3
Status: UNCONFIRMED
  Severity: normal
  Priority: P2
 Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: wolfgang dot roehrl at de dot gi-de dot com
CC: gcc-bugs at gcc dot gnu dot org
 GCC build triplet: sparc-sun-solaris2.5.1
  GCC host triplet: i386-pc-mingw32
GCC target triplet: powerpc-wrs-vxworks


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


[Bug libfortran/19016] [4.0 only] maxloc ignores mask

2005-04-13 Thread tkoenig at gcc dot gnu dot org

--- Additional Comments From tkoenig at gcc dot gnu dot org  2005-04-13 
08:27 ---
Fixed in 4.1, waiting for 4.0 to reopen to apply there.

-- 
   What|Removed |Added

Summary|maxloc ignores mask |[4.0 only] maxloc ignores
   ||mask
   Target Milestone|--- |4.0.1


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


[Bug ada/20822] makeinfo cannot process gnat_ugn_unw.texi

2005-04-13 Thread charlet at adacore dot com

--- Additional Comments From charlet at adacore dot com  2005-04-13 08:32 
---
Subject: Re:  makeinfo cannot process gnat_ugn_unw.texi

> Arnaud, may be a candidate for review?

Sure. I'd suggest posting the patch to gcc-patches@

Arno


-- 


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


[Bug rtl-optimization/13724] Bad code generated for unsigned int -> long long multiplication

2005-04-13 Thread steven at gcc dot gnu dot org

--- Additional Comments From steven at gcc dot gnu dot org  2005-04-13 
09:23 ---
Paolo Bozini mentioned this bug as an example of the 64bits arith 
on 32bits host "issue". 

-- 
   What|Removed |Added

OtherBugsDependingO||19721
  nThis||


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


[Bug libfortran/20108] [4.0 only] incorrect run time error on formatted read

2005-04-13 Thread tkoenig at gcc dot gnu dot org

--- Additional Comments From tkoenig at gcc dot gnu dot org  2005-04-13 
09:34 ---
Fixed in 4.1, waiting for 4.0.1 to reopen.

-- 
   What|Removed |Added

Summary|incorrect run time error on |[4.0 only] incorrect run
   |formatted read  |time error on formatted read
   Target Milestone|--- |4.0.1


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


[Bug c++/20980] internal compiler error on static member assignment

2005-04-13 Thread pinskia at gcc dot gnu dot org

--- Additional Comments From pinskia at gcc dot gnu dot org  2005-04-13 
09:39 ---
But the code is still invalid and is really a dup of bug 20133.
You most want:
template  int Test::myInt;
template  S& Test::myS = S::instance();

Not what you gave.

The orginal ICE is fixed so still closing as fixed.

-- 
   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||FIXED


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


[Bug debug/20985] building mips/64 cross compiler on x86 produces incorrect assembler code for _divdi3 with -fnon-call-exceptions

2005-04-13 Thread pinskia at gcc dot gnu dot org

--- Additional Comments From pinskia at gcc dot gnu dot org  2005-04-13 
09:46 ---
956.4byte  $LFB4-.

Are you sure that this is not an assembler problem?

-- 
   What|Removed |Added

   Severity|critical|normal
  Component|bootstrap   |debug
   Keywords||build


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


[Bug target/20126] [3.3/3.4/4.0 Regression] Inlined memcmp makes one argument null on entry

2005-04-13 Thread jakub at redhat dot com

--- Additional Comments From jakub at redhat dot com  2005-04-13 09:46 
---
Subject: Re:  [3.3/3.4/4.0 Regression] Inlined memcmp makes one argument null 
on entry

On Tue, Apr 12, 2005 at 05:54:58PM -, mmitchel at gcc dot gnu dot org wrote:
> 
> --- Additional Comments From mmitchel at gcc dot gnu dot org  2005-04-12 
> 17:54 ---
> I like the simpler approach.  If someone would test that for 4.0, I'd be 
> ecstatic.

Here is what I have bootstrapped/regtested on
{i386,x86_64,ia64,ppc,ppc64,s390,s390x}-linux.

2005-04-13  Alexandre Oliva  <[EMAIL PROTECTED]>
Roger Sayle  <[EMAIL PROTECTED]>

PR target/20126
* loop.c (loop_givs_rescan): If replacement of DEST_ADDR failed,
set the original address pseudo to the correct value before the
original insn, if possible, and leave the insn alone, otherwise
create a new pseudo, set it and replace it in the insn.
* recog.c (validate_change_maybe_volatile): New.
* recog.h (validate_change_maybe_volatile): Declare.

* gcc.dg/pr20126.c: New.

--- gcc/loop.c.jj   2005-04-03 10:33:24.0 +0200
+++ gcc/loop.c  2005-04-12 23:22:06.0 +0200
@@ -5478,9 +5478,20 @@ loop_givs_rescan (struct loop *loop, str
mark_reg_pointer (v->new_reg, 0);
 
   if (v->giv_type == DEST_ADDR)
-   /* Store reduced reg as the address in the memref where we found
-  this giv.  */
-   validate_change (v->insn, v->location, v->new_reg, 0);
+   {
+ /* Store reduced reg as the address in the memref where we found
+this giv.  */
+ if (!validate_change (v->insn, v->location, v->new_reg, 0))
+   {
+ if (loop_dump_stream)
+   fprintf (loop_dump_stream,
+"unable to reduce iv to register in insn %d\n",
+INSN_UID (v->insn));
+ bl->all_reduced = 0;
+ v->ignore = 1;
+ continue;
+   }
+   }
   else if (v->replaceable)
{
  reg_map[REGNO (v->dest_reg)] = v->new_reg;
--- gcc/testsuite/gcc.dg/pr20126.c  1 Jan 1970 00:00:00 -
+++ gcc/testsuite/gcc.dg/pr20126.c 10 Mar 2005 11:24:16 -
@@ -0,0 +1,50 @@
+/* dg-do run */
+/* dg-options "-O2" */
+
+/* PR target/20126 was not really target-specific, but rather a loop's
+   failure to take into account the possibility that a DEST_ADDR giv
+   replacement might fail, such as when you attempt to replace a REG
+   with a PLUS in one of the register_operands of cmpstrqi_rex_1.  */
+
+extern void abort (void);
+
+typedef struct { int a; char b[3]; } S;
+S c = { 2, "aa" }, d = { 2, "aa" };
+
+void *
+bar (const void *x, int y, int z)
+{
+  return (void *) 0;
+}
+
+int
+foo (S *x, S *y)
+{
+  const char *e, *f, *g;
+  int h;
+
+  h = y->a;
+  f = y->b;
+  e = x->b;
+
+  if (h == 1)
+return bar (e, *f, x->a) != 0;
+
+  g = e + x->a - h;
+  while (e <= g)
+{
+  const char *t = e + 1;
+  if (__builtin_memcmp (e, f, h) == 0)
+   return 1;
+  e = t;
+}
+  return 0;
+}
+
+int
+main (void)
+{
+  if (foo (&c, &d) != 1)
+abort ();
+  return 0;
+}


Jakub


-- 


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


[Bug c++/20987] friend declaration links to two functions

2005-04-13 Thread pinskia at gcc dot gnu dot org

--- Additional Comments From pinskia at gcc dot gnu dot org  2005-04-13 
09:58 ---
Fixed in 3.4.0 and above:
t.cc: In static member function `static int S::f4()':
t.cc:13: error: `int S::C::i' is private
t.cc:19: error: within this context

-- 
   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||FIXED
   Target Milestone|--- |3.4.0


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


[Bug target/19150] [3.3/3.4/4.0/4.1 Regression] suboptimal fp division with -ffast-math

2005-04-13 Thread uros at kss-loka dot si

--- Additional Comments From uros at kss-loka dot si  2005-04-13 09:58 
---
(In reply to comment #7)
> Uros, what's the state of this bug? I don't understand if the patch linked in 
> comment #6 was committed, or which is its final version still pending 
> review/approval.

Another approach was suggested by Roger Sayle in
http://gcc.gnu.org/ml/gcc-patches/2004-09/msg02017.html. We would force
CONST_DOUBLE to memory only if (newly created) combined instruction with
CONST_DOUBLE operand doesn't match. However, this approach requires some more
hacking, and I havn't look into it (yet...?).

-- 


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


[Bug libfortran/18495] Intrinisc function SPREAD is broken

2005-04-13 Thread tkoenig at gcc dot gnu dot org

--- Additional Comments From tkoenig at gcc dot gnu dot org  2005-04-13 
10:01 ---
The program test_spread from the original bug report
is bogus.  dim=1000 doesn't make sense (which invalidates
my comment #5 and makes this particular case a diagnostics
issue).

Thomas

-- 


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


[Bug fortran/20986] erreur dans gfc_conv_string_tmp

2005-04-13 Thread pinskia at gcc dot gnu dot org

--- Additional Comments From pinskia at gcc dot gnu dot org  2005-04-13 
10:03 ---
Even though this is a dup of bug 20971 which was just reported yesterday, 
please report more bugs.  
There are a large number of bugs in gfortran which are not known yet.

*** This bug has been marked as a duplicate of 20971 ***

-- 
   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||DUPLICATE


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


[Bug fortran/20971] gfortran - internal compiler error on bad program -fdefault-integer-8

2005-04-13 Thread pinskia at gcc dot gnu dot org

--- Additional Comments From pinskia at gcc dot gnu dot org  2005-04-13 
10:03 ---
*** Bug 20986 has been marked as a duplicate of this bug. ***

-- 
   What|Removed |Added

 CC||antoine dot letellier at
   ||free dot fr


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


[Bug fortran/20971] gfortran - internal compiler error on bad program -fdefault-integer-8

2005-04-13 Thread pinskia at gcc dot gnu dot org

--- Additional Comments From pinskia at gcc dot gnu dot org  2005-04-13 
10:03 ---
Confirmed.

-- 
   What|Removed |Added

 Status|UNCONFIRMED |NEW
 Ever Confirmed||1
   Last reconfirmed|-00-00 00:00:00 |2005-04-13 10:03:48
   date||


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


[Bug target/20126] [3.3/3.4/4.0 Regression] Inlined memcmp makes one argument null on entry

2005-04-13 Thread bernds_cb1 at t-online dot de

--- Additional Comments From bernds_cb1 at t-online dot de  2005-04-13 
10:08 ---
Subject: Re:  [3.3/3.4/4.0 Regression] Inlined memcmp makes
 one argument null on entry

Jakub Jelinek wrote:
>   PR target/20126
>   * loop.c (loop_givs_rescan): If replacement of DEST_ADDR failed,
>   set the original address pseudo to the correct value before the
>   original insn, if possible, and leave the insn alone, otherwise
>   create a new pseudo, set it and replace it in the insn.
>   * recog.c (validate_change_maybe_volatile): New.
>   * recog.h (validate_change_maybe_volatile): Declare.
> 
This doesn't appear to match the patch you posted.


Bernd


-- 


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


[Bug other/20988] New: D Language frontend Segmentation fault

2005-04-13 Thread marco dot falda at unipd dot it
gdc -v --save-temps -c VincoloIIF.d

-- BEGIN OF OUTPUT --
Reading specs from /usr/lib/gcc-lib/i686-pc-cygwin/3.3.3/specs
Configured with: /gcc/gcc-3.3.3-3/configure --verbose --prefix=/usr --exec-
prefix=/usr --sysconfdir=/etc --libdir=/usr/lib --libexecdir=/usr/lib --
mandir=/usr/share/man --infodir=/usr/share/info --enable-
languages=c,ada,c++,d,f77,java,objc,pascal --enable-nls --without-included-
gettext --enable-libgcj --with-system-zlib --enable-interpreter --enable-
threads=posix --enable-java-gc=boehm --enable-sjlj-exceptions --disable-
version-specific-runtime-libs --disable-win32-registry
Thread model: posix
gcc version 3.3.3 (cygwin special)
 /usr/lib/gcc-lib/i686-pc-cygwin/3.3.3/cc1d.exe VincoloIIF.d -quiet -dumpbase 
VincoloIIF.d -auxbase VincoloIIF -version -o VincoloIIF.s
GNU D version 3.3.3 (cygwin special) (i686-pc-cygwin)
compiled by GNU C version 3.3.3 (cygwin special).
GGC heuristics: --param ggc-min-expand=45 --param ggc-min-heapsize=28350
VincoloIIF.d:0: internal compiler error: Segmentation fault
Please submit a full bug report, with preprocessed source if appropriate.
See http://gcc.gnu.org/bugs.html> for instructions.
-- END OF OUTPUT --

No *.i* files generated.

-- 
   Summary: D Language frontend Segmentation fault
   Product: gcc
   Version: 3.3.3
Status: UNCONFIRMED
  Severity: critical
  Priority: P2
 Component: other
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: marco dot falda at unipd dot it
CC: gcc-bugs at gcc dot gnu dot org


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


[Bug other/20988] D Language frontend Segmentation fault

2005-04-13 Thread pinskia at gcc dot gnu dot org

--- Additional Comments From pinskia at gcc dot gnu dot org  2005-04-13 
10:51 ---
Since the D front-end is not part of GCC, we cannot reproduce you bug.  I would 
report this bug to the 
people you got the D front-end from.

-- 
   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||INVALID


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


[Bug target/20126] [3.3/3.4/4.0 Regression] Inlined memcmp makes one argument null on entry

2005-04-13 Thread jakub at redhat dot com

--- Additional Comments From jakub at redhat dot com  2005-04-13 11:38 
---
Subject: Re:  [3.3/3.4/4.0 Regression] Inlined memcmp makes one argument null 
on entry

On Wed, Apr 13, 2005 at 12:05:35PM +0200, Bernd Schmidt wrote:
> Jakub Jelinek wrote:
> > PR target/20126
> > * loop.c (loop_givs_rescan): If replacement of DEST_ADDR failed,
> > set the original address pseudo to the correct value before the
> > original insn, if possible, and leave the insn alone, otherwise
> > create a new pseudo, set it and replace it in the insn.
> > * recog.c (validate_change_maybe_volatile): New.
> > * recog.h (validate_change_maybe_volatile): Declare.
> >
> This doesn't appear to match the patch you posted.

Oops.  Is:
2005-04-13  Alexandre Oliva  <[EMAIL PROTECTED]>
Roger Sayle  <[EMAIL PROTECTED]>

PR target/20126
* loop.c (loop_givs_rescan): If replacement of DEST_ADDR failed,
signal that all GIVs couldn't be reduced.

* gcc.dg/pr20126.c: New.
better?

Jakub


-- 


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


[Bug c++/13744] ICE when using implicit copy constructor for struct defined in template function

2005-04-13 Thread cvs-commit at gcc dot gnu dot org

--- Additional Comments From cvs-commit at gcc dot gnu dot org  2005-04-13 
12:01 ---
Subject: Bug 13744

CVSROOT:/cvs/gcc
Module name:gcc
Changes by: [EMAIL PROTECTED]   2005-04-13 12:01:03

Modified files:
gcc/testsuite  : ChangeLog 
Added files:
gcc/testsuite/g++.dg/inherit: local3.C 

Log message:
PR c++/13744
* g++.dg/inherit/local3.C: New test.

Patches:
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/ChangeLog.diff?cvsroot=gcc&r1=1.5336&r2=1.5337
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/g++.dg/inherit/local3.C.diff?cvsroot=gcc&r1=NONE&r2=1.1



-- 


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


[Bug c++/13744] ICE when using implicit copy constructor for struct defined in template function

2005-04-13 Thread reichelt at gcc dot gnu dot org

--- Additional Comments From reichelt at gcc dot gnu dot org  2005-04-13 
12:07 ---
Fixed on mainline (which will become 4.1.0).


-- 
   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution||FIXED


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


[Bug c++/18378] [3.4 Regression] ICE when returning a copy of a packed member

2005-04-13 Thread reichelt at gcc dot gnu dot org


-- 
Bug 18378 depends on bug 13744, which changed state.

Bug 13744 Summary: ICE when using implicit copy constructor for struct defined 
in template function
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=13744

   What|Old Value   |New Value

 Status|NEW |RESOLVED
 Resolution||FIXED

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


[Bug libstdc++/20979] __gnu_cxx::bitmap_allocator export pruning

2005-04-13 Thread dhruvbird at yahoo dot com

--- Additional Comments From dhruvbird at yahoo dot com  2005-04-13 12:11 
---
(In reply to comment #1)
> Created an attachment (id=8615)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=8615&action=view)
> free_list:: static removal
> 

Hi,
  What has been done seems ok, but there is just one thing that niggles me.
There is now the _M_get_mutex() function, which itself is not thread safe. So,
if 2 or more threads try to get memory simultaneously, then the _M_get_mutex()
function will be called 2 times, and the mutex will be initialized 2 times
If that is possible that is. Basically, there seems to be arace here. HOwever,
with the previous scenario, the static was initialized before anything happned
[I think].

-Dhruv.

-- 


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


[Bug preprocessor/20989] New: The -M option gives object file names without directory

2005-04-13 Thread bje at safepro dot dk
The -M preprocessor option (and -MM and similar options) strips the directory
part from the listed object file names. The documentaion for -M says:

 "Unless specified explicitly (with `-MT' or `-MQ'), the object file
  name consists of the basename of the source file with any suffix
  replaced with object file suffix."

I interpret the word "basename" in the manual text to include directories as the
basename function in GNU make does, however the actual output is without
directories:

=== Content of test/test.c ===
#include "test.h"
#include 
int main ()
{
puts (GREETING);
}
=== Content of test/test.h ===
#ifndef TEST_H
#define TEST_H
#define GREETING "Hello world"
#endif
===
$ gcc -MM test/test.c
test.o: test/test.c test/test.h
$

I had expected the output to be: "test/test.o: test/test.c test/test.h".

-- 
   Summary: The -M option gives object file names without directory
   Product: gcc
   Version: 3.4.3
Status: UNCONFIRMED
  Severity: normal
  Priority: P2
 Component: preprocessor
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: bje at safepro dot dk
CC: gcc-bugs at gcc dot gnu dot org
 GCC build triplet: i686-pc-linux-gnu
  GCC host triplet: i686-pc-linux-gnu
GCC target triplet: i686-pc-linux-gnu


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


Re: [Bug tree-optimization/15524] [4.0 Regression] jump threading on trees is slow with switch statements with large # of cases

2005-04-13 Thread Diego Novillo
On Tue, Apr 12, 2005 at 04:55:20PM -, law at redhat dot com wrote:

> That mental model doesn't work right now with the way DOM & the
> jump threader because they are too tightly intertwined.
> 
The link that you have still not shown me is why doesn't this
mental model work for the jump threader.  That's why I said that
I need to run the threader myself and see why it needs all these
additional crutches.

If the code has been cleaned up of redundancies, copies
propagated, names have known values and ranges are set, then I
don't see why we would need all the extra baggage.

> The iteration step we see today would turn into a worklist.
> ie, after we thread jumps, we walk through the IL for PHIs
> which represent a copy that can be propagated.
>
Ah, here's something specific I don't follow.  Why would you have
these PHIs anymore?  If all the arguments were ultimately
equivalent, then the various propagators are bound to have
removed them.  If not, that sounds like a bug in them.

> What's nice about this is the bulk of DOM as we know it today
> disappears along with the expensive iteration in the case when
> jumps are threaded. We just need the right APIs for copy
> propagation and value handles.
> 
Again, why?  The propagators are supposed to have done this
already.  They are all supposed to work in conditional regions.

> We could still potentially use ASSERT_EXPRs to encode
> information about edge equivalences, though we probably would
> still want the ASSERT_EXPR to appear as statement rather than
> the RHS of a MODIFY_EXPR.
> 
Odd, the nice thing about assertions being on the RHS is that you
pin their result to a specific SSA name that you then get to use
at every place naturally dominated by the assertion.

If you could give me a concrete test case that I could sink my
teeth in, that'd be great.


Thanks.  Diego.


[Bug tree-optimization/15524] [4.0 Regression] jump threading on trees is slow with switch statements with large # of cases

2005-04-13 Thread dnovillo at redhat dot com

--- Additional Comments From dnovillo at redhat dot com  2005-04-13 13:03 
---
Subject: Re:  [4.0 Regression] jump threading on trees is slow with switch 
statements with large # of cases

On Tue, Apr 12, 2005 at 04:55:20PM -, law at redhat dot com wrote:

> That mental model doesn't work right now with the way DOM & the
> jump threader because they are too tightly intertwined.
> 
The link that you have still not shown me is why doesn't this
mental model work for the jump threader.  That's why I said that
I need to run the threader myself and see why it needs all these
additional crutches.

If the code has been cleaned up of redundancies, copies
propagated, names have known values and ranges are set, then I
don't see why we would need all the extra baggage.

> The iteration step we see today would turn into a worklist.
> ie, after we thread jumps, we walk through the IL for PHIs
> which represent a copy that can be propagated.
>
Ah, here's something specific I don't follow.  Why would you have
these PHIs anymore?  If all the arguments were ultimately
equivalent, then the various propagators are bound to have
removed them.  If not, that sounds like a bug in them.

> What's nice about this is the bulk of DOM as we know it today
> disappears along with the expensive iteration in the case when
> jumps are threaded. We just need the right APIs for copy
> propagation and value handles.
> 
Again, why?  The propagators are supposed to have done this
already.  They are all supposed to work in conditional regions.

> We could still potentially use ASSERT_EXPRs to encode
> information about edge equivalences, though we probably would
> still want the ASSERT_EXPR to appear as statement rather than
> the RHS of a MODIFY_EXPR.
> 
Odd, the nice thing about assertions being on the RHS is that you
pin their result to a specific SSA name that you then get to use
at every place naturally dominated by the assertion.

If you could give me a concrete test case that I could sink my
teeth in, that'd be great.


Thanks.  Diego.


-- 


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


[Bug libfortran/20970] gfortran - bus error -fdefault-integer-8

2005-04-13 Thread dir at lanl dot gov

--- Additional Comments From dir at lanl dot gov  2005-04-13 13:08 ---

Here is the crash walk back

Thread 0 Crashed:
0   libgfortran.0.dylib 0x0023e99c _gfortran_compare_string + 0x68
(string_intrinsics.c:136)
1   adini   0x1d2c MAIN__ + 0x40 (adini.f:6)
2   adini   0x1d74 main + 0x18
3   adini   0x191c _start + 0x188 (crt.c:267)
4   dyld0x8fe1a558 _dyld_start + 0x64



-- 


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


[Bug fortran/20990] New: Segmentation fault

2005-04-13 Thread antoine dot letellier at free dot fr
/home/antoine/bin/gfortran -v
Utilisation des specs internes.
Target: x86_64-unknown-linux-gnu
Configuré avec: ../gcc-4.0-20050402/configure --prefix=/home/antoine
--with-gmp=/home/antoine/ --without-libiberty
Modèle de thread: posix
version gcc 4.0.0 20050402 (prerelease)

command line :
/home/antoine/bin/gfortran -B/home/antoine  -c -O2 -ffixed-form
-fdefault-integer-8 -fdefault-real-8jonct.f

output :

jonct.f: In function 'jonct':
jonct.f:294: erreur interne du compilateur: Segmentation fault
Veuillez soumettre un rapport complet d'anomalies,
avec le source pré-traité si nécessaire.

source :

  SUBROUTINE JONCT
  IMPLICIT INTEGER(I-N)
  COMMON/COPTIO/IPLLB
  COMMON/COPTIO/IERPER,  IERMAX, IERR
  REAL*4 REAERR
  COMMON/COPTIO/INTERR(10),REAERR(10)
  CHARACTER*40 MOTERR
  CHARACTER*72 TITREE
  CHARACTER*4 LOCERR
  COMMON/COPTIC/MOTERR,TITREE,LOCERR
  COMMON /COPTIO/IOTER,   IOLEC,  IOIMP, IOCAR,  IOACQ
  COMMON /COPTIO/IOPER,   IOSGB,  IOGRA, IOSAU,  IORES
  COMMON/COPTIO/IECHO,   IIMPI,IOSPI
  COMMON/COPTIO/IDIM, MCOORD
  COMMON/COPTIO/IFOMOD
  COMMON/COPTIO/NIFOUR
  COMMON/COPTIO/IFOUR
  COMMON/COPTIO/NSDPGE
  REAL*4 DIOCAD,DIOCAE
  COMMON/COPTIO/DIOCAD, DIOCAE
  LOGICAL ZHORIZ , ZINIPS
  COMMON/COPTIO/ZHORIZ , ZINIPS
  COMMON/COPTIO/IONIVE
  COMMON/COPTIO/NGMAXY
  COMMON/COPTIO/IZROSF
  COMMON/COPTIO/ISOTYP
  COMMON/COPTIO/IEPTR
  CHARACTER*72 DATVER
  COMMON/COPTIC/DATVER
  COMMON/COPTIO/IOSCR,LTEXLU
  COMMON/COPTIC/TEXLU
  CHARACTER*500 TEXLU
  COMMON/COPTIO/NORINC,NORVAL,NORIND,NORVAD
  COMMON/COPTIO/NUCROU
  COMMON/COPTIC/LANGUE
  CHARACTER*4 LANGUE
  COMMON/COPTIO/IPSAUV
  COMMON/COPTIC/NOMFIC,NOMRES
  CHARACTER*72 NOMFIC,NOMRES
  COMMON/COPTIO/IPREFI,IFICLE,DIMATT,DIMFIC
  REAL*4 DIMATT,DIMFIC
  COMMON/COPTIO/IREFOR,ISAFOR
  CHARACTER*4 NOMTP
  COMMON /CHAMP/  NOMTP(300)
  COMMON/LCHAMP/ LNOMTP
  CHARACTER*8 NOMIN
  COMMON /CHAMP/  NOMIN(5)
  COMMON/LCHAMP/ LNOMIN
  CHARACTER*8 NOMFR
  COMMON /CHAMP/  NOMFR(40)
  COMMON/LCHAMP/ LNOMFR
  CHARACTER*8 NOMCH
  COMMON /CHAMP/  NOMCH(50)
  COMMON/LCHAMP/ LNOMCH
  CHARACTER*8 NOMAT
  COMMON /CHAMP/  NOMAT(50)
  COMMON/LCHAMP/ LNOMAT
  CHARACTER*4 NOMDD
  COMMON /CHAMP/  NOMDD(40)
  COMMON/LCHAMP/ LNOMDD
  CHARACTER*4 NOMDU
  COMMON /CHAMP/  NOMDU(40)
  COMMON/LCHAMP/ LNOMDU
  CHARACTER*4 NOMVI
  COMMON /CHAMP/  NOMVI(40)
  COMMON/LCHAMP/ LNOMVI
  CHARACTER*4 NOMAC
  COMMON /CHAMP/  NOMAC(40)
  COMMON/LCHAMP/ LNOMAC
  CHARACTER*4 NOMST
  COMMON /CHAMP/  NOMST(60)
  COMMON/LCHAMP/ LNOMST
  CHARACTER*4 NOMDF
  COMMON /CHAMP/  NOMDF(60)
  COMMON/LCHAMP/ LNOMDF
  CHARACTER*4 NOMYO
  COMMON /CHAMP/  NOMYO(100)
  COMMON/LCHAMP/ LNOMYO
  CHARACTER*4 NOMCR
  COMMON /CHAMP/  NOMCR(100)
  COMMON/LCHAMP/ LNOMCR
  CHARACTER*4 NOMHO
  COMMON /CHAMP/  NOMHO(100)
  COMMON/LCHAMP/ LNOMHO
  CHARACTER*4 NOMVRI
  COMMON /CHAMP/  NOMVRI(100)
  COMMON/LCHAMP/ LNOVRI
  CHARACTER*4 NNAVI
  COMMON /CHAMP/  NNAVI(20)
  COMMON/LCHAMP/ LNNAVI
  COMMON /LCHAMP/ILNAVI
C SEGMENT/MELSTR/(ISOSTU(N),IMELEM(N)),MELST1.MELSTR,MELST2.MELSTR
C SEGMENT/MCLSTR/(ISOSTR(N),IRIGCL(N)),MCLST1.MCLSTR,MCLST2.MCLSTR
C SEGMENT/MSTRUC/(LISTRU(N)),MSTRU1.MSTRUC,MSTRU2.MSTRUC
C SEGMENT/MSOSTU/(ITYSOU,ISRAID,ISMASS,ISCHAM(NS)),MSOST1.MSOSTU,MSOS
C&T2.MSOSTU
C SEGMENT  MELEME
C POINTEUR IPT1.MELEME,IPT2.MELEME,IPT3.MELEME,IPT4.MELEME
C POINTEUR IPT5.MELEME,IPT6.MELEME,IPT7.MELEME,IPT8.MELEME
C POINTEUR IPT9.MELEME
C SEGMENT  MCOORD
C SEGMENT   MRIGID
C POINTEUR  RI1.MRIGID,RI2.MRIGID,RI3.MRIGID
C POINTEUR  RI4.MRIGID,RI5.MRIGID,RI6.MRIGID
C SEGMENT   XMATRI
C POINTEUR  XMATR1.XMATRI,XMATR2.XMATRI,XMATR3.XMATRI
C POINTEUR  XMATR4.XMATRI,XMATR5.XMATRI,XMATR6.XMATRI
C SEGMENT   IMATRI
C POINTEUR  IMATR1.IMATRI,IMATR2.IMATRI,IMATR3.IMATRI
C POINTEUR  IMATR4.IMATRI,IMATR5.IMATRI,IMATR6.IMATRI
C SEGMENT   DESCR
C POINTEUR  DES1.DESCR,DES2.DESCR,DES3.DESCR,DES4.DESCR
C SEGMENT   IMGEOD
C SEGMENT MCHPOI
C POINTEUR MCHPO1.MCHPOI,MCHPO2.MCHPOI,MCHPO3.MCHPOI,MCHPO4.MCHPOI
C SEGMENT MSOUPO
C POINTEUR MSOUP1.MSOUPO,MSOUP2.MSOUPO,MSOUP3.MSOUPO,
C# MSOUP4.MSOUPO,MSOUP5.MSOUPO
C SEGMENT MPOVAL
C POINTEUR MPOVA1.MPOVAL,MPOVA2.MPOVAL,MPOVA3.MPOVAL,
C# MPOVA4.MPOVAL,MPOVA5.MPOVAL,MPOVA6.MPOVAL
C SEGMENT MATTAC
C  POINTEUR MATTA1.MATTAC,MATTA2.MATTAC
C SEGMENT MSOUMA
C  POINTEUR MSOUM1.MSOUMA,MSOUM2.MSOUMA
C SEGMENT MJONCT
C  POINTEUR MJONC1.MJONCT,MJONC2.MJONCT
C SEGMENT MGEOCH
C   

[Bug middle-end/20991] New: ICE in cgraph_mark_reachable_node

2005-04-13 Thread jakub at gcc dot gnu dot org
Current gcc-4_0-branch (i.e. with PR20635 fix in) ICEs on the attached testcase
at -O3 -m32.  It is a recent regression (the assert was added 2005-03-18)
and prevents building Octave.
virtual std::string octave_value::class_name() const (this)
{
...
}
seen in *.generic dump seems to be unused until *.dom1 time (till then
Fissparse uses
  arg_106 = &D.101031;
  D.141412_107 = arg_106->_vptr.octave_value;
  D.141413_108 = D.141412_107 + 468B;
  D.141414_109 = *D.141413_108;
  OBJ_TYPE_REF(D.141414_109;arg_106->117) (&D.141411, arg_106) [return slot
addr];
and only in the first dominator pass this gets changed into:
  arg_175 = &arg;
  D.131589_176 = arg._vptr.octave_value;
  D.131590_177 = D.131589_176 + 468B;
  D.131591_178 = *D.131590_177;
  class_name (&D.131588, &arg) [return slot addr];
but cgraph does not know about this call until Fissparse's assembly is emitted.
But at that point cgraph_global_info_ready is already true, therefore the ICE.

-- 
   Summary: ICE in cgraph_mark_reachable_node
   Product: gcc
   Version: 4.0.0
Status: UNCONFIRMED
  Keywords: ice-on-valid-code
  Severity: normal
  Priority: P2
 Component: middle-end
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: jakub at gcc dot gnu dot org
CC: gcc-bugs at gcc dot gnu dot org,hubicka at gcc dot gnu
dot org
GCC target triplet: i386-redhat-linux


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


[Bug middle-end/20991] ICE in cgraph_mark_reachable_node

2005-04-13 Thread jakub at gcc dot gnu dot org

--- Additional Comments From jakub at gcc dot gnu dot org  2005-04-13 13:28 
---
Created an attachment (id=8617)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=8617&action=view)
Testcase


-- 


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


[Bug preprocessor/20989] The -M option gives object file names without directory

2005-04-13 Thread neil at gcc dot gnu dot org

--- Additional Comments From neil at gcc dot gnu dot org  2005-04-13 13:29 
---
Not a bug - you misunderstand basename.

-- 
   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||INVALID


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


[Bug middle-end/20991] [4.0/4.1 Regression] ICE in cgraph_mark_reachable_node

2005-04-13 Thread pinskia at gcc dot gnu dot org


-- 
   What|Removed |Added

 CC||pinskia at gcc dot gnu dot
   ||org
Summary|ICE in  |[4.0/4.1 Regression] ICE in
   |cgraph_mark_reachable_node  |cgraph_mark_reachable_node
   Target Milestone|--- |4.0.0


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


[Bug c++/20992] New: error as no matching function with g++

2005-04-13 Thread dtemirbulatov at ru dot mvista dot com
g++ -v
Using built-in specs.
Target: i686-pc-linux-gnu
Configured with: ../configure --enable-language=c,c++
--prefix=/home/dinar/work/gcc-builds/gcc-4.0-i686-pc-linux-gnu/
Thread model: posix
gcc version 4.0.0 20050412 (prerelease)

while compiling source code:

g++ sample.c -c
sample.c: In function ‘int main()’:
sample.c:13: error: no matching function for call to ‘A::A(A)’
sample.c:4: note: candidates are: A::A(A&)
sample.c:13: error:   initializing temporary from result of ‘A::A(T) [with T = 
int]’

-- 
   Summary: error as no matching function with g++
   Product: gcc
   Version: 4.0.0
Status: UNCONFIRMED
  Severity: critical
  Priority: P2
 Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: dtemirbulatov at ru dot mvista dot com
CC: dtemirbulatov at ru dot mvista dot com,gcc-bugs at gcc
dot gnu dot org
 GCC build triplet: i686-pc-linux-gnu
  GCC host triplet: i686-pc-linux-gnu
GCC target triplet: i686-pc-linux-gnu


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


[Bug c++/20992] error as no matching function with g++

2005-04-13 Thread dtemirbulatov at ru dot mvista dot com

--- Additional Comments From dtemirbulatov at ru dot mvista dot com  
2005-04-13 13:36 ---
Created an attachment (id=8618)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=8618&action=view)
source to compile


-- 


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


[Bug preprocessor/20989] The -M option gives object file names without directory

2005-04-13 Thread bje at safepro dot dk

--- Additional Comments From bje at safepro dot dk  2005-04-13 13:43 ---
Then I suggest that the manual is clarified to make it clear what is meant.
The word "basename" is easy to misunderstand, especially because
the "basename" function in GNU make do keep the directory part
of its arguments.

I reopen the bug - as I think it is at least a bug in the documentation.


-- 
   What|Removed |Added

 Status|RESOLVED|UNCONFIRMED
 Resolution|INVALID |


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


[Bug c++/20992] error as no matching function with g++

2005-04-13 Thread pinskia at gcc dot gnu dot org

--- Additional Comments From pinskia at gcc dot gnu dot org  2005-04-13 
13:44 ---
A(A&) is a copy constructor but does not allow binding to a temporary variable 
which is required here 
even if it is not called.

-- 
   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||INVALID


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


[Bug middle-end/20991] [4.0/4.1 Regression] ICE in cgraph_mark_reachable_node

2005-04-13 Thread jakub at gcc dot gnu dot org

--- Additional Comments From jakub at gcc dot gnu dot org  2005-04-13 14:26 
---
Somewhat simplified testcase:

#include 
#include 

struct A { int i; };
struct B { int i; };
struct C { int i; };
struct D { int i; };

struct E
{
  E (void);
  E (bool b);
  E (const A & m);
  virtual ~ E (void);
  virtual A m1 (bool x = false) const { return rep->m1 (x); }
  virtual B m2 (bool x = false) const { return rep->m2 (x); }
  virtual C m3 (bool x = false) const { return rep->m3 (x); }
  virtual D m4 (bool x = false) const { return rep->m4 (x); }
  virtual std::string m5 (void) const { return rep->m5 (); }
  virtual std::string m6 (void) const { return rep->m6 (); }
  union { E *rep; int count; };
};

struct F
{
  F (void) : data () {}
  F (const E & tc) : data (1, tc) {}
  F (const F & obj):data (obj.data) {}
  ~F (void) {}
  E operator  () (int n) const { return n2 (n); }
  int n1 (void) const { return data.size (); }
  std::vector < E > data;
  E n2 (int n) const { return data[n]; }
};

static bool foo (const E & arg) { return (arg.m6 () == "foo"); }
F bar (const F & args) { return E (foo (args (0))); }
F fn1 (const F & args)
{
  E retval;

  if (args (0).m6 () == "foo")
retval = args (0).m1 ();

  return retval;
}

static F f2 (const B & v) { F retval; return retval; }
static F f2 (const C & v) { F retval; return retval; }
static F f2 (const D & v) { F retval; return retval; }

F
f3 (const F & x)
{
  F retval;
  int n = x.n1 ();

  if (n != 1)
return retval;

  E arg = x (0);
  if (arg.m6 () == "foo")
{
  if (arg.m5 () == "bar")
retval = f2 (x (0).m2 ());
  else if (arg.m5 () == "baz")
retval = f2 (x (0).m3 ());
  else
retval = f2 (x (0).m4 ());
}

  return retval;
}


-- 


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


[Bug preprocessor/20989] The -M option gives object file names without directory

2005-04-13 Thread bje at safepro dot dk

--- Additional Comments From bje at safepro dot dk  2005-04-13 14:38 ---
Actually the manual explicit says that any path in the input file name is kept
by default in the description of the "-MT TARGET" option. So either the
preprocessor or the manual does have a bug when the preprocessor discards the 
path:

`-MT TARGET'
 Change the target of the rule emitted by dependency generation.  By
 default CPP takes the name of the main input file, including any
 path, deletes any file suffix such as `.c', and appends the
 platform's usual object suffix.  The result is the target.


-- 


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


[Bug tree-optimization/20702] [tcb] ASSERT_EXPRs are not inserted when a certain "if" statement is present.

2005-04-13 Thread kazu at cs dot umass dot edu

--- Additional Comments From kazu at cs dot umass dot edu  2005-04-13 14:56 
---
Patch posted:
http://gcc.gnu.org/ml/gcc-patches/2005-04/msg01456.html

-- 


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


[Bug tree-optimization/20913] copy-prop does not fold conditionals

2005-04-13 Thread kazu at cs dot umass dot edu

--- Additional Comments From kazu at cs dot umass dot edu  2005-04-13 14:56 
---
Patch posted:
http://gcc.gnu.org/ml/gcc-patches/2005-04/msg01457.html


-- 


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


[Bug middle-end/20991] [4.0/4.1 Regression] ICE in cgraph_mark_reachable_node

2005-04-13 Thread dmitri at unm dot edu


-- 
   What|Removed |Added

 CC||dmitri at unm dot edu


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


[Bug c++/20993] New: GCC/GCJ not creating proper symbols for inline native CNI code

2005-04-13 Thread steve at netfuel dot com
The following code will not link because j.getName has multiple definitions. 
Both j.o and natj.o contain a T definition when natj.o should contain a W def.

Ultimatly this causes the mingw 4.0.0 cross compiler to not build a functioning
 native compiler becuase libgcj.a contains multiple defintion.

[EMAIL PROTECTED] steve]$ cat j.java
class j
{
String _name;
j() {
_name="BOB";
}
String getName() {
return _name;
};
}

#pragma implementation "j.h"
#include "j.h"
#include 
#include 

int main(int argc,char** argv)
{
j *bob=new j();
bob->getName();
return 0;
}

gcjh j creates j.h
$ cat j.h
// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-

#ifndef __j__
#define __j__

#pragma interface

#include 

extern "Java"
{
  class j;
}

class j : public ::java::lang::Object
{
public: // actually package-private
  j ();
  virtual ::java::lang::String *getName () { return _name; }
  ::java::lang::String * __attribute__((aligned(__alignof__(
::java::lang::Object  _name;
public:

  static ::java::lang::Class class$;
};

#endif /* __j__ */

$ nm j.o
 b .bss
 d .ctors
 d .data
 r .rdata
 N .stab
 N .stabstr
 t .text
0094 d __catch_classes_j
0088 d __CD_j
0090 d __CT_j
 d __FL_j
0030 t __GLOBAL__I_0__ZN1jC1Ev
 U __Jv_RegisterClass
0020 d __MT_j
 r __Utf1
000a r __Utf2
0016 r __Utf3
001e r __Utf4
002a r __Utf5
0044 r __Utf6
004c r __Utf7
00c0 D __ZN1j6class$E
0024 T __ZN1j7getNameEv
 T __ZN1jC1Ev
 U __ZN4java4lang6Object5cloneEv
 U __ZN4java4lang6Object6class$E
 U __ZN4java4lang6Object6equalsEPS1_
 U __ZN4java4lang6Object8finalizeEv
 U __ZN4java4lang6Object8hashCodeEv
 U __ZN4java4lang6Object8toStringEv
 U __ZN4java4lang6ObjectC1Ev
 U __ZN4java4lang6String6class$E
0060 D __ZTVN1jE
 U __ZTVN4java4lang5ClassE

$ nm natj.o
 b .bss
 d .data
 r .rdata$_ZTI15_JvObjectPrefix
 r .rdata$_ZTI1j
 r .rdata$_ZTIN4java4lang6ObjectE
 r .rdata$_ZTS15_JvObjectPrefix
 r .rdata$_ZTS1j
 r .rdata$_ZTSN4java4lang6ObjectE
 t .text
 t .text$_ZN1j7getNameEv
 U ___main
 U __alloca
 U __Jv_AllocObject
 U __ZN1j6class$E
 T __ZN1j7getNameEv
 U __ZN1jC1Ev
 R __ZTI15_JvObjectPrefix
 R __ZTI1j
 R __ZTIN4java4lang6ObjectE
 R __ZTS15_JvObjectPrefix
 R __ZTS1j
 R __ZTSN4java4lang6ObjectE
 U __ZTVN10__cxxabiv117__class_type_infoE
 U __ZTVN10__cxxabiv120__si_class_type_infoE
 T _main

-- 
   Summary: GCC/GCJ not creating proper symbols for inline native
CNI code
   Product: gcc
   Version: 4.0.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P2
 Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: steve at netfuel dot com
CC: gcc-bugs at gcc dot gnu dot org
 GCC build triplet: i386-mingw32msvc
  GCC host triplet: i386-mingw32msvc
GCC target triplet: i386-mingw32msvc


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


[Bug tree-optimization/20994] New: [4.1 regression] ICE with -ftree-vectorize

2005-04-13 Thread reichelt at gcc dot gnu dot org
The following code snippet casues an ICE on mainline when compiled with
"-O -ftree-vectorize". The 4.0 branch is not affected.

===
int foo(double* p)
{
int i=0;

for (double* q; q!=p; ++q)
if (*q)
++i;

return i;
}
===

This is similar to PR20929. But it is not a duplicate since the bug in
PR 20929 is fixed on mainline.

-- 
   Summary: [4.1 regression] ICE with -ftree-vectorize
   Product: gcc
   Version: 4.1.0
Status: UNCONFIRMED
  Keywords: ice-on-valid-code, monitored
  Severity: normal
  Priority: P2
 Component: tree-optimization
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: reichelt at gcc dot gnu dot org
CC: gcc-bugs at gcc dot gnu dot org


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


[Bug middle-end/20995] New: [3.4 regression] ICE in const_binop, at fold-const.c:1391

2005-04-13 Thread bangerth at dealii dot org
This little piece of code here
-
template 
void test ()
{
  double d;
  double mu = 1;
  for (unsigned int i=0; i ();
-
ICEs with gcc3.4.4pre (and apparently all older versions of the 3.4.x branch I
have):

deal.II/tests> /ices/bangerth/tmp/build-gcc-3.4/gcc-install/bin/c++ -c x.cc
x.cc: In function `void test()':
x.cc:11: internal compiler error: tree check: expected real_cst, have
integer_cst in const_binop, at fold-const.c:1391
Please submit a full bug report,
with preprocessed source if appropriate.
See http://gcc.gnu.org/bugs.html> for instructions.

On the machine I'm on right now, I don't have a 4.x compiler, so it may even be
a regression on 4.0 branch and/or mainline. It doesn't ICE gcc3.3.x, though.

W.

-- 
   Summary: [3.4 regression] ICE in const_binop, at fold-
const.c:1391
   Product: gcc
   Version: 3.4.4
Status: UNCONFIRMED
  Keywords: ice-on-valid-code
  Severity: normal
  Priority: P2
 Component: middle-end
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: bangerth at dealii dot org
CC: gcc-bugs at gcc dot gnu dot org


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


[Bug tree-optimization/20913] copy-prop does not fold conditionals

2005-04-13 Thread cvs-commit at gcc dot gnu dot org

--- Additional Comments From cvs-commit at gcc dot gnu dot org  2005-04-13 
15:29 ---
Subject: Bug 20913

CVSROOT:/cvs/gcc
Module name:gcc
Changes by: [EMAIL PROTECTED]   2005-04-13 15:28:55

Modified files:
gcc: ChangeLog tree-ssa-copy.c 
gcc/testsuite  : ChangeLog 
Added files:
gcc/testsuite/gcc.dg/tree-ssa: pr20913.c 

Log message:
gcc/
PR tree-optimization/20913
* tree-ssa-copy.c (copy_prop_visit_cond_stmt): Fold COND_EXPR.

testsuite/
PR tree-optimization/20913
* gcc.dg/tree-ssa/pr20913.c: New.

Patches:
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/ChangeLog.diff?cvsroot=gcc&r1=2.8274&r2=2.8275
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree-ssa-copy.c.diff?cvsroot=gcc&r1=2.25&r2=2.26
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/ChangeLog.diff?cvsroot=gcc&r1=1.5337&r2=1.5338
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gcc.dg/tree-ssa/pr20913.c.diff?cvsroot=gcc&r1=NONE&r2=1.1



-- 


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


[Bug middle-end/20995] [3.4 regression] ICE in const_binop, at fold-const.c:1391

2005-04-13 Thread bangerth at dealii dot org

--- Additional Comments From bangerth at dealii dot org  2005-04-13 15:29 
---
Note that it isn't related to PR 19899, even though the failure seems similar.

I should also note that the ICE happened with a compiler that had checking 
enabled.
If checking is disabled, we simply get this:

deal.II/tests> $HOME/bin/gcc-3.4/bin/c++ -c x.cc
x.cc: In function `void test()':
x.cc:11: internal compiler error: Segmentation fault
Please submit a full bug report,
with preprocessed source if appropriate.
See http://gcc.gnu.org/bugs.html> for instructions.

W.

-- 
   What|Removed |Added

  Known to fail||3.4.2 3.4.4
  Known to work||3.3.2


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


[Bug tree-optimization/20913] copy-prop does not fold conditionals

2005-04-13 Thread cvs-commit at gcc dot gnu dot org

--- Additional Comments From cvs-commit at gcc dot gnu dot org  2005-04-13 
15:33 ---
Subject: Bug 20913

CVSROOT:/cvs/gcc
Module name:gcc
Changes by: [EMAIL PROTECTED]   2005-04-13 15:33:18

Modified files:
gcc: ChangeLog tree-vrp.c 
gcc/testsuite  : ChangeLog 
Added files:
gcc/testsuite/gcc.dg/tree-ssa: pr20702.c 

Log message:
gcc/
PR tree-optimization/20913
* tree-ssa-copy.c (copy_prop_visit_cond_stmt): Fold COND_EXPR.

testsuite/
PR tree-optimization/20913
* gcc.dg/tree-ssa/pr20913.c: New.

Patches:
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/ChangeLog.diff?cvsroot=gcc&r1=2.8275&r2=2.8276
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree-vrp.c.diff?cvsroot=gcc&r1=2.5&r2=2.6
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/ChangeLog.diff?cvsroot=gcc&r1=1.5338&r2=1.5339
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gcc.dg/tree-ssa/pr20702.c.diff?cvsroot=gcc&r1=NONE&r2=1.1



-- 


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


[Bug ada/20822] makeinfo cannot process gnat_ugn_unw.texi

2005-04-13 Thread ericw at evcohs dot com

--- Additional Comments From ericw at evcohs dot com  2005-04-13 15:43 
---
FYI, I've tested the patch on my system here and it works for me.

Eric

-- 


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


[Bug target/20924] [4.0/4.1 regression] inline float divide does not set correct fpu status flags

2005-04-13 Thread cvs-commit at gcc dot gnu dot org

--- Additional Comments From cvs-commit at gcc dot gnu dot org  2005-04-13 
15:57 ---
Subject: Bug 20924

CVSROOT:/cvs/gcc
Module name:gcc
Changes by: [EMAIL PROTECTED]   2005-04-13 15:57:38

Modified files:
gcc: ChangeLog 
gcc/config/ia64: ia64.md 

Log message:
PR target/20924
* config/ia64/ia64.md (divsf3_internal_lat): Generate frcpa with
fpsr 0 instead of fpsr 1.
(divsf3_internal_thr): Ditto.
(divdf3_internal_lat): Ditto.
(divdf3_internal_thr): Ditto.
(divxf3_internal_lat): Ditto.
(divxf3_internal_thr): Ditto.

Patches:
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/ChangeLog.diff?cvsroot=gcc&r1=2.8276&r2=2.8277
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/config/ia64/ia64.md.diff?cvsroot=gcc&r1=1.148&r2=1.149



-- 


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


[Bug tree-optimization/20994] [4.1 regression] ICE with -ftree-vectorize

2005-04-13 Thread reichelt at gcc dot gnu dot org

--- Additional Comments From reichelt at gcc dot gnu dot org  2005-04-13 
16:09 ---
The ICE was introduced with a merge from the tree-cleanup-branch:
http://gcc.gnu.org/ml/gcc-cvs/2005-04/msg00501.html

BTW, here's a C testcase:

===
int foo(double* p, double* q)
{
int i=0;

for (; q!=p; ++q)
if (*q)
++i;

return i;
}
===


-- 


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


[Bug libstdc++/20979] __gnu_cxx::bitmap_allocator export pruning

2005-04-13 Thread bkoz at gcc dot gnu dot org

--- Additional Comments From bkoz at gcc dot gnu dot org  2005-04-13 16:32 
---
I posit that this usage of static local variables, as written, is thread safe
with gcc-4.0.x compilers. (Since resolution of c++/13684).

! _Mutex*
! _M_get_mutex()
! {
!   static _Mutex _S_mutex;
!   return &_S_mutex;
! }

This object is only constructed (and initialized) once. After initial
construction, a pointer to the initial object is returned. Don't let the
simplicity of this solution fool you!

This change actually improves portability for initialization, especially on
non-SVR4 platforms, where order of initalization of static objects may differ
from expectations.

-benjamin




-- 


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


[Bug tree-optimization/20929] [4.0 Regression] internal compiler error: verify_stmts failed.

2005-04-13 Thread reichelt at gcc dot gnu dot org

--- Additional Comments From reichelt at gcc dot gnu dot org  2005-04-13 
16:48 ---
Confirmed.

Here's a reduced testcase (compile with -O2):

===
typedef int INT;

int i;

int foo(INT j) { return (i>0 ? (i<3?j:0) : i) - i; }
===

(The stupid typedef is indeed crucial.)


-- 
   What|Removed |Added

 CC||reichelt at gcc dot gnu dot
   ||org
 Status|UNCONFIRMED |NEW
 Ever Confirmed||1
   Keywords||monitored
   Last reconfirmed|-00-00 00:00:00 |2005-04-13 16:48:45
   date||


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


[Bug libstdc++/20694] [4.1 Regression] make install failure building abi_check with leftover libv3test

2005-04-13 Thread janis at gcc dot gnu dot org

--- Additional Comments From janis at gcc dot gnu dot org  2005-04-13 16:54 
---
This was fixed by a patch by Mark Mitchell on 2005-04-01.

-- 
   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||FIXED


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


[Bug c++/13684] local static object variable constructed once but ctors and dtors called multiple times on same memory when called in multiple threads

2005-04-13 Thread dhruvbird at yahoo dot com

--- Additional Comments From dhruvbird at yahoo dot com  2005-04-13 16:56 
---
(In reply to comment #19)
> I want to emphasize here again one principle of C and C++: Trust the 
> programmers, and allow them to do low-level tunings for performance. Or what 
> is 
> the purpose of C++ (when compared with "high-level" languages like Python)? 
> This "fix" rid the programmers of their right to choose the way they want.
> 
> Unless the future C++ standard demands protection in such cases, I do not 
> think 
> the compiler-provided mechanism a good idea.

I would agree with you.

Btw, what is the approach adopted in case the app. is a single threaded one? Are
the locks still taken in this case? Also, if it is an mt-app. but the programmer
is sure that that particula function will NOT be reentrant, why should he pay
the penalty of a lock or/and a check every time the function is called?

Stroustrup continuously emphasised that C++ was designed to be as fast if not
faster than C in most respects, and I guess that's why C++ is gaining
popularity. If it were to use the java approach then it would be just another
bloat-language

-Dhruv.

-- 


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


[Bug c++/19317] [4.1 Regression] removing a temporary return value when we cannot

2005-04-13 Thread mueller at kde dot org

--- Additional Comments From mueller at kde dot org  2005-04-13 16:57 
---
can we think about retargeting fixing the optimisation for 4.0.1 ? 
 
 

-- 


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


[Bug c++/20996] New: friend class declaration in namespace wrong in template class with specialisation

2005-04-13 Thread drtr at dial dot pipex dot com
The code below won't compile. It behaves as though the line
class val { friend class rec; } is erroneously declaring a 'struct rec' in 
the global namespace. (Uncomment the other use of rec to see this.) The error
message from 4.0 is:
y.cpp: In function 'int main(int, char**)':
y.cpp:29: error: 'rec' was not declared in this scope
y.cpp:29: error: expected `;' before 'r'

This shows up on 3.4.3, 3.4.4 and 4.0. 

 David

namespace ns
{
template
class val
{
T get(const unsigned char *data) const;
public:
friend class rec;   // see 7.3.1.2 
val() { }
};

template<>
inline float val::get(const unsigned char *data) const
{ return *reinterpret_cast(data); }

class rec
{
public:
const unsigned char *data;
};

}

using namespace ns;

int
main(int argc, char **argv)
{
rec r;
//::rec s;

return 0;
}

-- 
   Summary: friend class declaration in namespace wrong in template
class with specialisation
   Product: gcc
   Version: 4.0.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P2
 Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: drtr at dial dot pipex dot com
CC: gcc-bugs at gcc dot gnu dot org
 GCC build triplet: x86_64-unknown-linux-gnu
  GCC host triplet: x86_64-unknown-linux-gnu
GCC target triplet: x86_64-unknown-linux-gnu


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


[Bug libstdc++/20979] __gnu_cxx::bitmap_allocator export pruning

2005-04-13 Thread dhruvbird at yahoo dot com

--- Additional Comments From dhruvbird at yahoo dot com  2005-04-13 17:02 
---
Subject: Re:  __gnu_cxx::bitmap_allocator export pruning


--- bkoz at gcc dot gnu dot org
<[EMAIL PROTECTED]> wrote:
> 
> --- Additional Comments From bkoz at gcc dot gnu
> dot org  2005-04-13 16:32 ---
> I posit that this usage of static local variables,
> as written, is thread safe
> with gcc-4.0.x compilers. (Since resolution of
> c++/13684).
> 
> ! _Mutex*
> ! _M_get_mutex()
> ! {
> !   static _Mutex _S_mutex;
> !   return &_S_mutex;
> ! }
> 
> This object is only constructed (and initialized)
> once. After initial
> construction, a pointer to the initial object is
> returned. Don't let the
> simplicity of this solution fool you!
> 
> This change actually improves portability for
> initialization, especially on
> non-SVR4 platforms, where order of initalization of
> static objects may differ
> from expectations.

hmmm. then the code should be correct

However, wrt efficiency, there will be a penalty
beause you need to acquire a mutex to acquire a mutex!
Ironical isn't it

wrt initialization order, yes, this is definitely an
improvement.

Just as a thought, I was wondering if it could be made
global at the namespace level. then, all this wouldn't
matter, and initialization orders would also be
guaranteed

OT: WRT the static initialization problem.

Also, to make the check on whether guard has been
set/reset, a lock must be prepended before it right?
So, that would stall the bus for some time
Probably not what one would wish for ideally, but I'm
generally against the language protecting against
these kind of things.




> 
> -benjamin
> 
> 
> 
> 
> -- 
> 
> 
> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20979
> 
> --- You are receiving this mail because: ---
> You are on the CC list for the bug, or are watching
> someone who is.
> 

-Dhruv Matani
http://www.geocities.com/dhruvbird/



__ 
Do you Yahoo!? 
Yahoo! Small Business - Try our new resources site!
http://smallbusiness.yahoo.com/resources/


-- 


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


[Bug tree-optimization/15524] [4.0 Regression] jump threading on trees is slow with switch statements with large # of cases

2005-04-13 Thread law at redhat dot com

--- Additional Comments From law at redhat dot com  2005-04-13 17:11 ---
Subject: Re:  [4.0 Regression] jump threading
on trees is slow with switch statements with large # of cases

On Wed, 2005-04-13 at 13:04 +, dnovillo at redhat dot com wrote:
> --- Additional Comments From dnovillo at redhat dot com  2005-04-13 13:03 
> ---
> Subject: Re:  [4.0 Regression] jump threading on trees is slow with switch 
> statements with large # of cases
> 
> On Tue, Apr 12, 2005 at 04:55:20PM -, law at redhat dot com wrote:
> 
> > That mental model doesn't work right now with the way DOM & the
> > jump threader because they are too tightly intertwined.
> > 
> The link that you have still not shown me is why doesn't this
> mental model work for the jump threader.  That's why I said that
> I need to run the threader myself and see why it needs all these
> additional crutches.
That the model we wont to go to -- but it's certainly not where we
are today.  Why?  Because the jump threader exposes more optimization
opportunities for DOM (including constant and copy propagations) and
DOM exposes more opportunities for the threader.  They are inherently
tied together with their current structure.

> 
> If the code has been cleaned up of redundancies, copies
> propagated, names have known values and ranges are set, then I
> don't see why we would need all the extra baggage.
Because threading exposes new opportunities to perform constant
and copy propagation and redundancy elimination.

> 
> > The iteration step we see today would turn into a worklist.
> > ie, after we thread jumps, we walk through the IL for PHIs
> > which represent a copy that can be propagated.
> >
> Ah, here's something specific I don't follow.  Why would you have
> these PHIs anymore?  If all the arguments were ultimately
> equivalent, then the various propagators are bound to have
> removed them.  If not, that sounds like a bug in them.
They are exposed as a result of jump threading.  For example we might
have something like:

BB 3:
x3 = PHI (x2 (0), x1 (1), x1 (2));
[ ... ]

if (cond) goto X, else goto Y

If jump threading manages to determine where the conditional will go
when BB3 is reached via BB0, then we'll be able to remove the PHI
argument associated with the edge from BB0 to BB3.  That in turn exposes
a copy propagation opportunity (x3 = x1).

Or when we thread a jump we might expose a new redundancy because the
dominator graph changed.  Whenever we expose a redundancy we also expose
a copy propagation opportunity.



> 
> > What's nice about this is the bulk of DOM as we know it today
> > disappears along with the expensive iteration in the case when
> > jumps are threaded. We just need the right APIs for copy
> > propagation and value handles.
> > 
> Again, why?  The propagators are supposed to have done this
> already.  They are all supposed to work in conditional regions.
You really don't seem to understand what the threader does and how its
actions can expose new optimization opportunities.  I might suggest you
look very closely at what happens for a test like 20030714-2.c which is
derived from real code.  As we thread jumps, we expose new redundancy
elimination opportunities, which in turn expose new copy propagation
opportunities.

> > We could still potentially use ASSERT_EXPRs to encode
> > information about edge equivalences, though we probably would
> > still want the ASSERT_EXPR to appear as statement rather than
> > the RHS of a MODIFY_EXPR.
> > 
> Odd, the nice thing about assertions being on the RHS is that you
> pin their result to a specific SSA name that you then get to use
> at every place naturally dominated by the assertion.
> 
> If you could give me a concrete test case that I could sink my
> teeth in, that'd be great.
Go back the PR I've referenced twice.

jeff




-- 


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


[Bug c++/20996] friend class declaration in namespace wrong in template class with specialisation

2005-04-13 Thread pinskia at gcc dot gnu dot org

--- Additional Comments From pinskia at gcc dot gnu dot org  2005-04-13 
17:38 ---
Fixed on the mainline (for 4.1.0), there might be a dup of this bug somewhere 
with the rest of the 
friend bugs in GCC.

-- 
   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||FIXED
   Target Milestone|--- |4.1.0


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


[Bug target/20924] [4.0 regression] inline float divide does not set correct fpu status flags

2005-04-13 Thread pinskia at gcc dot gnu dot org

--- Additional Comments From pinskia at gcc dot gnu dot org  2005-04-13 
17:39 ---
Fixed at least on the mainline.

-- 
   What|Removed |Added

Summary|[4.0/4.1 regression] inline |[4.0 regression] inline
   |float divide does not set   |float divide does not set
   |correct fpu status flags|correct fpu status flags


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


[Bug tree-optimization/20994] [4.1 regression] ICE with -ftree-vectorize

2005-04-13 Thread pinskia at gcc dot gnu dot org


-- 
   What|Removed |Added

 CC||dnovillo at gcc dot gnu dot
   ||org
   Target Milestone|--- |4.1.0


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


[Bug libgcj/20993] GCC/GCJ not creating proper symbols for inline native CNI code

2005-04-13 Thread pinskia at gcc dot gnu dot org


-- 
   What|Removed |Added

  Component|c++ |libgcj


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


[Bug libgcj/20997] New: gij -verbose fails with a VM error

2005-04-13 Thread ziga dot mahkovec at klika dot si
When running gij with the -verbose option, it immediately fails with the
following error:

$ gij -verbose C1
libgcj: couldn't create virtual machine

Same for '-verbose:class', '--verbose', or any other verbose option.
Reproduced on 4.0.0 and HEAD.

-- 
   Summary: gij -verbose fails with a VM error
   Product: gcc
   Version: 4.1.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P2
 Component: libgcj
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: ziga dot mahkovec at klika dot si
CC: gcc-bugs at gcc dot gnu dot org,java-prs at gcc dot gnu
dot org


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


[Bug libgcj/20997] gij -verbose fails with a VM error

2005-04-13 Thread ziga dot mahkovec at klika dot si

--- Additional Comments From ziga dot mahkovec at klika dot si  2005-04-13 
17:49 ---
Created an attachment (id=8619)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=8619&action=view)
Fix for the parsing code


-- 


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


[Bug middle-end/20995] [3.4 regression] ICE in const_binop, at fold-const.c:1391

2005-04-13 Thread pinskia at gcc dot gnu dot org

--- Additional Comments From pinskia at gcc dot gnu dot org  2005-04-13 
17:50 ---
It does not ICE with "3.4.0 20040116" but does with "3.4.0 (release)".

-- 
   What|Removed |Added

 Status|UNCONFIRMED |NEW
 Ever Confirmed||1
  Known to fail|3.4.2 3.4.4 |3.4.2 3.4.4 3.4.0
  Known to work|3.3.2   |3.3.2 4.0.0 4.1.0
   Last reconfirmed|-00-00 00:00:00 |2005-04-13 17:50:06
   date||
   Target Milestone|--- |3.4.4


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


[Bug debug/20985] building mips/64 cross compiler on x86 produces incorrect assembler code for _divdi3 with -fnon-call-exceptions

2005-04-13 Thread drow at false dot org

--- Additional Comments From drow at false dot org  2005-04-13 17:50 ---
Subject: Re:  New: building mips/64 cross compiler on x86 produces incorrect 
assembler code for _divdi3 with -fnon-call-exceptions

On Wed, Apr 13, 2005 at 05:22:07AM -, herbert at 13thfloor dot at wrote:
> ./configure --enable-languages=c --disable-nls --disable-threads
> --disable-shared --disable-checking --prefix=/usr --target=mips-linux
> make TARGET_LIBGCC2_CFLAGS='-Dinhibit_libc -D__gthr_posix_h'
> 
> results in ...
> /gcc-3.3.5/gcc/xgcc -B/gcc-3.3.5/gcc/ -B/usr/mips-linux/bin/
> -B/usr/mips-linux/lib/ -isystem /usr/mips-linux/include -O2  -DIN_GCC
> -DCROSS_COMPILE   -W -Wall -Wwrite-strings -Wstrict-prototypes
> -Wmissing-prototypes -isystem ./include  -fPIC -g  -DIN_LIBGCC2
> -D__GCC_FLOAT_NOT_NEEDED -Dinhibit_libc -I. -I. -I. -I./. -I./config
> -I./../include  -DL_divdi3 -c ./libgcc2.c -fexceptions -fnon-call-exceptions 
> -o
> libgcc/./_divdi3.o
> /root/tmp/ccI71cbx.s: Assembler messages:
> /root/tmp/ccI71cbx.s:956: Error: operation combines symbols in different 
> segments
> 
> 955.4byte  $LASFDE1-$Lframe1
> 956.4byte  $LFB4-.
> 957.4byte  $LFE4-$LFB4
> 
> (removing the '-.' in that line *G* makes it work with gas 2.15.94.0.2.2)

The feature was removed from the assembler, because it is not ABI
compliant.  This is fixed in GCC 3.4 and later.  You can just delete
the definition in config/mips/linux.h that causes this.

ASM_PREFERRED_EH_DATA_FORMAT or something similar, I don't remember the
spelling.




-- 


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


[Bug debug/20985] building mips/64 cross compiler on x86 produces incorrect assembler code for _divdi3 with -fnon-call-exceptions

2005-04-13 Thread drow at false dot org

--- Additional Comments From drow at false dot org  2005-04-13 17:51 ---
Subject: Re:  building mips/64 cross compiler on x86 produces incorrect 
assembler code for _divdi3 with -fnon-call-exceptions

On Wed, Apr 13, 2005 at 09:46:26AM -, pinskia at gcc dot gnu dot org wrote:
>   Component|bootstrap   |debug

BTW, this has little to do with debugging; it's unwind information,
which is runtime.



-- 


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


[Bug libgcj/20997] gij -verbose fails with a VM error

2005-04-13 Thread pinskia at gcc dot gnu dot org

--- Additional Comments From pinskia at gcc dot gnu dot org  2005-04-13 
17:52 ---
Fixed already by:
2005-04-07  Thomas Fitzsimmons  <[EMAIL PROTECTED]>

* prims.cc (parse_verbose_args): Fix verbose argument parsing.

http://gcc.gnu.org/ml/gcc-cvs/2005-04/msg00717.html
http://gcc.gnu.org/ml/gcc-cvs/2005-04/msg00716.html

-- 
   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||FIXED
   Target Milestone|--- |4.0.0


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


[Bug middle-end/20985] building mips/64 cross compiler on x86 produces incorrect assembler code for _divdi3 with -fnon-call-exceptions

2005-04-13 Thread pinskia at gcc dot gnu dot org

--- Additional Comments From pinskia at gcc dot gnu dot org  2005-04-13 
17:53 ---
Closing as fixed then.

-- 
   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
  Component|debug   |middle-end
 Resolution||FIXED
   Target Milestone|--- |3.4.0


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


[Bug middle-end/20965] [4.1 Regression] GCC can no longer build itself on ppc-darwin

2005-04-13 Thread pinskia at gcc dot gnu dot org


-- 
   What|Removed |Added

   Severity|normal  |critical
   Priority|P2  |P1


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


[Bug java/17092] gcj should use unlock_getc instead of getc

2005-04-13 Thread pinskia at gcc dot gnu dot org

--- Additional Comments From pinskia at gcc dot gnu dot org  2005-04-13 
18:00 ---
Fixed.

-- 
   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution||FIXED
   Target Milestone|--- |4.1.0


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


[Bug debug/20998] New: GCC does not emit debug info for variables in anonymous unions

2005-04-13 Thread dpatel at apple dot com
Here  is the simple C++ program :

int main()  

 
{   

 
  union {   

 
int z;  

 
unsigned int w; 

 
  }; w = 0; 

 


 
}

-- 
   Summary: GCC does not emit debug info for variables in anonymous
unions
   Product: gcc
   Version: 4.0.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P2
 Component: debug
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: dpatel at apple dot com
CC: gcc-bugs at gcc dot gnu dot org


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


[Bug tree-optimization/18178] Missed opportunity for removing bounds checking

2005-04-13 Thread pinskia at gcc dot gnu dot org

--- Additional Comments From pinskia at gcc dot gnu dot org  2005-04-13 
18:06 ---
Now the problem is that we don't remove the extra load of a->length because of 
aliasing.

-- 
   What|Removed |Added

 Status|SUSPENDED   |NEW
   Keywords||alias
   Last reconfirmed|2005-02-08 19:15:05 |2005-04-13 18:06:49
   date||


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


[Bug tree-optimization/19659] GCC does not remove an "if" statement that never triggers.

2005-04-13 Thread pinskia at gcc dot gnu dot org

--- Additional Comments From pinskia at gcc dot gnu dot org  2005-04-13 
18:10 ---
Fixed.

-- 
   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution||FIXED
   Target Milestone|--- |4.1.0


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


[Bug middle-end/19721] [meta-bug] optimizations that CSE still catches

2005-04-13 Thread pinskia at gcc dot gnu dot org


-- 
Bug 19721 depends on bug 19659, which changed state.

Bug 19659 Summary: GCC does not remove an "if" statement that never triggers.
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19659

   What|Old Value   |New Value

 Status|NEW |RESOLVED
 Resolution||FIXED

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


[Bug tree-optimization/20913] copy-prop does not fold conditionals

2005-04-13 Thread kazu at cs dot umass dot edu

--- Additional Comments From kazu at cs dot umass dot edu  2005-04-13 18:14 
---
Just checked in a patch.


-- 
   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution||FIXED


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


[Bug tree-optimization/20702] [tcb] ASSERT_EXPRs are not inserted when a certain "if" statement is present.

2005-04-13 Thread kazu at cs dot umass dot edu

--- Additional Comments From kazu at cs dot umass dot edu  2005-04-13 18:14 
---
Just checked in a patch.


-- 
   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution||FIXED


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


[Bug tree-optimization/19789] tree optimizers do not know that constant global variables do not change

2005-04-13 Thread pinskia at gcc dot gnu dot org

--- Additional Comments From pinskia at gcc dot gnu dot org  2005-04-13 
18:15 ---
Fixed on the mainline.

-- 
   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution||FIXED
   Target Milestone|--- |4.1.0


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


[Bug middle-end/19721] [meta-bug] optimizations that CSE still catches

2005-04-13 Thread pinskia at gcc dot gnu dot org


-- 
Bug 19721 depends on bug 19789, which changed state.

Bug 19789 Summary: tree optimizers do not know that constant global variables 
do not change
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19789

   What|Old Value   |New Value

 Status|ASSIGNED|RESOLVED
 Resolution||FIXED

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


[Bug tree-optimization/20913] copy-prop does not fold conditionals

2005-04-13 Thread pinskia at gcc dot gnu dot org


-- 
   What|Removed |Added

   Target Milestone|--- |4.1.0


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


[Bug tree-optimization/20702] [tcb] ASSERT_EXPRs are not inserted when a certain "if" statement is present.

2005-04-13 Thread pinskia at gcc dot gnu dot org


-- 
   What|Removed |Added

   Target Milestone|--- |4.1.0


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


[Bug debug/20998] GCC does not emit debug info for variables in anonymous unions

2005-04-13 Thread pinskia at gcc dot gnu dot org

--- Additional Comments From pinskia at gcc dot gnu dot org  2005-04-13 
18:18 ---
Confirmed.

-- 
   What|Removed |Added

 Status|UNCONFIRMED |NEW
 Ever Confirmed||1
   Last reconfirmed|-00-00 00:00:00 |2005-04-13 18:18:01
   date||


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


[Bug debug/20998] [3.4/4.0/4.1 Regression] GCC does not emit debug info for variables in anonymous unions

2005-04-13 Thread pinskia at gcc dot gnu dot org

--- Additional Comments From pinskia at gcc dot gnu dot org  2005-04-13 
18:21 ---
This is a regression from 3.3.3.

-- 
   What|Removed |Added

   Keywords||wrong-debug
  Known to fail||3.4.0 4.0.0 4.1.0
  Known to work||3.3.3
Summary|GCC does not emit debug info|[3.4/4.0/4.1 Regression] GCC
   |for variables in anonymous  |does not emit debug info for
   |unions  |variables in anonymous
   ||unions
   Target Milestone|--- |3.4.4


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


[Bug debug/20998] GCC does not emit debug info for variables in anonymous unions

2005-04-13 Thread dpatel at apple dot com

--- Additional Comments From dpatel at apple dot com  2005-04-13 18:19 
---
Subject: Re:  GCC does not emit debug info for variables in anonymous unions

It is because of ALIAS_DECL



-- 


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


[Bug tree-optimization/20514] hoisting of label out of jumptable would take place at cse, should happen at trees

2005-04-13 Thread pinskia at gcc dot gnu dot org

--- Additional Comments From pinskia at gcc dot gnu dot org  2005-04-13 
18:30 ---
Two things, we just don't jump thread.
Another testcase:
int i;
int main()
{
  for (;;)
  {
switch (i)
{
  case 5:
i = 4;
break;
  default:
return 0;
}
  }
}

-- 


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


[Bug tree-optimization/20999] New: store should not be done if we don't change its value

2005-04-13 Thread pinskia at gcc dot gnu dot org
int i;
void f()
{
  int t = i;
  if(t == 4)
t = 3;
  i = t;
}

void f1()
{
  if (i == 4)
   i = 3;

}

-- 
   Summary: store should not be done if we don't change its value
   Product: gcc
   Version: unknown
Status: UNCONFIRMED
  Keywords: missed-optimization
  Severity: enhancement
  Priority: P2
 Component: tree-optimization
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: pinskia at gcc dot gnu dot org
CC: gcc-bugs at gcc dot gnu dot org


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


[Bug tree-optimization/21000] New: store should not be done if we don't change its value

2005-04-13 Thread pinskia at gcc dot gnu dot org
Like PR 20999 but this time the function should be empty which it is on the RTL 
level:
int i;
void f()
{
  int t = i;
  i = t;
}

-- 
   Summary: store should not be done if we don't change its value
   Product: gcc
   Version: unknown
Status: UNCONFIRMED
  Keywords: missed-optimization, TREE
  Severity: normal
  Priority: P2
 Component: tree-optimization
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: pinskia at gcc dot gnu dot org
CC: gcc-bugs at gcc dot gnu dot org


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


[Bug tree-optimization/21000] store should not be done if we don't change its value

2005-04-13 Thread pinskia at gcc dot gnu dot org


-- 
   What|Removed |Added

   Severity|normal  |enhancement
Version|unknown |4.1.0


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


[Bug tree-optimization/20999] store should not be done if we don't change its value

2005-04-13 Thread pinskia at gcc dot gnu dot org


-- 
   What|Removed |Added

Version|unknown |4.1.0


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


[Bug fortran/20990] Segmentation fault

2005-04-13 Thread fxcoudert at gcc dot gnu dot org

--- Additional Comments From fxcoudert at gcc dot gnu dot org  2005-04-13 
18:34 ---
With -fdefault-integer-8:

$ gfc -c -fdefault-integer-8 pr20990.f 
pr20990.f: In function ‘jonct’:
pr20990.f:280: internal compiler error: in gfc_add_modify_expr, at
fortran/trans.c:152

Without that:

$ gfc -c pr20990.f   
pr20990.f: In function ‘jonct’:
pr20990.f:294: internal compiler error: Segmentation fault

I'm using dichotomic debugging to find what goes wrong right now. But I have a
doubt: did someone actually *write* that code?

-- 
   What|Removed |Added

 CC||fxcoudert at gcc dot gnu dot
   ||org
 Status|UNCONFIRMED |NEW
 Ever Confirmed||1
   Last reconfirmed|-00-00 00:00:00 |2005-04-13 18:34:05
   date||


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


[Bug tree-optimization/21000] store should not be done if we don't change its value

2005-04-13 Thread pinskia at gcc dot gnu dot org

--- Additional Comments From pinskia at gcc dot gnu dot org  2005-04-13 
18:36 ---
Three more cases:
void f1(int *i)
{
  *i = *i;
}
int j;
void f2()
{
  j = j;
}
int *k;
void f3()
{
  *k = *k;
}

-- 


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


[Bug middle-end/20995] [3.4 regression] ICE in const_binop, at fold-const.c:1391

2005-04-13 Thread pinskia at gcc dot gnu dot org

--- Additional Comments From pinskia at gcc dot gnu dot org  2005-04-13 
18:59 ---
: Search converges between 2004-01-25-trunk (#440) and 2004-01-26-trunk (#441).
: Search converges between 2004-05-20-trunk (#457) and 2004-05-23-trunk (#458).

Looking at the construct, I almost want to say this was "fixed" by:
2004-05-20  Roger Sayle  <[EMAIL PROTECTED]>

PR middle-end/3074
* fold-const.c (strip_compound_expr): Delete function.
(count_cond): Delete function.
(fold_binary_op_with_conditional_arg): Only perform transformations
"a + (b?c:d) -> b ? a+c : a+d" and "(b?c:d) + a -> b ? c+a : d+a"
when a is constant.  This greatly simplifies this routine.


-- 
   What|Removed |Added

 CC||roger at eyesopen dot com


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


[Bug libgcj/20993] GCC/GCJ not creating proper symbols for inline native CNI code

2005-04-13 Thread steve at netfuel dot com

--- Additional Comments From steve at netfuel dot com  2005-04-13 19:03 
---
This as also been duplicated using the mingw binary release of 
gcc-3.4.2-20040916-1.

-- 


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


[Bug tree-optimization/21001] New: VRP is weak when the tested variable in a COND_EXPR is used in the COND_EXPR.

2005-04-13 Thread kazu at cs dot umass dot edu
Consider:

int
foo (int a)
{
  int b = a != 0;
  if (b)
if (a != 0)
  return 1;
  return 0;
}

With "-O2 -ftree-no-dominator-opts", VRP generates:

foo (a)
{
  int b;
  int D.1153;

:
  b_3 = a_2 != 0;
  if (b_3 != 0) goto ; else goto ;

:;
  if (a_2 != 0) goto ; else goto ;

:;
  D.1153_6 = 1;
  goto  ();

:;
  D.1153_5 = 0;

  # D.1153_1 = PHI ;
:;
  return D.1153_1;

}

Note that the second "if" statement is always true,
but VRP does not notice that.

Forward-propagating "a_2 != 0" into the first "if" statement will do
the desired optimization.

-- 
   Summary: VRP is weak when the tested variable in a COND_EXPR is
used in the COND_EXPR.
   Product: gcc
   Version: unknown
Status: UNCONFIRMED
  Keywords: missed-optimization
  Severity: enhancement
  Priority: P2
 Component: tree-optimization
AssignedTo: kazu at cs dot umass dot edu
ReportedBy: kazu at cs dot umass dot edu
CC: gcc-bugs at gcc dot gnu dot org


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


[Bug tree-optimization/21000] store should not be done if we don't change its value

2005-04-13 Thread pinskia at gcc dot gnu dot org

--- Additional Comments From pinskia at gcc dot gnu dot org  2005-04-13 
19:16 ---
We just don't generate any RTL for "i = i".

The optimization for f in comment #0 happens in combine for 3.4.0, so maybe 
fold could do it, I don't 
know.


-- 


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


[Bug tree-optimization/21000] store should not be done if we don't change its value

2005-04-13 Thread pinskia at gcc dot gnu dot org

--- Additional Comments From pinskia at gcc dot gnu dot org  2005-04-13 
19:18 ---
One more thing, we miss a sibcal optimization due to this:
int i;
int g(void) __attribute__((pure));
int f()
{
  int t = i;
  int t1 = g();
  i = t;
  return t1;
}

-- 


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


[Bug rtl-optimization/21002] New: RTL prologue and basic-block reordering pessimizes delay-slot filling

2005-04-13 Thread hp at gcc dot gnu dot org
This with LAST_UPDATED "Wed Apr 13 18:35:48 UTC 2005", just
after committing CRIS prologue as RTL.

Compare the assembly of the attached file (a pruned version
corresponding to the fp-bit libgcc object _pack_df.o)
compiled at -O2 with to a few minutes before that LAST_UPDATED.

Also observable with -mno-prologue-epilogue as follows:
--- packd.s 2005-04-13 21:13:39.448893527 +0200
+++ packd.s.proepi  2005-04-13 21:13:19.986146213 +0200
@@ -4,6 +4,8 @@
.global ___pack_d
.type   ___pack_d, @function
 ___pack_d:
+   subq 32,$sp
+   movem $r5,[$sp]
move.d [$r10+12],$r2
move.d [$r10+16],$r3
move.d [$r10+4],$r5
@@ -15,21 +17,19 @@ ___pack_d:
beq .L5
cmpq 2,$r9

-   beq .L37
-   clear.d $r0
-
+   beq .L7
+   nop
test.d $r2
ax
test.d $r3
-   beq .L38
-   clear.d $r1
-
+   beq .L7
+   nop
move.d [$r10+8],$r4

The first two delay-slots aren't filled any more, when having an RTL prologue
(and epilogue).  The unexpected/unwanted difference goes away with
-fno-reorder-blocks.  Issue noted here awaiting further investigation.

-- 
   Summary: RTL prologue and basic-block reordering pessimizes
delay-slot filling
   Product: gcc
   Version: 4.1.0
Status: UNCONFIRMED
  Keywords: missed-optimization
  Severity: normal
  Priority: P2
 Component: rtl-optimization
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: hp at gcc dot gnu dot org
CC: gcc-bugs at gcc dot gnu dot org
  GCC host triplet: i686-pc-linux-gnu
GCC target triplet: cris-axis-elf


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


[Bug fortran/20990] Segmentation fault

2005-04-13 Thread antoine dot letellier at free dot fr

--- Additional Comments From antoine dot letellier at free dot fr  
2005-04-13 19:21 ---
we have a our own dialect which is preprocessed in fortran. 
usually we compile with g77 .
antoine 

-- 


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


[Bug rtl-optimization/21002] RTL prologue and basic-block reordering pessimizes delay-slot filling

2005-04-13 Thread hp at gcc dot gnu dot org

--- Additional Comments From hp at gcc dot gnu dot org  2005-04-13 19:21 
---
Created an attachment (id=8620)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=8620&action=view)
testcase mentioned in description


-- 


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


[Bug ada/21003] New: Error detected at gnatmake.ads:27:1

2005-04-13 Thread christian dot joensson at gmail dot com
When trying to bootstrap/build gcc off of the 4.0 branch, LAST_UPDATED: Wed 
Apr 13 05:09:35 UTC 2005, I get a build error when tryint to build gnat

../../xgcc -B../../ -c -O2 -g -O2 -W -Wall -Wwrite-strings -Wstrict-
prototypes -Wmissing-prototypes   -gnatpg -gnata -I- -I../rts -I. -
I/usr/local/src/branch/gcc/gcc/ada /usr/local/src/branch/gcc/gcc/ada/gnatmake.a
db -o gnatmake.o
+===GNAT BUG DETECTED==+
| 4.0.0 20050413 (prerelease) (sparc-unknown-linux-gnu) GCC error: |
| in save_gnu_tree, at ada/utils.c:158 |
| Error detected at gnatmake.ads:27:1  |
| Please submit a bug report; see http://gcc.gnu.org/bugs.html.|
| Include the entire contents of this bug box in the report.   |
| Include the exact gcc or gnatmake command that you entered.  |
| Also include sources listed below in gnatchop format |
| (concatenated together with no headers between files).   |
+==+

Please include these source files with error report
Note that list may not be accurate in some cases, 
so please double check that the problem can still 
be reproduced with the set of files listed.

/usr/local/src/branch/gcc/gcc/ada/gnatmake.adb
/usr/local/src/branch/gcc/gcc/ada/gnatmake.ads
/usr/local/src/branch/gcc/gcc/ada/gnatvsn.ads
/usr/local/src/branch/gcc/gcc/ada/make.ads
/usr/local/src/branch/gcc/gcc/ada/table.ads
/usr/local/src/branch/gcc/gcc/ada/types.ads

compilation abandoned
make[4]: *** [gnatmake.o] Error 1
make[4]: Leaving directory `/usr/local/src/branch/objdir32/gcc/ada/tools'
make[3]: *** [gnattools1] Error 2
make[3]: Leaving directory `/usr/local/src/branch/objdir32/gcc/ada'
make[2]: *** [gnattools-native] Error 2
make[2]: Leaving directory `/usr/local/src/branch/objdir32/sparc-linux/libada'
make[1]: *** [all-target-libada] Error 2
make[1]: Leaving directory `/usr/local/src/branch/objdir32'
make: *** [bootstrap] Error 2

-- 
   Summary: Error detected at gnatmake.ads:27:1
   Product: gcc
   Version: 4.0.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P2
 Component: ada
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: christian dot joensson at gmail dot com
CC: ebotcazou at libertysurf dot fr,gcc-bugs at gcc dot gnu
dot org
 GCC build triplet: sparc-unknown-linux-gnu
  GCC host triplet: sparc-unknown-linux-gnu
GCC target triplet: sparc-unknown-linux-gnu


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


  1   2   >