Re: [PATCH] rs6000: Disable generation of lwa in 32-bit mode

2012-10-27 Thread Segher Boessenkool

some (20040709-2.c, etc.) fail with a linker error now, instead of


Hmm, packed structs.  If gcc is generating mis-aligned accesses using
lwa or ld, that would be another TARGET_64BIT vs TARGET_POWERPC64
bug, wouldn't it?


I have analysed it, patch on the way.  The problem is LO_SUMs of
misaligned symbols; we never get those in practice on 64-bit
because things go via the TOC, but the problem is there in theory
for 64-bit as well.


Segher



Re: Build/Makefile question

2012-10-27 Thread Ian Lance Taylor
On Sat, Oct 27, 2012 at 1:45 PM, Caroline Tice  wrote:
> Ian Tayler (in private communication) asked that I get the part of the
> build log that shows the .so and .a files being built and send it to
> the list.  Here it is.

I see the problem.  libstdc++/libsupc++/Makefile.am overrides the
default CXXLINK to invoke libtool with --tag disable-shared.  Your new
shared libraries have only C input files, so they are being linked
with CXXLINK, they are being linked with LINK.  You need to override
the default value of LINK.

Ian


Re: [PATCH] rs6000: Disable generation of lwa in 32-bit mode

2012-10-27 Thread Alan Modra
On Sat, Oct 27, 2012 at 06:33:34AM +0200, Segher Boessenkool wrote:
> some (20040709-2.c, etc.) fail with a linker error now, instead of

Hmm, packed structs.  If gcc is generating mis-aligned accesses using
lwa or ld, that would be another TARGET_64BIT vs TARGET_POWERPC64
bug, wouldn't it?

-- 
Alan Modra
Australia Development Lab, IBM


Re: Regression/bug in 4.7 regarding typedef in templated class

2012-10-27 Thread Paolo Carlini

On 10/27/2012 10:58 PM, Sebastian Huber wrote:

On 27/10/12 15:16, Jonathan Wakely wrote:

On 27 October 2012 13:55, Peter A. Felvegi wrote:

I didn't find anything relevant in Bugzilla when searching for 'typedef
template'. Should I file a bug report?

If you've found what you think is a bug and you can't find an existing
Bugzilla report then yes, you should file a bug report.  This list is
not for reporting bugs.


Maybe this is related to

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

I agree, it seems closely related: for both the behavior of the compiler 
changed with Rev 18400.


Thanks!
Paolo.


gcc-4.7-20121027 is now available

2012-10-27 Thread gccadmin
Snapshot gcc-4.7-20121027 is now available on
  ftp://gcc.gnu.org/pub/gcc/snapshots/4.7-20121027/
and on various mirrors, see http://gcc.gnu.org/mirrors.html for details.

This snapshot has been generated from the GCC 4.7 SVN branch
with the following options: svn://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch 
revision 192880

You'll find:

 gcc-4.7-20121027.tar.bz2 Complete GCC

  MD5=f6981560d64397eeb240ec70d4b76d4f
  SHA1=92cc57a09a28266055206d38c2de00fdac9cb26e

Diffs from 4.7-20121020 are available in the diffs/ subdirectory.

When a particular snapshot is ready for public consumption the LATEST-4.7
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.


Re: Regression/bug in 4.7 regarding typedef in templated class

2012-10-27 Thread Sebastian Huber

On 27/10/12 15:16, Jonathan Wakely wrote:

On 27 October 2012 13:55, Peter A. Felvegi wrote:

I didn't find anything relevant in Bugzilla when searching for 'typedef
template'. Should I file a bug report?

If you've found what you think is a bug and you can't find an existing
Bugzilla report then yes, you should file a bug report.  This list is
not for reporting bugs.


Maybe this is related to

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

--
Sebastian Huber, embedded brains GmbH

Address : Obere Lagerstr. 30, D-82178 Puchheim, Germany
Phone   : +49 89 18 90 80 79-6
Fax : +49 89 18 90 80 79-9
E-Mail  : sebastian.hu...@embedded-brains.de
PGP : Public key available on request.

Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.



Re: Build/Makefile question

2012-10-27 Thread Caroline Tice
Ian Tayler (in private communication) asked that I get the part of the
build log that shows the .so and .a files being built and send it to
the list.  Here it is.

-- Caroline Tice
cmt...@google.com

/bin/sh ../libtool --tag CXX --tag disable-shared   --mode=compile
/usr/local/google2/cmtice/gcc-fsf.obj/./gcc/xgcc -shared-libgcc
-B/usr/local/google2/cmtice/gcc-fsf.obj/./gcc -nostdinc++\
 
-L/usr/local/google2/cmtice/gcc-fsf.obj/x86_64-unknown-linux-gnu/32/libstdc++-v3/src
-L/usr/local/google2/cmtice/gcc-fsf.obj/x86_64-unknown-linux-gnu/32/libstdc++-v3/src/.libs
-B/usr/loca\
l/x86_64-unknown-linux-gnu/bin/
-B/usr/local/x86_64-unknown-linux-gnu/lib/ -isystem
/usr/local/x86_64-unknown-linux-gnu/include -isystem
/usr/local/x86_64-unknown-linux-gnu/sys-include  -m\
32 -I/usr/local/google2/cmtice/gcc-fsf/libstdc++-v3/../libgcc
-I/usr/local/google2/cmtice/gcc-fsf.obj/x86_64-unknown-linux-gnu/32/libstdc++-v3/include/x86_64-unknown-linux-gnu
-I/usr/local\
/google2/cmtice/gcc-fsf.obj/x86_64-unknown-linux-gnu/32/libstdc++-v3/include
-I/usr/local/google2/cmtice/gcc-fsf/libstdc++-v3/libsupc++
-prefer-pic -D_GLIBCXX_SHARED  -Wall -Wextra -Wwrit\
e-strings -Wcast-qual -Wabi  -fdiagnostics-show-location=once
-ffunction-sections -fdata-sections  -frandom-seed=vtv_init.lo -g -O0
-D_GNU_SOURCE  -m32 -Wl,-L../libsupc++/.libs -Wl,--wh\
ole-archive,-lvtv_init,--no-whole-archive -fvtable-verify=std
-Wno-error -c ../../../../../gcc-fsf/libstdc++-v3/libsupc++/vtv_init.cc
libtool: compile:  /usr/local/google2/cmtice/gcc-fsf.obj/./gcc/xgcc
-shared-libgcc -B/usr/local/google2/cmtice/gcc-fsf.obj/./gcc
-nostdinc++ -L/usr/local/google2/cmtice/gcc-fsf.obj/x86_64-\
unknown-linux-gnu/32/libstdc++-v3/src
-L/usr/local/google2/cmtice/gcc-fsf.obj/x86_64-unknown-linux-gnu/32/libstdc++-v3/src/.libs
-B/usr/local/x86_64-unknown-linux-gnu/bin/ -B/usr/local/x86\
_64-unknown-linux-gnu/lib/ -isystem
/usr/local/x86_64-unknown-linux-gnu/include -isystem
/usr/local/x86_64-unknown-linux-gnu/sys-include -m32
-I/usr/local/google2/cmtice/gcc-fsf/libstdc++-\
v3/../libgcc 
-I/usr/local/google2/cmtice/gcc-fsf.obj/x86_64-unknown-linux-gnu/32/libstdc++-v3/include/x86_64-unknown-linux-gnu
-I/usr/local/google2/cmtice/gcc-fsf.obj/x86_64-unknown-linux-\
gnu/32/libstdc++-v3/include
-I/usr/local/google2/cmtice/gcc-fsf/libstdc++-v3/libsupc++
-D_GLIBCXX_SHARED -Wall -Wextra -Wwrite-strings -Wcast-qual -Wabi
-fdiagnostics-show-location=once -f\
function-sections -fdata-sections -frandom-seed=vtv_init.lo -g -O0
-D_GNU_SOURCE -m32 -Wl,-L../libsupc++/.libs
-Wl,--whole-archive,-lvtv_init,--no-whole-archive -fvtable-verify=std
-Wno-er\
ror -c ../../../../../gcc-fsf/libstdc++-v3/libsupc++/vtv_init.cc
-fPIC -DPIC -D_GLIBCXX_SHARED -o vtv_init.o
../../../../../gcc-fsf/libstdc++-v3/libsupc++/vtv_init.cc:49:54:
warning: constructor priorities from 0 to 100 are reserved for the
implementation [enabled by default]
 void __VLTunprotect() __attribute__((constructor(98)));
  ^
../../../../../gcc-fsf/libstdc++-v3/libsupc++/vtv_init.cc:59:53:
warning: constructor priorities from 0 to 100 are reserved for the
implementation [enabled by default]
 void __VLTprotect() __attribute__((constructor(100)));
 ^
/bin/sh ../libtool --tag=CC   --mode=link
/usr/local/google2/cmtice/gcc-fsf.obj/./gcc/xgcc
-B/usr/local/google2/cmtice/gcc-fsf.obj/./gcc/
-B/usr/local/x86_64-unknown-linux-gnu/bin/ -B/usr/\
local/x86_64-unknown-linux-gnu/lib/ -isystem
/usr/local/x86_64-unknown-linux-gnu/include -isystem
/usr/local/x86_64-unknown-linux-gnu/sys-include  -m32  -g -O0  -m32
-m32 -o libvtv_init.l\
a -rpath /usr/local/lib/../lib32 vtv_init.lo
libtool: link: /usr/local/google2/cmtice/gcc-fsf.obj/./gcc/xgcc
-B/usr/local/google2/cmtice/gcc-fsf.obj/./gcc/
-B/usr/local/x86_64-unknown-linux-gnu/bin/
-B/usr/local/x86_64-unknown-linux-\
gnu/lib/ -isystem /usr/local/x86_64-unknown-linux-gnu/include -isystem
/usr/local/x86_64-unknown-linux-gnu/sys-include  -m32 -shared-m32
-m32 -m32   -Wl,-soname -Wl,libvtv_init.so.0 -o\
 .libs/libvtv_init.so.0.0.0
libtool: link: (cd ".libs" && rm -f "libvtv_init.so.0" && ln -s
"libvtv_init.so.0.0.0" "libvtv_init.so.0")
libtool: link: (cd ".libs" && rm -f "libvtv_init.so" && ln -s
"libvtv_init.so.0.0.0" "libvtv_init.so")
libtool: link: ar rc .libs/libvtv_init.a  vtv_init.o
libtool: link: ranlib .libs/libvtv_init.a
libtool: link: ( cd ".libs" && rm -f "libvtv_init.la" && ln -s
"../libvtv_init.la" "libvtv_init.la" )
/bin/sh ../libtool --tag CXX --tag disable-shared   --mode=compile
/usr/local/google2/cmtice/gcc-fsf.obj/./gcc/xgcc -shared-libgcc
-B/usr/local/google2/cmtice/gcc-fsf.obj/./gcc -nostdinc++\
 
-L/usr/local/google2/cmtice/gcc-fsf.obj/x86_64-unknown-linux-gnu/32/libstdc++-v3/src
-L/usr/local/google2/cmtice/gcc-fsf.obj/x86_64-unknown-linux-gnu/32/libstdc++-v3/src/.libs
-B/usr/loca\
l/x86_64-unknown-linux-gnu/bin/
-B/usr/local/x86_64-unknown-linux-gnu/lib/ -isystem
/usr/local/x86

website update

2012-10-27 Thread Mischa Baars

Hi,

I just wanted to let you know, I've updated my website at: 
http://www.cyberfiber.org, hope you don't mind me notifying you.


Hope you people can fine-tune both the compiler and the assembler during 
development, otherwise I will have to migrate to Microsoft Windows in 
the near future.


Let me know,

Regards,
Mischa.


Re: Regression/bug in 4.7 regarding typedef in templated class

2012-10-27 Thread Jonathan Wakely
On 27 October 2012 13:55, Peter A. Felvegi wrote:
>
> I didn't find anything relevant in Bugzilla when searching for 'typedef
> template'. Should I file a bug report?

If you've found what you think is a bug and you can't find an existing
Bugzilla report then yes, you should file a bug report.  This list is
not for reporting bugs.


Regression/bug in 4.7 regarding typedef in templated class

2012-10-27 Thread Peter A. Felvegi

Hello,

after upgrading gcc one of my classes failed to compile. Stock 
Debian/Wheezy 4.4, 4.5, 4.6 compiled the code, also compiled a version 
of 4.7.0 that was built by me from sources some time ago. Clang 3.0-6 
also compiled, but stock 4.7.1-7, the head of 4.7 (4.7.3 d51dc77f, 
r192839) and the head of master (4.8.0 1a2798ac, r192875) didn't.


Reduced the code to a test case:

8<8<8<8<8<8<8<
class Id
{
public:
Id();
Id(char a, char b);
explicitId(int v);
Id(const char* id_);
};

template
class Foo
{
public:
//  typedef ID  IdType;
void Bar(const ID& id_);
typedef ID  IdType;

};

template
void Foo::Bar(const IdType& id_)
//void Foo::Bar(const ID& id_)
{
}

void foo()
{
Foo f;
f.Bar("hello");
}
8<8<8<8<8<8<8<

$ g++ -c gcctypedef.cpp
gcctypedef.cpp: In function ‘void foo()’:
gcctypedef.cpp:29:15: error: no matching function for call to 
‘Foo::Bar(const char [6])’

gcctypedef.cpp:29:15: note: candidate is:
gcctypedef.cpp:21:6: note: void Foo::Bar(const IdType&) [with ID = 
Id; Foo::IdType = Id]
gcctypedef.cpp:21:6: note:   no known conversion for argument 1 from 
‘const char [6]’ to ‘Id&’


4.8 gives the same error, but in prettier, more verbose format.

If the typedef in class Foo is _before_ the Bar fn declaration, gcc 
compiles the code.


If instead of the typedef (IdType) the original type (ID) is used in the 
argument of the Bar fn at the definition, gcc compiles the code.


I git bisect'd the commit that introduced the regression/bug:

commit 44f861fca343148a1b0720105ec2b7f14bbcc849
Author: jason 
Date:   Wed Feb 8 09:52:11 2012 +

PR c++/52035
* pt.c (tsubst): Strip uninstantiated typedef.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@184000 
138bc75d-0d04-0410-961f-82ee72b054a4


I didn't find anything relevant in Bugzilla when searching for 'typedef 
template'. Should I file a bug report?


Kind regards, Peter




expansion of vector shifts...

2012-10-27 Thread David Miller

On sparc a simple test like (from the PR tree-optimization/53410 testcase):


typedef int V __attribute__((vector_size (4 * sizeof (int;
typedef unsigned int W __attribute__((vector_size (4 * sizeof (int;

void
f10 (W *p, W *q)
{
  *p = *p < (((const W) { 1U, 1U, 1U, 1U }) << *q);
}


aborts in convert_move() because we're trying to move a TImode value
into a V2SImode one.  How does that happen?

On sparc the generic tree vector layer turns the above expression into
two V2SImode shifts.  The *q parts of each shift are represented as:

(subreg:V2SI (reg:TI xxx) 0)
(subreg:V2SI (reg:TI xxx) 8)

When we get down into expand_shift_1(), that SUBREG is stripped out by
the SHIFT_COUNT_TRUNCATED code, and that's how we end up in the crash
by the time we reach convert_move() (via expand_binop() -->
expand_binop_directly() --> convert_modes() --> convert_move()).

Perhaps we should elide the SUBREG stripping if the subreg has a
vector mode?

Actually, what seems to confuse this code is that we're passing
TImode values around for this vector that the target doesn't have
direct support for.  The SUBREG stripper explicitly checks for
INTEGRAL_MODE_P, and indeed TImode is integral.