[Bug c++/53039] [4.7/4.8 Regression] including functional breaks std::is_convertible with template-pack expansion

2012-04-20 Thread daniel.kruegler at googlemail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53039

--- Comment #7 from Daniel Krügler daniel.kruegler at googlemail dot com 
2012-04-20 06:48:39 UTC ---
I'm pretty sure that this is not related with functional, but instead with
some interaction between the tuple header and std::is_convertible. The
following variant still demonstrates the problem (I deliberately changed some
of the original names used in the code to be sure that they are not cause of
the problem):

#include tuple

templatebool, class T
struct enable_if
{
  typedef T type;
};

template bool...
struct Bs
{
  static const bool value = true;
};

template typename... Ts
struct AType {
  template typename... Us,
typename enable_if
   Bsstd::is_convertibleUs, Ts::value...::value,
   bool::type = false
  
  int foo(Us...)
  {
return sizeof...(Us);
  }
};

int main() {
  ATypeint, int t;
  return t.foo(1, 1);
}

(You can also add type_traits, but it is already added via tuple). If we
now add upfront

template class, class
struct is_convertible
{
  static const bool value = true;
};

and replace the usage of std::is_convertible by is_convertible, the error does
no longer occur.


[Bug go/52586] libgo fails to build for mips*64-linux-gnu (reference to undefined name 'SYS_GETDENTS64')

2012-04-20 Thread pinskia at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52586

--- Comment #2 from Andrew Pinski pinskia at gcc dot gnu.org 2012-04-20 
07:48:52 UTC ---
Fails still as of today:
/home/apinski/src/gcc-fsf/local/gcc/libgo/go/syscall/libcall_linux.go:206:26:
error: reference to undefined name 'SYS_GETDENTS64'
  r1, _, errno := Syscall(SYS_GETDENTS64, uintptr(fd),
uintptr(unsafe.Pointer(p)), uintptr(len(buf)))
  ^


[Bug go/52586] libgo fails to build for mips*64-linux-gnu (reference to undefined name 'SYS_GETDENTS64')

2012-04-20 Thread pinskia at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52586

--- Comment #3 from Andrew Pinski pinskia at gcc dot gnu.org 2012-04-20 
07:52:10 UTC ---
SYS_getdents64 does not exist for either N32 or N64 with the version of glibc I
have.


[Bug target/43533] IRIX 6.5 bootstrap fails with GNU as and ld 2.20

2012-04-20 Thread pinskia at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43533

Andrew Pinski pinskia at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||WONTFIX
   Target Milestone|--- |4.8.0

--- Comment #1 from Andrew Pinski pinskia at gcc dot gnu.org 2012-04-20 
07:58:32 UTC ---
IRIX 6.5 support was removed so closing as won't fix.


[Bug bootstrap/46776] gogo-tree.cc uses TRAMPOLINE_ALIGNMENT and TRAMPOLINE_SIZE

2012-04-20 Thread pinskia at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46776

Andrew Pinski pinskia at gcc dot gnu.org changed:

   What|Removed |Added

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

--- Comment #3 from Andrew Pinski pinskia at gcc dot gnu.org 2012-04-20 
07:59:30 UTC ---
Yes it was fixed.


[Bug libfortran/53051] I/O: Support reading floating-point numbers which use Q for the exponent

2012-04-20 Thread jb at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53051

Janne Blomqvist jb at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2012-04-20
 CC||jb at gcc dot gnu.org
 Ever Confirmed|0   |1

--- Comment #1 from Janne Blomqvist jb at gcc dot gnu.org 2012-04-20 08:21:05 
UTC ---
The argument against supporting this, I suppose, is that we never generate a
Q|q exponent on output. 

As a result, the example in c.l.f doesn't try to parse something that was
previously written by formatting a floating point number, but rather a
hand-crafted string. IOW, it seems rather artificial.

That being said, it seems ifort supports it, so maybe we need to as well..
*sigh*.


[Bug libstdc++/53052] New: [C++11] is_explicitly_convertible still part of type_traits header

2012-04-20 Thread daniel.kruegler at googlemail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53052

 Bug #: 53052
   Summary: [C++11] is_explicitly_convertible still part of
type_traits header
Classification: Unclassified
   Product: gcc
   Version: 4.8.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: libstdc++
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: daniel.krueg...@googlemail.com


With the acceptance of

http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3047.html

the previously suggested type trait std::is_explicitly_convertible had been
removed from the standard library. This component is still part of the library
header type_traits and should be removed or renamed to something in the
extension name-space, presumably std::__is_explicitly_convertible.


[Bug libstdc++/53052] [C++11] is_explicitly_convertible still part of type_traits header

2012-04-20 Thread paolo.carlini at oracle dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53052

Paolo Carlini paolo.carlini at oracle dot com changed:

   What|Removed |Added

 Status|UNCONFIRMED |ASSIGNED
   Last reconfirmed||2012-04-20
 AssignedTo|unassigned at gcc dot   |paolo.carlini at oracle dot
   |gnu.org |com
   Target Milestone|--- |4.8.0
 Ever Confirmed|0   |1

--- Comment #1 from Paolo Carlini paolo.carlini at oracle dot com 2012-04-20 
09:01:29 UTC ---
Sure, sure, let's remove it. I'm leaving in for now some has_trivial_* things,
I don't know if you noticed already, will go as soon as I find the time to work
on the front-end support to has_trivial_constructor and assignment.


[Bug c++/53039] [4.7/4.8 Regression] including functional breaks std::is_convertible with template-pack expansion

2012-04-20 Thread paolo.carlini at oracle dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53039

Paolo Carlini paolo.carlini at oracle dot com changed:

   What|Removed |Added

 CC|hjl.tools at gmail dot com  |

--- Comment #8 from Paolo Carlini paolo.carlini at oracle dot com 2012-04-20 
09:06:30 UTC ---
Thanks Daniel. If you feel like helping even more here, I would suggest having
a look to the output of g++ -E and check that we aren't goofing something in
terms of include guards, double inclusions, these kinds of stupid errors which
often lean to very poor diagnostics, unfortunately. That done, I can only
imagine a front-end issue.


[Bug c++/53050] ssa_forward_propagate_and_combine: segmentation fault

2012-04-20 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53050

Richard Guenther rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |ASSIGNED
   Last reconfirmed||2012-04-20
 AssignedTo|unassigned at gcc dot   |rguenth at gcc dot gnu.org
   |gnu.org |
 Ever Confirmed|0   |1

--- Comment #2 from Richard Guenther rguenth at gcc dot gnu.org 2012-04-20 
09:14:14 UTC ---
I have a patch.


[Bug c/53053] New: code-gen (missing loop-termination test) bug introduced between April 18 and April 19th

2012-04-20 Thread jim at meyering dot net
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53053

 Bug #: 53053
   Summary: code-gen (missing loop-termination test) bug
introduced between April 18 and April 19th
Classification: Unclassified
   Product: gcc
   Version: 4.8.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: j...@meyering.net


Background, gcc-compiled emacs (bzr trunk) began to segfault
differently when compiled with yesterday's gcc-trunk.

Given this function from emacs' dispnew.c,
(LAST_AREA is an enum with value 3)

static __attribute__((noinline)) void
swap_glyph_pointers (struct glyph_row *a, struct glyph_row *b)
{
  unsigned int i;
  unsigned hash_tem = a-hash;

  for (i = 0; i  LAST_AREA + 1; ++i)
{
  struct glyph *temp = a-glyphs[i];
  short used_tem = a-used[i];

  a-glyphs[i] = b-glyphs[i];
  b-glyphs[i] = temp;
  a-used[i] = b-used[i];
  b-used[i] = used_tem;
}
  a-hash = b-hash;
  b-hash = hash_tem;
}

*** FAILURE: using yesterday's gcc
Compiling dispnew with -O1 or less there is no problem.
Compiling just dispnew.c with -O2 (all the rest is compiled with -ggdb3)
via make CFLAGS='-O2 -ggdb3' CC=/p/p/gcc-2012-04-19.16h18/bin/gcc
* currently-generated code, i increases until segfault:

0120 swap_glyph_pointers:
 120:31 c0xor%eax,%eax
 122:66 0f 1f 44 00 00nopw   0x0(%rax,%rax,1)
 128:48 8b 0c 87  mov(%rdi,%rax,4),%rcx
 12c:4c 8b 04 86  mov(%rsi,%rax,4),%r8
 130:0f b7 54 07 20   movzwl 0x20(%rdi,%rax,1),%edx
 135:4c 89 04 87  mov%r8,(%rdi,%rax,4)
 139:48 89 0c 86  mov%rcx,(%rsi,%rax,4)
 13d:0f b7 4c 06 20   movzwl 0x20(%rsi,%rax,1),%ecx
 142:66 89 4c 07 20   mov%cx,0x20(%rdi,%rax,1)
 147:66 89 54 06 20   mov%dx,0x20(%rsi,%rax,1)
 14c:48 83 c0 02  add$0x2,%rax
 150:eb d6jmp128 swap_glyph_pointers+0x8
 152:66 66 66 66 66 2e 0f data32 data32 data32 data32 nopw
%cs:0x0(%rax,%rax,1)
 159:1f 84 00 00 00 00 00 

*** SUCCESS: using gcc from Wed April 18
Compiling the same file with gcc built from a snapshot a day earlier,
make CFLAGS='-O2 -ggdb3' CC=/p/p/gcc-2012-04-18.15h00/bin/gcc
* code generated by svn/trunk of gcc-2012-04-18.15h00 (UTC),
This loop terminates normally.

0120 swap_glyph_pointers:
 120:44 8b 4f 4c  mov0x4c(%rdi),%r9d
 124:31 c0xor%eax,%eax
 126:48 8b 0c 87  mov(%rdi,%rax,4),%rcx
 12a:4c 8b 04 86  mov(%rsi,%rax,4),%r8
 12e:0f b7 54 07 20   movzwl 0x20(%rdi,%rax,1),%edx
 133:4c 89 04 87  mov%r8,(%rdi,%rax,4)
 137:48 89 0c 86  mov%rcx,(%rsi,%rax,4)
 13b:0f b7 4c 06 20   movzwl 0x20(%rsi,%rax,1),%ecx
 140:66 89 4c 07 20   mov%cx,0x20(%rdi,%rax,1)
 145:66 89 54 06 20   mov%dx,0x20(%rsi,%rax,1)
 14a:48 83 c0 02  add$0x2,%rax
 14e:48 83 f8 08  cmp$0x8,%rax
 152:75 d2jne126 swap_glyph_pointers+0x6
 154:8b 46 4c mov0x4c(%rsi),%eax
 157:89 47 4c mov%eax,0x4c(%rdi)
 15a:44 89 4e 4c  mov%r9d,0x4c(%rsi)
 15e:c3   retq
 15f:90   nop


[Bug middle-end/53049] expand/TER unappropriate moving unspec volatile

2012-04-20 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53049

--- Comment #5 from Richard Guenther rguenth at gcc dot gnu.org 2012-04-20 
09:20:44 UTC ---
It's not easy to restrict movement in this case (and no other tree transform
would bother).  Consider sinking and

void test2 (unsigned val, bool flag)
{
  val = 65535U / val;

  __builtin_avr_cli();
  if (flag)
ivar = val;
  else
ivar = 0;
  __builtin_avr_sei();
}

then you'd get val = 65535U / val; sunk into the if() arm beause its unused
on the else arm.

On the GIMPLE leven we don't have something like a scheduling barrier,
we only have barriers for loads/stores.  A scheduling barrier would need
to be implemented by means of providing abnormal entry / exit to a basic-block,
not sure if we'd want to go that way (but this is the only way that would
make it magically work).

So - you certainly could fix TER, but that would not fix the underlying
problem of GIMPLE lacking a scheduling barrier which is what you appearantly
are after at.


[Bug middle-end/53046] [4.8 Regression] New libstdc++ test failures

2012-04-20 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53046

Richard Guenther rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2012-04-20
   Target Milestone|--- |4.8.0
 Ever Confirmed|0   |1

--- Comment #2 from Richard Guenther rguenth at gcc dot gnu.org 2012-04-20 
09:21:32 UTC ---
Confirmed.


[Bug middle-end/53048] [4.8 Regression] 256.bzip2 in SPEC CPU 2000 failed to build

2012-04-20 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53048

Richard Guenther rguenth at gcc dot gnu.org changed:

   What|Removed |Added

   Target Milestone|--- |4.8.0


[Bug tree-optimization/53045] Missing loop termination

2012-04-20 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53045

Richard Guenther rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||INVALID

--- Comment #1 from Richard Guenther rguenth at gcc dot gnu.org 2012-04-20 
09:23:09 UTC ---
struct { double d[1]; } foo0, foo1, foo2, foo3, foo4, foo5, foo6, foo7;

int main ()
{
  struct { double d; } bar[8]
= { 48.394, 39.3, -397.9, 3484.9, -8.394, -93.3, 7.9, 84.94 };
  int i;

  for (i = 0; i  8; i++)
foo0.d[i] = bar[i].d;

  return 0;
}

This is invalid source - foo0.d[1] is an out-of-bound access.  Number of
iteration analysis correctly concludes that i is in the range of [0, 0]
and optimizes away the loop exit test.


[Bug middle-end/53047] [4.8 Regression] 482.sphinx3 in SPEC CPU 2006 miscompiled

2012-04-20 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53047

Richard Guenther rguenth at gcc dot gnu.org changed:

   What|Removed |Added

   Target Milestone|--- |4.8.0


[Bug tree-optimization/53045] Missing loop termination

2012-04-20 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53045

--- Comment #2 from Richard Guenther rguenth at gcc dot gnu.org 2012-04-20 
09:24:06 UTC ---
Btw, see how I fixed

2012-04-18  Richard Guenther  rguent...@suse.de

* gcc.target/x86_64/abi/test_passing_unions.c: Avoid undefined
array access.
* gcc.target/x86_64/abi/test_passing_structs.c: Likewise.
* gcc.target/i386/avx256-unaligned-load-4.c: Fix array sizes.

I suppose I didn't see the AVX fails because my testing box doesn't have AVX.


[Bug c/53053] code-gen (missing loop-termination test) bug introduced between April 18 and April 19th

2012-04-20 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53053

Richard Guenther rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |WAITING
   Last reconfirmed||2012-04-20
 Ever Confirmed|0   |1

--- Comment #1 from Richard Guenther rguenth at gcc dot gnu.org 2012-04-20 
09:25:46 UTC ---
Seems to be similar to other existing cases.  You very likely have an
out-of-bound array access in your loop.

No testcase.


[Bug target/53040] nested functions may trash floating point registers

2012-04-20 Thread amodra at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53040

--- Comment #2 from Alan Modra amodra at gcc dot gnu.org 2012-04-20 09:33:23 
UTC ---
Author: amodra
Date: Fri Apr 20 09:33:19 2012
New Revision: 186616

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=186616
Log:
PR target/53040
* config/rs6000/rs6000.c (rs6000_savres_strategy): When using
static chain, set REST_INLINE_FPRS too.


Modified:
trunk/gcc/ChangeLog
trunk/gcc/config/rs6000/rs6000.c


[Bug libstdc++/53052] [C++11] is_explicitly_convertible still part of type_traits header

2012-04-20 Thread paolo at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53052

--- Comment #2 from paolo at gcc dot gnu.org paolo at gcc dot gnu.org 
2012-04-20 09:39:25 UTC ---
Author: paolo
Date: Fri Apr 20 09:39:17 2012
New Revision: 186617

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=186617
Log:
2012-04-20  Paolo Carlini  paolo.carl...@oracle.com

PR libstdc++/53052
* include/std/type_traits (is_explicitly_convertible): Remove.
* testsuite/20_util/is_explicitly_convertible: Likewise.
* testsuite/20_util/make_signed/requirements/typedefs_neg.cc:
Adjust dg-error line numbers.
* testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc:
Likewise.
* testsuite/20_util/declval/requirements/1_neg.cc: Likewise.

Removed:
trunk/libstdc++-v3/testsuite/20_util/is_explicitly_convertible/
Modified:
trunk/libstdc++-v3/ChangeLog
trunk/libstdc++-v3/include/std/type_traits


[Bug libstdc++/53052] [C++11] is_explicitly_convertible still part of type_traits header

2012-04-20 Thread paolo at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53052

--- Comment #3 from paolo at gcc dot gnu.org paolo at gcc dot gnu.org 
2012-04-20 09:39:41 UTC ---
Author: paolo
Date: Fri Apr 20 09:39:29 2012
New Revision: 186618

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=186618
Log:
2012-04-20  Paolo Carlini  paolo.carl...@oracle.com

PR libstdc++/53052
* include/std/type_traits (is_explicitly_convertible): Remove.
* testsuite/20_util/is_explicitly_convertible: Likewise.
* testsuite/20_util/make_signed/requirements/typedefs_neg.cc:
Adjust dg-error line numbers.
* testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc:
Likewise.
* testsuite/20_util/declval/requirements/1_neg.cc: Likewise.

Modified:
trunk/libstdc++-v3/testsuite/20_util/declval/requirements/1_neg.cc
   
trunk/libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs_neg.cc
   
trunk/libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc


[Bug libstdc++/53052] [C++11] is_explicitly_convertible still part of type_traits header

2012-04-20 Thread paolo.carlini at oracle dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53052

Paolo Carlini paolo.carlini at oracle dot com changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution||FIXED

--- Comment #4 from Paolo Carlini paolo.carlini at oracle dot com 2012-04-20 
09:40:47 UTC ---
Done.


[Bug c++/53050] ssa_forward_propagate_and_combine: segmentation fault

2012-04-20 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53050

--- Comment #3 from Richard Guenther rguenth at gcc dot gnu.org 2012-04-20 
10:17:54 UTC ---
Author: rguenth
Date: Fri Apr 20 10:17:46 2012
New Revision: 186620

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=186620
Log:
2012-04-20  Richard Guenther  rguent...@suse.de

PR tree-optimization/53050
* tree-ssa-forwprop.c (ssa_forward_propagate_and_combine):
Do only one transform on COND_EXPRs at the same time.

Modified:
trunk/gcc/ChangeLog
trunk/gcc/tree-ssa-forwprop.c


[Bug bootstrap/53054] New: [4.8 Regression] bootstrap failure on x86-64 after rev 186609

2012-04-20 Thread izamyatin at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53054

 Bug #: 53054
   Summary: [4.8 Regression] bootstrap failure on x86-64 after rev
186609
Classification: Unclassified
   Product: gcc
   Version: 4.8.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: bootstrap
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: izamya...@gmail.com
Target: x86-64


On x86-64 bootstrap fails with

gcc -c   -g -fkeep-inline-functions -DIN_GCC   -W -Wall -Wwrite-strings
-Wcast-qual -Wstrict-prototypes -Wmissing-prototypes -Wmissing-format-attribute
-pedantic -Wno-long-long -Wno-variadic-macros -Wno-overlength-strings
-Wold-style-definition -Wc++-compat -fno-common  -DHAVE_CONFIG_H -I. -I.
-I../../gcc -I../../gcc/. -I../../gcc/../include -I../../gcc/../libcpp/include 
-I../../gcc/../libdecnumber -I../../gcc/../libdecnumber/bid -I../libdecnumber  
 ../../gcc/tree-vect-loop.c -o tree-vect-loop.o
../../gcc/symtab.c: In function ‘dump_symtab_base’:
../../gcc/symtab.c:381:19: error: ‘struct symtab_node_base’ has no member
na‘force_output’
make[3]: *** [symtab.o] Error 1
make[3]: Leaving directory
`/export/users/izamyati/gcc_wrf_check/build_bootstrap/gcc'
make[2]: *** [all-stage1-gcc] Error 2
make[2]: Leaving directory
`/export/users/izamyati/gcc_wrf_check/build_bootstrap'
make[1]: *** [stage1-bubble] Error 2
make[1]: Leaving directory
`/export/users/izamyati/gcc_wrf_check/build_bootstrap'
make: *** [all] Error 2

Revision 186609 is responsible for this


[Bug c++/53050] ssa_forward_propagate_and_combine: segmentation fault

2012-04-20 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53050

Richard Guenther rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution||FIXED

--- Comment #4 from Richard Guenther rguenth at gcc dot gnu.org 2012-04-20 
10:20:05 UTC ---
Fixed.


[Bug bootstrap/53054] [4.8 Regression] bootstrap failure on x86-64 after rev 186609

2012-04-20 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53054

Richard Guenther rguenth at gcc dot gnu.org changed:

   What|Removed |Added

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

--- Comment #1 from Richard Guenther rguenth at gcc dot gnu.org 2012-04-20 
10:21:01 UTC ---
Just fixed by

2012-04-19  Jan Hubicka  j...@suse.cz

* symtab.c (dump_symtab_base): Revert accidental checkin.


[Bug c++/53039] [4.7/4.8 Regression] including functional breaks std::is_convertible with template-pack expansion

2012-04-20 Thread paolo.carlini at oracle dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53039

--- Comment #9 from Paolo Carlini paolo.carlini at oracle dot com 2012-04-20 
10:27:11 UTC ---
Eh, this is *not* a library issue:

#include type_traits

#if 1

templatetypename... _Elements
  class tuple
{
  templatetypename... _UElements, typename = typename
   std::enable_ifstd::__and_std::is_convertible_UElements,
   _Elements...::value::type
tuple(_UElements...);
};

#else

templatetypename _Elements
  class tuple1
{
  templatetypename _UElements, typename = typename
   std::enable_ifstd::__and_std::is_convertible_UElements,
   _Elements::value::type
tuple1(_UElements);
};

#endif

template bool...
struct Bs
{
  static const bool value = true;
};

template typename... Ts
struct AType {
  template typename... Us,
typename std::enable_if
   Bsstd::is_convertibleUs, Ts::value...::value,
   bool::type = false
  
  int foo(Us...)
  {
return sizeof...(Us);
  }
};

int main() {
  ATypeint, int t;
  return t.foo(1, 1);
}


[Bug c/53053] code-gen (missing loop-termination test) bug introduced between April 18 and April 19th

2012-04-20 Thread jim at meyering dot net
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53053

--- Comment #2 from jim at meyering dot net 2012-04-20 10:28:35 UTC ---
when I add printf (%u\n, i); before the end of the loop, it prints values up
to about 128K before segfaulting.


[Bug c/53053] code-gen (missing loop-termination test) bug introduced between April 18 and April 19th

2012-04-20 Thread jim at meyering dot net
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53053

--- Comment #3 from jim at meyering dot net 2012-04-20 10:43:28 UTC ---
Created attachment 27201
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=27201
preprocessed source

PS, gcc was built via this:
CC=/usr/bin/gcc ./configure --prefix=$prefix --disable-multilib \
  --disable-libmudflap --disable-nls --enable-languages=c  make bootstrap


[Bug c/53053] code-gen (missing loop-termination test) bug introduced between April 18 and April 19th

2012-04-20 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53053

Jakub Jelinek jakub at gcc dot gnu.org changed:

   What|Removed |Added

 CC||jakub at gcc dot gnu.org

--- Comment #4 from Jakub Jelinek jakub at gcc dot gnu.org 2012-04-20 
11:07:43 UTC ---
So what Richard says is true.
  short used[LAST_AREA];
...
  for (i = 0; i  LAST_AREA + 1; ++i)
...
  short used_tem = a-used[i];
This reads (and stores) used[LAST_AREA].


[Bug c/53053] code-gen (missing loop-termination test) bug introduced between April 18 and April 19th

2012-04-20 Thread jim at meyering dot net
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53053

--- Comment #5 from jim at meyering dot net 2012-04-20 11:23:21 UTC ---
Oh!  I'm not used to seeing this sort of transformation (invalid code -
effectively-skipped loop-termination test), but it certainly makes sense,
given an invalid input.

Thank you both.
definitely NOTABUG.


[Bug c/53053] code-gen (missing loop-termination test) bug introduced between April 18 and April 19th

2012-04-20 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53053

Richard Guenther rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 Status|WAITING |RESOLVED
 Resolution||INVALID

--- Comment #6 from Richard Guenther rguenth at gcc dot gnu.org 2012-04-20 
12:00:55 UTC ---
Thanks.


[Bug bootstrap/53021] [4.8 Regression] bootstrap failure on Linux/ia32

2012-04-20 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53021

--- Comment #4 from Jakub Jelinek jakub at gcc dot gnu.org 2012-04-20 
12:20:07 UTC ---
Author: jakub
Date: Fri Apr 20 12:19:51 2012
New Revision: 186623

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=186623
Log:
PR bootstrap/53021
* alias.h (UNIQUE_BASE_VALUE_SP, UNIQUE_BASE_VALUE_ARGP,
UNIQUE_BASE_VALUE_FP, UNIQUE_BASE_VALUE_HFP): Define.
* alias.c (init_alias_targets): Use UNIQUE_BASE_VALUE_*
macros instead of constants.
* dse.c (record_store): Check for SP ADDRESS by comparing
XWINT to UNIQUE_BASE_VALUE_SP instead of expecting
XEXP to be stack_pointer_rtx.

Modified:
trunk/gcc/ChangeLog
trunk/gcc/alias.c
trunk/gcc/alias.h
trunk/gcc/dse.c


[Bug fortran/45521] [F08] GENERIC resolution with ALLOCATABLE/POINTER and PROCEDURE

2012-04-20 Thread janus at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45521

--- Comment #11 from janus at gcc dot gnu.org 2012-04-20 12:29:34 UTC ---
(In reply to comment #10)
 However, it yields a segfault at runtime (-fdump-tree-original shows that
 'test2' is used in both calls).

Related to this, it also shows that the specific call

  print *,test2(2.0)

is not being rejected, while

  print *,test1(cos)

is. For for former, we clearly need to add a check in 'compare_parameter' to
reject it (which should also solve the segfault in comment #10 by selecting the
correct specific function for the generic call).


[Bug c++/53039] [4.7/4.8 Regression] including functional breaks std::is_convertible with template-pack expansion

2012-04-20 Thread paolo.carlini at oracle dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53039

--- Comment #10 from Paolo Carlini paolo.carlini at oracle dot com 2012-04-20 
12:37:33 UTC ---
So, the below is my final pure C++ testcase: if 1 is changed to 0 the code
compiles; likewise if 1 and 0 are swapped. Thus, it seems there is something
wrong in global front-end data structures:

template class, class
struct is_convertible
{
  static const bool value = true;
};

templatebool, class T
struct enable_if
{
  typedef T type;
};

template bool...
struct Xs
{
  static const bool value = true;
};

#if 1
templatetypename... Ts
  class BType
{
  template typename... Us,
typename enable_if
   Xsis_convertibleUs, Ts::value...::value,
   bool::type = false
void fooX(Us...);
};
#endif

template typename... Ts
  struct AType
{
  template typename... Us,
typename enable_if
   Xsis_convertibleUs, Ts::value...::value,
   bool::type = false
void foo(Us...);
};

#if 0
templatetypename... Ts
  class CType
{
  template typename... Us,
typename enable_if
   Xsis_convertibleUs, Ts::value...::value,
   bool::type = false
void fooX(Us...);
};
#endif

int main()
{
  ATypeint, int t;
  t.foo(1, 1);
}


[Bug rtl-optimization/44214] Compiler does not optimize vector divide with -freciprocal-math (or -ffast-math)

2012-04-20 Thread wschmidt at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44214

William J. Schmidt wschmidt at gcc dot gnu.org changed:

   What|Removed |Added

   Target Milestone|--- |4.8.0


[Bug fortran/45521] [F08] GENERIC resolution with ALLOCATABLE/POINTER and PROCEDURE

2012-04-20 Thread janus at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45521

janus at gcc dot gnu.org changed:

   What|Removed |Added

 Status|NEW |ASSIGNED
 AssignedTo|unassigned at gcc dot   |janus at gcc dot gnu.org
   |gnu.org |

--- Comment #12 from janus at gcc dot gnu.org 2012-04-20 12:58:24 UTC ---
(In reply to comment #11)
 For for former, we clearly need to add a check in 'compare_parameter' to
 reject it


Something like:

Index: gcc/fortran/interface.c
===
--- gcc/fortran/interface.c(revision 186596)
+++ gcc/fortran/interface.c(working copy)
@@ -1663,6 +1667,13 @@ compare_parameter (gfc_symbol *formal, gfc_expr *a
the module variables are generated.  */
 gfc_find_derived_vtab (actual-ts.u.derived);

+  if (formal-attr.flavor == FL_PROCEDURE  actual-ts.type != BT_PROCEDURE)
+{
+  if (where)
+gfc_error (Procedure argument expected at %L, actual-where);
+  return 0;
+}
+  
   if (actual-ts.type == BT_PROCEDURE)
 {
   char err[200];


This correctly rejects the invalid code in comment #11 and makes the valid code
in comment #10 give the expected output (without segfaulting).


[Bug c++/33925] gcc -Waddress lost some useful warnings

2012-04-20 Thread manu at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33925

--- Comment #7 from Manuel López-Ibáñez manu at gcc dot gnu.org 2012-04-20 
12:57:59 UTC ---
(In reply to comment #6)
 ... That's not an argument against improving the warning though.  GCC's uses
 occur in system headers so warnings are suppressed, and could be worked around
 anyway with further extensions such as #pragma GCC diagnostic

Or even better, only skip the warning for functions marked as weakref, which I
guess is a very small subset. I think a patch that did that would be accepted. 

Unfortunately, Michael, I don't think there is anyone with enough free time to
work on this, so if you submitted a patch, that would be great! Thanks.


[Bug tree-optimization/52891] [4.8 Regression] ICE in adjust_bool_pattern

2012-04-20 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52891

Jakub Jelinek jakub at gcc dot gnu.org changed:

   What|Removed |Added

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

--- Comment #3 from Jakub Jelinek jakub at gcc dot gnu.org 2012-04-20 
12:58:28 UTC ---
Created attachment 27202
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=27202
gcc48-pr52891.patch

Untested fix.  Sorry for the delay.


[Bug c++/52008] [C++0x] ICE when adding partial specialization for variadic-templated structure

2012-04-20 Thread ethouris at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52008

Michal Malecki ethouris at gmail dot com changed:

   What|Removed |Added

 Status|RESOLVED|REOPENED
 Resolution|FIXED   |

--- Comment #5 from Michal Malecki ethouris at gmail dot com 2012-04-20 
13:33:35 UTC ---
Hey, guys, not too fast.

Why do you say it's not more specialized?

The primary template contains size_t B as the first template parameter, and
the specialization puts explicit 0 in this place. According to the standard,
this IS a specialization.

Of course, it works now if you change the terminal definition into:

templatetypename Type1, typename... Types
struct tuple_sliced0, Type1, Types...
{
typedef tupleType1, Types... type;
};

But it's roughly the same - the only difference is that it doesn't manage an
interesting case of slicing to 0 (actually I should change it to 1). Whether
the specialization really matches the primary template, it should be decided
when the variadic parameters are expanded, so if this is correct, the cited one
should be correct, too.


[Bug c++/53055] New: ICE in cp_build_indirect_ref, at cp/typeck.c:2836

2012-04-20 Thread doko at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53055

 Bug #: 53055
   Summary: ICE in cp_build_indirect_ref, at cp/typeck.c:2836
Classification: Unclassified
   Product: gcc
   Version: 4.8.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: d...@gcc.gnu.org


Created attachment 27203
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=27203
preprocessed source

seen with 4.6 and 4.7 branches, and trunk on i686-linux-gnu

$ gcc -c -g part-combine-iterator.ii 
part-combine-iterator.cc: In member function 'virtual void
Part_combine_iterator::derived_mark() const':
part-combine-iterator.cc:173:40: internal compiler error: in
cp_build_indirect_ref, at cp/typeck.c:2836
Please submit a full bug report,
with preprocessed source if appropriate.


[Bug c++/53055] ICE in cp_build_indirect_ref, at cp/typeck.c:2836

2012-04-20 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53055

--- Comment #1 from Richard Guenther rguenth at gcc dot gnu.org 2012-04-20 
14:08:31 UTC ---
Created attachment 27204
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=27204
unincluded testcase

4.4 rejects it:

part-combine-iterator.cc: In member function 'virtual void
Part_combine_iterator::derived_mark() const':
part-combine-iterator.cc:173: error: invalid use of '' on pointer to member

4.5 also ICEs the same way.


[Bug rtl-optimization/44214] Compiler does not optimize vector divide with -freciprocal-math (or -ffast-math)

2012-04-20 Thread wschmidt at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44214

--- Comment #5 from William J. Schmidt wschmidt at gcc dot gnu.org 2012-04-20 
14:19:23 UTC ---
Author: wschmidt
Date: Fri Apr 20 14:19:13 2012
New Revision: 186625

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=186625
Log:
gcc:

2012-04-20  Bill Schmidt  wschm...@linux.vnet.ibm.com

PR rtl-optimization/44214
* fold-const.c (exact_inverse): New function.
(fold_binary_loc): Fold vector and complex division by constant into
multiply by recripocal with flag_reciprocal_math; fold vector division
by constant into multiply by reciprocal with exact inverse.

gcc/testsuite:

2012-04-20  Bill Schmidt  wschm...@linux.vnet.ibm.com

PR rtl-optimization/44214
* gcc.dg/pr44214-1.c: New test.
* gcc.dg/pr44214-2.c: Likewise.
* gcc.dg/pr44214-3.c: Likewise.



Added:
trunk/gcc/testsuite/gcc.dg/pr44214-1.c
trunk/gcc/testsuite/gcc.dg/pr44214-2.c
trunk/gcc/testsuite/gcc.dg/pr44214-3.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/fold-const.c
trunk/gcc/testsuite/ChangeLog


[Bug rtl-optimization/44214] Compiler does not optimize vector divide with -freciprocal-math (or -ffast-math)

2012-04-20 Thread wschmidt at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44214

William J. Schmidt wschmidt at gcc dot gnu.org changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution||FIXED

--- Comment #6 from William J. Schmidt wschmidt at gcc dot gnu.org 2012-04-20 
14:21:09 UTC ---
Fixed.


[Bug c++/53055] ICE in cp_build_indirect_ref, at cp/typeck.c:2836

2012-04-20 Thread marc.glisse at normalesup dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53055

Marc Glisse marc.glisse at normalesup dot org changed:

   What|Removed |Added

 CC||marc.glisse at normalesup
   ||dot org

--- Comment #2 from Marc Glisse marc.glisse at normalesup dot org 2012-04-20 
14:44:29 UTC ---
A brutal application of delta gives this short but non-sensical code:

void f () ;
struct A A :: * p ;
int i = p -* f ;


[Bug c++/53055] ICE in cp_build_indirect_ref, at cp/typeck.c:2836

2012-04-20 Thread feedback at launchpad dot net
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53055

--- Comment #3 from Launchpad feedback at launchpad dot net 2012-04-20 
14:44:50 UTC ---
David Kastrup added the following comment to Launchpad bug report 984577:

Just for the record: the source code triggering the error is invalid C++.  It
is just that an internal compiler error is a somewhat intimidating diagnostic.

-- 
http://launchpad.net/bugs/984577


[Bug target/43249] unsigned int arg with no prototype gets full 64-bit reg

2012-04-20 Thread wschmidt at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43249

William J. Schmidt wschmidt at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 CC||wschmidt at gcc dot gnu.org
 Resolution||INVALID

--- Comment #3 from William J. Schmidt wschmidt at gcc dot gnu.org 2012-04-20 
14:45:52 UTC ---
Closing per comment #2.


[Bug lto/42534] ICE with -flto when using __attribute__((__aligned__(X)))

2012-04-20 Thread wschmidt at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42534

--- Comment #3 from William J. Schmidt wschmidt at gcc dot gnu.org 2012-04-20 
14:53:43 UTC ---
No longer reproduces in 4.8.


[Bug bootstrap/53042] [4.8 Regression] AIX bootstrap: cgraph symbol table error

2012-04-20 Thread hubicka at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53042

--- Comment #5 from Jan Hubicka hubicka at gcc dot gnu.org 2012-04-20 
14:59:20 UTC ---
I am testing my variant of patch on x86_64-linux and intend to commit it if it
passes.


[Bug bootstrap/53042] [4.8 Regression] AIX bootstrap: cgraph symbol table error

2012-04-20 Thread hubicka at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53042

--- Comment #6 from Jan Hubicka hubicka at gcc dot gnu.org 2012-04-20 
15:18:45 UTC ---
Author: hubicka
Date: Fri Apr 20 15:18:39 2012
New Revision: 186627

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=186627
Log:
PR target/53042
* decl2.c (maybe_emit_vtables): Do not initialize same_comdat_group
list when target has no support for it.

Modified:
trunk/gcc/cp/ChangeLog
trunk/gcc/cp/decl2.c


[Bug bootstrap/53042] [4.8 Regression] AIX bootstrap: cgraph symbol table error

2012-04-20 Thread hubicka at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53042

Jan Hubicka hubicka at gcc dot gnu.org changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution||FIXED

--- Comment #7 from Jan Hubicka hubicka at gcc dot gnu.org 2012-04-20 
15:27:53 UTC ---
Hopefully fixed by my patch.
After some more reading of the code, I do not think verifier update is needed. 
Verifier checks that only DECL_ONE_ONLY decls are in the comdat group lists and
only targets supporting them will set the DECL_ONE_ONLY flag. So we are also
effectively checking that targets not supporting them has empty comdat group
lists.

Honza


[Bug c++/53055] ICE in cp_build_indirect_ref, at cp/typeck.c:2836

2012-04-20 Thread paolo.carlini at oracle dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53055

Paolo Carlini paolo.carlini at oracle dot com changed:

   What|Removed |Added

   Keywords||ice-on-invalid-code
 Status|UNCONFIRMED |NEW
   Last reconfirmed||2012-04-20
 Ever Confirmed|0   |1


[Bug c++/52008] [C++0x] ICE when adding partial specialization for variadic-templated structure

2012-04-20 Thread paolo.carlini at oracle dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52008

Paolo Carlini paolo.carlini at oracle dot com changed:

   What|Removed |Added

 Status|REOPENED|SUSPENDED

--- Comment #6 from Paolo Carlini paolo.carlini at oracle dot com 2012-04-20 
15:40:09 UTC ---
The issue isn't whether it's a specialization or not, but whether it's
technically more specialized. I didn't personally check in detail but Jason
argued on the ISO reflector that is not ([c++std-core-21739]). And the reason
why currently other front-ends accept the code is that they pick the primary
for the instantiation. Thus this should be made more explicitly ill-formed in
the standard with a DR. Let's suspend the PR for now.


[Bug tree-optimization/53045] Missing loop termination

2012-04-20 Thread ubizjak at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53045

--- Comment #3 from Uros Bizjak ubizjak at gmail dot com 2012-04-20 16:13:49 
UTC ---
(In reply to comment #2)
 Btw, see how I fixed
 
 2012-04-18  Richard Guenther  rguent...@suse.de
 
 * gcc.target/x86_64/abi/test_passing_unions.c: Avoid undefined
 array access.
 * gcc.target/x86_64/abi/test_passing_structs.c: Likewise.
 * gcc.target/i386/avx256-unaligned-load-4.c: Fix array sizes.
 
 I suppose I didn't see the AVX fails because my testing box doesn't have AVX.

Thanks, I have fixed AVX testcases in the same way.


[Bug middle-end/52997] [4.8 Regression] FAIL: gcc.dg/c99-intconst-1.c (internal compiler error)

2012-04-20 Thread dave.anglin at bell dot net
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52997

--- Comment #2 from dave.anglin at bell dot net 2012-04-20 17:18:05 UTC ---
On 4/19/2012 10:21 AM, bernds at gcc dot gnu.org wrote:
 Does this fix it?
Yes.

Thanks,
Dave


[Bug target/51178] FAIL: g++.dg/lookup/builtin5.C scan-assembler _ZSt5atanhd

2012-04-20 Thread rearnsha at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51178

Richard Earnshaw rearnsha at gcc dot gnu.org changed:

   What|Removed |Added

 Target|arm-none-eabi,  |arm-none-eabi
   |arm-linux-gnueabi   |

--- Comment #1 from Richard Earnshaw rearnsha at gcc dot gnu.org 2012-04-20 
17:42:15 UTC ---
Doesn't happen on linux targets.

Seems to be related to the absence of NO_IMPLICIT_EXTERN_C.


[Bug target/53056] New: bad code generated for ARM NEON with vector types in structs

2012-04-20 Thread drwowe at yahoo dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53056

 Bug #: 53056
   Summary: bad code generated for ARM NEON with vector types in
structs
Classification: Unclassified
   Product: gcc
   Version: 4.7.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: target
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: drw...@yahoo.com


Consider the following snippet:

typedef int vi16 __attribute__((vector_size(16*sizeof(int;

vi16 add(vi16 a, vi16b) {
  return a + b;
}

compile with arm-linux-gnueabi-gcc-4.7 -O2 -march=armv7-a -mhard-float
-mfpu=neon

Some fairly good code is produced:

sub sp, sp, #8
str r4, [sp, #-4]!
fstmfdd sp!, {d8, d9, d10, d11, d12, d13}
add ip, sp, #52
add r4, sp, #116
vldmia  r4, {d24-d31}
stmia   ip, {r2, r3}
vldmia  ip, {d6-d13}
vadd.i32q8, q3, q12
vadd.i32q9, q4, q13
vadd.i32q10, q5, q14
vadd.i32q11, q6, q15
vstmia  r0, {d16-d23}
fldmfdd sp!, {d8, d9, d10, d11, d12, d13}
ldmfd   sp!, {r4}
add sp, sp, #8
bx  lr

However, the the vector is embedded in a struct the code generation becomes
awful.

typedef struct A {
  vi16 v;
} A;

vi16 add1(A a, A b) {
  return a.v + b.v;
}

// Same code as add1
vi16 add2(A a, A b) {
  vi16* av = a.v;
  vi16* bv = b.v;
  return a.v + b.v;
}

Both add1 and add2 produce the same code:

add1:
@ args = 128, pretend = 8, frame = 128
@ frame_needed = 0, uses_anonymous_args = 0
@ link register save eliminated.
sub sp, sp, #8
sub sp, sp, #128
add r1, sp, #128
stmia   sp, {r2, r3}
stmia   r1, {r2, r3}
ldr r3, [sp, #192]
ldr r2, [r1, #8]
str r3, [sp, #64]
ldr r3, [sp, #196]
str r2, [sp, #8]
ldr r2, [r1, #12]
str r3, [sp, #68]
ldr r3, [sp, #200]
... lots and lots of load and store instructions.

But adding an optimization barrier to add2 produces similar code to the
original example, by making the compiler forget the origin of the pointer.

vi16 add3(A a, A b) {
  vi16* av = a.v;
  vi16* bv = b.v;
  asm( : +r(av), +r(bv));  // causes good code to be generated.
  return *av + *bv;
}


[Bug bootstrap/52878] [4.8 regression] bootstrap failure: MASK_LONG_DOUBLE_128 redefined

2012-04-20 Thread mikpe at it dot uu.se
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52878

--- Comment #15 from Mikael Pettersson mikpe at it dot uu.se 2012-04-20 
20:15:32 UTC ---
(In reply to comment #14)
 Created attachment 27192 [details]
 A patch
 
 Please try this patch.

With this patch I'm able to bootstrap gcc-4.8-20120415 on sparc64-linux.


[Bug target/53056] bad code generated for ARM NEON with vector types in structs

2012-04-20 Thread drwowe at yahoo dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53056

--- Comment #1 from D W drwowe at yahoo dot com 2012-04-20 20:16:35 UTC ---
Also tested arm-linux-gnueabi-gcc-4.8.0-svn186501.  Same results.


[Bug target/53056] bad code generated for ARM NEON with vector types in structs

2012-04-20 Thread drwowe at yahoo dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53056

--- Comment #2 from D W drwowe at yahoo dot com 2012-04-20 20:20:46 UTC ---
Typo: add2 should be:
vi16 add2(A a, A b) {
  vi16* av = a.v;
  vi16* bv = b.v;
  return *av + *bv;
}


[Bug tree-optimization/52272] [4.7/4.8 regression] Performance regresswion of 410.bwaves on x86.

2012-04-20 Thread meissner at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52272

--- Comment #12 from Michael Meissner meissner at gcc dot gnu.org 2012-04-20 
23:15:56 UTC ---
Created attachment 27205
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=27205
ivtops dump from subversion id 183933 (before regression)


[Bug tree-optimization/52272] [4.7/4.8 regression] Performance regresswion of 410.bwaves on x86.

2012-04-20 Thread meissner at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52272

--- Comment #13 from Michael Meissner meissner at gcc dot gnu.org 2012-04-20 
23:16:24 UTC ---
I'm attaching the ivopts dump from 4 runs:
1) Subversion id 183933, the revision before the change;
2) Subversion id 183934, the revision that slowed down bwaves;
3) Subversion id 186630, top of the tree this morning;
4) Subversion id 186630 + the experimental patch.

The experimental patch does not change the code at all on the PowerPC.

1) The mat_times_vec_ function is 27% slower in subversion id 183934;
2) The mat_times_vec_ function is 24% slower in today's versions.


[Bug tree-optimization/52272] [4.7/4.8 regression] Performance regresswion of 410.bwaves on x86.

2012-04-20 Thread meissner at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52272

--- Comment #14 from Michael Meissner meissner at gcc dot gnu.org 2012-04-20 
23:19:52 UTC ---
Created attachment 27207
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=27207
ivtops dump from subversion id 183934 (after regression)


[Bug tree-optimization/52272] [4.7/4.8 regression] Performance regresswion of 410.bwaves on x86.

2012-04-20 Thread meissner at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52272

--- Comment #15 from Michael Meissner meissner at gcc dot gnu.org 2012-04-20 
23:21:14 UTC ---
Created attachment 27208
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=27208
ivtops dump from subversion id 186630 (top of tree on April 20th, 2012)


[Bug tree-optimization/52272] [4.7/4.8 regression] Performance regresswion of 410.bwaves on x86.

2012-04-20 Thread meissner at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52272

--- Comment #16 from Michael Meissner meissner at gcc dot gnu.org 2012-04-20 
23:22:54 UTC ---
Created attachment 27209
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=27209
ivtops dump from subversion id 186630 + experimental patch from Igor Zamyatin


[Bug tree-optimization/50480] 10% performance regression on Spec2006 410.bwaves

2012-04-20 Thread meissner at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50480

--- Comment #6 from Michael Meissner meissner at gcc dot gnu.org 2012-04-20 
23:17:44 UTC ---
Created attachment 27206
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=27206
ivtops dump from subversion id 183934 (after regression)


[Bug c++/52008] [C++0x] ICE when adding partial specialization for variadic-templated structure

2012-04-20 Thread jason at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52008

--- Comment #7 from Jason Merrill jason at gcc dot gnu.org 2012-04-21 
01:46:29 UTC ---
If you rewrite the test so that the two versions are both partial
specializations:

template size_t, typename... struct tuple_sliced;

template size_t B, typename Type1, typename... Types
struct tuple_slicedB, Type1, Types...
{
typedef typename tuple_slicedB-1, Types...::type type;
};

templatetypename... Types
struct tuple_sliced0, Types...  // -- line 18
{
typedef tupleTypes... type;
};

and then you try to instantiate it:

tuple_sliced1,int,int,int t;

the instantiation is ambiguous.  The second partial specialization is more
specialized for the first argument 0, but the first partial specialization is
more specialized for the parameter pack, because it requires at least one
argument.  So neither is more specialized than the other, and so in the same
way in the original testcase the partial specialization is not more specialized
than the primary template.