[IRA] Segfault in ira_costs.c:find_costs_and_classes for AVR target

2013-12-26 Thread Senthil Kumar Selvaraj
Hi,

  gcc.c-torture/compile/pr34856.c and a couple of other tests segfault 
  for the AVR target. Looking at the code, I found that the
  x_ira_register_move_cost array[TImode] is NULL, while the code goes on
  to dereference it (ira_register_move_cost
  [ALLOCNO_MODE (a)][best][aclass] at line 1832).

  I looked at the code that populates the array, and found that it does
  explicitly allow the array to have NULL entries for certain modes,
  atleast during initialization.

  I'm not really sure how this should be fixed - is NULL valid or is the
  AVR target violating some invariant?

Regards
Senthil
  
  



Re: What does 'experimental support for C++11' exactly mean for production work?

2013-12-26 Thread Ian Lance Taylor
On Wed, Dec 25, 2013 at 7:19 PM, Luca Risolia
luca.riso...@linux-projects.org wrote:

 I would like to propose the adoption of C++11 to my colleagues for our
 production code.

 We use to rebuild everything with the same compiler version each time (GCC
 4.7.3 for now), so ABI incompatibilities between different GCC versions are 
 not
 an issue for us. However, with C++11 in mind everything would have to be
 rebuilt with the -std=c++11 compiler flag turned on, as we could not accept
 any possible binary incompatibilities between C++11 and C++98.

 I have been personally using almost all the supported C++11 compiler features
 for long time without any particular problems. I am also aware of the fact
 that some big companies already decided to switch from C++98 to C++11
 entirely. However, some of my colleagues might not be familiar with C++11 at
 all and might wonder what the claim experimental support for C++11 from the
 official  GCC 4.7.3 status pages means in terms of risks for our code.

 Apart from some (minor) C++11 features not being implemented in the standard
 library or in the compiler yet, I'd like to know what else intrinsic to C++11
 with GCC we should consider before switching.

Questions like this should go to gcc-h...@gcc.gnu.org rather than
gcc@gcc.gnu.org, which is a developer list.  Please take any followups
to gcc-help.  Thanks.

The major work on GCC 4.7 was completed before the C++11 standard was
finalized, so it more or less had to be considered experimental.
There were no substantial revisions in later versions of GCC, except
for adding new features required by the standard.  I don't think there
are any substantial risks due to the experimental label of the C++11
support in GCC 4.7.  Of course support for the new C++11 features was
new and as such more likely to have bugs, though of course known bugs
were fixed by the current 4.7.3 release.  You'll have to judge for
yourself how much of that sort of risk you want to tolerate.

Hope this helps.

Ian


gcc-4.8-20131226 is now available

2013-12-26 Thread gccadmin
Snapshot gcc-4.8-20131226 is now available on
  ftp://gcc.gnu.org/pub/gcc/snapshots/4.8-20131226/
and on various mirrors, see http://gcc.gnu.org/mirrors.html for details.

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

You'll find:

 gcc-4.8-20131226.tar.bz2 Complete GCC

  MD5=9a40fc8c3d7e0ca4f6c414dda6f27e46
  SHA1=1b33f1a94d71df5df798236886e29aaf9f874ea6

Diffs from 4.8-20131219 are available in the diffs/ subdirectory.

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


[Bug sanitizer/59600] no_sanitize_address mishandled when function is inlined

2013-12-26 Thread pinskia at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59600

--- Comment #6 from Andrew Pinski pinskia at gcc dot gnu.org ---
Comment on attachment 31516
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=31516
New patch based on Andrew's review

No this wrong in two ways. Move the check to before the check of the target
attribute table. And second you should compare the current function attribute
to fndecl attribute.


[Bug target/59601] [4.9 Regression] __attribute__ ((target(arch=corei7))) won't match Westmere processor

2013-12-26 Thread ubizjak at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59601

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

 1. No change.  __attribute__ ((target(arch=corei7))) won't
 match Westmere and function won't be optimized for Westmere.
 2. Make PROCESSOR_NEHALEM to match corei7 for function
 versioning. But __attribute__ ((target(arch=nehalem))) function
 may be used on Westmere.  I think it is OK since function
 versioning doesn't support extra ISAs on Westmere.

I don't see the problem here. If corei7 is requested, then we want to cover all
corei7 subtypes, including Nehalem. So, choice 1 - no change.

mv.C failure migh be a testcase problem. However, the testcase works for me on
ivybridge, which is also corei7 arch with popcnt.

[Bug sanitizer/59600] no_sanitize_address mishandled when function is inlined

2013-12-26 Thread y.gribov at samsung dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59600

--- Comment #7 from Yury Gribov y.gribov at samsung dot com ---
(In reply to Andrew Pinski from comment #6)
 Move the check to before the check of the target
 attribute table.

My bad.

 And second you should compare the current function
 attribute to fndecl attribute.

You mean compare caller's and callee's attributes? Makes a lot of sense but I
don't think this info is available at the time function_attribute_inlinable_p
is called:

(gdb) b function_attribute_inlinable_p
(gdb) r
(gdb) call debug_generic_stmt(fndecl)
mark_maybe_pointer

(gdb) call debug_generic_stmt(current_function_decl)
mark_maybe_pointer

Perhaps this check should be moved to e.g. expand_call_inline?


[Bug target/59601] [4.9 Regression] __attribute__ ((target(arch=corei7))) won't match Westmere processor

2013-12-26 Thread ubizjak at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59601

--- Comment #2 from Uroš Bizjak ubizjak at gmail dot com ---
(In reply to Uroš Bizjak from comment #1)

 mv1.C failure migh be a testcase problem. However, the testcase works for me
 on ivybridge, which is also corei7 arch with popcnt.

It also fails for me if I remove avx alternative. Looks like a bug, indeed.

Following test doesn't work on ivbridge (a corei7 cpu):

--cut here--
#include assert.h

/* Default version.  */
int foo (); // Extra declaration that is merged with the second one.
int foo () __attribute__ ((target(default)));

int foo () __attribute__ ((target(arch=corei7)));

int (*p)() = foo;
int main ()
{
  int val = foo ();
  assert (val ==  (*p)());

  /* Check in the exact same order in which the dispatching
 is expected to happen.  */
  if (__builtin_cpu_is (corei7))
assert (val == 5);
  else
assert (val == 0);

  return 0;
}

int __attribute__ ((target(default)))
foo ()
{
  return 0;
}

int __attribute__ ((target(arch=corei7)))
foo ()
{
  return 5;
}
--cut here--

It looks to me that dispatcher doesn't call corei7 version, while
__builtin_cpu_is works OK.

[Bug target/59601] [4.9 Regression] __attribute__ ((target(arch=corei7))) won't match Westmere processor

2013-12-26 Thread ubizjak at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59601

Uroš Bizjak ubizjak at gmail dot com changed:

   What|Removed |Added

   Target Milestone|--- |4.9.0

[Bug target/59601] [4.9 Regression] __attribute__ ((target(arch=corei7))) won't match Westmere processor

2013-12-26 Thread ubizjak at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59601

Uroš Bizjak ubizjak at gmail dot com changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2013-12-26
 Ever confirmed|0   |1

--- Comment #3 from Uroš Bizjak ubizjak at gmail dot com ---
4.8 generates:

_Z3foov.resolver:
subq$8, %rsp
call__cpu_indicator_init
cmpl$3, __cpu_model+4(%rip)
movl$_Z3foov.arch_corei7, %eax
movl$_Z3foov, %edx
cmovne%rdx, %rax
addq$8, %rsp
ret

4.9:

_Z3foov.resolver:
subq$8, %rsp
call__cpu_indicator_init
cmpl$1, __cpu_model+8(%rip)
movl$_Z3foov.arch_corei7, %edx
movl$_Z3foov, %eax
cmove%rdx, %rax
addq$8, %rsp
ret

4.9 looks at subtype (__cpu_model+8), which is wrong. corei7 is processor type,
located at (__cpu_model+4).

[Bug target/59576] sorry, unimplemented: making multiple clones error on *-apple-darwin*

2013-12-26 Thread dominiq at lps dot ens.fr
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59576

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

   What|Removed |Added

 CC||jason at gcc dot gnu.org

--- Comment #1 from Dominique d'Humieres dominiq at lps dot ens.fr ---
AFAICT this has been fixed by r206182.


[Bug c++/41090] [4.7/4.8/4.9 Regression] Using static label reference in c++ class constructor produces wrong code

2013-12-26 Thread dominiq at lps dot ens.fr
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41090

--- Comment #21 from Dominique d'Humieres dominiq at lps dot ens.fr ---
The test g++.dg/ext/label13.C XPASS after r20182 on darwin.


[Bug target/59601] [4.9 Regression] __attribute__ ((target(arch=corei7))) won't match Westmere processor

2013-12-26 Thread hjl.tools at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59601

--- Comment #4 from H.J. Lu hjl.tools at gmail dot com ---
Before my cleanup, get_builtin_code_for_version had

  switch (new_target-arch)
{
case PROCESSOR_CORE2:
  arg_str = core2;
  priority = P_PROC_SSSE3;
  break;
case PROCESSOR_COREI7:
  arg_str = corei7;
  priority = P_PROC_SSE4_2;
  break;
case PROCESSOR_COREI7_AVX:
  arg_str = corei7-avx;
  priority = P_PROC_SSE4_2;
  break;

and fold_builtin_cpu had

  enum processor_model
  {
M_INTEL = 1,
M_AMD,
M_CPU_TYPE_START,
M_INTEL_ATOM,
M_INTEL_CORE2,
M_INTEL_COREI7,
M_AMDFAM10H,
M_AMDFAM15H,
M_INTEL_SLM,
M_CPU_SUBTYPE_START,
M_INTEL_COREI7_NEHALEM,
M_INTEL_COREI7_WESTMERE,
M_INTEL_COREI7_SANDYBRIDGE,
...
  const arch_names_table[] =
{
  {amd, M_AMD},
  {intel, M_INTEL},
  {atom, M_INTEL_ATOM},
  {slm, M_INTEL_SLM},
  {core2, M_INTEL_CORE2},
  {corei7, M_INTEL_COREI7},
  {nehalem, M_INTEL_COREI7_NEHALEM},
  {westmere, M_INTEL_COREI7_WESTMERE},
  {sandybridge, M_INTEL_COREI7_SANDYBRIDGE},

__attribute__ ((target(arch=corei7))) is mapped to
M_INTEL_COREI7.  After my cleanup, get_builtin_code_for_version has

  switch (new_target-arch)
{
case PROCESSOR_CORE2:
  arg_str = core2;
  priority = P_PROC_SSSE3;
  break;
case PROCESSOR_NEHALEM:
  arg_str = nehalem;
  priority = P_PROC_SSE4_2;
  break;
case PROCESSOR_SANDYBRIDGE:
  arg_str = sandybridge;
  priority = P_PROC_AVX;
  break;
case PROCESSOR_HASWELL:
  arg_str = haswell;
  priority = P_PROC_AVX2;
  break;

and fold_builtin_cpu has

 enum processor_model
  {
M_INTEL = 1,
M_AMD,
M_CPU_TYPE_START,
M_INTEL_BONNELL,
M_INTEL_CORE2,
M_INTEL_COREI7,
M_AMDFAM10H,
M_AMDFAM15H,
M_INTEL_SILVERMONT,
M_AMD_BOBCAT,
M_AMD_JAGUAR,
M_CPU_SUBTYPE_START,
M_INTEL_COREI7_NEHALEM,
M_INTEL_COREI7_WESTMERE,
M_INTEL_COREI7_SANDYBRIDGE,
...
  const arch_names_table[] =
{
  {amd, M_AMD},
  {intel, M_INTEL},
  {atom, M_INTEL_BONNELL},
  {slm, M_INTEL_SILVERMONT},
  {core2, M_INTEL_CORE2},
  {corei7, M_INTEL_COREI7},
  {nehalem, M_INTEL_COREI7_NEHALEM},
  {westmere, M_INTEL_COREI7_WESTMERE},
  {sandybridge, M_INTEL_COREI7_SANDYBRIDGE},
  {ivybridge, M_INTEL_COREI7_IVYBRIDGE},
  {haswell, M_INTEL_COREI7_HASWELL},
  {bonnell, M_INTEL_BONNELL},
  {silvermont, M_INTEL_SILVERMONT},

__attribute__ ((target(arch=corei7))) is translated to
PROCESSOR_NEHALEM mapped to M_INTEL_COREI7_NEHALEM. We
used to have __attribute__ ((target(arch=corei7)))
to cover M_INTEL_COREI7_. Now it only covers
M_INTEL_COREI7_NEHALEM.  We have PROCESSOR_SANDYBRIDGE
and PROCESSOR_HASWELL.  But there is nothing to mark
Westmere and Ivy Bridge.  Since function versioning
doesn't support extra ISAs in Westmere and Ivy Bridge,
we don't lose anything. The solution is to map
__attribute__ ((target(arch=corei7))) and
__attribute__ ((target(arch=nehalem))) to
M_INTEL_COREI7 with

diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index 37bb656..69438c1 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -30010,7 +30010,10 @@ get_builtin_code_for_version (tree decl, tree
*predicate_list)
 priority = P_PROC_SSSE3;
 break;
   case PROCESSOR_NEHALEM:
-arg_str = nehalem;
+/* We translate arch=corei7 and arch=nehelam to
+  corei7 so that it will be mapped to M_INTEL_COREI7
+  as cpu type.  */
+arg_str = corei7;
 priority = P_PROC_SSE4_2;
 break;
   case PROCESSOR_SANDYBRIDGE:


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

2013-12-26 Thread izamyatin at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59379

--- Comment #10 from Igor Zamyatin izamyatin at gmail dot com ---
I could build profiled bootstrap for r204980 successfully


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

2013-12-26 Thread hjl.tools at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59379

--- Comment #11 from H.J. Lu hjl.tools at gmail dot com ---
(In reply to Igor Zamyatin from comment #10)
 I could build profiled bootstrap for r204980 successfully

Is that possible to find a testcase?


[Bug fortran/56674] [4.7/4.8/4.9 Regression] ICE in check_sym_interfaces

2013-12-26 Thread dominiq at lps dot ens.fr
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56674

--- Comment #5 from Dominique d'Humieres dominiq at lps dot ens.fr ---
This appeared at r181425.


[Bug fortran/59023] [4.9 regression] ICE in gfc_search_interface with BIND(C)

2013-12-26 Thread dominiq at lps dot ens.fr
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59023

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

   What|Removed |Added

 CC||bur...@net-b.de

--- Comment #3 from Dominique d'Humieres dominiq at lps dot ens.fr ---
The ICE appeared between r199034 (2013-05-17, no ICE) and r199221 (2013-05-22,
ICE).


[Bug c/59602] New: ARM, __attribute__((interrupt(FIQ))) causes internal compiler error with -O0

2013-12-26 Thread Sergey.Belyashov at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59602

Bug ID: 59602
   Summary: ARM, __attribute__((interrupt(FIQ))) causes internal
compiler error with -O0
   Product: gcc
   Version: 4.8.3
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c
  Assignee: unassigned at gcc dot gnu.org
  Reporter: Sergey.Belyashov at gmail dot com

I try to compile simple program. If I use some level of optimization more than
zero then no problem. But without optimization compiler dies:

$ arm-none-eabi-gcc -O0 -marm -march=armv4 -nostdlib -std=gnu99 -c -o bootldr.o
bootldr.c
bootldr.c: In function 'fiqHandler':
bootldr.c:5:1: error: insn does not satisfy its constraints:
 }
 ^
(insn 13 12 14 (set (reg/f:SI 13 sp)
(plus:SI (reg/f:SI 11 fp)
(const_int 4 [0x4]))) bootldr.c:5 5 {*arm_addsi3}
 (nil))
bootldr.c:5:1: internal compiler error: in note_invalid_constants, at
config/arm/arm.c:15751

$ cat bootldr.c
void fiqHandler(void) __attribute__ ((interrupt(FIQ)));
void fiqHandler(void)
{
__asm__ volatile(nop);
}

$ arm-none-eabi-gcc -v
Using built-in specs.
COLLECT_GCC=arm-none-eabi-gcc
COLLECT_LTO_WRAPPER=/usr/bin/../lib/gcc/arm-none-eabi/4.8.3/lto-wrapper
Target: arm-none-eabi
Configured with: /build/buildd/gcc-arm-none-eabi-4-8-2013q4/src/gcc/configure
--target=arm-none-eabi
--prefix=/build/buildd/gcc-arm-none-eabi-4-8-2013q4/install-native
--libexecdir=/build/buildd/gcc-arm-none-eabi-4-8-2013q4/install-native/lib
--infodir=/build/buildd/gcc-arm-none-eabi-4-8-2013q4/install-native/share/doc/gcc-arm-none-eabi/info
--mandir=/build/buildd/gcc-arm-none-eabi-4-8-2013q4/install-native/share/doc/gcc-arm-none-eabi/man
--htmldir=/build/buildd/gcc-arm-none-eabi-4-8-2013q4/install-native/share/doc/gcc-arm-none-eabi/html
--pdfdir=/build/buildd/gcc-arm-none-eabi-4-8-2013q4/install-native/share/doc/gcc-arm-none-eabi/pdf
--enable-languages=c,c++ --enable-plugins --disable-decimal-float
--disable-libffi --disable-libgomp --disable-libmudflap --disable-libquadmath
--disable-libssp --disable-libstdcxx-pch --disable-nls --disable-shared
--disable-threads --disable-tls --with-gnu-as --with-gnu-ld --with-newlib
--with-headers=yes --with-python-dir=share/gcc-arm-none-eabi
--with-sysroot=/build/buildd/gcc-arm-none-eabi-4-8-2013q4/install-native/arm-none-eabi
--with-host-libstdcxx='-static-libgcc -Wl,-Bstatic,-lstdc++,-Bdynamic -lm'
--with-pkgversion='GNU Tools for ARM Embedded Processors'
--with-multilib-list=armv6-m,armv7-m,armv7e-m,armv7-r
Thread model: single
gcc version 4.8.3 20131129 (release) [ARM/embedded-4_8-branch revision 205641]
(GNU Tools for ARM Embedded Processors) 

$ lsb_release -d
Description:Ubuntu 12.04.3 LTS


[Bug fortran/56169] Installation the Chromium from ports fails

2013-12-26 Thread dominiq at lps dot ens.fr
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56169

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

   What|Removed |Added

 Status|WAITING |RESOLVED
 Resolution|--- |INVALID

--- Comment #4 from Dominique d'Humieres dominiq at lps dot ens.fr ---
The error in the log 

configure: failed program was:
| 
|   program foo
|   real, parameter :: bar = sin (12.34 / 2.5)
|   end program foo

indicates a problem with gmp or mpfr (see
http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVEDcf_known_to_fail_type=allwordscf_known_to_work_type=allwordslist_id=78083longdesc=real%2C%20parameter%20%3A%3A%20bar%20%3D%20sinlongdesc_type=allwordssubstrquery_format=advancedresolution=INVALID
for duplicates).


[Bug fortran/46485] gfortran.dg/allocatable_scalar_5.f90 fails on s390-ibm-linux-gnu

2013-12-26 Thread dominiq at lps dot ens.fr
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46485

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

   What|Removed |Added

 Status|WAITING |RESOLVED
 Resolution|--- |FIXED

--- Comment #2 from Dominique d'Humieres dominiq at lps dot ens.fr ---
No feedback since more than six months. Closing as FIXED.


[Bug fortran/53035] ICE with deferred-length module variable

2013-12-26 Thread dominiq at lps dot ens.fr
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53035

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

   What|Removed |Added

 Status|WAITING |RESOLVED
 Resolution|--- |FIXED

--- Comment #8 from Dominique d'Humieres dominiq at lps dot ens.fr ---
 The tests in comments #4 and #5 compile with revision 187834 (2012-05-24), 
 but not with revision 187440 (2012-05-13). Could you test that your 
 application 
 compiles with gfortran 4.8.1?

I have tested that the original submittal compiles with 4.8.2. No feedback
since six months. Closing as FIXED.


[Bug fortran/50552] type name cannot be statement function dummy argument (r178939)

2013-12-26 Thread dominiq at lps dot ens.fr
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50552

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

   What|Removed |Added

 Status|WAITING |RESOLVED
 Resolution|--- |INVALID

--- Comment #5 from Dominique d'Humieres dominiq at lps dot ens.fr ---
Poster more than two years ago:
  I am traveling in Korea, and I cannot look at the standard now.
  If you believe this is a non-issue then please close it.

Posted more than six months ago:
 Before I close this PR as INVALID, could someone have a look at it?

No feedback, closing as INVALID.


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

2013-12-26 Thread hjl.tools at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59379

--- Comment #12 from H.J. Lu hjl.tools at gmail dot com ---
(In reply to Igor Zamyatin from comment #10)
 I could build profiled bootstrap for r204980 successfully

It isn't about profiled bootstrap.  It is about make check in
libgomp.  All libgomp tests go into an infinite loop.  It still
happens with r206208.


[Bug target/59601] [4.9 Regression] __attribute__ ((target(arch=corei7))) won't match Westmere processor

2013-12-26 Thread hjl at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59601

--- Comment #5 from hjl at gcc dot gnu.org hjl at gcc dot gnu.org ---
Author: hjl
Date: Thu Dec 26 14:47:15 2013
New Revision: 206212

URL: http://gcc.gnu.org/viewcvs?rev=206212root=gccview=rev
Log:
Map arch=corei7/arch=nehalem to M_INTEL_COREI7

After Intel processor name cleanup,

__attribute__ ((target(arch=corei7))) is translated to PROCESSOR_NEHALEM
and mapped to M_INTEL_COREI7_NEHALEM.

__attribute__ ((target(arch=corei7)))

used to cover M_INTEL_COREI7_. Now it only covers M_INTEL_COREI7_NEHALEM.
We have PROCESSOR_SANDYBRIDGE and PROCESSOR_HASWELL.  But there is nothing
to mark Westmere and Ivy Bridge.  Since function versioning doesn't support
extra ISAs in Westmere and Ivy Bridge, we don't lose anything. The solution
is to map

__attribute__ ((target(arch=corei7)))

and

__attribute__ ((target(arch=nehalem)))

to M_INTEL_COREI7.

gcc/

PR target/59601
* config/i386/i386.c (get_builtin_code_for_version): Map
PROCESSOR_NEHALEM to corei7.

gcc/testsuite/

PR target/59601
* g++.dg/ext/mv14.C: New tests.
* g++.dg/ext/mv15.C: Likewise.

Added:
trunk/gcc/testsuite/g++.dg/ext/mv14.C
trunk/gcc/testsuite/g++.dg/ext/mv15.C
Modified:
trunk/gcc/ChangeLog
trunk/gcc/config/i386/i386.c
trunk/gcc/testsuite/ChangeLog


[Bug fortran/59023] [4.9 regression] ICE in gfc_search_interface with BIND(C)

2013-12-26 Thread tkoenig at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59023

Thomas Koenig tkoenig at gcc dot gnu.org changed:

   What|Removed |Added

 CC||tkoenig at gcc dot gnu.org

--- Comment #4 from Thomas Koenig tkoenig at gcc dot gnu.org ---
Valgrind backtrace:


==19413== Memcheck, a memory error detector
==19413== Copyright (C) 2002-2012, and GNU GPL'd, by Julian Seward et al.
==19413== Using Valgrind-3.8.1 and LibVEX; rerun with -h for copyright info
==19413== Command: /home/ig25/lib/gcc/x86_64-unknown-linux-gnu/4.9.0/f951
foo.f90
==19413== 
==19413== Invalid read of size 4
==19413==at 0x57708A: gfc_search_interface(gfc_interface*, int,
gfc_actual_arglist**) (interface.c:3439)
==19413==by 0x5BD333: gfc_resolve_expr(gfc_expr*) (resolve.c:2480)
==19413==by 0x5C1C03: resolve_code(gfc_code*, gfc_namespace*)
(resolve.c:9775)
==19413==by 0x5C4BBE: resolve_codes(gfc_namespace*) (resolve.c:14566)
==19413==by 0x5C4AC7: resolve_codes(gfc_namespace*) (resolve.c:14552)
==19413==by 0x5C4CA2: gfc_resolve(gfc_namespace*) [clone .part.45]
(resolve.c:14594)
==19413==by 0x5B0BEF: gfc_parse_file() (parse.c:4672)
==19413==by 0x5EE8C5: gfc_be_parse_file() (f95-lang.c:188)
==19413==by 0x9F9E55: compile_file() (toplev.c:547)
==19413==by 0x9FBE27: toplev_main(int, char**) (toplev.c:1887)
==19413==by 0x5A54BE4: (below main) (in /lib64/libc-2.18.so)
==19413==  Address 0x8b4853fd89495554 is not stack'd, malloc'd or (recently)
free'd
==19413==


[Bug ipa/58721] [4.9 Regression] The subroutine perdida is no longer inlined in fatigue.f90

2013-12-26 Thread hubicka at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58721

--- Comment #17 from Jan Hubicka hubicka at gcc dot gnu.org ---
Created attachment 31517
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=31517action=edit
Patch to extend __builtin_expect

Hi,
this patch adds internal use only parameter to builtin_expect that Fortran can
use to specify type of in builtin_unlikely/likely.


[Bug target/59588] No need to check generic nor change i686 for -mtune=

2013-12-26 Thread hjl at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59588

--- Comment #3 from hjl at gcc dot gnu.org hjl at gcc dot gnu.org ---
Author: hjl
Date: Thu Dec 26 16:10:55 2013
New Revision: 206213

URL: http://gcc.gnu.org/viewcvs?rev=206213root=gccview=rev
Log:
Don't check/change generic/i686 tuning

gcc/

PR target/59588
* config/i386/i386.c (ix86_option_override_internal): Don't
check generic tuning.  Don't change i686 tuning.

gcc/testsuite/

PR target/59588
* gcc.target/i386/pr59588-1.c: New file.
* gcc.target/i386/pr59588-2.c: Likewise.

Added:
trunk/gcc/testsuite/gcc.target/i386/pr59588-1.c
trunk/gcc/testsuite/gcc.target/i386/pr59588-2.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/config/i386/i386.c
trunk/gcc/testsuite/ChangeLog


[Bug libstdc++/59603] New: std::random_shuffle tries to swap element with itself

2013-12-26 Thread fab at orlen dot de
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59603

Bug ID: 59603
   Summary: std::random_shuffle tries to swap element with itself
   Product: gcc
   Version: 4.8.2
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: libstdc++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: fab at orlen dot de

When using the debugging macro _GLIBCXX_DEBUG, calling random_shuffle fails on
some types, because it might try to swap an element with itself.

Output of attached program:

/tmp$ g++ -o random_shuffle_bug -std=c++11 random_shuffle_bug.cc 
/tmp$ ./random_shuffle_bug 
/usr/include/c++/4.8.2/debug/vector:159:error: attempt to self move assign.

Objects involved in the operation:
sequence this @ 0x0xa600c8 {
  type = NSt7__debug6vectorIiSaIiEEE;
}
Aborted (core dumped)

return code: 134

I could not find any information about whether swapping an element with itself
is allowed.


[Bug libstdc++/59603] std::random_shuffle tries to swap element with itself

2013-12-26 Thread fab at orlen dot de
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59603

--- Comment #1 from Fabian Emmes fab at orlen dot de ---
Created attachment 31518
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=31518action=edit
program triggering the error


[Bug fortran/58003] internal compiler error: in convert_mpz_to_unsigned, at fortran/simplify.c:165

2013-12-26 Thread tkoenig at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58003

Thomas Koenig tkoenig at gcc dot gnu.org changed:

   What|Removed |Added

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

--- Comment #4 from Thomas Koenig tkoenig at gcc dot gnu.org ---
I have a patch.


[Bug fortran/59604] New: Constant comparisons with -fno-range-check and int(z'...')

2013-12-26 Thread tkoenig at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59604

Bug ID: 59604
   Summary: Constant comparisons with -fno-range-check and
int(z'...')
   Product: gcc
   Version: 4.9.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: fortran
  Assignee: unassigned at gcc dot gnu.org
  Reporter: tkoenig at gcc dot gnu.org

Trying out a fix for PR 58003, I found that the following program was of the
opinion that -1 does not equal -1:

ig25@linux-fd1f:~/Krempel/NoRange cat bar.f90
program test
  use iso_fortran_env
  implicit none

  integer, parameter :: wt = int32

  print *, int(z'',wt)
  print *, int(z'',wt) /= -1

end program test
ig25@linux-fd1f:~/Krempel/NoRange gfortran -fno-range-check bar.f90 
ig25@linux-fd1f:~/Krempel/NoRange ./a.out
  -1
 T


[Bug target/59601] [4.9 Regression] __attribute__ ((target(arch=corei7))) won't match Westmere processor

2013-12-26 Thread hjl.tools at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59601

H.J. Lu hjl.tools at gmail dot com changed:

   What|Removed |Added

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

--- Comment #6 from H.J. Lu hjl.tools at gmail dot com ---
Fixed.


[Bug c++/41090] [4.7/4.8/4.9 Regression] Using static label reference in c++ class constructor produces wrong code

2013-12-26 Thread dave.anglin at bell dot net
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41090

--- Comment #22 from dave.anglin at bell dot net ---
On 26-Dec-13, at 7:28 AM, dominiq at lps dot ens.fr wrote:

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

 --- Comment #21 from Dominique d'Humieres dominiq at lps dot  
 ens.fr ---
 The test g++.dg/ext/label13.C XPASS after r20182 on darwin.


Likewise on hppa2.0w-hp-hpux11.11.

Dave
--
John David Anglindave.ang...@bell.net


[Bug target/59588] No need to check generic nor change i686 for -mtune=

2013-12-26 Thread hjl.tools at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59588

H.J. Lu hjl.tools at gmail dot com changed:

   What|Removed |Added

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

--- Comment #4 from H.J. Lu hjl.tools at gmail dot com ---
Fixed on trunk.  No plan to backport to release branches.


[Bug c++/59598] very simple code using file open for read

2013-12-26 Thread denis.v.koles...@safe-mail.net
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59598

Denis Kolesnik denis.v.koles...@safe-mail.net changed:

   What|Removed |Added

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

--- Comment #6 from Denis Kolesnik denis.v.koles...@safe-mail.net ---
please tell me where in this corrected code I made mistake:



// a small text file filter.c //

#include stdio.h



main(int argc, char* argv[])

{


char c, previous_c;   

int word_begin_position[3000];


int spec_symbol[7]={0xAE,0xBB,0xAB,0xA9,0x22,0x2F,0x27};


int eof_symbol[2]={0x0D,0x0A};
int search_result;

int this_is_the_same_word;
int words_count;
int word_number;

int search_result_A_count;
int search_result_space;

FILE *stream,*stream2;


int i, j, characters_count, character_number;



characters_count=0;

stream = fopen (argv[1],r);

while ((c = fgetc(stream)) != EOF) 

{
characters_count++;

}
fclose(stream);
//printf(total characters are %i\n, characters_count); 


character_number=1;
words_count=0;
previous_c=0;


stream = fopen (argv[1],r);

while ((c = fgetc(stream)) != EOF) 

{
if(((c!=0x20)  (character_number==1)) || ((previous_c==0x20) 
(c!=0x20)  (c!=0x0A)) || ((previous_c!=0x20)  (c==0x0D)) || ((c!=0x20) 
(c!=0x0D)  (c!=0x0A)  (previous_c==0x0A)) || ((previous_c!=0x20) 
(previous_c!=0x0A)  (character_number==characters_count)  (c==0x20)))

//1. ((c!=0x20)  (character_number==1))
//2. ((previous_c==0x20)  (c!=0x20)  (c!=0x0A))
//3. ((previous_c!=0x20)  (c==0x0D))
//!((previous_c!=0x0D)  (c==0x0A))
//4. ((c!=0x20)  (c!=0x0D)  (c!=0x0A)  (previous_c==0x0A))
//5. ((previous_c!=0x20)  (previous_c!=0x0A) 
(character_number==characters_count)  (c==0x20))

this_is_the_same_word=0;
else
this_is_the_same_word=1;

if(this_is_the_same_word==0)
{
words_count++;
word_begin_position[words_count]=character_number;

//printf( the begin char is .
%i,word_begin_position[words_count]);
}

//if(character_number==characters_count)
//printf(the last character);
/*
printf( the number of words is %i\n, words_count);
printf( the current character is . %c\n, c);
if(c==0x0D)
printf( the current character is . 0x0D\n);
if(c==0x0A)
printf( the current character is . 0x0A\n);
*/
previous_c=c;
character_number++;
}
fclose(stream);



word_number=1;
character_number=1;
stream = fopen (argv[1],r);

//stream2 = fopen (argv[2],w);

while ((c = fgetc(stream)) != EOF) 

{
//if((character_number = word_begin_position[word_number]) 
(character_number = word_begin_position[word_number+1]))
if(c==0x0D)
then
{
//fprintf(stream2,%s, \\r\\n);
//if(c==EOF)
//then 
//printf(A);
//else
//printf(%s,c);
printf(%s, c);
}
//else
//word_number++;

character_number++;
}
fclose(stream);
//printf( the number of words is %i, words_count);



return 0;

}



why this portion of code: 



if(c==0x0D)
then
{
//fprintf(stream2,%s, \\r\\n);
//if(c==EOF)
//then 
//printf(A);
//else
//printf(%s,c);
printf(%s, c);
}
//else
//word_number++;



reports:



replace_1.c: In function 'main':
replace_1.c:112:3: error: 'then' undeclared (first use in this function)
replace_1.c:112:3: note: each undeclared identifier is reported only once for
ea
ch function it appears in
replace_1.c:113:3: error: expected ';' before '{' token


[Bug c++/59598] very simple code using file open for read

2013-12-26 Thread denis.v.koles...@safe-mail.net
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59598

--- Comment #7 from Denis Kolesnik denis.v.koles...@safe-mail.net ---
I found my error, sorry for it.


[Bug c++/59598] very simple code using file open for read

2013-12-26 Thread denis.v.koles...@safe-mail.net
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59598

Denis Kolesnik denis.v.koles...@safe-mail.net changed:

   What|Removed |Added

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

--- Comment #8 from Denis Kolesnik denis.v.koles...@safe-mail.net ---
I found my mistake


[Bug c++/59598] very simple code using file open for read

2013-12-26 Thread denis.v.koles...@safe-mail.net
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59598

Denis Kolesnik denis.v.koles...@safe-mail.net changed:

   What|Removed |Added

 Resolution|FIXED   |INVALID

--- Comment #9 from Denis Kolesnik denis.v.koles...@safe-mail.net ---
I found my mistake


[Bug c++/59598] very simple code using file open for read

2013-12-26 Thread denis.v.koles...@safe-mail.net
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59598

--- Comment #10 from Denis Kolesnik denis.v.koles...@safe-mail.net ---
:
the then is obivious,


[Bug c++/59598] very simple code using file open for read

2013-12-26 Thread denis.v.koles...@safe-mail.net
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59598

Denis Kolesnik denis.v.koles...@safe-mail.net changed:

   What|Removed |Added

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

--- Comment #11 from Denis Kolesnik denis.v.koles...@safe-mail.net ---
why in this code:



// a small text file filter.c //

#include stdio.h





main(int argc, char* argv[])

{


char c, previous_c;   

int word_begin_position[3000];


int spec_symbol[7]={0xAE,0xBB,0xAB,0xA9,0x22,0x2F,0x27};


int eof_symbol[2]={0x0D,0x0A};
int search_result;

int this_is_the_same_word;
int words_count;
int word_number;

int search_result_A_count;
int search_result_space;

FILE *stream,*stream2;


int i, j, characters_count, character_number;



characters_count=0;

stream = fopen (argv[1],r);

while ((c = fgetc(stream)) != EOF) 

{
characters_count++;

}
fclose(stream);
//printf(total characters are %i\n, characters_count); 


character_number=1;
words_count=0;
previous_c=0;


stream = fopen (argv[1],r);

while ((c = fgetc(stream)) != EOF) 

{
if(((c!=0x20)  (character_number==1)) || ((previous_c==0x20) 
(c!=0x20)  (c!=0x0A)) || ((previous_c!=0x20)  (c==0x0D)) || ((c!=0x20) 
(c!=0x0D)  (c!=0x0A)  (previous_c==0x0A)) || ((previous_c!=0x20) 
(previous_c!=0x0A)  (character_number==characters_count)  (c==0x20)))

//1. ((c!=0x20)  (character_number==1))
//2. ((previous_c==0x20)  (c!=0x20)  (c!=0x0A))
//3. ((previous_c!=0x20)  (c==0x0D))
//!((previous_c!=0x0D)  (c==0x0A))
//4. ((c!=0x20)  (c!=0x0D)  (c!=0x0A)  (previous_c==0x0A))
//5. ((previous_c!=0x20)  (previous_c!=0x0A) 
(character_number==characters_count)  (c==0x20))

this_is_the_same_word=0;
else
this_is_the_same_word=1;

if(this_is_the_same_word==0)
{
words_count++;
word_begin_position[words_count]=character_number;

//printf( the begin char is .
%i,word_begin_position[words_count]);
}

//if(character_number==characters_count)
//printf(the last character);
/*
printf( the number of words is %i\n, words_count);
printf( the current character is . %c\n, c);
if(c==0x0D)
printf( the current character is . 0x0D\n);
if(c==0x0A)
printf( the current character is . 0x0A\n);
*/
previous_c=c;
character_number++;
}
fclose(stream);



word_number=1;
character_number=1;
stream = fopen (argv[1],r);

//stream2 = fopen (argv[2],w);

while ((c = fgetc(stream)) != EOF) 

{
if((character_number = word_begin_position[word_number]) 
(character_number = word_begin_position[word_number+1]))
{
if(c==0x0D)
printf(A);
else
printf(%s, c);
}
//else
//word_number++;

character_number++;
}
fclose(stream);
//printf( the number of words is %i, words_count);



return 0;

}



the portion:



if(c==0x0D)
printf(A);
else
printf(%s, c);



results in error while program run??


[Bug middle-end/59605] New: [4.9 Regression] error: wrong number of branch edges after unconditional jump in bb 11

2013-12-26 Thread hjl.tools at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59605

Bug ID: 59605
   Summary: [4.9 Regression] error: wrong number of branch edges
after unconditional jump in bb 11
   Product: gcc
   Version: unknown
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: middle-end
  Assignee: unassigned at gcc dot gnu.org
  Reporter: hjl.tools at gmail dot com

On Linux/x86, r206213  gave

[hjl@gnu-18 gcc]$ cat bad.c
#define BUFFER_SIZE (16*1024*1024 + AVG_SIZE*2)
/*#define MEMORY_COPIES (1024*1024*64*(long long)10)*/
char t[BUFFER_SIZE];
main()
{
  unsigned int i;
  for (i=0;i((long long)MEMORY_COPIES + AVG_SIZE * 2 - 1)/AVG_SIZE*2;i++)
#ifdef test_memset
__builtin_memset (t+(i*1024*1024+i*1)%(BUFFER_SIZE - AVG_SIZE*2), i,
(AVG_SIZE + i) % (AVG_SIZE * 2 + 0));
#else
__builtin_memcpy (t+(i*1024*1024+i*1)%(BUFFER_SIZE - AVG_SIZE*2),
t+((i+1)*1024*1024*4+i*1)%(BUFFER_SIZE - AVG_SIZE *2), (AVG_SIZE + i) %
(AVG_SIZE * 2 + 0));
#endif
  return 0;
}
[hjl@gnu-18 gcc]$ ./xgcc -B ./  -x c -O3 -minline-stringops-dynamically
-DAVG_SIZE=8192000 -DMEMORY_COPIES=64000 bad.c
bad.c: In function ‘main’:
bad.c:14:1: error: wrong number of branch edges after unconditional jump in bb
11
 }
 ^
bad.c:14:1: error: wrong number of branch edges after unconditional jump in bb
7
bad.c:14:1: internal compiler error: verify_flow_info failed
0x666c23 verify_flow_info()
/export/gnu/import/git/gcc/gcc/cfghooks.c:260
0xe25a53 try_optimize_cfg
/export/gnu/import/git/gcc/gcc/cfgcleanup.c:2857
0xe25a53 cleanup_cfg(int)
/export/gnu/import/git/gcc/gcc/cfgcleanup.c:3022
0x665412 gimple_expand_cfg
/export/gnu/import/git/gcc/gcc/cfgexpand.c:5837
0x665412 execute
/export/gnu/import/git/gcc/gcc/cfgexpand.c:5932
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See http://gcc.gnu.org/bugs.html for instructions.
[hjl@gnu-18 gcc]$

[Bug target/59605] [4.9 Regression] error: wrong number of branch edges after unconditional jump in bb 11

2013-12-26 Thread hjl.tools at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59605

H.J. Lu hjl.tools at gmail dot com changed:

   What|Removed |Added

 CC||hubicka at ucw dot cz
  Component|middle-end  |target
   Target Milestone|--- |4.9.0

--- Comment #1 from H.J. Lu hjl.tools at gmail dot com ---
It is caused by r203937.


[Bug c++/59598] very simple code using file open for read

2013-12-26 Thread pinskia at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59598

Andrew Pinski pinskia at gcc dot gnu.org changed:

   What|Removed |Added

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

--- Comment #12 from Andrew Pinski pinskia at gcc dot gnu.org ---
You want %c.  This is not the correct place to ask questions about C
programming.  This is a place to report bugs in GCC.


[Bug c++/59598] very simple code using file open for read

2013-12-26 Thread denis.v.koles...@safe-mail.net
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59598

--- Comment #13 from Denis Kolesnik denis.v.koles...@safe-mail.net ---
(In reply to Andrew Pinski from comment #12)
 You want %c.  This is not the correct place to ask questions about C
 programming.  This is a place to report bugs in GCC.



:
thanks for help


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

2013-12-26 Thread vyf at princeton dot edu
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59606

Bug ID: 59606
   Summary: Internal compiler error: Error reporting routines
re-entered.
   Product: gcc
   Version: 4.7.3
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: vyf at princeton dot edu

Everything was working fine until I changed some things in the source
(specifically, added an aligned_storage member), and then I get this output
from Eclipse:

Building file: ../main.cpp
Invoking: GCC C++ Compiler
g++ -D__cplusplus=201103L -O0 -g3 -Wall -c -fmessage-length=0 -std=c++11 -MMD
-MP -MFmain.d -MTmain.d -o main.o ../main.cpp
‘
Internal compiler error: Error reporting routines re-entered.
Please submit a full bug report,
with preprocessed source if appropriate.
See file:///usr/share/doc/gcc-4.7/README.Bugs for instructions.
Preprocessed source stored into /tmp/ccJaexzT.out file, please attach this to
your bugreport.
make: *** [main.o] Error 1

The file is attached, as requested.

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

2013-12-26 Thread vyf at princeton dot edu
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59607

Bug ID: 59607
   Summary: Internal compiler error: Error reporting routines
re-entered.
   Product: gcc
   Version: 4.7.3
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: vyf at princeton dot edu

Everything was working fine until I changed some things in the source
(specifically, added an aligned_storage member), and then I get this output
from Eclipse:

Building file: ../main.cpp
Invoking: GCC C++ Compiler
g++ -D__cplusplus=201103L -O0 -g3 -Wall -c -fmessage-length=0 -std=c++11 -MMD
-MP -MFmain.d -MTmain.d -o main.o ../main.cpp
‘
Internal compiler error: Error reporting routines re-entered.
Please submit a full bug report,
with preprocessed source if appropriate.
See file:///usr/share/doc/gcc-4.7/README.Bugs for instructions.
Preprocessed source stored into /tmp/ccJaexzT.out file, please attach this to
your bugreport.
make: *** [main.o] Error 1

The file is attached, as requested.

[Bug regression/59608] New: Unable to build working poedit v.1.5.x using gcc 4.8.2

2013-12-26 Thread je at ktf dot rtu.lv
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59608

Bug ID: 59608
   Summary: Unable to build working poedit v.1.5.x using gcc 4.8.2
   Product: gcc
   Version: 4.8.2
Status: UNCONFIRMED
  Severity: critical
  Priority: P3
 Component: regression
  Assignee: unassigned at gcc dot gnu.org
  Reporter: je at ktf dot rtu.lv

Hi!

I am not sure whetehr it is the right place to report a bug, but I am unable to
compile working poedit 1.5.7 on Slackware64-14/gcc 4.8.2/glibc-2.17. During
compile time there are some warnings, but compilation ends successfully.
Unfortunately, compiled app either dies with segfault or produces messages
about incorrectly used functions of wxWindows library.

I tried to invoke the app built for Ubuntu 12.04 and, to my surprise, app works
as expected, using libraries I have on my system. That led me to the conclusion
that something wrong happens during compilation.

Flags given to compiler: -O2 -fPIC


[Bug regression/59608] Unable to build working poedit v.1.5.x using gcc 4.8.2

2013-12-26 Thread je at ktf dot rtu.lv
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59608

--- Comment #1 from Janis je at ktf dot rtu.lv ---
Created attachment 31520
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=31520action=edit
configure log


[Bug regression/59608] Unable to build working poedit v.1.5.x using gcc 4.8.2

2013-12-26 Thread je at ktf dot rtu.lv
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59608

Janis je at ktf dot rtu.lv changed:

   What|Removed |Added

  Attachment #31519|0   |1
is obsolete||

--- Comment #2 from Janis je at ktf dot rtu.lv ---
Created attachment 31521
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=31521action=edit
make log


[Bug bootstrap/48415] GC Warning: Repeated allocation of very large block

2013-12-26 Thread steven at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48415

Steven Bosscher steven at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution|--- |WORKSFORME

--- Comment #2 from Steven Bosscher steven at gcc dot gnu.org ---
gcc-testresults has java results for powerpc64 and s390.


[Bug target/59605] [4.9 Regression] error: wrong number of branch edges after unconditional jump in bb 11

2013-12-26 Thread hjl.tools at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59605

H.J. Lu hjl.tools at gmail dot com changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2013-12-26
 Ever confirmed|0   |1

--- Comment #2 from H.J. Lu hjl.tools at gmail dot com ---
ix86_expand_set_or_movmem has

  rtx jump_around_label = NULL;

 /* Misaligned move sequences handles both prologues and epilogues at once.
 Default code generation results in smaller code for large alignments and
 also avoids redundant job when sizes are known precisely.  */
  if (misaligned_prologue_used)
{
  /* Misaligned move prologue handled small blocks by itself.  */
  expand_set_or_movmem_prologue_epilogue_by_misaligned_moves
   (dst, src, destreg, srcreg,
move_mode, promoted_val, vec_promoted_val,
count_exp,
jump_around_label,
desired_align  align
? MAX (desired_align, epilogue_size_needed) : epilogue_size_needed,
desired_align, align, min_size, dynamic_check, issetmem);
  if (!issetmem)
src = change_address (src, BLKmode, srcreg);
...
  else
{   
  rtx hot_label = gen_label_rtx ();
  jump_around_label = gen_label_rtx ();
^
When jump_around_label != NULL, the previous jump_around_label
is lost.
  emit_cmp_and_jump_insns (count_exp, GEN_INT (dynamic_check - 1),
   LEU, 0, GET_MODE (count_exp), 1, hot_label);
  predict_jump (REG_BR_PROB_BASE * 90 / 100);
  if (issetmem)
set_storage_via_libcall (dst, count_exp, val_exp, false);
  else
emit_block_move_via_libcall (dst, src, count_exp, false);
  emit_jump (jump_around_label);
  emit_label (hot_label);
}


[Bug rtl-optimization/29589] incorrect conversion of (ior (ashiftrt (plus ...))) in combine.c

2013-12-26 Thread steven at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29589

Steven Bosscher steven at gcc dot gnu.org changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution|--- |DUPLICATE

--- Comment #11 from Steven Bosscher steven at gcc dot gnu.org ---
Merry Christmas!

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


[Bug rtl-optimization/57829] Wrong constant folding

2013-12-26 Thread steven at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57829

Steven Bosscher steven at gcc dot gnu.org changed:

   What|Removed |Added

 CC||cqfu at transmeta dot com

--- Comment #5 from Steven Bosscher steven at gcc dot gnu.org ---
*** Bug 29589 has been marked as a duplicate of this bug. ***


[Bug target/59605] [4.9 Regression] error: wrong number of branch edges after unconditional jump in bb 11

2013-12-26 Thread hjl.tools at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59605

--- Comment #3 from H.J. Lu hjl.tools at gmail dot com ---
Does this

---
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index 0cf0a9d..07f9a86 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -24015,7 +24015,8 @@ ix86_expand_set_or_movmem (rtx dst, rtx src, rtx
count_exp, rtx val_exp,
   else
 {
   rtx hot_label = gen_label_rtx ();
-  jump_around_label = gen_label_rtx ();
+  if (jump_around_label == NULL_RTX)
+jump_around_label = gen_label_rtx ();
   emit_cmp_and_jump_insns (count_exp, GEN_INT (dynamic_check - 1),
LEU, 0, GET_MODE (count_exp), 1, hot_label);
   predict_jump (REG_BR_PROB_BASE * 90 / 100);
---

make any senses?


[Bug c/35579] false negatives in warn_unused_result

2013-12-26 Thread steven at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35579

Steven Bosscher steven at gcc dot gnu.org changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 CC||steven at gcc dot gnu.org
 Resolution|--- |WONTFIX

--- Comment #10 from Steven Bosscher steven at gcc dot gnu.org ---
But the false negatives cannot be fixed in the front end.
And it's not the result of foo() that is unused: It's assigned
to result. That result is unused is a different issue.


[Bug middle-end/38219] gcc.dg/tree-ssa/vrp47.c fails on powerpc

2013-12-26 Thread steven at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38219

Steven Bosscher steven at gcc dot gnu.org changed:

   What|Removed |Added

   Last reconfirmed|2011-02-16 18:44:32 |2013-12-27

--- Comment #16 from Steven Bosscher steven at gcc dot gnu.org ---
http://gcc.gnu.org/ml/gcc-testresults/2013-12/msg02265.html


[Bug c/41624] RFE: -fno-nested-functions

2013-12-26 Thread steven at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41624

Steven Bosscher steven at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution|--- |WONTFIX

--- Comment #2 from Steven Bosscher steven at gcc dot gnu.org ---
Switching on/off individual language dialect features won't happen.

(NB: I'd actually encourage anyone to use a strict non-gnu mode, for
portability reasons.)


[Bug libgomp/42519] bootstrap fails on powerpc64-linux because of libgomp

2013-12-26 Thread steven at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42519

--- Comment #6 from Steven Bosscher steven at gcc dot gnu.org ---
A serious candidate for WONTFIX... Laurent?


[Bug rtl-optimization/50180] insn does not satisfy constraints for 444.namd when generating profile data

2013-12-26 Thread steven at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50180

Steven Bosscher steven at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |WAITING
   Last reconfirmed||2013-12-26
 Ever confirmed|0   |1

--- Comment #1 from Steven Bosscher steven at gcc dot gnu.org ---
gcc 4.6 is no longer maintained. Is there still a bug here to fix?


[Bug target/50181] insn does not satisfy constraints for 481.wrf when generating profile data

2013-12-26 Thread steven at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50181

--- Comment #2 from Steven Bosscher steven at gcc dot gnu.org ---
gcc 4.6 is no longer maintained. Is there still a bug here to fix?
(The testcase of comment #1 works for me with r206195 on ppc64-linux.)


[Bug tree-optimization/53804] branch reordering missed optimization

2013-12-26 Thread steven at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53804

Steven Bosscher steven at gcc dot gnu.org changed:

   What|Removed |Added

   Keywords||missed-optimization
 Target||powerpc*-*-*
 Status|UNCONFIRMED |NEW
   Last reconfirmed||2013-12-26
 Ever confirmed|0   |1
  Known to fail||4.7.0, 4.8.0, 4.9.0


[Bug target/59605] [4.9 Regression] error: wrong number of branch edges after unconditional jump in bb 11

2013-12-26 Thread hjl.tools at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59605

--- Comment #4 from H.J. Lu hjl.tools at gmail dot com ---
A patch is posted at

http://gcc.gnu.org/ml/gcc-patches/2013-12/msg01907.html


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

2013-12-26 Thread vyf at princeton dot edu
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59607

vyf at princeton dot edu changed:

   What|Removed |Added

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

--- Comment #1 from vyf at princeton dot edu ---
There were bugs in my code:

std::forward(args)... should have been std::forwardArgs(args)...
new (get()) T(std::forwardArgs(args)...) should have been new (get())
optional(std::forwardArgs(args)...). I don't know why gcc had an error during
compilation because of this (it should have just pointed out these problems),
but everything works fine now that I fixed the bugs.


[Bug sanitizer/59600] no_sanitize_address mishandled when function is inlined

2013-12-26 Thread y.gribov at samsung dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59600

--- Comment #8 from Yury Gribov y.gribov at samsung dot com ---
Created attachment 31522
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=31522action=edit
Patch which inlines based on caller/callee attribute match

(In reply to Yury Gribov from comment #7)
  And second you should compare the current function
  attribute to fndecl attribute.
 
 You mean compare caller's and callee's attributes? Makes a lot of sense but
 I don't think this info is available at the time
 function_attribute_inlinable_p is called:
 
 ...
 
 Perhaps this check should be moved to e.g. expand_call_inline?

I'm giving this a try with this new patch. Does it look reasonable for you?


[Bug c/59609] New: LRA generates bad code for libgcc function udivmoddi4 on thumb1 target

2013-12-26 Thread terry.guo at arm dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59609

Bug ID: 59609
   Summary: LRA generates bad code for libgcc function udivmoddi4
on thumb1 target
   Product: gcc
   Version: unknown
Status: UNCONFIRMED
  Severity: blocker
  Priority: P3
 Component: c
  Assignee: unassigned at gcc dot gnu.org
  Reporter: terry.guo at arm dot com

Created attachment 31523
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=31523action=edit
a reduced case

Thumb-1 target like cortex-m0 hasn't hardware div instruction, thus the
function __udivmoddi4 in libgcc is used. However this function is wrongly
compiled by LRA which is enabled in recent gcc, codes that use __udivmoddi4
will get a wrong results. When print unsigned long long value using printf
function, the printf function will use __udivmoddi4 and eventually will end up
with dead loop.

Attachment is a reduced case based on __udivmoddi4 function.And I am using the
latest gcc trunk code. Compile the attached case with command:

arm-none-eabi-gcc -mthumb -mcpu=cortex-m0 -O2 -S myudi.c

then check the assembly code:

sub r3, r3, #32  should initialize ip after this insn
bpl .LCB31
b   .L4 @long jump
.LCB31:
mov ip, r3
mov r3, r9
mov r2, ip
lsl r3, r3, r2
mov r7, r3
.L5:
mov r3, r9
lsl r3, r3, r1
mov r6, r3
cmp r7, r5
bhi .L20
beq .L29
.L22:
mov r3, ip  Here is the wrong code, the ip is uninitialized.
sub r4, r4, r6
sbc r5, r5, r7
cmp r3, #0
bge .LCB50


[Bug target/59609] [4.9 Regression] LRA generates bad code for libgcc function udivmoddi4 on thumb1 target

2013-12-26 Thread pinskia at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59609

Andrew Pinski pinskia at gcc dot gnu.org changed:

   What|Removed |Added

Version|unknown |4.9.0
   Target Milestone|--- |4.9.0


[Bug target/59609] [4.9 Regression] LRA generates bad code for libgcc function udivmoddi4 on thumb1 target

2013-12-26 Thread terry.guo at arm dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59609

--- Comment #1 from Terry Guo terry.guo at arm dot com ---
Here are some investigations. In the dump of IRA pass, we have jump insn like:

(jump_insn 31 24 172 5 (parallel [
(set (pc)
(if_then_else (lt (plus:SI (reg/v:SI 119 [ i ])
(const_int -32 [0xffe0]))
(const_int 0 [0]))
(label_ref 35)
(pc)))
(set (reg:SI 181)
(plus:SI (reg/v:SI 119 [ i ])
(const_int -32 [0xffe0])))
(clobber (scratch:SI))
]) myudi.c:13 225 {*addsi3_cbranch}
 (int_list:REG_BR_PROB 2100 (nil))
 - 35)

Next in the dump of reload pass, it is turned into:

(jump_insn 31 254 255 5 (parallel [
(set (pc)
(if_then_else (lt (plus:SI (reg:SI 3 r3 [181])
(const_int -32 [0xffe0]))
(const_int 0 [0]))
(label_ref 35)
(pc)))
(set (reg:SI 3 r3 [181])
(plus:SI (reg:SI 3 r3 [181])
(const_int -32 [0xffe0])))
(clobber (scratch:SI))
]) myudi.c:13 225 {*addsi3_cbranch}
 (int_list:REG_BR_PROB 2100 (nil))
 - 35)
(insn 255 31 172 5 (set (reg:SI 12 ip [181])
(reg:SI 3 r3 [181])) myudi.c:13 197 {*thumb1_movsi_insn}
 (nil))

The subsequent passes will change the position of insn 255 and cause ip
uninitialized when do jump.

When disable LRA, in reload pass the jump_insn 31 will be turned into something
like:

(jump_insn 31 255 172 5 (parallel [
(set (pc)
(if_then_else (lt (plus:SI (reg:SI 0 r0)
(const_int -32 [0xffe0]))
(const_int 0 [0]))
(label_ref 35)
(pc)))
(set (reg:SI 12 ip [181])
(plus:SI (reg:SI 0 r0)
(const_int -32 [0xffe0])))
(clobber (reg:SI 0 r0))
]) myudi.c:13 225 {*addsi3_cbranch}
 (int_list:REG_BR_PROB 2100 (nil))
 - 35)

This is good and will produce correct code.


[Bug target/59609] [4.9 Regression] LRA generates bad code for libgcc function udivmoddi4 on thumb1 target

2013-12-26 Thread pinskia at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59609

--- Comment #2 from Andrew Pinski pinskia at gcc dot gnu.org ---
(In reply to Terry Guo from comment #1)
 Here are some investigations. In the dump of IRA pass, we have jump insn
 like:

And this is why the old saying of reload not cannot reload a jump instruction
comes true.


Re: [Patch, i386] PR 59422 - Support more targets for function multi versioning

2013-12-26 Thread Uros Bizjak
On Thu, Dec 26, 2013 at 7:28 AM, Gopalasubramanian, Ganesh
ganesh.gopalasubraman...@amd.com wrote:

 (get_amd_cpu): Handle AMD_BOBCAT, AMD_JAGUAR, AMDFAM15H_BDVER2 and
 AMDFAM15H_BDVER3.

 As mentioned earlier, we would like to stick with BTVER1 and BTVER2 instead 
 of using BOBCAT or JAGUAR.
 Attached patch does the changes.

OK.

I'm sorry I didn't notice previous conversation. Please install ASAP.

Thanks,
Uros.


RE: [Patch, i386] PR 59422 - Support more targets for function multi versioning

2013-12-26 Thread Gopalasubramanian, Ganesh
 I'm sorry I didn't notice previous conversation. Please install ASAP.

Thanks Uros! Committed to revision 206210.
- Ganesh



Re: [PATCH i386 4/8] [AVX512] [7/8] Add substed patterns: `round for expand' subst.

2013-12-26 Thread Kirill Yukhin
Hello Uros,
On 23 Dec 17:46, Uros Bizjak wrote:
 This round_expand_predicate is the predicate substitution I was
 referred to in the review of 5/8. Please use it also in insn patterns,
 perhaps renamed as round_predicate

This is drawback of substs. We bind given subst attribute to given subst
strictly. So, this guy:

+(define_subst_attr round_expand_predicate round_expand 
nonimmediate_operand register_operand)

is binded to round_expand (second argument of definition) subst and to it 
only.
That is way name is round_expand..., it reflects subst it relates to.

For rest substs I'll introduce dedicated attributes.

--
Thanks, K


Re: [Patch, i386] PR 59422 - Support more targets for function multi versioning

2013-12-26 Thread Allan Sandfeld Jensen
On Thursday 26 December 2013, Gopalasubramanian, Ganesh wrote:
 Hi,
 
  (get_amd_cpu): Handle AMD_BOBCAT, AMD_JAGUAR, AMDFAM15H_BDVER2 and
  AMDFAM15H_BDVER3.
 
 As mentioned earlier, we would like to stick with BTVER1 and BTVER2 instead
 of using BOBCAT or JAGUAR. Attached patch does the changes.
 
Sorry for missing your comment. Thanks for fixing it. Renaming the comments 
with the AMD family names might be overdoing it though. 

`Allan


Re: PATCH: PR target/59588: Don't check/change generic/i686 tuning

2013-12-26 Thread Jan Hubicka
 Hi Honza,
 
 We have combined generic32 and generic64 into generic.  There is no need
 to check generic anymore.  Also we shouldn't change -mtune=i686 into
 -mtune=generic.  OK to install?

The i686-generic change was intended to get generic optimized code
for i686-linux configuration rather than pentiumpro.  I think it still makes
sense to use this, since it is what most 32bit distros still configure for?

Honza


Re: [PATCH i386 4/8] [AVX512] [5/8] Add substed patterns: rounding subst.

2013-12-26 Thread Kirill Yukhin
Hello,

On 23 Dec 17:26, Uros Bizjak wrote:
 On Mon, Dec 23, 2013 at 5:11 PM, Uros Bizjak ubiz...@gmail.com wrote:
  So, OK for mainline, but I would kindly ask you to please wait a
  couple of days for possible Richard's comments
 
 When substituting constraints, please also substitute corresponding
 operand predicate:
 
 nonimmediate_operand - register_operand in 1st and 3rd case
 memory_operand - register_operand in 2nd case.

Thanks! I've introduced new subst attribute:
+(define_subst_attr round_nimm_predicate round nonimmediate_operand 
register_operand)

which name reflect:
  1.  affilation to `round' subst (`round')
  2.  predicate it intended to affect (`nimm_predicate')

TESTING
  1. Bootstrap pass.
  2. make check shows no regressions.
  3. Spec 2000  2006 build show no regressions both with and without -mavx512f 
option.
  4. Spec 2000  2006 run shows no regressions without -m512f option.

If no more inputs - I'll check it in after 24 hrs from now.

--
Thanks, K

---
 gcc/config/i386/i386.c   |  32 
 gcc/config/i386/i386.md  |  10 +
 gcc/config/i386/sse.md   | 480 ---
 gcc/config/i386/subst.md |  42 +
 4 files changed, 331 insertions(+), 233 deletions(-)

diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index ecf5e0b..a3dd307 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -15041,6 +15041,38 @@ ix86_print_operand (FILE *file, rtx x, int code)
fputs ({z}, file);
  return;
 
+   case 'R':
+ gcc_assert (CONST_INT_P (x));
+
+ if (ASSEMBLER_DIALECT == ASM_INTEL)
+   fputs (, , file);
+
+ switch (INTVAL (x))
+   {
+   case ROUND_NEAREST_INT:
+ fputs ({rn-sae}, file);
+ break;
+   case ROUND_NEG_INF:
+ fputs ({rd-sae}, file);
+ break;
+   case ROUND_POS_INF:
+ fputs ({ru-sae}, file);
+ break;
+   case ROUND_ZERO:
+ fputs ({rz-sae}, file);
+ break;
+   case ROUND_SAE:
+ fputs ({sae}, file);
+ break;
+   default:
+ gcc_unreachable ();
+   }
+
+ if (ASSEMBLER_DIALECT == ASM_ATT)
+   fputs (, , file);
+
+ return;
+
case '*':
  if (ASSEMBLER_DIALECT == ASM_ATT)
putc ('*', file);
diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
index ab5b33f..30b8d74 100644
--- a/gcc/config/i386/i386.md
+++ b/gcc/config/i386/i386.md
@@ -241,6 +241,16 @@
(ROUND_NO_EXC   0x8)
   ])
 
+;; Constants to represent AVX512F embeded rounding
+(define_constants
+  [(ROUND_NEAREST_INT  0)
+   (ROUND_NEG_INF  1)
+   (ROUND_POS_INF  2)
+   (ROUND_ZERO 3)
+   (NO_ROUND   4)
+   (ROUND_SAE  5)
+  ])
+
 ;; Constants to represent pcomtrue/pcomfalse variants
 (define_constants
   [(PCOM_FALSE 0)
diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md
index adedf44..119d0b0 100644
--- a/gcc/config/i386/sse.md
+++ b/gcc/config/i386/sse.md
@@ -1229,23 +1229,23 @@
 }
   [(set_attr isa noavx,noavx,avx,avx)])
 
-(define_expand plusminus_insnmode3mask_name
+(define_expand plusminus_insnmode3mask_nameround_name
   [(set (match_operand:VF 0 register_operand)
(plusminus:VF
- (match_operand:VF 1 nonimmediate_operand)
- (match_operand:VF 2 nonimmediate_operand)))]
-  TARGET_SSE  mask_mode512bit_condition
+ (match_operand:VF 1 round_nimm_predicate)
+ (match_operand:VF 2 round_nimm_predicate)))]
+  TARGET_SSE  mask_mode512bit_condition  round_mode512bit_condition
   ix86_fixup_binary_operands_no_copy (CODE, MODEmode, operands);)
 
-(define_insn *plusminus_insnmode3mask_name
+(define_insn *plusminus_insnmode3mask_nameround_name
   [(set (match_operand:VF 0 register_operand =x,v)
(plusminus:VF
- (match_operand:VF 1 nonimmediate_operand comm0,v)
- (match_operand:VF 2 nonimmediate_operand xm,vm)))]
-  TARGET_SSE  ix86_binary_operator_ok (CODE, MODEmode, operands)  
mask_mode512bit_condition
+ (match_operand:VF 1 round_nimm_predicate comm0,v)
+ (match_operand:VF 2 round_nimm_predicate 
xm,round_constraint)))]
+  TARGET_SSE  ix86_binary_operator_ok (CODE, MODEmode, operands)  
mask_mode512bit_condition  round_mode512bit_condition
   @
plusminus_mnemonicssemodesuffix\t{%2, %0|%0, %2}
-   vplusminus_mnemonicssemodesuffix\t{%2, %1, 
%0mask_operand3|%0mask_operand3, %1, %2}
+   vplusminus_mnemonicssemodesuffix\t{round_mask_op3%2, %1, 
%0mask_operand3|%0mask_operand3, %1, %2round_mask_op3}
   [(set_attr isa noavx,avx)
(set_attr type sseadd)
(set_attr prefix mask_prefix3)
@@ -1268,23 +1268,23 @@
(set_attr prefix orig,vex)
(set_attr mode ssescalarmode)])
 
-(define_expand mulmode3mask_name
+(define_expand 

PATCH: PR target/59601: [4.9 Regression] __attribute__ ((target(arch=corei7))) won't match Westmere processor

2013-12-26 Thread H.J. Lu
Hi,

After my Intel processor name cleanup,

__attribute__ ((target(arch=corei7))) is translated to PROCESSOR_NEHALEM
mapped to M_INTEL_COREI7_NEHALEM. We used to hav

e __attribute__ ((target(arch=corei7)))

to cover M_INTEL_COREI7_. Now it only covers M_INTEL_COREI7_NEHALEM.
We have PROCESSOR_SANDYBRIDGE and PROCESSOR_HASWELL.  But there is nothing
to mark Westmere and Ivy Bridge.  Since function versioning doesn't support
extra ISAs in Westmere and Ivy Bridge, we don't lose anything. The solution
is to map

__attribute__ ((target(arch=corei7)))

and

__attribute__ ((target(arch=nehalem)))

to M_INTEL_COREI7.  I tested mv14.C and mv15.C on Nehalem, Westmere,
Sandy Bride and Ivy Bridge.  OK to install?

Thanks.

H.J.

gcc/

2013-12-26   H.J. Lu  hongjiu...@intel.com

PR target/59601
* config/i386/i386.c (get_builtin_code_for_version): Map
PROCESSOR_NEHALEM to corei7.

gcc/testsuite/

2013-12-26   Uros Bizjak  ubiz...@gmail.com
 H.J. Lu  hongjiu...@intel.com

PR target/59601
* g++.dg/ext/mv14.C: New tests.
* g++.dg/ext/mv15.C: Likewise.

diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index 37bb656..e3d693a 100644
--- a/gcc/config/i386/i386.c
++ b/gcc/config/i386/i386.c
@@ -30010,7 +30010,10 @@ get_builtin_code_for_version (tree decl, tree 
*predicate_list)
  priority = P_PROC_SSSE3;
  break;
case PROCESSOR_NEHALEM:
- arg_str = nehalem;
+ /* We translate arch=corei7 and arch=nehelam to
+corei7 so that it will be mapped to M_INTEL_COREI7
+as cpu type to cover all M_INTEL_COREI7_XXXs.  */
+ arg_str = corei7;
  priority = P_PROC_SSE4_2;
  break;
case PROCESSOR_SANDYBRIDGE:
diff --git a/gcc/testsuite/g++.dg/ext/mv14.C b/gcc/testsuite/g++.dg/ext/mv14.C
new file mode 100644
index 000..e36e08d
--- /dev/null
+++ b/gcc/testsuite/g++.dg/ext/mv14.C
@@ -0,0 +1,40 @@
+/* Test case to check if Multiversioning works.  */
+/* { dg-do run { target i?86-*-* x86_64-*-* } } */
+/* { dg-require-ifunc  }  */
+/* { dg-options -O2 -fPIC } */
+
+#include assert.h
+
+/* Default version.  */
+int foo (); // Extra declaration that is merged with the second one.
+int foo () __attribute__ ((target(default)));
+
+int foo () __attribute__ ((target(arch=corei7)));
+
+int (*p)() = foo;
+int main ()
+{
+  int val = foo ();
+  assert (val ==  (*p)());
+
+  /* Check in the exact same order in which the dispatching
+ is expected to happen.  */
+  if (__builtin_cpu_is (corei7))
+assert (val == 5);
+  else
+assert (val == 0);
+  
+  return 0;
+}
+
+int __attribute__ ((target(default)))
+foo ()
+{
+  return 0;
+}
+
+int __attribute__ ((target(arch=corei7)))
+foo ()
+{
+  return 5;
+}
diff --git a/gcc/testsuite/g++.dg/ext/mv15.C b/gcc/testsuite/g++.dg/ext/mv15.C
new file mode 100644
index 000..42e39d2
--- /dev/null
+++ b/gcc/testsuite/g++.dg/ext/mv15.C
@@ -0,0 +1,40 @@
+/* Test case to check if Multiversioning works.  */
+/* { dg-do run { target i?86-*-* x86_64-*-* } } */
+/* { dg-require-ifunc  }  */
+/* { dg-options -O2 -fPIC } */
+
+#include assert.h
+
+/* Default version.  */
+int foo (); // Extra declaration that is merged with the second one.
+int foo () __attribute__ ((target(default)));
+
+int foo () __attribute__ ((target(arch=nehalem)));
+
+int (*p)() = foo;
+int main ()
+{
+  int val = foo ();
+  assert (val ==  (*p)());
+
+  /* Check in the exact same order in which the dispatching
+ is expected to happen.  */
+  if (__builtin_cpu_is (corei7))
+assert (val == 5);
+  else
+assert (val == 0);
+  
+  return 0;
+}
+
+int __attribute__ ((target(default)))
+foo ()
+{
+  return 0;
+}
+
+int __attribute__ ((target(arch=nehalem)))
+foo ()
+{
+  return 5;
+}


Re: [RFC][gomp4] Offloading: Add device initialization and host-target function mapping

2013-12-26 Thread Ilya Verbin
Ping.
(Patch is slightly updated)

On 20 Dec 21:18, Ilya Verbin wrote:
 Hi Jakub,
 
 Could you please take a look at this patch for libgomp?
 
 It adds new function GOMP_register_lib, that should be called from every
 exec/lib with target regions (that was done in patch [1]).  This function
 maintains the array of pointers to the target shared library descriptors.
 
 Also this patch adds target device initialization into GOMP_target and
 GOMP_target_data.  At first, it calls device_init function from the plugin.
 This function takes array of target-images as input, and returns the array of
 target-side addresses.  Currently, it always uses the first target-image from
 the descriptor, this should be generalized later.  Then libgomp reads the 
 tables
 from host-side exec/libs.  After that, it inserts host-target address mapping
 into the splay tree.
 
 [1] http://gcc.gnu.org/ml/gcc-patches/2013-12/msg01486.html
 
 Thanks,
 -- Ilya

-- Ilya

---
 libgomp/libgomp.map |1 +
 libgomp/target.c|  154 ---
 2 files changed, 146 insertions(+), 9 deletions(-)

diff --git a/libgomp/libgomp.map b/libgomp/libgomp.map
index 2b64d05..792047f 100644
--- a/libgomp/libgomp.map
+++ b/libgomp/libgomp.map
@@ -208,6 +208,7 @@ GOMP_3.0 {
 
 GOMP_4.0 {
   global:
+   GOMP_register_lib;
GOMP_barrier_cancel;
GOMP_cancel;
GOMP_cancellation_point;
diff --git a/libgomp/target.c b/libgomp/target.c
index d84a1fa..7677c28 100644
--- a/libgomp/target.c
+++ b/libgomp/target.c
@@ -84,6 +84,19 @@ struct splay_tree_key_s {
   bool copy_from;
 };
 
+enum library_descr {
+  DESCR_TABLE_START,
+  DESCR_TABLE_END,
+  DESCR_IMAGE_START,
+  DESCR_IMAGE_END
+};
+
+/* Array of pointers to target shared library descriptors.  */
+static void **libraries;
+
+/* Total number of target shared libraries.  */
+static int num_libraries;
+
 /* Array of descriptors of all available devices.  */
 static struct gomp_device_descr *devices;
 
@@ -117,11 +130,16 @@ struct gomp_device_descr
  TARGET construct.  */
   int id;
 
+  /* Set to true when device is initialized.  */
+  bool is_initialized;
+
   /* Plugin file handler.  */
   void *plugin_handle;
 
   /* Function handlers.  */
-  bool (*device_available_func) (void);
+  bool (*device_available_func) (int);
+  void (*device_init_func) (void **, int *, int, void ***, int *);
+  void (*device_run_func) (void *, uintptr_t);
 
   /* Splay tree containing information about mapped memory regions.  */
   struct splay_tree_s dev_splay_tree;
@@ -466,6 +484,89 @@ gomp_update (struct gomp_device_descr *devicep, size_t 
mapnum,
   gomp_mutex_unlock (devicep-dev_env_lock);
 }
 
+void
+GOMP_register_lib (const void *openmp_target)
+{
+  libraries = realloc (libraries, (num_libraries + 1) * sizeof (void *));
+
+  if (libraries == NULL)
+return;
+
+  libraries[num_libraries] = (void *) openmp_target;
+
+  num_libraries++;
+}
+
+static void
+gomp_init_device (struct gomp_device_descr *devicep)
+{
+  void **target_images = malloc (num_libraries * sizeof (void *));
+  int *target_img_sizes = malloc (num_libraries * sizeof (int));
+  if (target_images == NULL || target_img_sizes == NULL)
+gomp_fatal (Can not allocate memory);
+
+  /* Collect target images from the library descriptors and calculate the total
+ size of host address table.  */
+  int i, host_table_size = 0;
+  for (i = 0; i  num_libraries; i++)
+{
+  void **lib = libraries[i];
+  void **host_table_start = lib[DESCR_TABLE_START];
+  void **host_table_end = lib[DESCR_TABLE_END];
+  /* FIXME: Select the proper target image.  */
+  target_images[i] = lib[DESCR_IMAGE_START];
+  target_img_sizes[i] = lib[DESCR_IMAGE_END] - lib[DESCR_IMAGE_START];
+  host_table_size += host_table_end - host_table_start;
+}
+
+  /* Initialize the target device and receive the address table from target.  
*/
+  void **target_table = NULL;
+  int target_table_size = 0;
+  devicep-device_init_func (target_images, target_img_sizes, num_libraries,
+target_table, target_table_size);
+  free (target_images);
+  free (target_img_sizes);
+
+  if (host_table_size != target_table_size)
+gomp_fatal (Can't map target objects);
+
+  /* Initialize the mapping data structure.  */
+  void **target_entry = target_table;
+  for (i = 0; i  num_libraries; i++)
+{
+  void **lib = libraries[i];
+  void **host_table_start = lib[DESCR_TABLE_START];
+  void **host_table_end = lib[DESCR_TABLE_END];
+  void **host_entry;
+  for (host_entry = host_table_start; host_entry  host_table_end;
+  host_entry += 2, target_entry += 2)
+   {
+ struct target_mem_desc *tgt = gomp_malloc (sizeof (*tgt));
+ tgt-refcount = 1;
+ tgt-array = gomp_malloc (sizeof (*tgt-array));
+ tgt-tgt_start = (uintptr_t) *target_entry;
+ tgt-tgt_end = tgt-tgt_start + *((uint64_t *) target_entry + 1);
+  

Re: PATCH: PR target/59588: Don't check/change generic/i686 tuning

2013-12-26 Thread H.J. Lu
On Thu, Dec 26, 2013 at 4:38 AM, Jan Hubicka hubi...@ucw.cz wrote:
 Hi Honza,

 We have combined generic32 and generic64 into generic.  There is no need
 to check generic anymore.  Also we shouldn't change -mtune=i686 into
 -mtune=generic.  OK to install?

 The i686-generic change was intended to get generic optimized code
 for i686-linux configuration rather than pentiumpro.  I think it still makes
 sense to use this, since it is what most 32bit distros still configure for?


Should -mtune=i686 define __tune_i686__?  If not, how can
it be defined? Don't we default -mtune to generic for
i686-linux?

-- 
H.J.


Re: PATCH: PR target/59601: [4.9 Regression] __attribute__ ((target(arch=corei7))) won't match Westmere processor

2013-12-26 Thread Uros Bizjak
On Thu, Dec 26, 2013 at 2:25 PM, H.J. Lu hongjiu...@intel.com wrote:

 After my Intel processor name cleanup,

 __attribute__ ((target(arch=corei7))) is translated to PROCESSOR_NEHALEM
 mapped to M_INTEL_COREI7_NEHALEM. We used to hav

 e __attribute__ ((target(arch=corei7)))

 to cover M_INTEL_COREI7_. Now it only covers M_INTEL_COREI7_NEHALEM.
 We have PROCESSOR_SANDYBRIDGE and PROCESSOR_HASWELL.  But there is nothing
 to mark Westmere and Ivy Bridge.  Since function versioning doesn't support
 extra ISAs in Westmere and Ivy Bridge, we don't lose anything. The solution
 is to map

 __attribute__ ((target(arch=corei7)))

 and

 __attribute__ ((target(arch=nehalem)))

 to M_INTEL_COREI7.  I tested mv14.C and mv15.C on Nehalem, Westmere,
 Sandy Bride and Ivy Bridge.  OK to install?

 gcc/

 2013-12-26   H.J. Lu  hongjiu...@intel.com

 PR target/59601
 * config/i386/i386.c (get_builtin_code_for_version): Map
 PROCESSOR_NEHALEM to corei7.

 gcc/testsuite/

 2013-12-26   Uros Bizjak  ubiz...@gmail.com
  H.J. Lu  hongjiu...@intel.com

 PR target/59601
 * g++.dg/ext/mv14.C: New tests.
 * g++.dg/ext/mv15.C: Likewise.

OK.

Thanks,
Uros.


[PATCH, i386]: Use vendor signatures from cpuid.h in cpuinfo.c

2013-12-26 Thread Uros Bizjak
Hello!

Use the same definitions from common header.

2013-12-26  Uros Bizjak  ubiz...@gmail.com

* config/i386/cpuinfo.c (enum vendor_signatures): Remove.
(__cpu_indicator_init): Use signature_INTEL_ebx and signature_AMD_ebx
from cpuid.h to check vendor signatures.

No functional changes.

Bootstrapped on x86_64-pc-linux-gnu and committed to mainline SVN.

Uros.
Index: config/i386/cpuinfo.c
===
--- config/i386/cpuinfo.c   (revision 206210)
+++ config/i386/cpuinfo.c   (working copy)
@@ -36,12 +36,6 @@ see the files COPYING3 and COPYING.RUNTIME respect
 int __cpu_indicator_init (void)
   __attribute__ ((constructor CONSTRUCTOR_PRIORITY));
 
-enum vendor_signatures
-{
-  SIG_INTEL =  0x756e6547 /* Genu */,
-  SIG_AMD =0x68747541 /* Auth */
-};
-
 /* Processor Vendor and Models. */
 
 enum processor_vendor
@@ -368,7 +362,7 @@ __cpu_indicator_init (void)
   extended_model = (eax  12)  0xf0;
   extended_family = (eax  20)  0xff;
 
-  if (vendor == SIG_INTEL)
+  if (vendor == signature_INTEL_ebx)
 {
   /* Adjust model and family for Intel CPUS. */
   if (family == 0x0f)
@@ -385,7 +379,7 @@ __cpu_indicator_init (void)
   get_available_features (ecx, edx, max_level);
   __cpu_model.__cpu_vendor = VENDOR_INTEL;
 }
-  else if (vendor == SIG_AMD)
+  else if (vendor == signature_AMD_ebx)
 {
   /* Adjust model and family for AMD CPUS. */
   if (family == 0x0f)


Re: PATCH: PR target/59588: Don't check/change generic/i686 tuning

2013-12-26 Thread Jan Hubicka
 On Thu, Dec 26, 2013 at 4:38 AM, Jan Hubicka hubi...@ucw.cz wrote:
  Hi Honza,
 
  We have combined generic32 and generic64 into generic.  There is no need
  to check generic anymore.  Also we shouldn't change -mtune=i686 into
  -mtune=generic.  OK to install?
 
  The i686-generic change was intended to get generic optimized code
  for i686-linux configuration rather than pentiumpro.  I think it still makes
  sense to use this, since it is what most 32bit distros still configure for?
 
 
 Should -mtune=i686 define __tune_i686__?  If not, how can
 it be defined? Don't we default -mtune to generic for
 i686-linux?

If i686-linux defaults to -mtune=generic, then I think it is all fine.
i686 is bit misbehaved since it was used as both CPU name for PPro (that does 
not
make much sense) and for the overall architecture...

Honza
 
 -- 
 H.J.


Re: PATCH: PR target/59588: Don't check/change generic/i686 tuning

2013-12-26 Thread H.J. Lu
On Thu, Dec 26, 2013 at 7:45 AM, Jan Hubicka hubi...@ucw.cz wrote:
 On Thu, Dec 26, 2013 at 4:38 AM, Jan Hubicka hubi...@ucw.cz wrote:
  Hi Honza,
 
  We have combined generic32 and generic64 into generic.  There is no need
  to check generic anymore.  Also we shouldn't change -mtune=i686 into
  -mtune=generic.  OK to install?
 
  The i686-generic change was intended to get generic optimized code
  for i686-linux configuration rather than pentiumpro.  I think it still 
  makes
  sense to use this, since it is what most 32bit distros still configure for?
 

 Should -mtune=i686 define __tune_i686__?  If not, how can
 it be defined? Don't we default -mtune to generic for
 i686-linux?

 If i686-linux defaults to -mtune=generic, then I think it is all fine.

We have defaulted
[hjl@gnu-6 gcc]$ ./xgcc -B./ -S /tmp/x.i -v
Reading specs from ./specs
COLLECT_GCC=./xgcc
Target: i686-linux
Configured with: /export/gnu/import/git/gcc/configure
--enable-languages=c,c++ --disable-bootstrap i686-linux
--prefix=/usr/gcc-4.9.0 --with-local-prefix=/usr/local
--enable-targets=all --with-fpmath=sse : (reconfigured)
/export/gnu/import/git/gcc/configure --enable-languages=c,c++
--disable-bootstrap i686-linux --prefix=/usr/gcc-4.9.0
--with-local-prefix=/usr/local --enable-targets=all --with-fpmath=sse
Thread model: posix
gcc version 4.9.0 20131224 (experimental) (GCC)
COLLECT_GCC_OPTIONS='-B' './' '-S' '-v' '-mtune=generic' '-march=pentium4'
 ./cc1 -fpreprocessed /tmp/x.i -quiet -dumpbase x.i -mtune=generic
-march=pentium4 -auxbase x -version -o x.s
GNU C (GCC) version 4.9.0 20131224 (experimental) (i686-linux)
compiled by GNU C version 4.8.2 20131212 (Red Hat 4.8.2-7), GMP
version 5.1.1, MPFR version 3.1.1, MPC version 1.0.1
GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096
GNU C (GCC) version 4.9.0 20131224 (experimental) (i686-linux)
compiled by GNU C version 4.8.2 20131212 (Red Hat 4.8.2-7), GMP
version 5.1.1, MPFR version 3.1.1, MPC version 1.0.1
GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096
Compiler executable checksum: 8d0a04c49875a54ef44488e5406c52dd
COMPILER_PATH=./
LIBRARY_PATH=./:/lib/../lib/:/usr/lib/../lib/:/lib/:/usr/lib/
COLLECT_GCC_OPTIONS='-B' './' '-S' '-v' '-mtune=generic' '-march=pentium4'
[hjl@gnu-6 gcc]$

I will check in my patch.

 i686 is bit misbehaved since it was used as both CPU name for PPro (that does 
 not
 make much sense) and for the overall architecture...


Thanks.

-- 
H.J.


Re: PATCH: PR target/59587: cpu_names in i386.c is accessed with wrong index

2013-12-26 Thread H.J. Lu
On Wed, Dec 25, 2013 at 12:49 PM, Uros Bizjak ubiz...@gmail.com wrote:
 TARGET_CPU_DEFAULT is left over for 32-bit target before --with-arch=
 and --with-cpu= were added.  Today, -mtune=xxx -march=xxx are
 always passed to cc1 by GCC driver.  If cc1 is run by hand and
 -mtune=xxx -march=xxx aren't passed to cc1, we should do

 1. For 64-bit, it should be the same as -mtune=generic -march=x86_64
 are passed.
 2. For 32-bit, it should be the same as -mtune=cpu -march=cpu are
 passed, where cpu is the target cpu used to configure GCC,
 like i386 in i386-linux, i486 in i486-linux,  But there is no i786
 cpu.  i786 is treated as i686.  If SUBTARGET32_DEFAULT_CPU
 is defined, it should be the same -mtune=SUBTARGET32_DEFAULT_CPU
 -march=SUBTARGET32_DEFAULT_CPU.

 Here is the patch to implement this.

 Let's do one step at a time. So, let's split the patch back to target/59587 
 fix:


I am not formally submitting the patch to define target_cpu_default
for i[34567]86 targets:

http://gcc.gnu.org/git/?p=gcc.git;a=patch;h=c5d2157c8c9181286441317cf55570d8e33741c2

since it has no impact on x86-64 nor when GCC driver
is used.  It only changes the default arch/tune when
cc1/cc1plus is run by hand, which is very unusual.
I will leave the patch on hjl/arch branch just in case
someone is interested.

Thanks.

-- 
H.J.


Re: PATCH: PR target/59588: Don't check/change generic/i686 tuning

2013-12-26 Thread H.J. Lu
On Thu, Dec 26, 2013 at 8:06 AM, H.J. Lu hjl.to...@gmail.com wrote:
 On Thu, Dec 26, 2013 at 7:45 AM, Jan Hubicka hubi...@ucw.cz wrote:
 On Thu, Dec 26, 2013 at 4:38 AM, Jan Hubicka hubi...@ucw.cz wrote:
  Hi Honza,
 
  We have combined generic32 and generic64 into generic.  There is no need
  to check generic anymore.  Also we shouldn't change -mtune=i686 into
  -mtune=generic.  OK to install?
 
  The i686-generic change was intended to get generic optimized code
  for i686-linux configuration rather than pentiumpro.  I think it still 
  makes
  sense to use this, since it is what most 32bit distros still configure 
  for?
 

 Should -mtune=i686 define __tune_i686__?  If not, how can
 it be defined? Don't we default -mtune to generic for
 i686-linux?

 If i686-linux defaults to -mtune=generic, then I think it is all fine.

...

 I will check in my patch.


My patch exposes a testsuite bug:

spawn -ignore SIGHUP /export/build/gnu/gcc/build-x86_64-linux/gcc/xgcc
-B/export/build/gnu/gcc/build-x86_64-linux/gcc/
/export/gnu/import/git/gcc/gcc/testsuite/gcc.target/i386/andor-2.c
-fno-diagnostics-show-caret -fdiagnostics-color=never -O2 -mtune=i686
-ffat-lto-objects -ffat-lto-objects -S -o andor-2.s^M
/export/gnu/import/git/gcc/gcc/testsuite/gcc.target/i386/andor-2.c:1:0:
error: CPU you selected does not support x86-64 instruction set^M
compiler exited with status 1
output is:
/export/gnu/import/git/gcc/gcc/testsuite/gcc.target/i386/andor-2.c:1:0:
error: CPU you selected does not support x86-64 instruction set^M

FAIL: gcc.target/i386/andor-2.c (test for excess errors)

We used to silently turn -mtune=i686 into -mtune=generic.
Now we don't.  It is wrong to accept -mtune=i686 when compiling
for  x86-64.  I am checking in this patch as an obvious fix.

Thanks.

-- 
H.J.
--
diff --git a/gcc/testsuite/gcc.target/i386/andor-2.c
b/gcc/testsuite/gcc.target/i386/andor-2.c
index 88118aa..eacc7b1 100644
--- a/gcc/testsuite/gcc.target/i386/andor-2.c
+++ b/gcc/testsuite/gcc.target/i386/andor-2.c
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options -O2 -mtune=i686 } */
+/* { dg-options -O2 -mtune=generic } */

 int h(int x, int y)
 {


Re: New prologue/epilogue code for i386 string functions

2013-12-26 Thread H.J. Lu
On Tue, Oct 22, 2013 at 8:58 AM, Jan Hubicka hubi...@ucw.cz wrote:
 Hi,
 this patch adds code to produce prologues/epilogues as suggested by Ondrej 
 Bilka
 (I described more the approach in 
 http://gcc.gnu.org/ml/gcc-patches/2013-09/msg02082.html)
 This patch is updated and cleaned up version after Mikhail changes merging 
 memset/memcpy
 generation code.  (I will continue with some incremental cleanups for the 
 code dulication
 we ended up with).

 For now I don't have value range code in, but all logic is in place once
 http://gcc.gnu.org/ml/gcc-patches/2013-09/msg02011.html
 gets reviewed.

 Bootstrapped/regtesed x86_64-linux also with -minline-all-stringops and 
 tested on SPEC2k6.
 I will commit it later today after more testing.

 Honza

 * i386.h (TARGET_MISALIGNED_MOVE_STRING_PROLOGUES_EPILOGUES): New 
 tuning flag.
 * x86-tune.def (TARGET_MISALIGNED_MOVE_STRING_PROLOGUES): Define it.
 * i386.c (expand_small_movmem_or_setmem): New function.
 (expand_set_or_movmem_prologue_epilogue_by_misaligned_moves): New 
 function
 (alg_usable_p): Add support for value ranges; cleanup.
 (ix86_expand_set_or_movmem): Add support for misaligned moves.

This caused:

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


-- 
H.J.


Re: PATCH: PR target/59588: Don't check/change generic/i686 tuning

2013-12-26 Thread H.J. Lu
On Thu, Dec 26, 2013 at 11:11 AM, H.J. Lu hjl.to...@gmail.com wrote:
 On Thu, Dec 26, 2013 at 8:06 AM, H.J. Lu hjl.to...@gmail.com wrote:
 On Thu, Dec 26, 2013 at 7:45 AM, Jan Hubicka hubi...@ucw.cz wrote:
 On Thu, Dec 26, 2013 at 4:38 AM, Jan Hubicka hubi...@ucw.cz wrote:
  Hi Honza,
 
  We have combined generic32 and generic64 into generic.  There is no need
  to check generic anymore.  Also we shouldn't change -mtune=i686 into
  -mtune=generic.  OK to install?
 
  The i686-generic change was intended to get generic optimized code
  for i686-linux configuration rather than pentiumpro.  I think it still 
  makes
  sense to use this, since it is what most 32bit distros still configure 
  for?
 

 Should -mtune=i686 define __tune_i686__?  If not, how can
 it be defined? Don't we default -mtune to generic for
 i686-linux?

 If i686-linux defaults to -mtune=generic, then I think it is all fine.

 ...

 I will check in my patch.


 My patch exposes a testsuite bug:

 spawn -ignore SIGHUP /export/build/gnu/gcc/build-x86_64-linux/gcc/xgcc
 -B/export/build/gnu/gcc/build-x86_64-linux/gcc/
 /export/gnu/import/git/gcc/gcc/testsuite/gcc.target/i386/andor-2.c
 -fno-diagnostics-show-caret -fdiagnostics-color=never -O2 -mtune=i686
 -ffat-lto-objects -ffat-lto-objects -S -o andor-2.s^M
 /export/gnu/import/git/gcc/gcc/testsuite/gcc.target/i386/andor-2.c:1:0:
 error: CPU you selected does not support x86-64 instruction set^M
 compiler exited with status 1
 output is:
 /export/gnu/import/git/gcc/gcc/testsuite/gcc.target/i386/andor-2.c:1:0:
 error: CPU you selected does not support x86-64 instruction set^M

 FAIL: gcc.target/i386/andor-2.c (test for excess errors)

 We used to silently turn -mtune=i686 into -mtune=generic.
 Now we don't.  It is wrong to accept -mtune=i686 when compiling
 for  x86-64.  I am checking in this patch as an obvious fix.

 Thanks.

 --
 H.J.
 --
 diff --git a/gcc/testsuite/gcc.target/i386/andor-2.c
 b/gcc/testsuite/gcc.target/i386/andor-2.c
 index 88118aa..eacc7b1 100644
 --- a/gcc/testsuite/gcc.target/i386/andor-2.c
 +++ b/gcc/testsuite/gcc.target/i386/andor-2.c
 @@ -1,5 +1,5 @@
  /* { dg-do compile } */
 -/* { dg-options -O2 -mtune=i686 } */
 +/* { dg-options -O2 -mtune=generic } */

  int h(int x, int y)
  {

Another one happens with -mx32.  I checked in
this patch to fix it.

-- 
H.J.
---
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 98d22b3e..ad98f63 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,5 +1,11 @@
 2013-12-26   H.J. Lu  hongjiu...@intel.com

+ * g++.old-deja/g++.other/store-expr1.C (dg-options): Replace
+ -mtune=i686 with -mtune=generic.
+ * g++.old-deja/g++.other/store-expr2.C (dg-options): Likewise.
+
+2013-12-26   H.J. Lu  hongjiu...@intel.com
+
  * gcc.target/i386/andor-2.c (dg-options): Replace -mtune=i686
  with -mtune=generic.

diff --git a/gcc/testsuite/g++.old-deja/g++.other/store-expr1.C
b/gcc/testsuite/g++.old-deja/g++.other/store-expr1.C
index 72d30eb..af5e415 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/store-expr1.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/store-expr1.C
@@ -1,7 +1,7 @@
 // { dg-do run { target i?86-*-* x86_64-*-* } }
 // { dg-require-effective-target ilp32 }
 // { dg-require-effective-target fpic }
-// { dg-options -mtune=i686 -O2 -fpic }
+// { dg-options -mtune=generic -O2 -fpic }
 class G {};

 struct N {
diff --git a/gcc/testsuite/g++.old-deja/g++.other/store-expr2.C
b/gcc/testsuite/g++.old-deja/g++.other/store-expr2.C
index 99e0943..1dffbcc 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/store-expr2.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/store-expr2.C
@@ -1,6 +1,6 @@
 // { dg-do run { target i?86-*-* x86_64-*-*} }
 // { dg-require-effective-target ilp32 }
-// { dg-options -mtune=i686 -O2 }
+// { dg-options -mtune=generic -O2 }
 class G {};

 struct N {


Re: [patch] powerpc64 FreeBSD support for boehm-gc

2013-12-26 Thread Andrew Haley
On 12/26/2013 12:11 AM, Andreas Tobler wrote:
 On 21.12.13 18:27, Andrew Haley wrote:
 On 12/20/2013 10:15 PM, Andreas Tobler wrote:
 Ok for gcc trunk?

 OK, thanks.

 
 May I get this one down to 4.8 too? Not really needed, but for
 completeness. Results will follow...

No objections from me.

Andrew.




PATCH: PR target/59605: Create jump_around_label only if it doesn't exist

2013-12-26 Thread H.J. Lu
Hi Honza,

r203937 may create jump_around_label earlier. But later code doesn't
check if jump_around_label exists.  This patch fixes it.  Tested
on Linux/x86-64.  OK to install?

Thanks.

H.J.
--
gcc/

2013-12-26   H.J. Lu  hongjiu...@intel.com

PR target/59605
* config/i386/i386.c (ix86_expand_set_or_movmem): Create
jump_around_label only if it doesn't exist.

gcc/testsuite/

2013-12-26   H.J. Lu  hongjiu...@intel.com

PR target/59605
* gcc.dg/pr59605.c: New test.

diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index 0cf0a9d..07f9a86 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -24015,7 +24015,8 @@ ix86_expand_set_or_movmem (rtx dst, rtx src, rtx 
count_exp, rtx val_exp,
   else
{
  rtx hot_label = gen_label_rtx ();
- jump_around_label = gen_label_rtx ();
+ if (jump_around_label == NULL_RTX)
+   jump_around_label = gen_label_rtx ();
  emit_cmp_and_jump_insns (count_exp, GEN_INT (dynamic_check - 1),
   LEU, 0, GET_MODE (count_exp), 1, hot_label);
  predict_jump (REG_BR_PROB_BASE * 90 / 100);
diff --git a/gcc/testsuite/gcc.dg/pr59605.c b/gcc/testsuite/gcc.dg/pr59605.c
new file mode 100644
index 000..4556843
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr59605.c
@@ -0,0 +1,55 @@
+/* { dg-do run } */
+/* { dg-options -O2 } */
+/* { dg-additional-options -minline-stringops-dynamically { target { 
i?86-*-* x86_64-*-* } } } */
+
+extern void abort (void);
+
+#define MAX_OFFSET (sizeof (long long))
+#define MAX_COPY (1024 + 8192)
+#define MAX_EXTRA (sizeof (long long))
+
+#define MAX_LENGTH (MAX_OFFSET + MAX_COPY + MAX_EXTRA)
+
+static union {
+  char buf[MAX_LENGTH];
+  long long align_int;
+  long double align_fp;
+} u;
+
+char A[MAX_LENGTH];
+
+int
+main ()
+{
+  int off, len, i;
+  char *p, *q;
+
+  for (i = 0; i  MAX_LENGTH; i++)
+A[i] = 'A';
+
+  for (off = 0; off  MAX_OFFSET; off++)
+for (len = 1; len  MAX_COPY; len++)
+  {
+   for (i = 0; i  MAX_LENGTH; i++)
+ u.buf[i] = 'a';
+
+   p = __builtin_memcpy (u.buf + off, A, len);
+   if (p != u.buf + off)
+ abort ();
+
+   q = u.buf;
+   for (i = 0; i  off; i++, q++)
+ if (*q != 'a')
+   abort ();
+
+   for (i = 0; i  len; i++, q++)
+ if (*q != 'A')
+   abort ();
+
+   for (i = 0; i  MAX_EXTRA; i++, q++)
+ if (*q != 'a')
+   abort ();
+  }
+
+  return 0;
+}


Re: [PATCH][x86] march aliases

2013-12-26 Thread Ryan Hill
On Mon, 23 Dec 2013 05:10:06 -0800
H.J. Lu hjl.to...@gmail.com wrote:

 This is the patch I checked in.  I will submit separate patches for
 other parts.

Please be sure to update changes.html.


-- 
Ryan Hillpsn: dirtyepic_sk
   gcc-porting/toolchain/wxwidgets @ gentoo.org

47C3 6D62 4864 0E49 8E9E  7F92 ED38 BD49 957A 8463


signature.asc
Description: PGP signature


Re: [Patch] PR55189 enable -Wreturn-type by default

2013-12-26 Thread Chung-Ju Wu
2013/12/21 Sylvestre Ledru sylves...@debian.org:
 Hello

 Following this thread http://gcc.gnu.org/ml/gcc/2013-11/msg00260.html
 and this bug,
 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55189

 I would like to propose the two following patches:

 I am activating -Wreturn-type by defaut and add the option -Wmissing-return

[snip]

 Index: gcc/ChangeLog
 ===
 --- gcc/ChangeLog   (révision 206154)
 +++ gcc/ChangeLog   (copie de travail)
 @@ -1,3 +1,11 @@
 +2013-12-20  Sylvestre Ledru  sylves...@debian.org
 +
 +PR target/55189
 +* -Wreturn-type enabled by default.
 +   * Introduce back the option -Wmissing-return (enabled by -Wall)
 +   It was included by default with -Wreturn-type
 +   * Update all tests failing because of these changes.
 +
  2013-12-20  Eric Botcazou  ebotca...@adacore.com
 * config/arm/arm.c (arm_expand_prologue): In a nested APCS frame with

Hi, Sylvestre,

Sorry I have no right to approve this patch.
But I notice your ChangeLog formatting is not correct.

You can refer to other entries in ChangeLog to refine yours,
and then resubmit the patch for review. :)


Best regards,
jasonwucj


Re: [Patch] PR55189 enable -Wreturn-type by default

2013-12-26 Thread Yury Gribov

Chung-Wu wrote:
 But I notice your ChangeLog formatting is not correct.

 You can refer to other entries in ChangeLog to refine yours,
 and then resubmit the patch for review. :)

Or - use contrib/mklog to autogenerate template ChangeLog for you.

-Y