[Bug c++/60893] New: Unable to use link time optimizer with profiler

2014-04-18 Thread dturnbull at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60893

Bug ID: 60893
   Summary: Unable to use link time optimizer with profiler
   Product: gcc
   Version: 4.9.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: dturnbull at gmail dot com

The following works with gcc-4.8.2.
It fails with gcc-4.9.0-RC-20140411.

Using this simple main.cpp:

#include 
#include 
#include 
int main() {
  std::vector > data(10);
  std::cout << "Hello World.\n";
}

Attempt to compile and run as such:

rm main.gcda
g++-4.9 -o profiler main.cpp -flto -O3 -fprofile-generate
./profiler
g++-4.9 -o helloworld main.cpp -flto -O3 -fprofile-use
./helloworld

The linker error output is:

Assertion failed: (cfiStartsArray[i] != cfiStartsArray[i-1]), function parse,
file /SourceCache/ld64/ld64-236.4/src/ld/parsers/macho_relocatable_file.cpp,
line 1685.
0  0x10227e0e7  __assert_rtn + 144
1  0x1022a3759 
mach_o::relocatable::Parser::parse(mach_o::relocatable::ParserOptions
const&) + 3213
2  0x1022889e2  mach_o::relocatable::Parser::parse(unsigned char
const*, unsigned long long, char const*, long, ld::File::Ordinal,
mach_o::relocatable::ParserOptions const&) + 374
3  0x1022c8303  ld::tool::InputFiles::makeFile(Options::FileInfo const&, bool)
+ 651
4  0x1022c9ff9  ld::tool::InputFiles::parseWorkerThread() + 271
5  0x7fff84598899  _pthread_body + 138
6  0x7fff8459872a  _pthread_struct_init + 0


[Bug c++/60872] Cannot memcpy array of restricted pointers

2014-04-18 Thread jason at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60872

Jason Merrill  changed:

   What|Removed |Added

 Status|UNCONFIRMED |ASSIGNED
   Last reconfirmed||2014-04-19
 CC||jason at gcc dot gnu.org
   Assignee|unassigned at gcc dot gnu.org  |jason at gcc dot gnu.org
 Ever confirmed|0   |1

--- Comment #3 from Jason Merrill  ---
Fixed on trunk so far.


[Bug sanitizer/60892] New: GCC fails to build with Linux 2.6.21 headers.

2014-04-18 Thread toojays at toojays dot net
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60892

Bug ID: 60892
   Summary: GCC fails to build with Linux 2.6.21 headers.
   Product: gcc
   Version: 4.9.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: sanitizer
  Assignee: unassigned at gcc dot gnu.org
  Reporter: toojays at toojays dot net
CC: dodji at gcc dot gnu.org, dvyukov at gcc dot gnu.org,
jakub at gcc dot gnu.org, kcc at gcc dot gnu.org

I got the following errors while trying to build gcc-4.9 (from the 20140416
snapshot) for a Linux 2.6.21 system (Maemo 4 / diablo). Configuration was run
via 

../gcc-4.9-20140416/configure --program-suffix=-4.9 --disable-shared
--enable-languages=c,c++ --enable-checking=release

I got not complaints from the, but the build failed at:

xgcc -B/home/maemo/gcc-4.9-20140416/build-dir/./gcc/
-B/usr/i686-pc-linux-gnu/bin/ -B/usr/i686-pc-linux-gnu/lib/ -isystem
/usr/i686-pc-linux-gnu/include -isystem /usr/i686-pc-linux-gnu/sys-include   
-DHAVE_CONFIG_H -I. -I../../../gcc-4.9-20140416/libquadmath  -I
../../../gcc-4.9-20140416/libquadmath/../include   -g -O2 -MT math/catanq.lo
-MD -MP -MF $depbase.Tpo -c -o math/catanq.lo
../../../gcc-4.9-20140416/libquadmath/math/catanq.c &&\
mv -f $depbase.Tpo $depbase.Plo
../../../../gcc-4.9-20140416/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc:390:30:
error: 'EVIOCGREP' was not declared in this scope
   unsigned IOCTL_EVIOCGREP = EVIOCGREP;
  ^
../../../../gcc-4.9-20140416/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc:399:30:
error: 'EVIOCSREP' was not declared in this scope
   unsigned IOCTL_EVIOCSREP = EVIOCSREP;
  ^
../../../../gcc-4.9-20140416/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc:682:36:
error: 'FS_IOC_GETFLAGS' was not declared in this scope
   unsigned IOCTL_FS_IOC_GETFLAGS = FS_IOC_GETFLAGS;
^
../../../../gcc-4.9-20140416/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc:683:38:
error: 'FS_IOC_GETVERSION' was not declared in this scope
   unsigned IOCTL_FS_IOC_GETVERSION = FS_IOC_GETVERSION;
  ^
../../../../gcc-4.9-20140416/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc:684:36:
error: 'FS_IOC_SETFLAGS' was not declared in this scope
   unsigned IOCTL_FS_IOC_SETFLAGS = FS_IOC_SETFLAGS;
^
../../../../gcc-4.9-20140416/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc:685:38:
error: 'FS_IOC_SETVERSION' was not declared in this scope
   unsigned IOCTL_FS_IOC_SETVERSION = FS_IOC_SETVERSION;


http://gcc.gnu.org/install/specific.html does not mention a minimum kernel
version for GCC.

http://gcc.gnu.org/install/configure.html does not explain how to disable
building the sanitizer.

I don't particularly mind if I can't have the sanitizer, but expect the GCC
configure script to detect that, and disable the sanitizer build automatically.

This bug is similar in spirit to bug 59068, but I'm filing a separate issue
since the root cause is different.


[Bug c/21664] array-of-empty-structure extension not properly defined

2014-04-18 Thread mpolacek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21664

Marek Polacek  changed:

   What|Removed |Added

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

--- Comment #5 from Marek Polacek  ---
...so marking as "fixed".


[Bug c/50773] float values are printed with greater precision than the float data type has when given as an argument to printf()

2014-04-18 Thread mpolacek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50773

Marek Polacek  changed:

   What|Removed |Added

 Status|REOPENED|RESOLVED
 CC||mpolacek at gcc dot gnu.org
 Resolution|--- |INVALID

--- Comment #5 from Marek Polacek  ---
Closing as not a bug then.


[Bug bootstrap/60830] [4.9 Regression] ICE on bootstrapping on cygwin

2014-04-18 Thread bernd.edlinger at hotmail dot de
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60830

--- Comment #27 from Bernd Edlinger  ---
(In reply to Denis Excoffier from comment #26)
> After more investigation, it seems that the culprit can be
> --disable-sjlj-exceptions. Since the beginning (last Sunday), each time i
> use it on the command line, the build fails and each time i don't use it,
> the build succeeds.
> Please would you mind trying again a cygwin build, but
> with --disable-sjlj-exceptions this time. Especially for those where the
> build succeeded. For Mikael (see comment #2), it is more than probable that
> he used --disable-sjlj-exceptions instead of my gmp kludges known by nobody
> except by me.

Yes, adding --disable-sjlj-exceptions makes the build fail:

mkdir -p -- i686-pc-cygwin/libgcc
Checking multilib configuration for libgcc...
Configuring stage 2 in i686-pc-cygwin/libgcc
configure: creating cache ./config.cache
checking build system type... i686-pc-cygwin
checking host system type... i686-pc-cygwin
checking for --enable-version-specific-runtime-libs... no
checking for a BSD-compatible install... /usr/bin/install -c
checking for gawk... gawk
xgcc: error: unrecognized command line option '-isystem'
xgcc: error: unrecognized command line option '-isystem'
xgcc: error: unrecognized command line option '-mtune=generic'
xgcc: error: unrecognized command line option '-march=pentiumpro'
checking for i686-pc-cygwin-ar... ar
checking for i686-pc-cygwin-lipo... lipo
checking for i686-pc-cygwin-nm... /home/ED/gnu/gcc-build/./gcc/nm
checking for i686-pc-cygwin-ranlib... ranlib
checking for i686-pc-cygwin-strip... strip
checking whether ln -s works... yes
checking for i686-pc-cygwin-gcc... /home/ED/gnu/gcc-build/./gcc/xgcc
-B/home/ED/gnu/gcc-build/./gcc/ -B/home/ed/gnu/install/i686-pc-cygwin/bin/
-B/home/ed/gnu/install/i686-pc-cygwin/lib/ -isystem
/home/ed/gnu/install/i686-pc-cygwin/include -isystem
/home/ed/gnu/install/i686-pc-cygwin/sys-include
checking for C compiler default output file name...
configure: error: in `/home/ED/gnu/gcc-build/i686-pc-cygwin/libgcc':
configure: error: C compiler cannot create executables
See `config.log' for more details.
Makefile:17788: recipe for target 'configure-stage2-target-libgcc' failed
make[2]: *** [configure-stage2-target-libgcc] Error 77
make[2]: Leaving directory '/home/ED/gnu/gcc-build'
Makefile:20606: recipe for target 'stage2-bubble' failed
make[1]: *** [stage2-bubble] Error 2
make[1]: Leaving directory '/home/ED/gnu/gcc-build'
Makefile:897: recipe for target 'all' failed
make: *** [all] Error 2


[Bug tree-optimization/60891] New: [4.9/4.10 Regression] ICE: SIGSEGV (Invalid write/read) in pre_and_rev_post_order_compute_fn with -O -fno-tree-ch -fno-tree-cselim -fno-tree-dominator-opts

2014-04-18 Thread zsojka at seznam dot cz
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60891

Bug ID: 60891
   Summary: [4.9/4.10 Regression] ICE: SIGSEGV (Invalid
write/read) in pre_and_rev_post_order_compute_fn with
-O -fno-tree-ch -fno-tree-cselim
-fno-tree-dominator-opts
   Product: gcc
   Version: 4.10.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: tree-optimization
  Assignee: unassigned at gcc dot gnu.org
  Reporter: zsojka at seznam dot cz

Created attachment 32633
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=32633&action=edit
reduced testcase

Compiler output (under valgrind):
$ gcc -O -fno-tree-ch -fno-tree-cselim -fno-tree-dominator-opts testcase.c
==2497== Invalid write of size 4
==2497==at 0x7464DF: pre_and_rev_post_order_compute_fn(function*, int*,
int*, bool) (cfganal.c:981)
==2497==by 0x7465F7: pre_and_rev_post_order_compute(int*, int*, bool)
(cfganal.c:1014)
==2497==by 0xC9FBE7: (anonymous namespace)::pass_reassoc::execute()
(tree-ssa-reassoc.c:4632)
==2497==by 0xA49D49: execute_one_pass(opt_pass*) (passes.c:2229)
==2497==by 0xA49FE5: execute_pass_list(opt_pass*) (passes.c:2282)
==2497==by 0xA49FF7: execute_pass_list(opt_pass*) (passes.c:2283)
==2497==by 0x786448: expand_function(cgraph_node*) (cgraphunit.c:1774)
==2497==by 0x78842B: compile() (cgraphunit.c:1908)
==2497==by 0x788B94: finalize_compilation_unit() (cgraphunit.c:2329)
==2497==by 0x63C8B3: c_write_global_declarations() (c-decl.c:10401)
==2497==by 0xB3E69C: compile_file() (toplev.c:562)
==2497==by 0xB4066F: toplev_main(int, char**) (toplev.c:1914)
==2497==by 0x5A46BF4: (below main) (in /lib64/libc-2.17.so)
==2497==  Address 0x610ecb8 is 0 bytes after a block of size 40 alloc'd
==2497==at 0x4C2C820: malloc (in
/usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==2497==by 0x143DA37: xmalloc (xmalloc.c:147)
==2497==by 0xC9FB88: (anonymous namespace)::pass_reassoc::execute()
(tree-ssa-reassoc.c:4618)
==2497==by 0xA49D49: execute_one_pass(opt_pass*) (passes.c:2229)
==2497==by 0xA49FE5: execute_pass_list(opt_pass*) (passes.c:2282)
==2497==by 0xA49FF7: execute_pass_list(opt_pass*) (passes.c:2283)
==2497==by 0x786448: expand_function(cgraph_node*) (cgraphunit.c:1774)
==2497==by 0x78842B: compile() (cgraphunit.c:1908)
==2497==by 0x788B94: finalize_compilation_unit() (cgraphunit.c:2329)
==2497==by 0x63C8B3: c_write_global_declarations() (c-decl.c:10401)
==2497==by 0xB3E69C: compile_file() (toplev.c:562)
==2497==by 0xB4066F: toplev_main(int, char**) (toplev.c:1914)
==2497==by 0x5A46BF4: (below main) (in /lib64/libc-2.17.so)
==2497== 
==2497== Invalid read of size 4
==2497==at 0xC9FCE6: (anonymous namespace)::pass_reassoc::execute()
(tree-ssa-reassoc.c:4648)
==2497==by 0xA49D49: execute_one_pass(opt_pass*) (passes.c:2229)
==2497==by 0xA49FE5: execute_pass_list(opt_pass*) (passes.c:2282)
==2497==by 0xA49FF7: execute_pass_list(opt_pass*) (passes.c:2283)
==2497==by 0x786448: expand_function(cgraph_node*) (cgraphunit.c:1774)
==2497==by 0x78842B: compile() (cgraphunit.c:1908)
==2497==by 0x788B94: finalize_compilation_unit() (cgraphunit.c:2329)
==2497==by 0x63C8B3: c_write_global_declarations() (c-decl.c:10401)
==2497==by 0xB3E69C: compile_file() (toplev.c:562)
==2497==by 0xB4066F: toplev_main(int, char**) (toplev.c:1914)
==2497==by 0x5A46BF4: (below main) (in /lib64/libc-2.17.so)
==2497==  Address 0x610ecb8 is 0 bytes after a block of size 40 alloc'd
==2497==at 0x4C2C820: malloc (in
/usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==2497==by 0x143DA37: xmalloc (xmalloc.c:147)
==2497==by 0xC9FB88: (anonymous namespace)::pass_reassoc::execute()
(tree-ssa-reassoc.c:4618)
==2497==by 0xA49D49: execute_one_pass(opt_pass*) (passes.c:2229)
==2497==by 0xA49FE5: execute_pass_list(opt_pass*) (passes.c:2282)
==2497==by 0xA49FF7: execute_pass_list(opt_pass*) (passes.c:2283)
==2497==by 0x786448: expand_function(cgraph_node*) (cgraphunit.c:1774)
==2497==by 0x78842B: compile() (cgraphunit.c:1908)
==2497==by 0x788B94: finalize_compilation_unit() (cgraphunit.c:2329)
==2497==by 0x63C8B3: c_write_global_declarations() (c-decl.c:10401)
==2497==by 0xB3E69C: compile_file() (toplev.c:562)
==2497==by 0xB4066F: toplev_main(int, char**) (toplev.c:1914)
==2497==by 0x5A46BF4: (below main) (in /lib64/libc-2.17.so)
==2497==


[Bug tree-optimization/60890] Performance regression in 4.8 for memory postinc

2014-04-18 Thread pinskia at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60890

--- Comment #1 from Andrew Pinski  ---
This just sounds like IV-opts going wrong.


[Bug tree-optimization/60890] New: Performance regression in 4.8 for memory postinc

2014-04-18 Thread hariharan.gcc at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60890

Bug ID: 60890
   Summary: Performance regression in 4.8 for memory postinc
   Product: gcc
   Version: 4.8.1
Status: UNCONFIRMED
  Severity: enhancement
  Priority: P3
 Component: tree-optimization
  Assignee: unassigned at gcc dot gnu.org
  Reporter: hariharan.gcc at gmail dot com

Created attachment 32632
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=32632&action=edit
The source testcase

The attached testcase is a simplified version of the code where i saw this
problem initially. At the end of tree stages, 4.7 compiler used to generate two
consecutive stores, and then add to update the pointer as shown below for the
stores in the innermost loop.

  MEM[base: aptr_54, offset: 0B] = res1_22;
  MEM[base: aptr_54, offset: 4B] = res2_27;
  D.1771_63 = (sizetype) aptr_54;
  D.1772_64 = D.1771_63 + 8;

4.8 compiler generates

  MEM[base: base_76, offset: 0B] = res1_32;
  _29 = (unsigned long) base_76;
  _83 = _29 + 8;
  base_84 = (int *) _83;
  MEM[base: base_84, offset: -4B] = res2_37;

for the same 2 stores. In our private port, which can do post-inc on load/store
operations, 4.7 used to generate optimal code whereas 4.8 code is not very
pretty.

The problem seems to stem from the fix made to Bug 48814, which generates
post-inc operations in a different order from 4.7. Should the tree optimization
passes have fixed it up?

At the end of tree-optimization passes, i can see the problem in x86 as well.
Compile the attached code with 4.7.x and 4.8.x to see the difference.


[Bug c++/60872] Cannot memcpy array of restricted pointers

2014-04-18 Thread jason at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60872

--- Comment #2 from Jason Merrill  ---
Author: jason
Date: Fri Apr 18 18:11:22 2014
New Revision: 209520

URL: http://gcc.gnu.org/viewcvs?rev=209520&root=gcc&view=rev
Log:
PR c++/60872
* call.c (standard_conversion): Don't try to apply restrict to void.

Added:
trunk/gcc/testsuite/g++.dg/ext/restrict2.C
Modified:
trunk/gcc/cp/ChangeLog
trunk/gcc/cp/call.c


[Bug c/25801] bad diagnostic for increment/decrement of pointer to incomplete array

2014-04-18 Thread mpolacek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=25801

Marek Polacek  changed:

   What|Removed |Added

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

--- Comment #2 from Marek Polacek  ---
I'm testing a patch.


[Bug middle-end/60889] New: -Os generate much bigger code

2014-04-18 Thread hjl.tools at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60889

Bug ID: 60889
   Summary: -Os generate much bigger code
   Product: gcc
   Version: 4.10.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: middle-end
  Assignee: unassigned at gcc dot gnu.org
  Reporter: hjl.tools at gmail dot com
CC: mjambor at suse dot cz

On Linux/x86-64:

[hjl@gnu-6 gcc]$ cat /tmp/space.i
typedef float __v4sf __attribute__ ((__vector_size__ (16)));
typedef float __m128 __attribute__ ((__vector_size__ (16), __may_alias__));
struct S
{
  __m128 a, b;
};

struct T
{
  int a;
  struct S s;
};


void foo (struct T *p, __m128 v)
{
  struct S s;

  s = p->s;
  s.b = (__m128) __builtin_ia32_addps ((__v4sf)s.b, (__v4sf)v);
  p->s = s;
}
[hjl@gnu-6 gcc]$ ./xgcc -B./ -S -O2 /tmp/space.i 
[hjl@gnu-6 gcc]$ cat space.s 
.file"space.i"
.section.text.unlikely,"ax",@progbits
.LCOLDB0:
.text
.LHOTB0:
.p2align 4,,15
.globlfoo
.typefoo, @function
foo:
.LFB0:
.cfi_startproc
addps32(%rdi), %xmm0
movaps%xmm0, 32(%rdi)
ret
.cfi_endproc
.LFE0:
.sizefoo, .-foo
.section.text.unlikely
.LCOLDE0:
.text
.LHOTE0:
.ident"GCC: (GNU) 4.9.0 20140409 (experimental)"
.section.note.GNU-stack,"",@progbits
[hjl@gnu-6 gcc]$ ./xgcc -B./ -S -Os /tmp/space.i 
[hjl@gnu-6 gcc]$ cat space.s 
.file"space.i"
.section.text.unlikely,"ax",@progbits
.LCOLDB0:
.text
.LHOTB0:
.globlfoo
.typefoo, @function
foo:
.LFB0:
.cfi_startproc
movq%rdi, %rax
movl$8, %ecx
leaq-40(%rsp), %rdi
leaq16(%rax), %rsi
rep movsl
addps32(%rax), %xmm0
leaq16(%rax), %rdi
leaq-40(%rsp), %rsi
movb$8, %cl
movaps%xmm0, -24(%rsp)
rep movsl
ret
.cfi_endproc
.LFE0:
.sizefoo, .-foo
.section.text.unlikely
.LCOLDE0:
.text
.LHOTE0:
.ident"GCC: (GNU) 4.9.0 20140409 (experimental)"
.section.note.GNU-stack,"",@progbits
[hjl@gnu-6 gcc]$ 

analyze_all_variable_accesses in tree-sra.c has

  max_total_scalarization_size = UNITS_PER_WORD * BITS_PER_UNIT
* MOVE_RATIO (optimize_function_for_speed_p (cfun));

-Os sets MOVE_RATIO to 3.  Should we have a different parameter
to control SRA?


[Bug libstdc++/42857] std::istream::ignore(std::streamsize n) calls unnecessary underflow

2014-04-18 Thread cubbi at cubbi dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42857

Sergey Zubkov  changed:

   What|Removed |Added

 CC||cubbi at cubbi dot org

--- Comment #5 from Sergey Zubkov  ---
Looking at existing implementations, libstdc++ is the odd one out: LLVM libc++,
IBM XL C++, Microsoft Visual Studio, and Oracle libCstd and stlport4 all let me
ignore exactly the number of characters requested, without an extra read from
the socket.


[Bug target/60879] Wrong decision in decide_alg in i386.c

2014-04-18 Thread hjl.tools at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60879

--- Comment #2 from H.J. Lu  ---
(In reply to Jakub Jelinek from comment #1)
> Does this ever matter though?  I mean, wouldn't we expand it as move by
> pieces or store by pieces for such small constant length anyway and thus
> never reach the target movmem/setmem expansion?

move by pieces or store by pieces are very efficient for
targets with unaligned move/store for integer and vector:

[hjl@gnu-6 partial]$ cat w.i
void
foo5 (const void *src, void *dest, int s)
{
  __builtin_memcpy (dest, src, 23);
}
[hjl@gnu-6 partial]$ gcc -S -O2 w.i
[hjl@gnu-6 partial]$ cat w.s

.file"w.i"
.text
.p2align 4,,15
.globlfoo5
.typefoo5, @function
foo5:
.LFB0:
.cfi_startproc
movq(%rdi), %rax
movq%rax, (%rsi)
movq8(%rdi), %rax
movq%rax, 8(%rsi)
movl16(%rdi), %eax
movl%eax, 16(%rsi)
movzwl20(%rdi), %eax
movw%ax, 20(%rsi)
movzbl22(%rdi), %eax
movb%al, 22(%rsi)
ret

I am working on a different set/mov memory strategy to generate

movdqu(%rdi), %xmm0
movups%xmm0, (%rsi)
movq15(%rdi), %rax
movq%rax, 15(%rsi)
ret

by setting MOVE_RATIO to 1 and handling most of set/mov memory in
x86 backend.


[Bug debug/60885] typeless DW_TAG_typedef

2014-04-18 Thread mark at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60885

--- Comment #2 from Mark Wielaard  ---
I think this is caused by the following in add_type_attribute:

  if (code == ERROR_MARK
  /* Handle a special case.  For functions whose return type is void, we
 generate *no* type attribute.  (Note that no object may have type
 `void', so this only applies to function return types).  */
  || code == VOID_TYPE)
return;


[Bug tree-optimization/60888] New: x86 vector widen multiplication by constant is not replaced with shift and sub

2014-04-18 Thread evstupac at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60888

Bug ID: 60888
   Summary: x86 vector widen multiplication by constant is not
replaced with shift and sub
   Product: gcc
   Version: 4.10.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: tree-optimization
  Assignee: unassigned at gcc dot gnu.org
  Reporter: evstupac at gmail dot com

Created attachment 32631
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=32631&action=edit
test case

For the following test case:

void
foo(char *out, char *in)
{
  int i;
  for(i = 0; i < 1024; i++)
out[i] = (in[i] * 32767) >> 15;
}

compiled with:
-O3 -m32 -msse2 -S -fdump-tree-vect-details

Generates the following code at 114t.vect:

  vect_cst_.16_106 = { 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767
}; 
  ...
  vect_patt_24.15_107 = WIDEN_MULT_LO_EXPR ;
  vect_patt_24.15_108 = WIDEN_MULT_HI_EXPR ;
  vect_patt_24.15_109 = WIDEN_MULT_LO_EXPR ;
  vect_patt_24.15_110 = WIDEN_MULT_HI_EXPR ;

These 4 multiplications stay till final assembler:
...
  punpcklbw  %xmm0, %xmm2
  punpckhbw  %xmm0, %xmm5
  pmullw %xmm2, %xmm1 
  movdqa %xmm1, %xmm0 
  pmulhw %xmm3, %xmm2
...

However:

 out[i] = ((in[i] << 15) - in[i]) >> 15;

is faster and calculating the same.


[Bug bootstrap/60887] [4.10 Regression] LTO bootstrap failed with profiledbootstrap

2014-04-18 Thread hjl.tools at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60887

--- Comment #1 from H.J. Lu  ---
I got

/export/project/git/gcc-regression-bootstrap/master/209484/bld/./prev-gcc/xg++
-B/export/project/git/gcc-regression-bootstrap/master/209484/bld/./prev-gcc/
-B/usr/local/x86_64-unknown-linux-gnu/bin/ -nostdinc++
-B/export/project/git/gcc-regression-bootstrap/master/209484/bld/prev-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs
-B/export/project/git/gcc-regression-bootstrap/master/209484/bld/prev-x86_64-unknown-linux-gnu/libstdc++-v3/libsupc++/.libs

-I/export/project/git/gcc-regression-bootstrap/master/209484/bld/prev-x86_64-unknown-linux-gnu/libstdc++-v3/include/x86_64-unknown-linux-gnu

-I/export/project/git/gcc-regression-bootstrap/master/209484/bld/prev-x86_64-unknown-linux-gnu/libstdc++-v3/include
 -I/export/project/git/gcc-regression/gcc/libstdc++-v3/libsupc++
-L/export/project/git/gcc-regression-bootstrap/master/209484/bld/prev-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs
-L/export/project/git/gcc-regression-bootstrap/master/209484/bld/prev-x86_64-unknown-linux-gnu/libstdc++-v3/libsupc++/.libs
  -g -O2 -flto=jobserver -frandom-seed=1 -ffat-lto-objects -fprofile-use
-DIN_GCC-fno-exceptions -fno-rtti -fasynchronous-unwind-tables -W -Wall
-Wno-narrowing -Wwrite-strings -Wcast-qual -Wmissing-format-attribute
-Woverloaded-virtual -pedantic -Wno-long-long -Wno-variadic-macros
-Wno-overlength-strings -fno-common  -DHAVE_CONFIG_H -static-libstdc++
-static-libgcc  -o lto1 \
lto/lto-lang.o lto/lto.o lto/lto-object.o attribs.o lto/lto-partition.o
lto/lto-symtab.o libbackend.a main.o tree-browser.o libcommon-target.a
libcommon.a ../libcpp/libcpp.a ../libdecnumber/libdecnumber.a  -lmpc -lmpfr
-lgmp -rdynamic -ldl  -lz libcommon.a ../libcpp/libcpp.a  
../libbacktrace/.libs/libbacktrace.a ../libiberty/libiberty.a
../libdecnumber/libdecnumber.a 
/tmp/ccR2WYVX.ltrans4.ltrans.o:(.debug_info+0x988e2): undefined reference to
`.L958'
collect2: error: ld returned 1 exit status
make[3]: *** [lto1] Error 1


[Bug bootstrap/60887] New: [4.10 Regression] LTO bootstrap failed with profiledbootstrap

2014-04-18 Thread hjl.tools at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60887

Bug ID: 60887
   Summary: [4.10 Regression] LTO bootstrap failed with
profiledbootstrap
   Product: gcc
   Version: 4.10.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: bootstrap
  Assignee: unassigned at gcc dot gnu.org
  Reporter: hjl.tools at gmail dot com
CC: jakub at gcc dot gnu.org

On Linux/x86-64, r209484 caused LTO bootstrap failed with bootstrap-profiled.
GCC is configured with

--prefix=/usr/local --enable-clocale=gnu --with-system-zlib
--with-demangler-in-ld MAKEINFO=/usr/bin/false --enable-languages=c,c++
--enable-bootstrap --with-build-config=bootstrap-lto --disable-werror

and built with profiledbootstrap.


[Bug debug/60885] typeless DW_TAG_typedef

2014-04-18 Thread mark at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60885

Mark Wielaard  changed:

   What|Removed |Added

 CC||mark at gcc dot gnu.org

--- Comment #1 from Mark Wielaard  ---
The DWARFv4 specification section 5.2 Unspecified Type Entries says "Some
languages have constructs in which a type may be left unspecified or the
absence of a type may be explicitly indicated. An unspecified (implicit,
unknown, ambiguous or nonexistent) type is represented by a debugging
information entry with the tag DW_TAG_unspecified_type. [...] For example, in C
and C++ the language implementation can provide an unspecified type entry with
the name “void” which can be referenced by the type attribute of pointer types
and typedef declarations for 'void'"

[Bug c++/60886] poor parse error recovery for missing parenthesis in mem-initializer-list

2014-04-18 Thread redi at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60886

Jonathan Wakely  changed:

   What|Removed |Added

   Keywords||error-recovery
 Status|UNCONFIRMED |NEW
   Last reconfirmed||2014-04-18
Summary|poor parse error recovery   |poor parse error recovery
   |for missing parenthesis in  |for missing parenthesis in
   |initializer-list|mem-initializer-list
 Ever confirmed|0   |1


[Bug c++/60886] New: poor parse error recovery for missing parenthesis in initializer-list

2014-04-18 Thread manu at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60886

Bug ID: 60886
   Summary: poor parse error recovery for missing parenthesis in
initializer-list
   Product: gcc
   Version: 4.10.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: manu at gcc dot gnu.org

class A {
A(int _a, int _b) : a(_a, b(_b) {}

int a, b;
}

manuel@gcc10:~$ clang++ bug.C
bug.C:4:12: error: expected ')'
int a,b;
   ^
bug.C:2:24: note: to match this '('
  A(int _a, int _b) : a(_a, b(_b) {}
   ^
1 error generated.
manuel@gcc10:~$ ~/test1/208648/build/gcc/cc1plus bug.C
 A::A(int, int)
bug.C:2:23: error: class ‘A’ does not have any field named ‘a’
   A(int _a, int _b) : a(_a, b(_b) {}
   ^
bug.C:2:33: error: ‘b’ was not declared in this scope
   A(int _a, int _b) : a(_a, b(_b) {}
 ^
bug.C:4:11: error: expected ‘)’ at end of input
 int a,b;
   ^
bug.C:4:11: error: expected ‘{’ at end of input

[Bug target/60539] [SH] builtin string functions ignore loop and label alignment

2014-04-18 Thread olegendo at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60539

--- Comment #3 from Oleg Endo  ---
As mentioned here
http://gcc.gnu.org/ml/gcc-patches/2014-03/msg01692.html:

> IMHO the problem is with the
> non-aligned loop stems from to the generic alignment code in final.c.

> Further tuning of static branch estimations, or tuning of the LOOP_ALIGN
> macro is needed.

This PR is about the fact that loops expanded by builtins don't get the loop
labels aligned automatically.  It just happens that on SH we have only the
strlen-like builtins so far that expand loops.


[Bug bootstrap/60830] [4.9 Regression] ICE on bootstrapping on cygwin

2014-04-18 Thread g...@denis-excoffier.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60830

--- Comment #26 from Denis Excoffier  ---
After more investigation, it seems that the culprit can be
--disable-sjlj-exceptions. Since the beginning (last Sunday), each time i use
it on the command line, the build fails and each time i don't use it, the build
succeeds.

Please would you mind trying again a cygwin build, but with
--disable-sjlj-exceptions this time. Especially for those where the build
succeeded. For Mikael (see comment #2), it is more than probable that he used
--disable-sjlj-exceptions instead of my gmp kludges known by nobody except by
me.


[Bug debug/60885] New: typeless DW_TAG_typedef

2014-04-18 Thread pmachata at redhat dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60885

Bug ID: 60885
   Summary: typeless DW_TAG_typedef
   Product: gcc
   Version: 4.8.2
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: debug
  Assignee: unassigned at gcc dot gnu.org
  Reporter: pmachata at redhat dot com

GCC emits DW_TAG_typedef without DW_AT_type when the typedef'd type is void:

typedef void VOID;
int foo (VOID *v) {}

$ gcc void.c -g -c

 [2d]typedef
 name (strp) "VOID"
 decl_file(data1) 1
 decl_line(data1) 1

DWARF4 states:
"""If the debugging information entry for a typedef represents a
declaration of the type that is not also a definition, it does not contain a
type attribute."""

As I understand things, a typedef defines a new type, and as such should
contain a DW_AT_type even though it's void.


[Bug libstdc++/60883] std::ostringstream::str(const std::string&) works strangely

2014-04-18 Thread michal at mistrnet dot cz
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60883

Michal Strnad  changed:

   What|Removed |Added

 CC||michal at mistrnet dot cz

--- Comment #2 from Michal Strnad  ---
Comment on attachment 32630
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=32630
Demonstrate ostringstream::str(const string&) side effect

std::ostringstream o(std::ios_base::out |
 std::ios_base::app);//std::ios_base::app sets append mode


[Bug target/60884] New: [SH] improve inlined strlen-like builtin functions

2014-04-18 Thread olegendo at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60884

Bug ID: 60884
   Summary: [SH] improve inlined strlen-like builtin functions
   Product: gcc
   Version: 4.10.0
Status: UNCONFIRMED
  Severity: enhancement
  Priority: P3
 Component: target
  Assignee: unassigned at gcc dot gnu.org
  Reporter: olegendo at gcc dot gnu.org
Target: sh*-*-*

This is a carry over from the proposed improvement to the strlen-like builtin
functions by Christian.  The idea is to unroll some of the loops that are
expanded:
http://gcc.gnu.org/ml/gcc-patches/2014-03/msg01406.html

As mentioned in
http://gcc.gnu.org/ml/gcc-patches/2014-03/msg01687.html

maybe the unrolling should be done at -O3 and not at -O2, since it increases
code size in some places, but does not seem to lead to significant speed
improvements (~ 1% as measured by Christian).


[Bug libstdc++/60883] std::ostringstream::str(const std::string&) works strangely

2014-04-18 Thread sch...@linux-m68k.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60883

Andreas Schwab  changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution|--- |INVALID

--- Comment #1 from Andreas Schwab  ---
Since o isn't in append mode ostringstream::str(const string&) will set pptr()
== pbase().


[Bug libstdc++/60883] New: std::ostringstream::str(const std::string&) works strangely

2014-04-18 Thread michal at mistrnet dot cz
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60883

Bug ID: 60883
   Summary: std::ostringstream::str(const std::string&) works
strangely
   Product: gcc
   Version: 4.6.3
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: libstdc++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: michal at mistrnet dot cz

Created attachment 32630
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=32630&action=edit
Demonstrate ostringstream::str(const string&) side effect

ostringstream::str(const string&) sets successfully content but next call of
operator<< ignores this content.


[Bug target/60882] New: [ARM] Execution fail on spec2K/197.parser

2014-04-18 Thread izamyatin at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60882

Bug ID: 60882
   Summary: [ARM] Execution fail on spec2K/197.parser
   Product: gcc
   Version: 4.10.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: target
  Assignee: unassigned at gcc dot gnu.org
  Reporter: izamyatin at gmail dot com

Looks like the infinite recursion of read_dict.c/insert_list routine

Options:
-Ofast -funroll-loops -flto  -marm -mcpu=cortex-a15 -mfloat-abi=hard -mfpu=neon

Compiler:

Target: arm-linux-gnueabihf
Configured with: /configure --enable-clocale=gnu --enable-libstdcxx-debug
--enable-libstdcxx-time=yes --enable-gnu-unique-object --enable-plugin
--enable-objc-gc --disable-sjlj-exceptions --with-arch=armv7-a
--with-float=hard --with-mode=thumb --with-fpu=vfpv3-d16
--target=arm-linux-gnueabihf --host=arm-linux-gnueabihf
--build=arm-linux-gnueabihf --with-multiarch-defaults=arm-linux-gnueabihf
--enable-bootstrap=no --enable-languages=c,c++,fortran --enable-shared
--enable-linker-build-id --disable-werror
Thread model: posix
gcc version 4.10.0 20140416 (experimental) (GCC) 

I believe 4.9.0 also has this fail


[Bug fortran/60881] ICE on dummy argument that extends a type with scalar and scalar coarry components

2014-04-18 Thread dominiq at lps dot ens.fr
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60881

Dominique d'Humieres  changed:

   What|Removed |Added

   Keywords||ice-on-valid-code
 Status|UNCONFIRMED |NEW
   Last reconfirmed||2014-04-18
 Ever confirmed|0   |1
  Known to fail||4.10.0, 4.7.4, 4.8.3, 4.9.0

--- Comment #1 from Dominique d'Humieres  ---
Confirmed on 4.7.4, 4.8.3, 4.9.0, and trunk.


[Bug fortran/60881] New: ICE on dummy argument that extends a type with scalar and scalar coarry components

2014-04-18 Thread rouson at stanford dot edu
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60881

Bug ID: 60881
   Summary: ICE on dummy argument that extends a type with scalar
and scalar coarry components
   Product: gcc
   Version: 4.9.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: fortran
  Assignee: unassigned at gcc dot gnu.org
  Reporter: rouson at stanford dot edu

The code and error message below demonstrate an ICE that occurs when passing an
actual argument that extends a type with two components: a default-initialized
scalar and an allocatable scalar coarray.

Damian


$ cat all.f90 
program main
  implicit none
  type co_object
logical :: defined=.false.
real, allocatable :: dummy_to_facilitate_extension[:]
  end type
  type, extends(co_object) :: global_field
  end type
  type(global_field) T
  call assign_local_field(T)
contains
  subroutine assign_local_field(lhs)
type(global_field) lhs
  end subroutine
end program

$ gfortran -fcoarray=single all.f90 
all.f90: In function 'MAIN__':
all.f90:9:0: internal compiler error: in fold_convert_loc, at fold-const.c:2116
   type(global_field) T
 ^

all.f90:9:0: internal compiler error: Abort trap: 6
gfortran: internal compiler error: Abort trap: 6 (program f951)
Abort trap: 6

$ gfortran --version
GNU Fortran (MacPorts gcc49 4.9-20140406_0) 4.9.0 20140406 (experimental)
Copyright (C) 2014 Free Software Foundation, Inc.


[Bug target/60062] [4.7 Regression] wrong code (for code with the optimize attribute) at -O1 and above on x86_64-linux-gnu in 32-bit mode

2014-04-18 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60062

Jakub Jelinek  changed:

   What|Removed |Added

 CC||mnp at agtmt dot com

--- Comment #10 from Jakub Jelinek  ---
*** Bug 60877 has been marked as a duplicate of this bug. ***


[Bug target/60877] __attribute__optimize("O0") conflict with static function at -O1

2014-04-18 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60877

Jakub Jelinek  changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 CC||jakub at gcc dot gnu.org
 Resolution|--- |DUPLICATE

--- Comment #2 from Jakub Jelinek  ---
Dup.

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


[Bug target/60879] Wrong decision in decide_alg in i386.c

2014-04-18 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60879

Jakub Jelinek  changed:

   What|Removed |Added

 CC||jakub at gcc dot gnu.org

--- Comment #1 from Jakub Jelinek  ---
Does this ever matter though?  I mean, wouldn't we expand it as move by pieces
or store by pieces for such small constant length anyway and thus never reach
the target movmem/setmem expansion?


[Bug target/60851] [4.9/4.10 Regression] ICE: in extract_constrain_insn_cached, at recog.c:2117 with -flive-range-shrinkage -mdispatch-scheduler -march=bdver4

2014-04-18 Thread zsojka at seznam dot cz
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60851

--- Comment #4 from Zdenek Sojka  ---
Created attachment 32629
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=32629&action=edit
testsuite ICEs with -flive-range-shrinkage/-mdispatch-scheduler/-march=bdver3

I did a testsuite run with
RUNTESTFLAGS="--target_board=unix/-flive-range-shrinkage/-mdispatch-scheduler/-march=bdver3",
and grepped for 'internal compiler error'.
I didn't have a look at all the failing files, but the ones I had was about
converting long double to/from an integer.