How to access structure information from pass_vectorize

2014-01-19 Thread Swati Rathi
We are writing a GIMPLE pass and would like to use some information 
computed in
pass_vectorize. However, we are not able to use the data structures 
which gets populated in pass_vectorize

because the information is not made available across passes.

In particular, we wish to access the structures stmt_vec_info and 
data_reference.


How do we access this information? Should we invoke pass_vectorize as a 
sub-pass of our pass? Should
we explicitly call the execute function of pass_vectorize in our pass? 
Or should we modify pass_vectorize
code and make a deep copy in a global variable? Is there any other way 
of getting this information?


bootstrap broken for '-O3'

2014-01-19 Thread Winfried Magerl
High,

since trunk revision 206525 I'm unable to bootstrap
gcc with '-O3' as optimisation. No problem until
revision 2065250.

From the diff-output it looks like this entry from
ChangeLog is the only candidate:

---
diff -urN -x.svn gcc-head-206520/LAST_UPDATED gcc-head-206525/LAST_UPDATED
--- gcc-head-206520/LAST_UPDATED2014-01-19 17:54:07.053340903 +0100
+++ gcc-head-206525/LAST_UPDATED2014-01-19 18:58:54.049008110 +0100
@@ -1,2 +1,2 @@
-Sun Jan 19 17:54:07 CET 2014
-Sun Jan 19 16:54:07 UTC 2014 (revision 206520)
+Sun Jan 19 18:58:54 CET 2014
+Sun Jan 19 17:58:54 UTC 2014 (revision 206525)
diff -urN -x.svn gcc-head-206520/gcc/ChangeLog gcc-head-206525/gcc/ChangeLog
--- gcc-head-206520/gcc/ChangeLog   2014-01-19 17:54:03.620441749 +0100
+++ gcc-head-206525/gcc/ChangeLog   2014-01-19 18:58:51.113097157 +0100
@@ -1,3 +1,15 @@
+2014-01-10  Richard Biener  rguent...@suse.de
+
+   PR tree-optimization/59374
+   * tree-vect-slp.c (vect_slp_analyze_bb_1): Move dependence
+   checking after SLP discovery.  Mark stmts not participating
+   in any SLP instance properly.
+
+2014-01-10  Kyrylo Tkachov  kyrylo.tkac...@arm.com
+
+   * config/arm/arm.c (arm_new_rtx_costs): Use destination mode
+   when handling a SET rtx.
+
 2014-01-10  Kyrylo Tkachov  kyrylo.tkac...@arm.com

* config/arm/arm-cores.def (cortex-a53): Specify FL_CRC32.
---

gcc is built with the following commands:

---
CFLAGS=-O3; export CFLAGS
CXXFLAGS=$CFLAGS; export CXXFLAGS
CFLAGS=$CFLAGS CXXFLAGS=$CFLAGS XCFLAGS=$CFLAGS TCFLAGS=$CFLAGS \
../gcc-head-206525/configure --enable-shared --prefix=/usr --enable-multilib=no 
--enable-checking=release --enable-werror=no --enable-languages='c,c++'  
configure.out
make -j6 BOOT_CFLAGS=-O3  make.out || exit 1
---

and results in the following error:

--
# make compare
Comparing stages 2 and 3
warning: gcc/cc1-checksum.o differs
warning: gcc/cc1plus-checksum.o differs
Bootstrap comparison failure!
gcc/bitmap.o differs
gcc/bt-load.o differs
gcc/emit-rtl.o differs
libiberty/pic/md5.o differs
libiberty/md5.o differs
Makefile:20642: recipe for target 'compare' failed
make: *** [compare] Error 1
--

I've verified the behaviour on opensuse 13.1 too to ensure
it's not caused by local tool-chain.

regards

winfried



gcc-4.9-20140119 is now available

2014-01-19 Thread gccadmin
Snapshot gcc-4.9-20140119 is now available on
  ftp://gcc.gnu.org/pub/gcc/snapshots/4.9-20140119/
and on various mirrors, see http://gcc.gnu.org/mirrors.html for details.

This snapshot has been generated from the GCC 4.9 SVN branch
with the following options: svn://gcc.gnu.org/svn/gcc/trunk revision 206783

You'll find:

 gcc-4.9-20140119.tar.bz2 Complete GCC

  MD5=dbb12aba57d88ea1dfd8c1e940f5cf25
  SHA1=c1db7a1970fe0e9bf695ff6444b71a979b94900b

Diffs from 4.9-20140112 are available in the diffs/ subdirectory.

When a particular snapshot is ready for public consumption the LATEST-4.9
link is updated and a message is sent to the gcc list.  Please do not use
a snapshot before it has been announced that way.


Update MAINTAINERS (Re: Remove spam in GCC mailing list)

2014-01-19 Thread Gerald Pfeifer
On Sun, 22 Dec 2013, Tae Wong wrote:
 It will be better if you have enabled the Launchpad account seotaewong40.
 
 This account has been suspended for renaming an answer title multiple times.

The GCC team has nothing to do with Launchpad.

 There's also an ordering error on the GCC maintainer list:
 
 On the write after approval section, Xinliang David Li comes between
 H.J. Lu and Christophe Lyon: please fix the sort order so his name
 appears between Kriang Lerdsuwanakij and Jiangning Liu.

Thanks for pointing this out.  Fixed per the patch below.

On the way I noticed (well, strictly speaking my editor did, and
transparently so) that the MAINTAINERS file was ISO 8859, so I did
the conversation to UTF-8 as well.  It's 2014 after all.

Gerald

* MAINTAINERS: Convert to UTF-8.
Properly sort Xinliang David Li's entry.
 
Index: MAINTAINERS
===
--- MAINTAINERS (revision 206770)
+++ MAINTAINERS (working copy)
@@ -276,11 +276,11 @@
 FortranErik Edelmann   erik.edelm...@iki.fi
 FortranDaniel Franke   franke.dan...@gmail.com
 FortranSteven G. Kargl 
s...@troutmask.apl.washington.edu
-FortranThomas K?ig tkoe...@gcc.gnu.org
+FortranThomas Königtkoe...@gcc.gnu.org
 FortranDaniel Kraftd...@domob.eu
 FortranToon Moene  t...@moene.org
 FortranMikael Morinmikael.mo...@sfr.fr
-FortranTobias Schl?er  
tobias.schlue...@physik.uni-muenchen.de
+FortranTobias Schlüter 
tobias.schlue...@physik.uni-muenchen.de
 FortranPaul Thomas pa...@gcc.gnu.org
 FortranJanus Weil  ja...@gcc.gnu.org
 gengtype/GTY   Laurynas Biveinis   
laurynas.bivei...@gmail.com
@@ -346,7 +346,7 @@
 Stephane Carrezstcar...@nerim.fr
 Gabriel Charette   gch...@google.com
 Chandra Chavva ccha...@redhat.com
-Fabien Ch?efab...@gcc.gnu.org
+Fabien Chêne   fab...@gcc.gnu.org
 Bin Cheng  bin.ch...@arm.com
 Harshit Chopra hars...@google.com
 William Cohen  wco...@redhat.com
@@ -353,7 +353,7 @@
 Josh Connerjcon...@apple.com
 R. Kelley Cook kc...@gcc.gnu.org
 Christian Cornelssen   cc...@cs.tu-berlin.de
-Fran?is-Xavier Coudert fxcoud...@gcc.gnu.org
+François-Xavier Coudertfxcoud...@gcc.gnu.org
 Cary Coutant   ccout...@google.com
 Lawrence Crowl cr...@google.com
 Ian Dall   i...@beware.dropbear.id.au
@@ -361,7 +361,7 @@
 Bud Davis  jmda...@link.com
 Chris Demetriouc...@google.com
 Sameera Deshpande  sameera.deshpa...@arm.com
-Fran?is Dumont fdum...@gcc.gnu.org
+François Dumontfdum...@gcc.gnu.org
 Benoit Dupont de Dinechin  benoit.dupont-de-dinec...@st.com
 Michael Eager  ea...@eagercon.com
 Bernd Edlinger bernd.edlin...@hotmail.de
@@ -369,7 +369,7 @@
 Mohan Embargnust...@thisiscool.com
 Revital Eres   e...@il.ibm.com
 Marc Espie es...@cvs.openbsd.org
-Rafael ?vila de Esp?dola   espind...@google.com
+Rafael Ávila de Espíndola  espind...@google.com
 Ansgar Esztermann  ans...@thphy.uni-duesseldorf.de
 Doug Evans d...@google.com
 Chris Fairles  cfair...@gcc.gnu.org
@@ -448,15 +448,15 @@
 Marc Lehmann   p...@goof.com
 James Lemkejwle...@codesourcery.com
 Kriang Lerdsuwanakij   lerds...@users.sourceforge.net
+Xinliang David Li  davi...@google.com
 Jiangning Liu  jiangning@arm.com
 Sa Liu sa...@de.ibm.com
 Ralph Loader   r...@ihug.co.nz
 Gabor Loki l...@inf.u-szeged.hu
 Sandra Loosemore   

[Bug libstdc++/59876] New: _Rb_tree move constructor invokes _M_copy

2014-01-19 Thread drahflow at gmx dot de
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59876

Bug ID: 59876
   Summary: _Rb_tree move constructor invokes _M_copy
   Product: gcc
   Version: 4.9.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: libstdc++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: drahflow at gmx dot de

#include map
#include memory

using namespace std;

int main(void) {
  mapint, unique_ptrint m1;
  mapint, unique_ptrint m2(move(m1));
}

fails to compile under 4.9 (but works fine with 4.7 and 4.8).



A change was introduced in 4.9 after which the move constructor of _Rb_tree
invokes _M_copy on a range of elements (which might not be copy-constructible).

Cursory analysis suggests the problem is at
/usr/include/c++/4.9/bits/stl_tree.h line 1021.


[Bug tree-optimization/59875] Missed unrolling opportunity

2014-01-19 Thread glisse at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59875

Marc Glisse glisse at gcc dot gnu.org changed:

   What|Removed |Added

   Keywords||missed-optimization
 Status|UNCONFIRMED |NEW
   Last reconfirmed||2014-01-19
Summary|Weak symbols in glibc   |Missed unrolling
   |prevent optimizations   |opportunity
 Ever confirmed|0   |1
   Severity|trivial |normal

--- Comment #1 from Marc Glisse glisse at gcc dot gnu.org ---
(note that your new/delete prototypes are the C++03 ones, you should change
them for C++11)

I don't think it has anything to do with glibc or weak. If I patch
tree-ssa-loop-ivcanon.c (couldn't find a sufficient option or parameter) to
convince the compiler that it is ok to unroll the loop although it isn't an
inner loop and it contains calls on the hot path, it manages to optimize foo
to nothing.

gcc-4.4 (if we tweak the example so it compiles) did unroll the loop, but only
optimized away the test for the last element of the array.

It would also be possible for the compiler to notice that all array elements
are the same and thus any access (in range) will yield the same value, but that
seems more specialized.


[Bug c++/57926] Atomic functions broken with C++ but not C?

2014-01-19 Thread lailavrazda1979 at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57926

--- Comment #11 from lailavrazda1979 at gmail dot com ---
I don't mean to be a bother, but this hasn't been updated in a while. Has it
been fixed?


[Bug bootstrap/59864] [4.9 regression] RTL check: expected code 'reg', have 'ne' in rhs_regno, at rtl.h:1125

2014-01-19 Thread ebotcazou at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59864

Eric Botcazou ebotcazou at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 CC||ebotcazou at gcc dot gnu.org
 Resolution|--- |FIXED

--- Comment #4 from Eric Botcazou ebotcazou at gcc dot gnu.org ---
Patch has been installed.


[Bug target/59379] [4.9 Regression] gomp_init_num_threads is compiled into an infinite loop with --with-arch=corei7 --with-cpu=slm

2014-01-19 Thread ubizjak at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59379

--- Comment #18 from Uroš Bizjak ubizjak at gmail dot com ---
(In reply to H.J. Lu from comment #17)

  I prefer first patch. It splits all LEAs, where ix86_avoid_lea_for_addr is
  true.
 
 Then we should avoid the extra
 
 (set (reg:DI) (zero_extend:DI (reg:SI)))

ree pass, located just after post-reload split, should handle this extra
zero-extend insn. Based on this fact, we can just slap a zero-extend insn at
the end of sequence with:

--cut here--
Index: config/i386/i386.md
===
--- config/i386/i386.md (revision 206753)
+++ config/i386/i386.md (working copy)
@@ -5428,12 +5428,17 @@
   operands[0] = SET_DEST (pat);
   operands[1] = SET_SRC (pat);

-  /* Emit all operations in SImode for zero-extended addresses.  Recall
- that x86_64 inheretly zero-extends SImode operations to DImode.  */
+  /* Emit all operations in SImode for zero-extended addresses.  */
   if (SImode_address_operand (operands[1], VOIDmode))
 mode = SImode;

   ix86_split_lea_for_addr (curr_insn, operands, mode);
+
+  /* Zero-extend return register to DImode for zero-extended addresses.  */
+  if (mode != MODEmode)
+emit_insn (gen_zero_extendsidi2
+  (operands[0], gen_lowpart ((mode), operands[0])));
+
   DONE;
 }
   [(set_attr type lea)
--cut here--

I have checked that this patch with the testcase from Comment #9, using -O
-march=corei7 -mtune=slm compile options. The resulting binary worked OK.

[Bug c++/59867] Template string literal loses first symbol

2014-01-19 Thread paolo.carlini at oracle dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59867

--- Comment #9 from Paolo Carlini paolo.carlini at oracle dot com ---
Tuesday works for me ;) Seriously, thanks for looking into this.


[Bug fortran/34547] [4.8/4.9 regression] NULL(): Fortran 2003 changes, accepts invalid, ICE on invalid

2014-01-19 Thread janus at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34547

janus at gcc dot gnu.org changed:

   What|Removed |Added

 Status|NEW |ASSIGNED
 CC||janus at gcc dot gnu.org
   Assignee|unassigned at gcc dot gnu.org  |pault at gcc dot gnu.org

--- Comment #12 from janus at gcc dot gnu.org ---
(In reply to Tobias Burnus from comment #11)
 Fixed by Paul's patch at
 http://gcc.gnu.org/ml/fortran/2013-11/msg00203.html

... which has been committed to trunk as r205565. Backport pending.


[Bug c++/59877] New: Internal compiler error: Error reporting routines re-entered.

2014-01-19 Thread hawran.diskuse at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59877

Bug ID: 59877
   Summary: Internal compiler error: Error reporting routines
re-entered.
   Product: gcc
   Version: 4.7.3
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: hawran.diskuse at gmail dot com

Created attachment 31889
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=31889action=edit
A preprocessed source.

An error has occurred when compilling:
==
g++ -Wall -pedantic -g -std=c++11 main.cpp -o main
‘
Internal compiler error: Error reporting routines re-entered.
Please submit a full bug report,
with preprocessed source if appropriate.
See file:///usr/share/doc/gcc-4.7/README.Bugs for instructions.
Preprocessed source stored into /tmp/ccvp7WyF.out file, please attach this to
your bugreport.

Additional info:

lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:Ubuntu 13.04
Release:13.04
Codename:   raring
---
uname -a
Linux ... 3.8.0-35-generic #50-Ubuntu SMP Tue Dec 3 01:24:59 UTC 2013 x86_64
x86_64 x86_64 GNU/Linux
---
gcc --version
gcc (Ubuntu/Linaro 4.7.3-1ubuntu1) 4.7.3
Copyright (C) 2012 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

[Bug c++/59877] Internal compiler error: Error reporting routines re-entered.

2014-01-19 Thread hawran.diskuse at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59877

--- Comment #1 from hawran.diskuse hawran.diskuse at gmail dot com ---
Created attachment 31890
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=31890action=edit
A bug file and fixed file (I hope it could help)


[Bug c++/59766] c++1y: declaring friend function with 'auto' return type deduction is rejected with bogus reason

2014-01-19 Thread lucdanton at free dot fr
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59766

--- Comment #1 from lucdanton at free dot fr ---
Happens too with GCC 4.9 (20140105), as well as when using decltype(auto).


[Bug tree-optimization/59875] Missed unrolling opportunity

2014-01-19 Thread josephlawrie at hotmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59875

--- Comment #2 from josephlawrie at hotmail dot com ---
(In reply to Marc Glisse from comment #1)

 I don't think it has anything to do with glibc or weak. If I patch
 tree-ssa-loop-ivcanon.c (couldn't find a sufficient option or parameter) to
 convince the compiler that it is ok to unroll the loop although it isn't an
 inner loop and it contains calls on the hot path, it manages to optimize
 foo to nothing.

Am I correct in understanding this would not be possible without -fno-weak or
when linking dynamically? In those cases, the function of delete could not be
know when optimizingm, surely?


[Bug fortran/57129] [4.7/4.8/4.9 Regression] ICE (segfault) in check_extended_derived_type

2014-01-19 Thread janus at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57129

--- Comment #8 from janus at gcc dot gnu.org ---
(In reply to Dominique d'Humieres from comment #7)
 So r202823 is likely to have fixed this PR.

I can confirm that r202823 has fixed the ICE: Reverting that revision
reintroduces the ICE.

I can also confirm that the ICE is gone on all recent versions of trunk, 4.8
and 4.7.

However, the error message is now different from before for the test case in
comment 0 and this reduction:

subroutine t
  type t
  end type
end

With 4.6 one correctly gets:

  type t
1
Error: PROCEDURE attribute of 't' conflicts with DERIVED attribute at (1)

while the recent versions now give:

  type t
1
Error: FUNCTION attribute conflicts with SUBROUTINE attribute in 't' at (1)


This is surprising, since the FUNCTION attribute is not specified anywhere in
the test case. Apparently this is also due to Tobias' constructor patch
(r181425).


[Bug fortran/34547] [4.8/4.9 regression] NULL(): Fortran 2003 changes, accepts invalid, ICE on invalid

2014-01-19 Thread pault at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34547

--- Comment #13 from Paul Thomas pault at gcc dot gnu.org ---
Author: pault
Date: Sun Jan 19 11:28:44 2014
New Revision: 206772

URL: http://gcc.gnu.org/viewcvs?rev=206772root=gccview=rev
Log:
2014-01-19  Paul Thomas  pa...@gcc.gnu.org

PR fortran/34547
* resolve.c (resolve_transfer): EXPR_NULL is always in an
invalid context in a transfer statement.

2014-01-19  Paul Thomas  pa...@gcc.gnu.org

PR fortran/34547
* gfortran.dg/null_5.f90 : Include new error.
* gfortran.dg/null_6.f90 : Include new error.

Modified:
branches/gcc-4_8-branch/gcc/fortran/ChangeLog
branches/gcc-4_8-branch/gcc/fortran/resolve.c
branches/gcc-4_8-branch/gcc/testsuite/ChangeLog
branches/gcc-4_8-branch/gcc/testsuite/gfortran.dg/null_5.f90
branches/gcc-4_8-branch/gcc/testsuite/gfortran.dg/null_6.f90


[Bug fortran/34547] [4.8/4.9 regression] NULL(): Fortran 2003 changes, accepts invalid, ICE on invalid

2014-01-19 Thread pault at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34547

Paul Thomas pault at gcc dot gnu.org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution|--- |FIXED

--- Comment #14 from Paul Thomas pault at gcc dot gnu.org ---
Finally backported to 4.8!

Thanks for the report

Paul


[Bug fortran/20585] [meta-bug] Fortran 2003 support

2014-01-19 Thread pault at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20585

Bug 20585 depends on bug 34547, which changed state.

Bug 34547 Summary: [4.8/4.9 regression] NULL(): Fortran 2003 changes, accepts 
invalid, ICE on invalid
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34547

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution|--- |FIXED


[Bug target/52125] Problems with LO16 asm operands on MIPS

2014-01-19 Thread rsandifo at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52125

rsandifo at gcc dot gnu.org rsandifo at gcc dot gnu.org changed:

   What|Removed |Added

   Assignee|unassigned at gcc dot gnu.org  |rsandifo at gcc dot 
gnu.org

--- Comment #2 from rsandifo at gcc dot gnu.org rsandifo at gcc dot gnu.org 
---
Testing a patch.


[Bug bootstrap/59878] New: [4.9 Regression] ISL from cloog does not work with trunk

2014-01-19 Thread tkoenig at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59878

Bug ID: 59878
   Summary: [4.9 Regression] ISL from cloog does not work with
trunk
   Product: gcc
   Version: unknown
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: bootstrap
  Assignee: unassigned at gcc dot gnu.org
  Reporter: tkoenig at gcc dot gnu.org

How to reproduce:

- Get isl from infrastructure directory
- configure
- install by default (installs in /usr/local)
- Get cloog from the infrastructure directory
- configure without any options
- install
- configure using

VER=../trunk/configure  test -e $VER  rm -rf *  $VER --prefix=$HOME
--with-isl=/usr/local --with-cloog=/usr/local --enable-languages=c,fortran,c++
 make -j6  make install

Result then is

checking for the correct version of the gmp/mpfr/mpc libraries... yes
checking for version 0.10 of ISL... no
checking for version 0.11 of ISL... no
checking for version 0.12 of ISL... no
configure: error: Unable to find a usable ISL.  See config.log for details.

The reason for this is shown in the modified test program:

ig25@linux-fd1f:/tmp cat isl.c
#include isl/version.h
#include stdio.h
int
main ()
{
  printf(%s, isl_version ());
}

ig25@linux-fd1f:/tmp gcc isl.c -lisl
ig25@linux-fd1f:/tmp ./a.out
UNKNOWN

It is necessary to configure cloog with --with-isl=system go get around that,
which is not documented anywhere.


[Bug libstdc++/59876] _Rb_tree move constructor invokes _M_copy

2014-01-19 Thread drahflow at gmx dot de
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59876

--- Comment #1 from Jens-Wolfhard Schicke drahflow at gmx dot de ---
Sorry, I forgot.

~ % gcc-4.9 --version
gcc-4.9 (Debian 4.9-20140116-1) 4.9.0 20140116 (experimental) [trunk revision
206688]

~ % dpkg -l libstdc++-4.9-dev:amd64
||/ Name   Version  Architecture Description
+++-==---=
ii  libstdc++-4.9- 4.9-20140116 amd64GNU Standard C++ Library v3 (deve


[Bug bootstrap/59878] [4.9 Regression] ISL from cloog does not work with trunk

2014-01-19 Thread sch...@linux-m68k.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59878

--- Comment #1 from Andreas Schwab sch...@linux-m68k.org ---
See http://gcc.gnu.org/install/prerequisites.html.


[Bug tree-optimization/59875] Missed unrolling opportunity

2014-01-19 Thread glisse at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59875

--- Comment #3 from Marc Glisse glisse at gcc dot gnu.org ---
(In reply to josephlawrie from comment #2)
 (In reply to Marc Glisse from comment #1)
 Am I correct in understanding this would not be possible without -fno-weak
 or when linking dynamically? In those cases, the function of delete could
 not be know when optimizingm, surely?

My comments were for the version where you uncomment the definitions of new and
delete:

#include array
#include cassert
#include cstdlib

struct P {
P() : _value(0) {}
~P() { if(_value) free(_value); }
   char *_value;
};

int main() {
  if(std::arrayP, 4().size() != 4)
assert(false);
}


You can look at what happens if you change the size of the array to 1, which
removes the unrolling issue. After unrolling, you get either 4 calls to
operator delete(0), or nothing if you provided your definition of delete.

To let the compiler know that you want the standard operator delete (which does
nothing on 0), I am not sure what should be done. It is a different issue,
which you would need to ask about in a separate PR. The easiest is probably to
use -flto (it has to be used all the way, in particular when building
libsupc++). I think libstdc++ should provide an option to get inline
definitions of those functions (I know the standard forbids them to be inline),
possibly even omitting the new_handler code.


[Bug fortran/55172] [4.7 Regression] [OOP] gfc_variable_attr(): Bad array reference in SELECT TYPE

2014-01-19 Thread pault at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55172

Paul Thomas pault at gcc dot gnu.org changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution|--- |FIXED

--- Comment #7 from Paul Thomas pault at gcc dot gnu.org ---
I think that it is best to leave this unfixed for 4.7 - see comment #5

I have therefore marked the PR as resolved.

Thanks for the report

Paul


[Bug fortran/59414] [4.8/4.9 Regression] [OOP] ICE in in gfc_conv_expr_descriptor on ALLOCATE inside SELECT TYPE

2014-01-19 Thread pault at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59414

--- Comment #12 from Paul Thomas pault at gcc dot gnu.org ---
(In reply to janus from comment #3)

snip

 
 module ObjectLists
   implicit none
 
   type :: t
   end type
   
   type Object_array_pointer
 class(t), pointer :: p(:)
   end type
 
 contains
 
   subroutine AddArray (P, Pt)
 class(t) :: P(:)
 class(Object_array_pointer) :: Pt
 
 select type (Pt)
 class is (Object_array_pointer)

ICE disappears with type is (Object_array_pointer)

   allocate(Pt%P(1:SIZE(P)), source=P)
 end select
   end subroutine
 
 end module

Paul


[Bug libstdc++/59876] _Rb_tree move constructor invokes _M_copy

2014-01-19 Thread redi at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59876

--- Comment #2 from Jonathan Wakely redi at gcc dot gnu.org ---
isn't this a duplicate of PR 59872?


[Bug libstdc++/59872] [4.9 Regression] Cannot move std::map with move-only mapped_type

2014-01-19 Thread redi at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59872

Jonathan Wakely redi at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |ASSIGNED
   Last reconfirmed||2014-01-19
   Assignee|unassigned at gcc dot gnu.org  |redi at gcc dot gnu.org
   Target Milestone|--- |4.9.0
Summary|Cannot move std::map with   |[4.9 Regression] Cannot
   |move-only mapped_type   |move std::map with
   ||move-only mapped_type
 Ever confirmed|0   |1


[Bug libstdc++/59872] [4.9 Regression] Cannot move std::map with move-only mapped_type

2014-01-19 Thread redi at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59872

--- Comment #6 from Jonathan Wakely redi at gcc dot gnu.org ---
I don't want to use SFINAE here, I'll fix it the same way it's done in the
other containers, tag dispatching using
  std::integral_constantbool, _Alloc_Traits::_S_always_Equal()


[Bug libstdc++/59872] [4.9 Regression] Cannot move std::map with move-only mapped_type

2014-01-19 Thread potswa at mac dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59872

--- Comment #7 from David Krauss potswa at mac dot com ---
That's a better factoring. I was just avoiding creating a new, named function.
Thanks!


[Bug tree-optimization/59875] Missed unrolling opportunity

2014-01-19 Thread josephlawrie at hotmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59875

--- Comment #4 from josephlawrie at hotmail dot com ---
 To let the compiler know that you want the standard operator delete (which
 does nothing on 0), I am not sure what should be done. It is a different
 issue, which you would need to ask about in a separate PR. 

 I think libstdc++ should provide an option to get
 inline definitions of those functions (I know the standard forbids them to
 be inline), possibly even omitting the new_handler code.

Thank you - I realise I was originally very unclear, but being able to get an
inline version was the intention of posting this hear. Basically link time
optimization (inconvienient) or static linking (also inconvenient) are the only
correct solitions, as others would make the functions non-replacable. 

My concern was that being unable to specify default delete could prevent
optimization in some cases (even when building statically), but according to
you this is not the case in the example, as it is the loop unrolling that
prevents the optimization here. Thank you.


[Bug c++/59879] New: arrays in return statements or default arguments decay too early

2014-01-19 Thread st at quanttec dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59879

Bug ID: 59879
   Summary: arrays in return statements or default arguments decay
too early
   Product: gcc
   Version: 4.8.2
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: st at quanttec dot com

g++ seems to decay arrays in return statements or default arguments too early. 

The following sample fails to compile with 4.8.2 and the current GIT master
version of gcc but compiles cleanly in clang:

--
struct Test {
  template int N
  Test(const char (array)[N]) {}
};

Test test() {
  return test;
}

void test2(Test arg = test) {}

int main() {
  test();
  test2();
}
--

g++ test.cpp
test.cpp: In function ‘Test test()’:
test.cpp:8:10: error: could not convert ‘(const char*)test’ from ‘const
char*’ to ‘Test’
   return test;
  ^
test.cpp: In function ‘int main()’:
test.cpp:15:9: error: could not convert ‘(const char*)test’ from ‘const
char*’ to ‘Test’
   test2();
 ^

[Bug libstdc++/59872] [4.9 Regression] Cannot move std::map with move-only mapped_type

2014-01-19 Thread redi at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59872

Jonathan Wakely redi at gcc dot gnu.org changed:

   What|Removed |Added

 CC||drahflow at gmx dot de

--- Comment #8 from Jonathan Wakely redi at gcc dot gnu.org ---
*** Bug 59876 has been marked as a duplicate of this bug. ***


[Bug libstdc++/59876] _Rb_tree move constructor invokes _M_copy

2014-01-19 Thread redi at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59876

Jonathan Wakely redi at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution|--- |DUPLICATE

--- Comment #3 from Jonathan Wakely redi at gcc dot gnu.org ---
dup

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


[Bug other/59862] Code does not compile with 4.8.1 tarball release but compiles with 4.8.1 SVN release

2014-01-19 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59862

--- Comment #5 from Richard Biener rguenth at gcc dot gnu.org ---
(In reply to Dominique d'Humieres from comment #4)
 I have downloaded the two releases. Comparing gcc/fortran, the only
 difference is
 
 Only in gcc-4.8.1/gcc/fortran/: gfortran.info
 
 in wget http://ftp.gnu.org/gnu/gcc/gcc-4.8.1/gcc-4.8.1.tar.gz
 
 Comparing gcc, the only difference is
 
 Only in gcc-4.8.1/gcc/: gengtype-lex.c
 
 I don't know if the presence or not of gengtype-lex.c can explain what you
 report.
 IMO this is a packaging issue not a gfortran one. I'ld like to close it as
 WONTFIX, but I am CCing release managers for advice.

The release tarball contain generated files so you don't need tools like
flex or makeinfo to build GCC.  Those are not present in SVN, so this is
definitely not a packaging bug.


[Bug fortran/57129] [4.7/4.8/4.9 Regression] Improve error message for conflicts between PROCEDURE and DERIVED.

2014-01-19 Thread dominiq at lps dot ens.fr
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57129

Dominique d'Humieres dominiq at lps dot ens.fr changed:

   What|Removed |Added

   Keywords|error-recovery, |diagnostic
   |ice-on-invalid-code |
   Priority|P4  |P5
Summary|[4.7/4.8/4.9 Regression]|[4.7/4.8/4.9 Regression]
   |ICE (segfault) in   |Improve error message for
   |check_extended_derived_type |conflicts between PROCEDURE
   ||and DERIVED.
   Severity|normal  |minor

--- Comment #9 from Dominique d'Humieres dominiq at lps dot ens.fr ---
 However, the error message is now different from before for the test case 
 in comment 0 and this reduction:
 ...

Confirmed. AFAICT the error message with 4.6 comes from gcc/fortran/symbol.c
while the present one comes from gcc/fortran/dec.c.

I have changed the summary to reflect the present situation. Should we keep the
regression flags?


[Bug other/59862] Code does not compile with 4.8.1 tarball release but compiles with 4.8.1 SVN release

2014-01-19 Thread dominiq at lps dot ens.fr
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59862

--- Comment #6 from Dominique d'Humieres dominiq at lps dot ens.fr ---
 The release tarball contain generated files so you don't need tools like
 flex or makeinfo to build GCC.  Those are not present in SVN, so this is
 definitely not a packaging bug.

Not sure to understand: gcc/gengtype-lex.c is in the tarball, but not in SVN.
From the above I understand that gcc/gengtype-lex.c should also not be in the
tarball.
Is this correct? What could be the effect of gcc/gengtype-lex.c?


[Bug target/59379] [4.9 Regression] gomp_init_num_threads is compiled into an infinite loop with --with-arch=corei7 --with-cpu=slm

2014-01-19 Thread hjl.tools at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59379

--- Comment #19 from H.J. Lu hjl.tools at gmail dot com ---
(In reply to Uroš Bizjak from comment #18)
 I have checked that this patch with the testcase from Comment #9, using -O
 -march=corei7 -mtune=slm compile options. The resulting binary worked OK.

Yes, the resulting GCC works correctly.  However, we generate
extra

(set (reg:DI) (zero_extend:DI (reg:SI)))

It is because we generate

(set (reg:SI) (reg:SI)
(set (reg:DI) (zero_extend:DI (reg:SI)))

REE pass doesn't know

(set (reg:SI) (reg:SI)

has an implicit ZERO_EXTEND.  Here is a testcase:

---foo.c---
extern __thread unsigned int __bid_IDEC_glbflags;
typedef unsigned long long UINT64;
typedef __attribute__ ((aligned(16))) struct
{
  UINT64 w[2];
} UINT128;
extern UINT64 __bid64_from_uint64 (UINT64);
extern void __bid_round64_2_18 (int q,
int x,
UINT64 C,
UINT64 * ptr_Cstar,
int *delta_exp,
int *ptr_is_midpoint_lt_even,
int *ptr_is_midpoint_gt_even,
int *ptr_is_inexact_lt_midpoint,
int *ptr_is_inexact_gt_midpoint);
extern void __bid_round128_19_38 (int q,
  int x,
  UINT128 C,
  UINT128 * ptr_Cstar,
  int *delta_exp,
  int *ptr_is_midpoint_lt_even,
  int *ptr_is_midpoint_gt_even,
  int *ptr_is_inexact_lt_midpoint,
  int *ptr_is_inexact_gt_midpoint);
UINT64
__bid64_from_uint64 (UINT64 x)
{
  UINT64 res;
  UINT128 x128, res128;
  unsigned int q, ind;
  int incr_exp = 0;
  int is_midpoint_lt_even = 0, is_midpoint_gt_even = 0;
  int is_inexact_lt_midpoint = 0, is_inexact_gt_midpoint = 0;
  if (x = 0x002386F26FC0ull) {
if (x  0x0020ull) {
  res = 0x31c0ull | x;
} else {
  res = 0x6c70ull | (x  0x0007ull);
}
  }
  else
{
  if (x  0x16345785d8aull) {
q = 17;
ind = 1;
  } else if (x  0xde0b6b3a764ull) {
q = 18;
ind = 2;
  } else if (x  0x8ac7230489e8ull) {
q = 19;
ind = 3;
  } else {
q = 20;
ind = 4;
  }
  if (q = 19) {
__bid_round64_2_18 (
q, ind, x, res, incr_exp,
is_midpoint_lt_even, is_midpoint_gt_even,
is_inexact_lt_midpoint, is_inexact_gt_midpoint);
  }
  else {
x128.w[1] = 0x0;
x128.w[0] = x;
__bid_round128_19_38 (q, ind, x128, res128, incr_exp,
  is_midpoint_lt_even, is_midpoint_gt_even,
  is_inexact_lt_midpoint, is_inexact_gt_midpoint);
res = res128.w[0];
  }
  if (incr_exp)
ind++;
  if (is_inexact_lt_midpoint || is_inexact_gt_midpoint ||
  is_midpoint_lt_even || is_midpoint_gt_even)
*__bid_IDEC_glbflags |= 0x0020;
  if (res  0x0020ull) {
res = (((UINT64) ind + 398)  53) | res;
  } else
{
  res = 0x6000ull | (((UINT64) ind + 398)  51) |
(res  0x0007ull);
}
}
  return(res);;
}
---

Compiling with -fPIC -O2, the differences between your patch and mine
are

--- bad.s2014-01-19 06:10:28.006570325 -0800
+++ foo.s2014-01-19 06:11:46.117754696 -0800
@@ -84,19 +84,18 @@ __bid64_from_uint64:
 movabsq$9007199254740991, %rax
 cmpq%rax, %rbx
 jbe.L23
-movl%ebp, %edx
 leaq88(%rsp), %rsp
 .cfi_remember_state
 .cfi_def_cfa_offset 24
 movabsq$2251799813685247, %rax
-movl%edx, %edx
+movl%ebp, %edx
 andq%rbx, %rax
-movabsq$6917529027641081856, %rcx
 popq%rbx
 .cfi_def_cfa_offset 16
+movabsq$6917529027641081856, %rcx
 addq$398, %rdx
-orq%rcx, %rax
 salq$51, %rdx
+orq%rcx, %rax
 popq%rbp
 .cfi_def_cfa_offset 8
 orq%rdx, %rax
@@ -154,7 +153,6 @@ __bid64_from_uint64:
 leaq88(%rsp), %rsp
 .cfi_remember_state
 .cfi_def_cfa_offset 24
-movl%eax, %eax
 addq$398, %rax
 salq$53, %rax
 orq%rbx, %rax

My patch removes 2 extra

(set (reg:DI) (zero_extend:DI (reg:SI)))

[Bug other/59862] Code does not compile with 4.8.1 tarball release but compiles with 4.8.1 SVN release

2014-01-19 Thread rguenther at suse dot de
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59862

--- Comment #7 from rguenther at suse dot de rguenther at suse dot de ---
On Sun, 19 Jan 2014, dominiq at lps dot ens.fr wrote:

 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59862
 
 --- Comment #6 from Dominique d'Humieres dominiq at lps dot ens.fr ---
  The release tarball contain generated files so you don't need tools like
  flex or makeinfo to build GCC.  Those are not present in SVN, so this is
  definitely not a packaging bug.
 
 Not sure to understand: gcc/gengtype-lex.c is in the tarball, but not in SVN.
 From the above I understand that gcc/gengtype-lex.c should also not be in the
 tarball.

No, it is in the tarball so building does not require the tools to
build it.

 Is this correct? What could be the effect of gcc/gengtype-lex.c?

That local flex is not used to build gengtype-lex.c from gengtype-lex.l


[Bug tree-optimization/59860] [4.8/4.9 Regression] ICE in compute_may_aliases, at tree-ssa-structalias.c:6843

2014-01-19 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59860

--- Comment #4 from Richard Biener rguenth at gcc dot gnu.org ---
The issue is that after folding strcat_chk - strcat - strcpy (dst + strlen,
...)
we do gimplify_and_update_call_from_tree which as part of gimplification
folds the builtins again, which enters update_call_from_tree which tries
to preserve virtual operands (which are not yet there) and finally calls
gsi_replace which does update_stmt ().  That causes virtual operands to be
marked for renaming even if the outer folding routines happily update
virtual operands correctly.

So the issue is that we re-enter the builtin folding machinery via
gimplification and that is able to fold things further than builtins.c
folding which recurses to the tree foldings.

I'm inclined to disable that if ctx-into_ssa, or add a new flag, -fold_calls.

[in the end we want to remove all stmt folding from the gimplifier and
maybe have one strategical place where we fold all stmts once]

Or, less intrusive, remove that strcat folding from GENERIC folding
(builtins.c) as we have tree-ssa-strlen.c now which optimizes it for
the interesting case of an already available string length - generally
folding strcat to strcpy (dst + strlen (dst), src) isn't profitable.

That also gets rid of that odd optimize_insn_for_speed_p call in builtins.c

[I've skimmed through other calls we generate in builtins.c and decided the
above is the only case where we can recurse into gimple call folding]


[Bug rtl-optimization/57763] [4.9 Regression]: comp-goto-1.c: ICE verify_flow_info failed, error: EDGE_CROSSING missing across section boundary

2014-01-19 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57763

--- Comment #25 from Jakub Jelinek jakub at gcc dot gnu.org ---
Author: jakub
Date: Sun Jan 19 15:30:22 2014
New Revision: 206773

URL: http://gcc.gnu.org/viewcvs?rev=206773root=gccview=rev
Log:
PR rtl-optimization/57763
* bb-reorder.c (fix_crossing_unconditional_branches): Set JUMP_LABEL
on the new indirect jump_insn and increment LABEL_NUSES (label).

Modified:
trunk/gcc/ChangeLog
trunk/gcc/bb-reorder.c


[Bug rtl-optimization/57763] [4.9 Regression]: comp-goto-1.c: ICE verify_flow_info failed, error: EDGE_CROSSING missing across section boundary

2014-01-19 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57763

Jakub Jelinek jakub at gcc dot gnu.org changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution|--- |FIXED

--- Comment #26 from Jakub Jelinek jakub at gcc dot gnu.org ---
Fixed.


[Bug target/59379] [4.9 Regression] gomp_init_num_threads is compiled into an infinite loop with --with-arch=corei7 --with-cpu=slm

2014-01-19 Thread uros at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59379

--- Comment #20 from uros at gcc dot gnu.org ---
Author: uros
Date: Sun Jan 19 15:48:14 2014
New Revision: 206774

URL: http://gcc.gnu.org/viewcvs?rev=206774root=gccview=rev
Log:
PR target/59379
* config/i386/i386.md (*leamode): Zero-extend return register
to DImode for zero-extended addresses.


Modified:
trunk/gcc/ChangeLog
trunk/gcc/config/i386/i386.md


[Bug rtl-optimization/59880] New: Improve REE for implicit SI-DI zero-extend

2014-01-19 Thread hjl.tools at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59880

Bug ID: 59880
   Summary: Improve REE for implicit SI-DI zero-extend
   Product: gcc
   Version: 4.9.0
Status: UNCONFIRMED
  Severity: enhancement
  Priority: P3
 Component: rtl-optimization
  Assignee: unassigned at gcc dot gnu.org
  Reporter: hjl.tools at gmail dot com

After r206774, on Linux/x86-64, the following code

---foo.c---
extern __thread unsigned int __bid_IDEC_glbflags;
typedef unsigned long long UINT64;
typedef __attribute__ ((aligned(16))) struct
{
  UINT64 w[2];
} UINT128;
extern UINT64 __bid64_from_uint64 (UINT64);
extern void __bid_round64_2_18 (int q,
int x,
UINT64 C,
UINT64 * ptr_Cstar,
int *delta_exp,
int *ptr_is_midpoint_lt_even,
int *ptr_is_midpoint_gt_even,
int *ptr_is_inexact_lt_midpoint,
int *ptr_is_inexact_gt_midpoint);
extern void __bid_round128_19_38 (int q,
  int x,
  UINT128 C,
  UINT128 * ptr_Cstar,
  int *delta_exp,
  int *ptr_is_midpoint_lt_even,
  int *ptr_is_midpoint_gt_even,
  int *ptr_is_inexact_lt_midpoint,
  int *ptr_is_inexact_gt_midpoint);
UINT64
__bid64_from_uint64 (UINT64 x)
{
  UINT64 res;
  UINT128 x128, res128;
  unsigned int q, ind;
  int incr_exp = 0;
  int is_midpoint_lt_even = 0, is_midpoint_gt_even = 0;
  int is_inexact_lt_midpoint = 0, is_inexact_gt_midpoint = 0;
  if (x = 0x002386F26FC0ull) {
if (x  0x0020ull) {
  res = 0x31c0ull | x;
} else {
  res = 0x6c70ull | (x  0x0007ull);
}
  }
  else
{
  if (x  0x16345785d8aull) {
q = 17;
ind = 1;
  } else if (x  0xde0b6b3a764ull) {
q = 18;
ind = 2;
  } else if (x  0x8ac7230489e8ull) {
q = 19;
ind = 3;
  } else {
q = 20;
ind = 4;
  }
  if (q = 19) {
__bid_round64_2_18 (
q, ind, x, res, incr_exp,
is_midpoint_lt_even, is_midpoint_gt_even,
is_inexact_lt_midpoint, is_inexact_gt_midpoint);
  }
  else {
x128.w[1] = 0x0;
x128.w[0] = x;
__bid_round128_19_38 (q, ind, x128, res128, incr_exp,
  is_midpoint_lt_even, is_midpoint_gt_even,
  is_inexact_lt_midpoint, is_inexact_gt_midpoint);
res = res128.w[0];
  }
  if (incr_exp)
ind++;
  if (is_inexact_lt_midpoint || is_inexact_gt_midpoint ||
  is_midpoint_lt_even || is_midpoint_gt_even)
*__bid_IDEC_glbflags |= 0x0020;
  if (res  0x0020ull) {
res = (((UINT64) ind + 398)  53) | res;
  } else
{
  res = 0x6000ull | (((UINT64) ind + 398)  51) |
(res  0x0007ull);
}
}
  return(res);;
}
---

contains 2 extra SI-DI zero-extend when compiled with

-O2 -march=corei7 -mtune=slm -fPIC

movl%ebp, %edx  # 311   *movsi_internal/1   [length = 2]
^^^ Implicit SI-DI zero-extend
leaq88(%rsp), %rsp  # 267   pro_epilogue_adjust_stack_di_add/1 
[length = 5]
.cfi_remember_state
.cfi_def_cfa_offset 24
movabsq $2251799813685247, %rax # 101   *movdi_internal/5   [length
= 10]
movl%edx, %edx  # 312   *zero_extendsidi2/4 [length = 2]
^^^ Unnecessary


movl%ebp, %eax  # 308   *movsi_internal/1   [length = 2]
^^^ Implicit SI-DI zero-extend
leaq88(%rsp), %rsp  # 287   pro_epilogue_adjust_stack_di_add/1 
[length = 5]
.cfi_remember_state
.cfi_def_cfa_offset 24
movl%eax, %eax  # 309   *zero_extendsidi2/4 [length = 2]
 Unnecessary

REE pass should remove them.


[Bug c++/59867] Template string literal loses first symbol

2014-01-19 Thread 3dw4rd at verizon dot net
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59867

--- Comment #10 from Ed Smith-Rowland 3dw4rd at verizon dot net ---
Right now, -std=c++1y means anything after c++11.  Does anyone have an idea
about what happens when C++14 and these other TSen actually come out?

I guess I was thinking as far as this extension is concerned:
1) It is left *on* for c++1y and gnu++1y for backward compatibility. Sigh.
2) It is *on* with gnu++14 as an extension.
3) It is *off* with c++14 for strict ANSI compatibility.
4) It is maybe on for c++17 and gnu++17 when  if it ever gets in.

We seem to have dynamically sized array (VLA) in this category as well.


[Bug rtl-optimization/59880] Improve REE for implicit SI-DI zero-extend

2014-01-19 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59880

Jakub Jelinek jakub at gcc dot gnu.org changed:

   What|Removed |Added

 CC||jakub at gcc dot gnu.org

--- Comment #1 from Jakub Jelinek jakub at gcc dot gnu.org ---
But REE does the right thing here:
In *.split2 before REE we have:
(insn 218 92 219 16 (set (reg:SI 0 ax [orig:123 D.1966 ] [123])
(reg/v:SI 6 bp [orig:85 ind ] [85])) pr59880.c:77 90 {*movsi_internal}
 (nil))
(insn 219 218 94 16 (set (reg:DI 0 ax [orig:123 D.1966 ] [123])
(zero_extend:DI (reg:SI 0 ax [orig:123 D.1966 ] [123]))) pr59880.c:77
132 {*zero_extendsidi2}
 (nil))
and REE turns that into:
(insn 218 92 94 16 (set (reg:DI 0 ax)
(zero_extend:DI (reg/v:SI 6 bp [orig:85 ind ] [85]))) pr59880.c:77 132
{*zero_extendsidi2}
 (nil))
Then split4 splits that again into:
(insn 308 92 309 21 (set (reg:SI 0 ax)
(reg/v:SI 6 bp [orig:85 ind ] [85])) pr59880.c:77 90 {*movsi_internal}
 (nil))
(insn 309 308 94 21 (set (reg:DI 0 ax)
(zero_extend:DI (reg:SI 0 ax))) pr59880.c:77 132 {*zero_extendsidi2}
 (nil))
and finally sched2 moves those 2 insns appart.  So, this is clearly a backend
issue.


[Bug fortran/59881] New: Memory corruption with allocatable arrays in polymorphic types

2014-01-19 Thread juergen.reuter at desy dot de
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59881

Bug ID: 59881
   Summary: Memory corruption with allocatable arrays in
polymorphic types
   Product: gcc
   Version: unknown
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: fortran
  Assignee: unassigned at gcc dot gnu.org
  Reporter: juergen.reuter at desy dot de

Created attachment 31891
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=31891action=edit
Tar ball that produces code triggering the memory corruption.

The code attached (unpack, do make, make run) triggers the memory leak. Sorry
for not being able/having time to reduce the case further. The propgram
./seg_prod reads in the file structure_5.sin specifying a scan over integer and
real values that is steered in commands.f90 via the type range_t. First there
is some test output (the internal tree-like syntax structure we use),the
trivial examples pass, the final example with a multi-component range fails.
The example works with gfortran 4.8.x and 4.9.0, but fails with all 4.7.x. 
Sometimes the values are forgotten, sometimes a memory leak appears. We were
able to program around this, but nevertheless wanted to file a bug report. 
Here in our svn commit you can see how we basically removed one layer of
polymorphism for the type range_t:
https://whizard.hepforge.org/trac/changeset/5096
Furthermore, the finalizer range_final then worked again. Hope, you can boil
this down to the essential part.


[Bug other/59882] New: dev-cpp/xsd: internal compiler error: Segmentation fault

2014-01-19 Thread nheghathivhistha at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59882

Bug ID: 59882
   Summary: dev-cpp/xsd: internal compiler error: Segmentation
fault
   Product: gcc
   Version: 4.9.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: other
  Assignee: unassigned at gcc dot gnu.org
  Reporter: nheghathivhistha at gmail dot com

Created attachment 31892
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=31892action=edit
Preprocessed source file - not reduced

Current trunk segfaults:

x86_64-pc-linux-gnu-g++
-I/var/tmp/portage/dev-cpp/xsd-3.3.0-r1/work/xsd-3.3.0/xsd -save-temps -fPIC
-O2 -ggdb -march=native -mtune=native -mno-avx -mno-sse4.2 -mno-3dnow -o
/var/tmp/portage/dev-cpp/xsd-3.3.0-r1/work/xsd-3.3.0/xsd/cxx/parser/driver-source.o
-c
/var/tmp/portage/dev-cpp/xsd-3.3.0-r1/work/xsd-3.3.0/xsd/cxx/parser/driver-source.cxx
/var/tmp/portage/dev-cpp/xsd-3.3.0-r1/work/xsd-3.3.0/xsd/cxx/parser/driver-source.cxx:
In member function ‘virtual Cult::Types::Fundamental::Void
CXX::Parser::{anonymous}::ArgList::traverse(XSDFrontend::SemanticGraph::Complex)’:
/var/tmp/portage/dev-cpp/xsd-3.3.0-r1/work/xsd-3.3.0/xsd/cxx/parser/driver-source.cxx:520:9:
internal compiler error: Neoprávněný přístup do paměti (SIGSEGV)
 traverse (SemanticGraph::Complex c)
 ^
Please submit a full bug report,
with preprocessed source if appropriate.
See https://bugs.gentoo.org/ for instructions.

I am c-reducing a test case with -O2 -ggdb -fPIC.

[Bug rtl-optimization/59880] ix86_avoid_lea_for_addr is buggy

2014-01-19 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59880

Jakub Jelinek jakub at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2014-01-19
 CC||uros at gcc dot gnu.org
Summary|Improve REE for implicit|ix86_avoid_lea_for_addr is
   |SI-DI zero-extend  |buggy
 Ever confirmed|0   |1

--- Comment #2 from Jakub Jelinek jakub at gcc dot gnu.org ---
Ah, indeed, it is split because of the:
(define_insn_and_split *leamode
  [(set (match_operand:SWI48 0 register_operand =r)
(match_operand:SWI48 1 address_no_seg_operand Ts))]
splitter.  I'd say it is a bug in ix86_avoid_lea_for_addr, that shouldn't have
returned true in this case, where the second operand is (zero_extend:DI
(reg:SI)).


[Bug rtl-optimization/59880] ix86_avoid_lea_for_addr is buggy

2014-01-19 Thread hjl.tools at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59880

--- Comment #3 from H.J. Lu hjl.tools at gmail dot com ---
(In reply to Jakub Jelinek from comment #2)
 Ah, indeed, it is split because of the:
 (define_insn_and_split *leamode
   [(set (match_operand:SWI48 0 register_operand =r)
 (match_operand:SWI48 1 address_no_seg_operand Ts))]
 splitter.  I'd say it is a bug in ix86_avoid_lea_for_addr, that shouldn't
 have returned true in this case, where the second operand is (zero_extend:DI
 (reg:SI)).

My patch for PR 59379:

http://gcc.gnu.org/ml/gcc-patches/2014-01/msg01166.html

doesn't have this problem  Should we consider my patch instead?


[Bug c/48968] incorrect warning about longjmp/vfork clobbering a local (-W -O2, x86-64)

2014-01-19 Thread mpolacek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48968

Marek Polacek mpolacek at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 CC||mpolacek at gcc dot gnu.org
 Resolution|--- |FIXED

--- Comment #8 from Marek Polacek mpolacek at gcc dot gnu.org ---
Can't reproduce anymore with 4.7/4.8/4.9 (but with 4.6 I can), thus hopefully
fixed.


[Bug fortran/58410] [4.8/4.9 Regression] Bogus uninitialized variable warning for allocatable derived type array function result

2014-01-19 Thread pault at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58410

--- Comment #6 from Paul Thomas pault at gcc dot gnu.org ---
Author: pault
Date: Sun Jan 19 18:04:22 2014
New Revision: 206778

URL: http://gcc.gnu.org/viewcvs?rev=206778root=gccview=rev
Log:
2014-01-19  Paul Thomas  pa...@gcc.gnu.org

PR fortran/58410
* trans-array.c (gfc_alloc_allocatable_for_assignment): Do not
use the array bounds of an unallocated array but set its size
to zero instead.

Modified:
branches/gcc-4_8-branch/gcc/fortran/ChangeLog
branches/gcc-4_8-branch/gcc/fortran/trans-array.c


[Bug fortran/58410] [4.8/4.9 Regression] Bogus uninitialized variable warning for allocatable derived type array function result

2014-01-19 Thread pault at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58410

Paul Thomas pault at gcc dot gnu.org changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution|--- |FIXED

--- Comment #7 from Paul Thomas pault at gcc dot gnu.org ---
Fixed on trunk and 4.8.

Thanks for the report

Paul


[Bug middle-end/24639] [meta-bug] bug to track all Wuninitialized issues

2014-01-19 Thread pault at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24639

Bug 24639 depends on bug 58410, which changed state.

Bug 58410 Summary: [4.8/4.9 Regression] Bogus uninitialized variable warning 
for allocatable derived type array function result
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58410

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution|--- |FIXED


[Bug rtl-optimization/59880] ix86_avoid_lea_for_addr is buggy

2014-01-19 Thread ubizjak at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59880

--- Comment #4 from Uroš Bizjak ubizjak at gmail dot com ---
(In reply to Jakub Jelinek from comment #2)
 Ah, indeed, it is split because of the:
 (define_insn_and_split *leamode
   [(set (match_operand:SWI48 0 register_operand =r)
 (match_operand:SWI48 1 address_no_seg_operand Ts))]
 splitter.  I'd say it is a bug in ix86_avoid_lea_for_addr, that shouldn't
 have returned true in this case, where the second operand is (zero_extend:DI
 (reg:SI)).

It shouldn't split this RTX, ix86_avoid_lea_for_addr has:

  /* There should be at least two components in the address.  */
  if ((parts.base != NULL_RTX) + (parts.index != NULL_RTX)
  + (parts.disp != NULL_RTX) + (parts.scale  1)  2)
return false;

[Bug rtl-optimization/59880] ix86_avoid_lea_for_addr is buggy

2014-01-19 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59880

Jakub Jelinek jakub at gcc dot gnu.org changed:

   What|Removed |Added

 Status|NEW |ASSIGNED
   Assignee|unassigned at gcc dot gnu.org  |jakub at gcc dot gnu.org

--- Comment #5 from Jakub Jelinek jakub at gcc dot gnu.org ---
Created attachment 31893
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=31893action=edit
gcc49-pr59880.patch

Untested fix.  The reason for the problem is that if it is just a
(zero-extended SI-DI or normal) move from %r13, %rbp or (for k6 %esi), then
decomposition sets parts.disp to const0_rtx and thus we count it as two parts,
even when we wouldn't emit it as a lea insn originally.


[Bug c/48968] incorrect warning about longjmp/vfork clobbering a local (-W -O2, x86-64)

2014-01-19 Thread eggert at gnu dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48968

eggert at gnu dot org changed:

   What|Removed |Added

 Status|RESOLVED|UNCONFIRMED
 Resolution|FIXED   |---

--- Comment #9 from eggert at gnu dot org ---
(In reply to Marek Polacek from comment #8)
 Can't reproduce anymore with 4.7/4.8/4.9 (but with 4.6 I can), thus
 hopefully fixed.

Thanks, but which test case did you use, and which version of 4.8?  I can
reproduce the bug with the first test case (u.i) with the GCC 4.8.2 that is
shipped with Fedora 20 (it says it is gcc (GCC) 4.8.2 20131212 (Red Hat
4.8.2-7)).  That is, the bug with the second test case is fixed with 4.8.2,
but the bug with the first test case remains.


[Bug rtl-optimization/59880] ix86_avoid_lea_for_addr is buggy

2014-01-19 Thread ubizjak at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59880

--- Comment #6 from Uroš Bizjak ubizjak at gmail dot com ---
(In reply to Jakub Jelinek from comment #5)
 Created attachment 31893 [details]
 gcc49-pr59880.patch
 
 Untested fix.  The reason for the problem is that if it is just a
 (zero-extended SI-DI or normal) move from %r13, %rbp or (for k6 %esi), then
 decomposition sets parts.disp to const0_rtx and thus we count it as two
 parts, even when we wouldn't emit it as a lea insn originally.

True. However, can you put new test before costly call to
ix86_ok_to_clobber_flags and ix86_decompose_address?

[Bug c++/57172] [C++11][DR 1164] Template overload resolution ambiguous for T versus T

2014-01-19 Thread glisse at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57172

Marc Glisse glisse at gcc dot gnu.org changed:

   What|Removed |Added

 CC||leonid at volnitsky dot com

--- Comment #8 from Marc Glisse glisse at gcc dot gnu.org ---
*** Bug 54425 has been marked as a duplicate of this bug. ***


[Bug c++/54425] Rvalue/Lvalue overload resolution of templated function

2014-01-19 Thread glisse at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54425

Marc Glisse glisse at gcc dot gnu.org changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 CC||glisse at gcc dot gnu.org
 Resolution|--- |DUPLICATE

--- Comment #2 from Marc Glisse glisse at gcc dot gnu.org ---
Already fixed on trunk.

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


[Bug c++/59883] New: Missed C++ front-end devirtualizations

2014-01-19 Thread hubicka at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59883

Bug ID: 59883
   Summary: Missed C++ front-end devirtualizations
   Product: gcc
   Version: 4.9.0
Status: UNCONFIRMED
  Severity: enhancement
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: hubicka at gcc dot gnu.org

I believe the following testcase:
 struct A 
{
   virtual int foo (void) {return foo();}
}; 

struct B {
   struct A a;
};
struct A a[7]; 

int test(void)
{
  return a[3].foo();
} 

int test2(struct B *b)
{
  return b-a.foo();
}
ought to get devirtualized by C++ FE based on the fact that the object is
contained within an structure or array. (this is related to PR46507)

In the following testcase:
namespace {
  struct A 
  {
virtual int foo (void) {return 42;}
  };
}
int test(void)
{
  struct A a, *b=a;
  return b-foo();
}

We can now probably use ipa-devirt's type inheritance graph to work out right
away that A is a final class.

And finally:
struct A 
{
   virtual int foo (void) {return foo();}
};
IMO allows devirtualization of self recursive functions


[Bug fortran/59881] Memory corruption with allocatable arrays in polymorphic types

2014-01-19 Thread dominiq at lps dot ens.fr
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59881

Dominique d'Humieres dominiq at lps dot ens.fr changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2014-01-19
 Ever confirmed|0   |1

--- Comment #1 from Dominique d'Humieres dominiq at lps dot ens.fr ---
 The example works with gfortran 4.8.x and 4.9.0, but fails with all 4.7.x. 

I have built and ran the test without problem with 4.8.2 and almost latest
trunk without problem (few runs) and got random problems with 4.7.4. I'll try
to do some bisection to see it is known issue that has been fixed between 4.7
and 4.8, but don't expect a quick answer.

I would be nice if you can reduce your test further.


[Bug rtl-optimization/59880] ix86_avoid_lea_for_addr is buggy

2014-01-19 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59880

--- Comment #7 from Jakub Jelinek jakub at gcc dot gnu.org ---
Sure, will do.  Thought about that as well, just didn't change it before
attaching ;)


[Bug c/48968] incorrect warning about longjmp/vfork clobbering a local (-W -O2, x86-64)

2014-01-19 Thread mpolacek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48968

Marek Polacek mpolacek at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2014-01-19
 Ever confirmed|0   |1

--- Comment #10 from Marek Polacek mpolacek at gcc dot gnu.org ---
Ah, on u.i I can see it, too.  Sorry, I thought the testcases are equivalent.


[Bug fortran/59414] [4.8/4.9 Regression] [OOP] ICE in in gfc_conv_expr_descriptor on ALLOCATE inside SELECT TYPE

2014-01-19 Thread pault at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59414

Paul Thomas pault at gcc dot gnu.org changed:

   What|Removed |Added

   Assignee|unassigned at gcc dot gnu.org  |pault at gcc dot gnu.org

--- Comment #13 from Paul Thomas pault at gcc dot gnu.org ---
Created attachment 31894
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=31894action=edit
Patch for the PR

This patch bootstraps and regtests on trunk.  The resulting behaviour is
identical to ifort.

I'll submit tomorrow or Tuesday.

Cheers

Paul


[Bug fortran/59881] Memory corruption with allocatable arrays in polymorphic types

2014-01-19 Thread juergen.reuter at desy dot de
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59881

--- Comment #2 from Jürgen Reuter juergen.reuter at desy dot de ---
Created attachment 31895
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=31895action=edit
bit smaller test case

This is a bit smaller test case. The main program is basically a call, and one
module has been eliminated. Also, no input file is needed any more. 
The module ifile defines internal files used for 
carrying information, lexer.f90 defines the lexer, parser.f90 the parser,
syntax_rules.f90 the corresponding syntax_rules. 
The scan command now only has one line which triggers the problems.

[Bug fortran/59881] Memory corruption with allocatable arrays in polymorphic types

2014-01-19 Thread dominiq at lps dot ens.fr
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59881

--- Comment #3 from Dominique d'Humieres dominiq at lps dot ens.fr ---
When the executable is run under valgrind I see a lot of

==981== Invalid write of size 8
==981==at 0x100020B99: __parser_MOD_token_assign_real (in ./seg_prod)
==981==by 0x10001ED21: __parser_MOD_parse_node_set_value (in ./seg_prod)
==981==by 0x100058249: __commands_MOD_range_real_set_value (in ./seg_prod)
==981==by 0x1000543C2: __commands_MOD_cmd_scan_execute (in ./seg_prod)
==981==by 0x100053EC9: __commands_MOD_command_list_execute (in ./seg_prod)
==981==by 0x10005E495: __whizard_MOD_whizard_process_stream (in ./seg_prod)
==981==by 0x10005EB3B: __whizard_MOD_whizard_process_stdin (in ./seg_prod)
==981==by 0x10006191E: MAIN__ (in ./seg_prod)
==981==by 0x10006204E: main (in ./seg_prod)
==981==  Address 0x100f0400d is 829 bytes inside a block of size 1,024 free'd
==981==at 0x10009252D: free (vg_replace_malloc.c:430)
==981==by 0x1A624: __iso_varying_string_MOD_op_eq_vs_vs (in ./seg_prod)
==981==by 0x10002830D: __variables_MOD_var_list_get_var_ptr (in ./seg_prod)
==981==by 0x10002839D: __variables_MOD_var_list_get_var_ptr (in ./seg_prod)
==981==by 0x100024DE2: __variables_MOD_var_list_check_user_var (in
./seg_prod)
==981==by 0x10005C9E0: __commands_MOD_cmd_var_compile (in ./seg_prod)
==981==by 0x100053F86: __commands_MOD_command_list_compile (in ./seg_prod)
==981==by 0x10005B43E: __commands_MOD_build_alt_setup (in ./seg_prod)
==981==by 0x10005450A: __commands_MOD_cmd_scan_execute (in ./seg_prod)
==981==by 0x100053EC9: __commands_MOD_command_list_execute (in ./seg_prod)
==981==by 0x10005E495: __whizard_MOD_whizard_process_stream (in ./seg_prod)
==981==by 0x10005EB3B: __whizard_MOD_whizard_process_stdin (in ./seg_prod)

when compiled with r194897 (2013-01-04). These invalid write/read disappear
with r195140 (2013-01-14). However I see a lot leak

...
=65053== 40,519 (7,344 direct, 33,175 indirect) bytes in 51 blocks are
definitely lost in loss record 126 of 128
==65053==at 0x100092679: malloc (vg_replace_malloc.c:266)
==65053==by 0x10001E6F0: __parser_MOD_parse_node_replace_last_sub (in
./seg_prod)
==65053==by 0x100057270: __commands_MOD_cmd_scan_compile (in ./seg_prod)
==65053==by 0x100053F5E: __commands_MOD_command_list_compile (in
./seg_prod)
==65053==by 0x10005E465: __whizard_MOD_whizard_process_stream (in
./seg_prod)
==65053==by 0x10005EB3B: __whizard_MOD_whizard_process_stdin (in
./seg_prod)
==65053==by 0x10006191E: MAIN__ (in ./seg_prod)
==65053==by 0x10006204E: main (in ./seg_prod)
==65053==
==65053== 54,812 (8,432 direct, 46,380 indirect) bytes in 28 blocks are
definitely lost in loss record 127 of 128
==65053==at 0x100092679: malloc (vg_replace_malloc.c:266)
==65053==by 0x100056A16: __commands_MOD_cmd_scan_compile (in ./seg_prod)
==65053==by 0x100053F5E: __commands_MOD_command_list_compile (in
./seg_prod)
==65053==by 0x10005E465: __whizard_MOD_whizard_process_stream (in
./seg_prod)
==65053==by 0x10005EB3B: __whizard_MOD_whizard_process_stdin (in
./seg_prod)
==65053==by 0x10006191E: MAIN__ (in ./seg_prod)
==65053==by 0x10006204E: main (in ./seg_prod)
==65053==
==65053== 218,271 (144 direct, 218,127 indirect) bytes in 1 blocks are
definitely lost in loss record 128 of 128
==65053==at 0x100092679: malloc (vg_replace_malloc.c:266)
==65053==by 0x10001EBC3: __parser_MOD_parse_node_create_branch (in
./seg_prod)
==65053==by 0x10001D271: parse_sequence.2386 (in ./seg_prod)
==65053==by 0x10001DD29: parse_node_match_rule.2402 (in ./seg_prod)
==65053==by 0x10001CD3B: __parser_MOD_parse_tree_init (in ./seg_prod)
==65053==by 0x10005E3FD: __whizard_MOD_whizard_process_stream (in
./seg_prod)
==65053==by 0x10005EB3B: __whizard_MOD_whizard_process_stdin (in
./seg_prod)
==65053==by 0x10006191E: MAIN__ (in ./seg_prod)
==65053==by 0x10006204E: main (in ./seg_prod)
==65053==
==65053== LEAK SUMMARY:
==65053==definitely lost: 79,291 bytes in 763 blocks
==65053==indirectly lost: 330,636 bytes in 3,687 blocks
==65053==  possibly lost: 0 bytes in 0 blocks
==65053==still reachable: 556 bytes in 12 blocks
==65053== suppressed: 88 bytes in 1 blocks
==65053==
==65053== For counts of detected and suppressed errors, rerun with: -v
==65053== ERROR SUMMARY: 19 errors from 19 contexts (suppressed: 0 from 0)

Note that on trunk I also get a lot of invalid write/read (114).


[Bug rtl-optimization/59880] ix86_avoid_lea_for_addr is buggy

2014-01-19 Thread hjl.tools at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59880

--- Comment #8 from H.J. Lu hjl.tools at gmail dot com ---
(In reply to Jakub Jelinek from comment #7)
 Sure, will do.  Thought about that as well, just didn't change it before
 attaching ;)

Please use long long and target ! ia32 on testcase so
that it will be tested for x32.


[Bug rtl-optimization/59802] excessive compile time in RTL optimizers (loop unswitching, CPROP)

2014-01-19 Thread dcb314 at hotmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59802

--- Comment #8 from David Binderman dcb314 at hotmail dot com ---
(In reply to Richard Biener from comment #7)
 Fixed.

The results I can report are for trunk dated 20130119

[dcb@zippy4 foundBugs]$ time ../results/bin/gcc -c bug129.cc 

real0m8.076s
user0m5.925s
sys0m0.131s
[dcb@zippy4 foundBugs]$ time ../results/bin/gcc -c -O2 bug129.cc 

real1m0.706s
user0m57.884s
sys0m0.402s
[dcb@zippy4 foundBugs]$ time ../results/bin/gcc -c -O3 bug129.cc 

real5m45.982s
user5m42.793s
sys0m0.457s

while the first time is trivial, the -O2 time is down by about
60% and the -O3 time is down by about 30%.

Good work !


[Bug fortran/59198] [4.7/4.8/4.9 Regression] ICE on cyclically dependent polymorphic types

2014-01-19 Thread mikael at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59198

Mikael Morin mikael at gcc dot gnu.org changed:

   What|Removed |Added

 CC||mikael at gcc dot gnu.org

--- Comment #4 from Mikael Morin mikael at gcc dot gnu.org ---
Just a bit shorter (without unstable_t type):

module decays

  implicit none

  type :: decay_term_t
 type(decay_t), pointer :: unstable_product
  end type

  type :: decay_gen_t
 type(decay_term_t), allocatable :: term
 procedure(), nopass, pointer :: obs1_int
  end type

  type :: rng_t
  end type

  type, extends (decay_gen_t) :: decay_t
 class(rng_t), allocatable :: rng
  end type

  class(decay_t), pointer :: object

end


[Bug other/59882] dev-cpp/xsd: internal compiler error: Segmentation fault

2014-01-19 Thread nheghathivhistha at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59882

--- Comment #1 from David Kredba nheghathivhistha at gmail dot com ---
Created attachment 31896
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=31896action=edit
C-reduced test case - first run


[Bug libfortran/59836] [4.7/4.8/4.9 Regression] Wrong outputs with rounding formats for some values.

2014-01-19 Thread jvdelisle at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59836

--- Comment #9 from Jerry DeLisle jvdelisle at gcc dot gnu.org ---
Author: jvdelisle
Date: Sun Jan 19 23:17:43 2014
New Revision: 206785

URL: http://gcc.gnu.org/viewcvs?rev=206785root=gccview=rev
Log:
2014-01-19  Jerry DeLisle  jvdeli...@gcc.gnu
Dominique d'Humieres  domi...@lps.ens.fr

PR libfortran/59771
PR libfortran/59774
PR libfortran/59836
* io/write_float.def (output_float): Fix wrong handling of the
Fw.0 format.
(output_float_FMT_G_): Fixes rounding issues with -m32.

Modified:
trunk/libgfortran/ChangeLog
trunk/libgfortran/io/write_float.def


[Bug libfortran/59774] [4.8/4.9 Regression] Inconsistent rounding between -m32 and -m64

2014-01-19 Thread jvdelisle at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59774

--- Comment #14 from Jerry DeLisle jvdelisle at gcc dot gnu.org ---
Author: jvdelisle
Date: Sun Jan 19 23:17:43 2014
New Revision: 206785

URL: http://gcc.gnu.org/viewcvs?rev=206785root=gccview=rev
Log:
2014-01-19  Jerry DeLisle  jvdeli...@gcc.gnu
Dominique d'Humieres  domi...@lps.ens.fr

PR libfortran/59771
PR libfortran/59774
PR libfortran/59836
* io/write_float.def (output_float): Fix wrong handling of the
Fw.0 format.
(output_float_FMT_G_): Fixes rounding issues with -m32.

Modified:
trunk/libgfortran/ChangeLog
trunk/libgfortran/io/write_float.def


[Bug libfortran/59771] Cleanup handling of Gw.0 and Gw.0Ee format

2014-01-19 Thread jvdelisle at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59771

--- Comment #2 from Jerry DeLisle jvdelisle at gcc dot gnu.org ---
Author: jvdelisle
Date: Sun Jan 19 23:17:43 2014
New Revision: 206785

URL: http://gcc.gnu.org/viewcvs?rev=206785root=gccview=rev
Log:
2014-01-19  Jerry DeLisle  jvdeli...@gcc.gnu
Dominique d'Humieres  domi...@lps.ens.fr

PR libfortran/59771
PR libfortran/59774
PR libfortran/59836
* io/write_float.def (output_float): Fix wrong handling of the
Fw.0 format.
(output_float_FMT_G_): Fixes rounding issues with -m32.

Modified:
trunk/libgfortran/ChangeLog
trunk/libgfortran/io/write_float.def


[Bug libfortran/59774] [4.8/4.9 Regression] Inconsistent rounding between -m32 and -m64

2014-01-19 Thread jvdelisle at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59774

--- Comment #15 from Jerry DeLisle jvdelisle at gcc dot gnu.org ---
Author: jvdelisle
Date: Sun Jan 19 23:21:10 2014
New Revision: 206786

URL: http://gcc.gnu.org/viewcvs?rev=206786root=gccview=rev
Log:
2014-01-19  Steven G. Kargl  ka...@gcc.gnu.org

PR libfortran/59771
PR libfortran/59774
PR libfortran/59836
* gfortran.dg/round_3.f08: New cases added.
* gfortran.dg/fmt_g_1.f90: New test.

Added:
trunk/gcc/testsuite/gfortran.dg/fmt_g_1.f90
Modified:
trunk/gcc/testsuite/ChangeLog
trunk/gcc/testsuite/gfortran.dg/round_3.f08


[Bug libfortran/59771] Cleanup handling of Gw.0 and Gw.0Ee format

2014-01-19 Thread jvdelisle at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59771

--- Comment #3 from Jerry DeLisle jvdelisle at gcc dot gnu.org ---
Author: jvdelisle
Date: Sun Jan 19 23:21:10 2014
New Revision: 206786

URL: http://gcc.gnu.org/viewcvs?rev=206786root=gccview=rev
Log:
2014-01-19  Steven G. Kargl  ka...@gcc.gnu.org

PR libfortran/59771
PR libfortran/59774
PR libfortran/59836
* gfortran.dg/round_3.f08: New cases added.
* gfortran.dg/fmt_g_1.f90: New test.

Added:
trunk/gcc/testsuite/gfortran.dg/fmt_g_1.f90
Modified:
trunk/gcc/testsuite/ChangeLog
trunk/gcc/testsuite/gfortran.dg/round_3.f08


[Bug libfortran/59836] [4.7/4.8/4.9 Regression] Wrong outputs with rounding formats for some values.

2014-01-19 Thread jvdelisle at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59836

--- Comment #10 from Jerry DeLisle jvdelisle at gcc dot gnu.org ---
Author: jvdelisle
Date: Sun Jan 19 23:21:10 2014
New Revision: 206786

URL: http://gcc.gnu.org/viewcvs?rev=206786root=gccview=rev
Log:
2014-01-19  Steven G. Kargl  ka...@gcc.gnu.org

PR libfortran/59771
PR libfortran/59774
PR libfortran/59836
* gfortran.dg/round_3.f08: New cases added.
* gfortran.dg/fmt_g_1.f90: New test.

Added:
trunk/gcc/testsuite/gfortran.dg/fmt_g_1.f90
Modified:
trunk/gcc/testsuite/ChangeLog
trunk/gcc/testsuite/gfortran.dg/round_3.f08


[Bug c++/59873] The value of char32_t U'\u0000' and char16_t u'\u000' is 1, instead of 0.

2014-01-19 Thread wjl at icecavern dot net
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59873

--- Comment #8 from Wesley J. Landaker wjl at icecavern dot net ---
Just as an additional point, L'\u' also yields a wchar_t with the value of
1. (If that is an illegal construct, it is not warned about when using -Wall
-Wextra -Werror).


[Bug c++/59873] The value of char32_t U'\u0000' and char16_t u'\u000' is 1, instead of 0.

2014-01-19 Thread wjl at icecavern dot net
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59873

--- Comment #9 from Wesley J. Landaker wjl at icecavern dot net ---
This also happens in strings, e.g.:

static_assert(U\u[0] == 1, this passes);
static_assert(U\u[0] == 0, this fails);


[Bug other/59882] dev-cpp/xsd: internal compiler error: Segmentation fault

2014-01-19 Thread nheghathivhistha at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59882

--- Comment #2 from David Kredba nheghathivhistha at gmail dot com ---
c-reduce at --sllooww

namespace std
{
template  class, class  struct pair;
template  typename _Iterator  struct iterator_traits
{
typedef typename _Iterator::value_type value_type;
};
template  typename  class allocator
{
public:
template  typename  struct rebind
{
typedef allocator other;
};
};
template  typename  struct less
{
};
template  typename  struct _Select1st;
}

namespace __gnu_cxx
{
template  typename _Alloc  struct __alloc_traits
{
template  typename _Tp  struct rebind
{
typedef typename _Alloc::template rebind  _Tp ::other other;
};
};
}
namespace std
{
template  typename  struct _Rb_tree_node;
template  typename, typename _Val, typename, typename _Compare,
 typename _Alloc = allocator  _Val  class _Rb_tree
{
typedef typename __gnu_cxx::__alloc_traits  _Alloc ::template rebind 
_Rb_tree_node  _Val  ::other _Node_allocator;
typedef _Alloc allocator_type;
template  typename _Key_compare  struct _Rb_tree_impl
{
_Rb_tree_impl (_Key_compare, _Node_allocator);
};
_Rb_tree_impl  _Compare  _M_impl;
public:
_Rb_tree (_Compare __comp, allocator_type __a):_M_impl (__comp,
__a)
{
}
};
template  typename _Key, typename _Tp, typename _Compare =
less  _Key , typename _Alloc =
allocator  pair  _Key, _Tp   class map
{
public:
typedef _Key key_type;
typedef pair  _Key, _Tp  value_type;
typedef _Compare key_compare;
typedef _Alloc allocator_type;
typedef _Rb_tree  key_type, value_type, _Select1st  value_type ,
key_compare  _Rep_type;
_Rep_type _M_t;
map (_Compare __comp, allocator_type __a = allocator_type ()):_M_t (__comp,
__a)
{
}
};
template  typename _Tp  struct _List_iterator
{
typedef _Tp value_type;
};
template  typename _Tp  class list
{
public:
typedef _List_iterator  _Tp  iterator;
};
}

namespace Cult
{
namespace Types
{
namespace Fundamental
{
typedef void Void;
typedef int WideChar;
} using Fundamental::Void;
using Fundamental::WideChar;
} namespace
{
template  typename I  class IteratorAdapter
{
public:
typedef typename std::iterator_traits 
I ::value_type Value;
};
} namespace Types
{
template  typename  class StringTemplate;
typedef StringTemplate  WideChar  WideString;
} namespace Containers
{
template  typename K, typename T  class Map:std::map  K, T 
{
typedef std::map  K, T  Base;
typedef typename Base::key_compare Compare;
public:
Map (Compare comp = Compare ()):Base (comp)
{
}
};
template  typename T  class List
{
typedef std::list  T  Base;
public:
typedef IteratorAdapter  typename Base::iterator 
Iterator;
};
}
}

namespace
{
using namespace Cult::Types;
}

namespace XSDFrontend
{
namespace SemanticGraph
{
namespace Bits
{
template  typename  struct strip_pointer;
template  typename X  struct strip_pointer X * 
{
typedef X Type;
};
template  typename I  struct PointerIterator
{
typedef typename strip_pointer  typename I::Value ::Type Reference;
Reference operator* ();
};
} class Edge
{
};
class Node;
class Names:public Edge
{
};
class Scope
{
typedef Cult::Containers::List  Names * NamesList;
public:
typedef Bits::PointerIterator  NamesList::Iterator 
NamesIterator;
};
class Type;
class Complex:public Scope
{
};
}
}
namespace FrontendElements
{
namespace Traversal
{
template  typename  class TraverserBase
{
};
template  typename X  class DispatcherBase
{
public:
virtual Void dispatch (X);
};
template  typename X  class Dispatcher:public DispatcherBase  X 
{
};
}
}

namespace XSDFrontend
{
namespace Traversal
{
namespace Bits
{
using FrontendElements::Traversal::TraverserBase;
using FrontendElements::Traversal::DispatcherBase;
using FrontendElements::Traversal::Dispatcher;
} typedef Bits::DispatcherBase  SemanticGraph::Edge  EdgeDispatcherBase;
struct EdgeBase:virtual Bits::Dispatcher  SemanticGraph::Edge ,
Bits::Dispatcher  SemanticGraph::Node 
{
};
template  typename  struct Edge:Bits::TraverserBase 
SemanticGraph::Edge , EdgeBase
{
};
struct Names:Edge  Names 
{
};
template  typename T  struct ScopeTemplate
{
template  typename  Void names (T, EdgeDispatcherBase  d)
{
typename T::NamesIterator b;
d.dispatch (*b);
} Void names (T s, EdgeDispatcherBase  d)
{
names  ScopeTemplate  (s, d);
}
};
struct Complex:ScopeTemplate  SemanticGraph::Complex 
{
};
} typedef WideString String;
class Context
{
};
namespace Parser
{
namespace
{
typedef Cult::Containers::Map  SemanticGraph::Type,
String  TypeInstanceMap;
struct BaseType
{
BaseType (Context);
};
struct ArgList:Traversal::Complex
{
ArgList (Context, TypeInstanceMap)
{
} virtual Void traverse (SemanticGraph::Complex c)
{
names (c, names_);
} TypeInstanceMap map_;

[Bug other/36150] colorize output of gcc

2014-01-19 Thread bluetooth.developer at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36150

bluetooth.developer at gmail dot com changed:

   What|Removed |Added

 CC||bluetooth.developer at gmail 
dot c
   ||om

--- Comment #17 from bluetooth.developer at gmail dot com ---
Alternatively you could use GilCC which is a tool to colorize GCC output in
real time. Just in case you cannot use GGC version 4.9 you still can use GilCC.

here is the download link:
http://www.onlysolutionssoftware.com/gilcc/


[Bug c/59884] New: Unexpected warning pragma GCC target

2014-01-19 Thread joey.ye at arm dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59884

Bug ID: 59884
   Summary: Unexpected warning pragma GCC target
   Product: gcc
   Version: 4.9.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c
  Assignee: unassigned at gcc dot gnu.org
  Reporter: joey.ye at arm dot com

Affected target: arm. (x86/x86_64 passes)
Affected version: trunk 20140109, 4.8, 4.7

~/cases/pragma $ cat p.c
#pragma GCC push_options
#pragma GCC optimize(O2)
int foo(int a){
return a+1;
}
#pragma GCC pop_options

~/cases/pragma $ arm-none-eabi-gcc p.c -c
p.c:6:9: warning: #pragma GCC target is not supported for this machine
[-Wpragmas]
 #pragma GCC pop_options


[Bug target/59884] Unexpected warning pragma GCC target

2014-01-19 Thread pinskia at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59884

Andrew Pinski pinskia at gcc dot gnu.org changed:

   What|Removed |Added

  Component|c   |target

--- Comment #1 from Andrew Pinski pinskia at gcc dot gnu.org ---
Comes from:
  if (p-target_binary != target_option_current_node)
{
  (void) targetm.target_option.pragma_parse (NULL_TREE, p-target_binary);
  target_option_current_node = p-target_binary;
}


The front-end expects the target always to implement these target hooks it
seems rather than the default.

Really I think the arm back-end should implement them so that thumb2 code can
be in the same source file as arm32 code and would help out LTO when people mix
and match them.


[Bug target/59884] Unexpected warning pragma GCC target

2014-01-19 Thread joey.ye at arm dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59884

--- Comment #2 from Joey Ye joey.ye at arm dot com ---
(In reply to Andrew Pinski from comment #1)
 Comes from:
   if (p-target_binary != target_option_current_node)
 {
   (void) targetm.target_option.pragma_parse (NULL_TREE,
 p-target_binary);
   target_option_current_node = p-target_binary;
 }
 
 
 The front-end expects the target always to implement these target hooks it
 seems rather than the default.
 
 Really I think the arm back-end should implement them so that thumb2 code
 can be in the same source file as arm32 code and would help out LTO when
 people mix and match them.
It is a useful feature on ARM. I don't know why it isn't support now.

But this warning still need to be fixed as there are always some targets not
supportting this pragma.


[Bug ipa/59882] [4.9 Regression] internal compiler error: Segmentation fault

2014-01-19 Thread trippels at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59882

Markus Trippelsdorf trippels at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Keywords||ice-on-valid-code
   Last reconfirmed||2014-01-20
  Component|other   |ipa
 CC||trippels at gcc dot gnu.org
 Ever confirmed|0   |1
Summary|dev-cpp/xsd: internal   |[4.9 Regression]  internal
   |compiler error: |compiler error:
   |Segmentation fault  |Segmentation fault
   Target Milestone|--- |4.9.0

--- Comment #3 from Markus Trippelsdorf trippels at gcc dot gnu.org ---
Confirmed. Another devirtualization issue.

markus@x4 tmp % cat test.ii
class A;
class B {};
struct C {
  virtual void dispatch();
  int traversal_map_;
};
template typename class F : public virtual C {};

struct I : FA, Fint {};
struct J : B, I {};
class D {};
struct L {
  L(D , int p2) : map_(p2) {}
  virtual void traverse(int p1) {
int s = p1;
namesL(s, names_);
  }
  int map_;
  J names_;
  template typename void names(int , C p2) { p2.dispatch(); }
};

struct G : D {
  G(D , int p2) : map_(p2) { L(*this, map_); }
  int map_;
};

int a;
void fn1(D p1) { G(p1, a); }

markus@x4 tmp % g++ -c -O2 test.ii
test.ii: In member function ‘virtual void L::traverse(int)’:
test.ii:29:29: internal compiler error: Segmentation fault
 void fn1(D p1) { G(p1, a); }
 ^
0xb541af crash_signal
../../gcc/gcc/toplev.c:337
0x98e5eb tree_check
../../gcc/gcc/tree.h:2708
0x98e5eb gimple_get_virt_method_for_binfo(long, tree_node*)
../../gcc/gcc/gimple-fold.c:3242
0x9d35a9 possible_polymorphic_call_targets(tree_node*, long,
ipa_polymorphic_call_context, bool*, void**)
../../gcc/gcc/ipa-devirt.c:1312
0x9902ab possible_polymorphic_call_targets(tree_node*, bool*, void**)
../../gcc/gcc/ipa-utils.h:135
0x98d4a6 gimple_fold_call
../../gcc/gcc/gimple-fold.c:1185
0x98d4a6 fold_stmt_1
../../gcc/gcc/gimple-fold.c:1298
0xbaacb9 fold_marked_statements
../../gcc/gcc/tree-inline.c:4511
0xbb8374 optimize_inline_calls(tree_node*)
../../gcc/gcc/tree-inline.c:4592
0x1058409 early_inliner
../../gcc/gcc/ipa-inline.c:2272
0x1058409 execute
../../gcc/gcc/ipa-inline.c:2335
Please submit a full bug report,

[Bug lto/55113] ICE with LTO and -fshort-double

2014-01-19 Thread pinskia at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55113

Andrew Pinski pinskia at gcc dot gnu.org changed:

   What|Removed |Added

Summary|ICE in  |ICE with LTO and
   |emit_library_call_value_1,  |-fshort-double
   |at calls.c:3757 |

--- Comment #10 from Andrew Pinski pinskia at gcc dot gnu.org ---
 -fshort-double is what is causing the issue.  Why are you using that option in
the first place?  It changes the ABI.

With 4.7.0 (and checking enabled), I get the following ICE on all targets with
-flto -fshort-double -Os:
t7.c: In function ‘main’:
t7.c:3:5: error: non-trivial conversion at assignment
float
double
# .MEM_2 = VDEF .MEM_1(D)
f = 1.0e+0;

[Bug target/59880] ix86_avoid_lea_for_addr is buggy

2014-01-19 Thread ubizjak at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59880

Uroš Bizjak ubizjak at gmail dot com changed:

   What|Removed |Added

  Component|rtl-optimization|target
   Target Milestone|--- |4.7.4
   Severity|enhancement |normal

[Bug target/58945] Improve atomic_compare_and_swap*_doubleword pattern

2014-01-19 Thread ubizjak at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58945

Uroš Bizjak ubizjak at gmail dot com changed:

   What|Removed |Added

 Status|NEW |ASSIGNED

Re: Fix compute_reloc_for_constant

2014-01-19 Thread Bernhard Reutner-Fischer

On 19 January 2014 03:12:56 Jan Hubicka hubi...@ucw.cz wrote:


Hi,
while comparing LTO and non-LTO builds I noticed that with LTO we produce a lot
more vtables in datal.rel.ro rather than data.rel.ro.local
This is because of partitioning promoting more symbols global. For RTL we make
section decisions based on SYMBOL_REF_LOCAL_FLAG that is set based on
decl_binds_local_p.  For variables we use TREE_PUBLIC check that is overly
conservative.


Honza,

Would you (or anybody else for that matter) mind looking into PR32219 while 
there?
See http://gcc.gnu.org/ml/gcc-patches/2010-03/msg00665.html and other 
discussion of that bug on the ML last year.


TIA,
Bernhard


Bootstrapped/regtested x86_64-linux, OK?
* varasm.c (compute_reloc_for_constant): Use targetm.binds_local_p
instead of TREE_PUBLIC to determine if reference will be local
within given DSO or not.
Index: varasm.c
===
--- varasm.c(revision 206684)
+++ varasm.c(working copy)
@@ -4060,7 +4060,7 @@
  break;
}

-  if (TREE_PUBLIC (tem))
+  if (!targetm.binds_local_p (tem))
reloc |= 2;
   else
reloc |= 1;




Sent with AquaMail for Android
http://www.aqua-mail.com




[PATCH] libgcc: use linker script for libgcc_s.so on xtensa

2014-01-19 Thread Baruch Siach
The xtensa port uses __xtensa_libgcc_window_spill in libgcc to implement
__builtin_frame_address. This symbol is local/hidden in libgcc. This is not a
problem when linking against static libgcc. But g++ defaults to
-shared-libgcc, thus breaking link against C++ shared libraries that are using
__builtin_frame_address as follows:

ld: test: hidden symbol `__xtensa_libgcc_window_spill' in 
.../libgcc.a(lib2funcs.o) is referenced by DSO

Make libgcc_s.so a linker script that links in unresolved symbols from the
static libgcc, similar to the ARM and PowerPC ports.

libgcc/
* config.host (tmake_file): add t-slibgcc-libgcc for xtensa*-*-linux*.
---
 libgcc/config.host | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libgcc/config.host b/libgcc/config.host
index 75a17e3..178f6d9 100644
--- a/libgcc/config.host
+++ b/libgcc/config.host
@@ -1181,7 +1181,7 @@ xtensa*-*-elf*)
extra_parts=$extra_parts crti.o crtn.o
;;
 xtensa*-*-linux*)
-   tmake_file=$tmake_file xtensa/t-xtensa xtensa/t-linux
+   tmake_file=$tmake_file xtensa/t-xtensa xtensa/t-linux t-slibgcc-libgcc
md_unwind_header=xtensa/linux-unwind.h
;;
 am33_2.0-*-linux*)
-- 
1.8.5.2



Re: PATCH: PR target/59379: [4.9 Regression] gomp_init_num_threads is compiled into an infinite loop with --with-arch=corei7 --with-cpu=slm

2014-01-19 Thread Uros Bizjak
On Sat, Jan 18, 2014 at 9:15 PM, H.J. Lu hjl.to...@gmail.com wrote:
 For LEA operation with SImode_address_operand, which zero-extends SImode
 to DImode, ix86_split_lea_for_addr turns

 (set (reg:DI) ...)

 into

 (set (reg:SI) ...)

 We need to do

 (set (reg:DI) (zero_extend:DI (reg:SI)))

 at the end. If the LEA operation is

 (set (reg:DI) (zero_extend:DI (reg:SI)))

ree pass should remove these. However, we can just emit zero-extend
insn at the end of sequence, and ree (which is located after
post-reload split) should handle it:

--cut here--
Index: config/i386/i386.md
===
--- config/i386/i386.md (revision 206753)
+++ config/i386/i386.md (working copy)
@@ -5428,12 +5428,17 @@
   operands[0] = SET_DEST (pat);
   operands[1] = SET_SRC (pat);

-  /* Emit all operations in SImode for zero-extended addresses.  Recall
- that x86_64 inheretly zero-extends SImode operations to DImode.  */
+  /* Emit all operations in SImode for zero-extended addresses.  */
   if (SImode_address_operand (operands[1], VOIDmode))
 mode = SImode;

   ix86_split_lea_for_addr (curr_insn, operands, mode);
+
+  /* Zero-extend return register to DImode for zero-extended addresses.  */
+  if (mode != MODEmode)
+emit_insn (gen_zero_extendsidi2
+  (operands[0], gen_lowpart ((mode), operands[0])));
+
   DONE;
 }
   [(set_attr type lea)
--cut here--

The patch was tested with a testcase from Comment #9 of the PR using
-O --march=corei7 -mtune=slm, and resulting binary runs without
problems.

Uros.


[committed] Fix vect_intness in a few tests

2014-01-19 Thread Richard Sandiford
One test tests for integer vectorisation so requires vect_int.  Two others
already had the dg-require-effective-target, but it was before the dg-do
rather than after.

Tested on mips64-linux-gnu, where it fixes the vect.exp failures.
Applied as obvious.

Thanks,
Richard


gcc/testsuite/
* gcc.dg/vect/pr57705.c: Require vect_int.
* gcc.dg/vect/pr58508.c: Fix order of dg-require-effective-target line.
* gcc.dg/vect/vect-alias-check.c: Likewise.

Index: gcc/testsuite/gcc.dg/vect/pr57705.c
===
--- gcc/testsuite/gcc.dg/vect/pr57705.c 2014-01-19 09:52:07.761437971 +
+++ gcc/testsuite/gcc.dg/vect/pr57705.c 2014-01-19 09:52:07.973439322 +
@@ -1,4 +1,5 @@
 /* { dg-do run } */
+/* { dg-require-effective-target vect_int } */
 
 #include tree-vect.h
 
Index: gcc/testsuite/gcc.dg/vect/pr58508.c
===
--- gcc/testsuite/gcc.dg/vect/pr58508.c 2014-01-19 09:52:07.776438067 +
+++ gcc/testsuite/gcc.dg/vect/pr58508.c 2014-01-19 09:52:07.973439322 +
@@ -1,5 +1,5 @@
-/* { dg-require-effective-target vect_int } */
 /* { dg-do compile } */
+/* { dg-require-effective-target vect_int } */
 
 
 /* The GCC vectorizer generates loop versioning for the following loop
Index: gcc/testsuite/gcc.dg/vect/vect-alias-check.c
===
--- gcc/testsuite/gcc.dg/vect/vect-alias-check.c2014-01-19 
09:52:07.776438067 +
+++ gcc/testsuite/gcc.dg/vect/vect-alias-check.c2014-01-19 
09:52:07.974439329 +
@@ -1,5 +1,5 @@
-/* { dg-require-effective-target vect_int } */
 /* { dg-do compile } */
+/* { dg-require-effective-target vect_int } */
 /* { dg-additional-options --param=vect-max-version-for-alias-checks=2 } */
 
 /* A test case showing four potential alias checks between a[i] and b[0], b[1],


Re: [Patch] Fix regex multiple consecutive quantifiers bug.

2014-01-19 Thread Paolo Carlini

Hi,

On 01/19/2014 06:52 AM, Tim Shen wrote:

Regex like a** will throw an unexpected exception. Now fixed (but
currently no optimizations on it).

Booted and tested with -m64 and -m32 respectively.
Ok. Please remove 2013 as copyright year for the tescase. I also think 
you can avoid the auxiliary includes.


Thanks!
Paolo.



Re: Fix compute_reloc_for_constant

2014-01-19 Thread Richard Biener
On Sun, Jan 19, 2014 at 3:12 AM, Jan Hubicka hubi...@ucw.cz wrote:
 Hi,
 while comparing LTO and non-LTO builds I noticed that with LTO we produce a 
 lot
 more vtables in datal.rel.ro rather than data.rel.ro.local
 This is because of partitioning promoting more symbols global. For RTL we make
 section decisions based on SYMBOL_REF_LOCAL_FLAG that is set based on
 decl_binds_local_p.  For variables we use TREE_PUBLIC check that is overly
 conservative.

 Bootstrapped/regtested x86_64-linux, OK?

Ok.

Thanks,
Richard.

 * varasm.c (compute_reloc_for_constant): Use targetm.binds_local_p
 instead of TREE_PUBLIC to determine if reference will be local
 within given DSO or not.
 Index: varasm.c
 ===
 --- varasm.c(revision 206684)
 +++ varasm.c(working copy)
 @@ -4060,7 +4060,7 @@
   break;
 }

 -  if (TREE_PUBLIC (tem))
 +  if (!targetm.binds_local_p (tem))
 reloc |= 2;
else
 reloc |= 1;


Re: PATCH: PR target/59379: [4.9 Regression] gomp_init_num_threads is compiled into an infinite loop with --with-arch=corei7 --with-cpu=slm

2014-01-19 Thread H.J. Lu
On Sun, Jan 19, 2014 at 1:55 AM, Uros Bizjak ubiz...@gmail.com wrote:
 On Sat, Jan 18, 2014 at 9:15 PM, H.J. Lu hjl.to...@gmail.com wrote:
 For LEA operation with SImode_address_operand, which zero-extends SImode
 to DImode, ix86_split_lea_for_addr turns

 (set (reg:DI) ...)

 into

 (set (reg:SI) ...)

 We need to do

 (set (reg:DI) (zero_extend:DI (reg:SI)))

 at the end. If the LEA operation is

 (set (reg:DI) (zero_extend:DI (reg:SI)))

 ree pass should remove these. However, we can just emit zero-extend
 insn at the end of sequence, and ree (which is located after
 post-reload split) should handle it:

 --cut here--
 Index: config/i386/i386.md
 ===
 --- config/i386/i386.md (revision 206753)
 +++ config/i386/i386.md (working copy)
 @@ -5428,12 +5428,17 @@
operands[0] = SET_DEST (pat);
operands[1] = SET_SRC (pat);

 -  /* Emit all operations in SImode for zero-extended addresses.  Recall
 - that x86_64 inheretly zero-extends SImode operations to DImode.  */
 +  /* Emit all operations in SImode for zero-extended addresses.  */
if (SImode_address_operand (operands[1], VOIDmode))
  mode = SImode;

ix86_split_lea_for_addr (curr_insn, operands, mode);
 +
 +  /* Zero-extend return register to DImode for zero-extended addresses.  */
 +  if (mode != MODEmode)
 +emit_insn (gen_zero_extendsidi2
 +  (operands[0], gen_lowpart ((mode), operands[0])));
 +
DONE;
  }
[(set_attr type lea)
 --cut here--

 The patch was tested with a testcase from Comment #9 of the PR using
 -O --march=corei7 -mtune=slm, and resulting binary runs without
 problems.


Yes, the resulting GCC works correctly.  However, we generate
extra

(set (reg:DI) (zero_extend:DI (reg:SI)))

It is because we generate

(set (reg:SI) (reg:SI)
(set (reg:DI) (zero_extend:DI (reg:SI)))

REE pass doesn't know

(set (reg:SI) (reg:SI)

has an implicit ZERO_EXTEND.  Here is a testcase:

---foo.c---
extern __thread unsigned int __bid_IDEC_glbflags;
typedef unsigned long long UINT64;
typedef __attribute__ ((aligned(16))) struct
{
  UINT64 w[2];
} UINT128;
extern UINT64 __bid64_from_uint64 (UINT64);
extern void __bid_round64_2_18 (int q,
int x,
UINT64 C,
UINT64 * ptr_Cstar,
int *delta_exp,
int *ptr_is_midpoint_lt_even,
int *ptr_is_midpoint_gt_even,
int *ptr_is_inexact_lt_midpoint,
int *ptr_is_inexact_gt_midpoint);
extern void __bid_round128_19_38 (int q,
 int x,
 UINT128 C,
 UINT128 * ptr_Cstar,
 int *delta_exp,
 int *ptr_is_midpoint_lt_even,
 int *ptr_is_midpoint_gt_even,
 int *ptr_is_inexact_lt_midpoint,
 int *ptr_is_inexact_gt_midpoint);
UINT64
__bid64_from_uint64 (UINT64 x)
{
  UINT64 res;
  UINT128 x128, res128;
  unsigned int q, ind;
  int incr_exp = 0;
  int is_midpoint_lt_even = 0, is_midpoint_gt_even = 0;
  int is_inexact_lt_midpoint = 0, is_inexact_gt_midpoint = 0;
  if (x = 0x002386F26FC0ull) {
if (x  0x0020ull) {
  res = 0x31c0ull | x;
} else {
  res = 0x6c70ull | (x  0x0007ull);
}
  }
  else
{
  if (x  0x16345785d8aull) {
q = 17;
ind = 1;
  } else if (x  0xde0b6b3a764ull) {
q = 18;
ind = 2;
  } else if (x  0x8ac7230489e8ull) {
q = 19;
ind = 3;
  } else {
q = 20;
ind = 4;
  }
  if (q = 19) {
__bid_round64_2_18 (
   q, ind, x, res, incr_exp,
   is_midpoint_lt_even, is_midpoint_gt_even,
   is_inexact_lt_midpoint, is_inexact_gt_midpoint);
  }
  else {
x128.w[1] = 0x0;
x128.w[0] = x;
__bid_round128_19_38 (q, ind, x128, res128, incr_exp,
 is_midpoint_lt_even, is_midpoint_gt_even,
 is_inexact_lt_midpoint, is_inexact_gt_midpoint);
res = res128.w[0];
  }
  if (incr_exp)
ind++;
  if (is_inexact_lt_midpoint || is_inexact_gt_midpoint ||
 is_midpoint_lt_even || is_midpoint_gt_even)
*__bid_IDEC_glbflags |= 0x0020;
  if (res  0x0020ull) {
res = (((UINT64) ind + 398)  53) | res;
  } else
{
 res = 0x6000ull | (((UINT64) ind + 398)  51) |
   (res  0x0007ull);
}
}
  return(res);;
}
---

Compiling with -fPIC -O2, the differences between your patch and mine
are

--- bad.s 2014-01-19 06:10:28.006570325 -0800
+++ foo.s 2014-01-19 06:11:46.117754696 -0800
@@ -84,19 +84,18 @@ __bid64_from_uint64:
  movabsq $9007199254740991, %rax
  cmpq %rax, %rbx
  jbe .L23
- movl %ebp, %edx
  leaq 88(%rsp), %rsp
  .cfi_remember_state
  .cfi_def_cfa_offset 24
  movabsq $2251799813685247, %rax
- movl %edx, %edx
+ movl %ebp, %edx
  andq %rbx, %rax
- movabsq $6917529027641081856, %rcx
  popq %rbx
  .cfi_def_cfa_offset 16
+ movabsq $6917529027641081856, %rcx
  addq $398, %rdx
- orq %rcx, %rax
  salq $51, %rdx
+ orq %rcx, %rax
  popq %rbp
  .cfi_def_cfa_offset 8
  orq %rdx, %rax
@@ -154,7 +153,6 @@ __bid64_from_uint64:
  leaq 88(%rsp), %rsp
  .cfi_remember_state
  .cfi_def_cfa_offset 24
- movl %eax, %eax
  addq $398, %rax
  salq $53, %rax
  orq %rbx, %rax

My patch removes 2 extra

(set 

[Patch, libgfortran] PR59771, PR59774, and PR59836 Bugs in FORMATs Fw.0, Gw.0, and Gw.d

2014-01-19 Thread Dominique d'Humières
The attached patch fixes these bugs and adds the tests. See the PRs for =
the rationale of the changes.
Regression tested on x86_64-apple-darwin13 and powerpc-apple-darwin9.
OK for trunk, 4.8.3, and 4.7.4 (after testing)?

Regards,
Dominique


CL
Description: Binary data



patch-59774t
Description: Binary data


Re: PATCH: PR target/59379: [4.9 Regression] gomp_init_num_threads is compiled into an infinite loop with --with-arch=corei7 --with-cpu=slm

2014-01-19 Thread Uros Bizjak
On Sun, Jan 19, 2014 at 3:20 PM, H.J. Lu hjl.to...@gmail.com wrote:

 For LEA operation with SImode_address_operand, which zero-extends SImode
 to DImode, ix86_split_lea_for_addr turns

 (set (reg:DI) ...)

 into

 (set (reg:SI) ...)

 We need to do

 (set (reg:DI) (zero_extend:DI (reg:SI)))

 at the end. If the LEA operation is

 (set (reg:DI) (zero_extend:DI (reg:SI)))

 ree pass should remove these. However, we can just emit zero-extend
 insn at the end of sequence, and ree (which is located after
 post-reload split) should handle it:

 --cut here--
 Index: config/i386/i386.md
 ===
 --- config/i386/i386.md (revision 206753)
 +++ config/i386/i386.md (working copy)
 @@ -5428,12 +5428,17 @@
operands[0] = SET_DEST (pat);
operands[1] = SET_SRC (pat);

 -  /* Emit all operations in SImode for zero-extended addresses.  Recall
 - that x86_64 inheretly zero-extends SImode operations to DImode.  */
 +  /* Emit all operations in SImode for zero-extended addresses.  */
if (SImode_address_operand (operands[1], VOIDmode))
  mode = SImode;

ix86_split_lea_for_addr (curr_insn, operands, mode);
 +
 +  /* Zero-extend return register to DImode for zero-extended addresses.  */
 +  if (mode != MODEmode)
 +emit_insn (gen_zero_extendsidi2
 +  (operands[0], gen_lowpart ((mode), operands[0])));
 +
DONE;
  }
[(set_attr type lea)
 --cut here--

 The patch was tested with a testcase from Comment #9 of the PR using
 -O --march=corei7 -mtune=slm, and resulting binary runs without
 problems.


 Yes, the resulting GCC works correctly.  However, we generate
 extra

 (set (reg:DI) (zero_extend:DI (reg:SI)))

 It is because we generate

 (set (reg:SI) (reg:SI)
 (set (reg:DI) (zero_extend:DI (reg:SI)))

 REE pass doesn't know

 (set (reg:SI) (reg:SI)

 has an implicit ZERO_EXTEND.  Here is a testcase:

This is the correct sequence,and REE pass should be improved to handle
this situation.

Note, that the problem was that we assumed SImode operations
(including move) have implicit DImode zero-extend, but in fact we
haven't communicate this to the compiler in a proper way.

So, I propose we go with my patch and file an enhancement PR for the REE pass.

Uros.


Re: PATCH: PR target/59379: [4.9 Regression] gomp_init_num_threads is compiled into an infinite loop with --with-arch=corei7 --with-cpu=slm

2014-01-19 Thread H.J. Lu
On Sun, Jan 19, 2014 at 6:24 AM, Uros Bizjak ubiz...@gmail.com wrote:
 On Sun, Jan 19, 2014 at 3:20 PM, H.J. Lu hjl.to...@gmail.com wrote:

 For LEA operation with SImode_address_operand, which zero-extends SImode
 to DImode, ix86_split_lea_for_addr turns

 (set (reg:DI) ...)

 into

 (set (reg:SI) ...)

 We need to do

 (set (reg:DI) (zero_extend:DI (reg:SI)))

 at the end. If the LEA operation is

 (set (reg:DI) (zero_extend:DI (reg:SI)))

 ree pass should remove these. However, we can just emit zero-extend
 insn at the end of sequence, and ree (which is located after
 post-reload split) should handle it:

 --cut here--
 Index: config/i386/i386.md
 ===
 --- config/i386/i386.md (revision 206753)
 +++ config/i386/i386.md (working copy)
 @@ -5428,12 +5428,17 @@
operands[0] = SET_DEST (pat);
operands[1] = SET_SRC (pat);

 -  /* Emit all operations in SImode for zero-extended addresses.  Recall
 - that x86_64 inheretly zero-extends SImode operations to DImode.  */
 +  /* Emit all operations in SImode for zero-extended addresses.  */
if (SImode_address_operand (operands[1], VOIDmode))
  mode = SImode;

ix86_split_lea_for_addr (curr_insn, operands, mode);
 +
 +  /* Zero-extend return register to DImode for zero-extended addresses.  */
 +  if (mode != MODEmode)
 +emit_insn (gen_zero_extendsidi2
 +  (operands[0], gen_lowpart ((mode), operands[0])));
 +
DONE;
  }
[(set_attr type lea)
 --cut here--

 The patch was tested with a testcase from Comment #9 of the PR using
 -O --march=corei7 -mtune=slm, and resulting binary runs without
 problems.


 Yes, the resulting GCC works correctly.  However, we generate
 extra

 (set (reg:DI) (zero_extend:DI (reg:SI)))

 It is because we generate

 (set (reg:SI) (reg:SI)
 (set (reg:DI) (zero_extend:DI (reg:SI)))

 REE pass doesn't know

 (set (reg:SI) (reg:SI)

 has an implicit ZERO_EXTEND.  Here is a testcase:

 This is the correct sequence,and REE pass should be improved to handle
 this situation.

 Note, that the problem was that we assumed SImode operations
 (including move) have implicit DImode zero-extend, but in fact we
 haven't communicate this to the compiler in a proper way.

 So, I propose we go with my patch and file an enhancement PR for the REE pass.


That is fine with me.  Please install it on all affected branches
and close the PR.  I will open a new PR for REE pass.

Thanks.


-- 
H.J.


Re: PATCH: PR target/59379: [4.9 Regression] gomp_init_num_threads is compiled into an infinite loop with --with-arch=corei7 --with-cpu=slm

2014-01-19 Thread Uros Bizjak
On Sun, Jan 19, 2014 at 3:30 PM, H.J. Lu hjl.to...@gmail.com wrote:

 For LEA operation with SImode_address_operand, which zero-extends SImode
 to DImode, ix86_split_lea_for_addr turns

 (set (reg:DI) ...)

 into

 (set (reg:SI) ...)

 We need to do

 (set (reg:DI) (zero_extend:DI (reg:SI)))

 at the end. If the LEA operation is

 (set (reg:DI) (zero_extend:DI (reg:SI)))

 ree pass should remove these. However, we can just emit zero-extend
 insn at the end of sequence, and ree (which is located after
 post-reload split) should handle it:

 --cut here--
 Index: config/i386/i386.md
 ===
 --- config/i386/i386.md (revision 206753)
 +++ config/i386/i386.md (working copy)
 @@ -5428,12 +5428,17 @@
operands[0] = SET_DEST (pat);
operands[1] = SET_SRC (pat);

 -  /* Emit all operations in SImode for zero-extended addresses.  Recall
 - that x86_64 inheretly zero-extends SImode operations to DImode.  */
 +  /* Emit all operations in SImode for zero-extended addresses.  */
if (SImode_address_operand (operands[1], VOIDmode))
  mode = SImode;

ix86_split_lea_for_addr (curr_insn, operands, mode);
 +
 +  /* Zero-extend return register to DImode for zero-extended addresses.  
 */
 +  if (mode != MODEmode)
 +emit_insn (gen_zero_extendsidi2
 +  (operands[0], gen_lowpart ((mode), operands[0])));
 +
DONE;
  }
[(set_attr type lea)
 --cut here--

 The patch was tested with a testcase from Comment #9 of the PR using
 -O --march=corei7 -mtune=slm, and resulting binary runs without
 problems.


 Yes, the resulting GCC works correctly.  However, we generate
 extra

 (set (reg:DI) (zero_extend:DI (reg:SI)))

 It is because we generate

 (set (reg:SI) (reg:SI)
 (set (reg:DI) (zero_extend:DI (reg:SI)))

 REE pass doesn't know

 (set (reg:SI) (reg:SI)

 has an implicit ZERO_EXTEND.  Here is a testcase:

 This is the correct sequence,and REE pass should be improved to handle
 this situation.

 Note, that the problem was that we assumed SImode operations
 (including move) have implicit DImode zero-extend, but in fact we
 haven't communicate this to the compiler in a proper way.

 So, I propose we go with my patch and file an enhancement PR for the REE 
 pass.


 That is fine with me.  Please install it on all affected branches
 and close the PR.  I will open a new PR for REE pass.

Installed with following ChangeLog:

2014-01-18  Uros Bizjak  ubiz...@gmail.com
H.J. Lu  hongjiu...@intel.com

PR target/59379
* config/i386/i386.md (*leamode): Zero-extend return register
to DImode for zero-extended addresses.

Bootstrapped and regression tested on x86_64-pc-linux-gnu, will
backport in a couple of days.

Uros.


[MIPS, committed] Add -ffat-lto-objects to pr54240.c

2014-01-19 Thread Richard Sandiford
Add -ffat-lto-objects to pr54240.c to fix an UNRESOLVED on the scan-tree-dump.
Tested on mips64-linux-gnu and applied.

There's a similar failure for octeon2-pipe-1.c but I'm going to fix that
in a different way.

Thanks,
Richard


gcc/testsuite/
* gcc.target/mips/pr54240.c: Add -ffat-lto-objects.

Index: gcc/testsuite/gcc.target/mips/pr54240.c
===
--- gcc/testsuite/gcc.target/mips/pr54240.c 2012-08-27 17:31:40.0 
+0100
+++ gcc/testsuite/gcc.target/mips/pr54240.c 2014-01-19 10:22:21.167152052 
+
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options -fdump-tree-phiopt-details isa=4 } */
+/* { dg-options -fdump-tree-phiopt-details -ffat-lto-objects isa=4 } */
 /* { dg-skip-if code quality test { *-*-* } { -O0 -O1 } {  } } */
 
 typedef struct s {


  1   2   >