[Bug sanitizer/67286] asan doen't work on Android(32bit ARM)

2015-08-20 Thread weiguo.zhou at spreadtrum dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67286

--- Comment #6 from weiguo.zhou weiguo.zhou at spreadtrum dot com ---
(In reply to Dmitry Vyukov from comment #4)
 Yes, asan should work on android/arm32. There is some ongoing work on arm64.
 +eugeni can provide more details.

according to official documents on Google's site:


https://code.google.com/p/address-sanitizer/wiki/Android

 Android   
How to use AddressSanitizer on Android 
Updated Jul 20, 2015 by euge...@google.com 
NOTE: this document is about running Android applications built with the NDK
under AddressSanitizer. For information about using AddressSanitizer on Android
platform components, see AndroidPlatform. 
NOTE: ASan is broken on Android L. Use a K* build. This will be fixed in one of
the future L updates (or the current AOSP master branch). 
NOTE: AddressSanitizer on Android requires a rooted device (either -eng or
-userdebug build, or any other setup that allows editing the contents of the
/system partition). 
Android NDK supports AddressSanitizer on arm, armv7 and x86 ABIs starting with
version r10d. 


It seems Google's official docs indicate the asan only supported on Android
with  LLVM-based clang toolchain. in the fact, it should be supported well on
Android with gcc-based toolchain. 

the keypoint to enable asan running well with gcc-based toolchain on Android as
following:

1)build a cross-compile toolchain for ARM-32 Android system;
2)disable -Os optimization options in Android build system; becase the asan
pass   
must be called in the GCC's internal to handle GENERIC/GIMPLY transformation;
3)modify the code in the gcc-4.9.2/config/arm/arm.c


[Bug c/66425] (void) cast doesn't suppress __attribute__((warn_unused_result))

2015-08-20 Thread filbranden at google dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66425

--- Comment #22 from Filipe Brandenburger filbranden at google dot com ---
(In reply to Jan Engelhardt from comment #20)
 Seems like the short route is to add a new attribute
 ((warn_unused_result_with_void_cancelling)) that exhibits the desired
 behavior of (void) cancelling the warning, and then make glibc use that.
 Simple, no?

I'd rather see ((warn_unused_result_without_void_cancelling)).

Or, better yet, add both in and add a command-line flag to allow
((warn_unused_result)) to use one or the other.

I still don't see the point of preventing (void) from cancelling it since you
can just store the result on an otherwise unused discard variable, I mean, if
the programmer *really* wants to ignore the result, they can do it in many
ways, ((warn_unused_result)) is to prevent programming mistakes where the
programmer *meant* to look at the results but mistakenly forgot it...

I also fail to see what else a void cast can mean other than explicitly
indicating that the programmer *knows* the function returns a non-empty value
but decided to ignore it...

Anyways, let's not go on that rant again... If you get to implement the new
attribute that would be awesome!

Cheers,
Filipe


[Bug sanitizer/67286] New: asan doen't work on Android(32bit ARM)

2015-08-20 Thread zhouweiguo2008 at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67286

Bug ID: 67286
   Summary: asan doen't work on Android(32bit ARM)
   Product: gcc
   Version: 4.9.2
Status: UNCONFIRMED
  Severity: critical
  Priority: P3
 Component: sanitizer
  Assignee: unassigned at gcc dot gnu.org
  Reporter: zhouweiguo2008 at gmail dot com
CC: dodji at gcc dot gnu.org, dvyukov at gcc dot gnu.org,
jakub at gcc dot gnu.org, kcc at gcc dot gnu.org
  Target Milestone: ---

 cat invalid-free.cc   
// RUN: %clangxx_asan -O0 %s -o %t
// RUN: not %run %t 21 | FileCheck %s --check-prefix=CHECK
--check-prefix=MALLOC-CTX

// Also works if no malloc context is available.
// RUN: env ASAN_OPTIONS=malloc_context_size=0:fast_unwind_on_malloc=0 not %run
%t 21 | FileCheck %s
// RUN: env ASAN_OPTIONS=malloc_context_size=0:fast_unwind_on_malloc=1 not %run
%t 21 | FileCheck %s
// XFAIL: arm-linux-gnueabi

#include stdlib.h
#include string.h
int main(int argc, char **argv) {
  char *x = (char*)malloc(10 * sizeof(char));
  memset(x, 0, 10);
  int res = x[argc];
  free(x + 5);  // BOOM
  // CHECK: AddressSanitizer: attempting free on address{{.*}}in thread T0
  // CHECK: invalid-free.cc:[[@LINE-2]]
  // CHECK: is located 5 bytes inside of 10-byte region
  // CHECK: allocated by thread T0 here:
  // MALLOC-CTX: invalid-free.cc:[[@LINE-8]]
  return res;
}

when running above testcase (could be found at 
external/compiler-rt/test/asan/TestCases)on Android5.0 phone,

the testcase will SEGV as following(in the fact, all testcases would be SEGV on
android phone):


[1m[31m==3909==ERROR: AddressSanitizer: SEGV on unknown address 0x369a00fe
(pc 0xb6f51662 bp 0xbeb58a1c sp 0xbeb589e0 T0)
[1m[0m#0 0xb6f51661 in main TestCases/invalid-free.cc:14
#1 0xb69c0e09  (/system/lib/libc.so+0x12e09)

AddressSanitizer can not provide additional info.
SUMMARY: AddressSanitizer: SEGV TestCases/invalid-free.cc:14 main
==3909==ABORTING



the root cause is that when using Asan on 32-bit ARM android system, the shadow
offset should be zero, not 0x2000(129).

this serious bug could be fixed  according to following steps:

modify function 

static unsigned HOST_WIDE_INT arm_asan_shadow_offset(void) 

in the gcc-4.9.2/config/arm/arm.c  

from 

static unsigned HOST_WIDE_INT
 arm_asan_shadow_offset (void)
{
 return (unsigned HOST_WIDE_INT) 1  29;
}

to

static unsigned HOST_WIDE_INT
 arm_asan_shadow_offset (void)
{
#ifdef TARGET_ANDROID
 return 0;
#else
 return (unsigned HOST_WIDE_INT) 1  29;
#endif
}


[Bug libstdc++/63176] std::generate_canonicalfloat, std::numeric_limitsfloat::digits() generates 1.0f

2015-08-20 Thread ville.voutilainen at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63176

Ville Voutilainen ville.voutilainen at gmail dot com changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2015-08-20
 CC||redi at gcc dot gnu.org,
   ||ville.voutilainen at gmail dot 
com
 Ever confirmed|0   |1


[Bug target/66312] [SH] Regression: Bootstrap failure gcc/d/ctfeexpr.dmd.o differs with gcc-4.8/4.9

2015-08-20 Thread glaubitz at physik dot fu-berlin.de
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66312

--- Comment #13 from John Paul Adrian Glaubitz glaubitz at physik dot 
fu-berlin.de ---
Created attachment 36225
  -- https://gcc.gnu.org/bugzilla/attachment.cgi?id=36225action=edit
Diff of the disassembly of the stripped versions of cfteexpr.dmd.o for stage 2
and 3


[Bug middle-end/67285] ICE with (rdiv (POW:s @0 REAL_CST@1) @0)

2015-08-20 Thread hs.naveen2u at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67285

--- Comment #2 from hs.naveen2u at gmail dot com ---
Created attachment 36226
  -- https://gcc.gnu.org/bugzilla/attachment.cgi?id=36226action=edit
Testcase to reproduce the issue

aarch64-thunder-elf-gcc pr67285.c -O2 -funsafe-math-optimizations


[Bug rtl-optimization/49054] useless cmp+jmp generated for switch when default: is unreachable

2015-08-20 Thread johannespfau at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=49054

Johannes Pfau johannespfau at gmail dot com changed:

   What|Removed |Added

 CC||johannespfau at gmail dot com

--- Comment #5 from Johannes Pfau johannespfau at gmail dot com ---
This would also be useful for the GDC frontend. There's a `final switch`
statement which forces the developer to handle all possible cases. Would be
nice if we could get rid of the `cmp` check for these `final switch`
statements.


[Bug target/66312] [SH] Regression: Bootstrap failure gcc/d/ctfeexpr.dmd.o differs with gcc-4.8/4.9

2015-08-20 Thread glaubitz at physik dot fu-berlin.de
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66312

--- Comment #11 from John Paul Adrian Glaubitz glaubitz at physik dot 
fu-berlin.de ---
Created attachment 36223
  -- https://gcc.gnu.org/bugzilla/attachment.cgi?id=36223action=edit
Stage 2 compiled version of ctfeexpr.dmd.o (unstripped)


[Bug target/66312] [SH] Regression: Bootstrap failure gcc/d/ctfeexpr.dmd.o differs with gcc-4.8/4.9

2015-08-20 Thread glaubitz at physik dot fu-berlin.de
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66312

--- Comment #12 from John Paul Adrian Glaubitz glaubitz at physik dot 
fu-berlin.de ---
Created attachment 36224
  -- https://gcc.gnu.org/bugzilla/attachment.cgi?id=36224action=edit
Stage 3 compiled version of ctfeexpr.dmd.o (unstripped)


[Bug tree-optimization/67287] New: FRE should CSE sqrt() calls even with -ferrno-math

2015-08-20 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67287

Bug ID: 67287
   Summary: FRE should CSE sqrt() calls even with -ferrno-math
   Product: gcc
   Version: 6.0
Status: UNCONFIRMED
  Keywords: missed-optimization
  Severity: normal
  Priority: P3
 Component: tree-optimization
  Assignee: unassigned at gcc dot gnu.org
  Reporter: rguenth at gcc dot gnu.org
  Target Milestone: ---

double sqrt(double x);
double t (double x)
{
  double a = sqrt (x);
  double b = sqrt (x);
  return a * b;
}

should be optimized to

double t (double x)
{
  double a = sqrt (x);
  return a * a;
}

with -fmath-errno.  FRE currently gives up too early and the alias oracle
can handle errno-style references (but it can't use a call as a ref, so
the errno-only side-effect has to be modeled by creating a special ref
for performing the walking for math builtins setting errno as their only
side-effect).

We may not miscompile

  sqrt (x);
  errno = 0;
  sqrt (x);
  if (errno != 0)
   ...

to CSE the second sqrt.


[Bug tree-optimization/67287] FRE should CSE sqrt() calls even with -ferrno-math

2015-08-20 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67287

Richard Biener rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |ASSIGNED
   Last reconfirmed||2015-08-20
   Assignee|unassigned at gcc dot gnu.org  |rguenth at gcc dot 
gnu.org
 Ever confirmed|0   |1

--- Comment #1 from Richard Biener rguenth at gcc dot gnu.org ---
Mine.


[Bug sanitizer/67286] asan doen't work on Android(32bit ARM)

2015-08-20 Thread weiguo.zhou at spreadtrum dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67286

--- Comment #8 from weiguo.zhou weiguo.zhou at spreadtrum dot com ---
(In reply to Yury Gribov from comment #5)
 (In reply to Dmitry Vyukov from comment #4)
  +eugeni can provide more details.
 
 Please! E.g. how do you build compiler and runtime?


the keypoint to generate a gcc-based cross-compiler toolchain for android/arm32
as following:

1) generate an stage-1 cross-compile gcc toolchain with  the existing native
gcc;
2) build the sysroot from scratch with the stage-1 cross-compile toolchain;
3) generate the final cross-compile gcc_toolchain with the corresponding
sysroot.


you can see the keypoint is that we should create a right sysroot for the
final cross-compile gcc-toolchain for android/arm32.


[Bug sanitizer/67286] asan doen't work on Android(32bit ARM)

2015-08-20 Thread weiguo.zhou at spreadtrum dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67286

--- Comment #11 from weiguo.zhou weiguo.zhou at spreadtrum dot com ---

you can got the dynamic libasan.so.2  with following step:

../gcc-4.9.2-sprd/libsanitizer/configure --host=arm-linux-androideabi
--prefix=/tmp/toolchain-build-linux-4.9.2/prefix --enabl
e-shared --disable-static


[Bug target/67143] [5/6 Regression] ICE (could not split insn) on aarch64-linux-gnu

2015-08-20 Thread pinskia at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67143

Andrew Pinski pinskia at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2015-08-20
 Ever confirmed|0   |1

--- Comment #4 from Andrew Pinski pinskia at gcc dot gnu.org ---
Confirmed.


[Bug c/67279] -fsanitize=undefined spurious error: initializer element is not constant

2015-08-20 Thread zeccav at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67279

--- Comment #6 from Vittorio Zecca zeccav at gmail dot com ---
On my side it has to do with the C standard.
Compilation with -ansi or -std=c90 is successful.
Compilation with -std=c99 fails.
Compiling with g++ is OK.

The behaviour I would like to see is a warning at compile time
and a runtime error: message at run time.


[Bug target/66563] [4.9/5 Regression] ICE (segmentation fault) on sh4-linux-gnu

2015-08-20 Thread glaubitz at physik dot fu-berlin.de
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66563

--- Comment #59 from John Paul Adrian Glaubitz glaubitz at physik dot 
fu-berlin.de ---
(In reply to John Paul Adrian Glaubitz from comment #58)
 Oh, and according to the Debian changelog, it must be a regression that was
 introduced somewhere between r218987 and r222750 of the gcc-4.9 branch.

Please ignore this comment! This was supposed to go into PR/target 66312!

The bug tracker just hopped to the next PR with me noticing, sorry!


[Bug target/66312] [SH] Regression: Bootstrap failure gcc/d/ctfeexpr.dmd.o differs with gcc-4.8/4.9

2015-08-20 Thread glaubitz at physik dot fu-berlin.de
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66312

--- Comment #15 from John Paul Adrian Glaubitz glaubitz at physik dot 
fu-berlin.de ---
Oh, and according to the Debian changelog, it must be a regression that was
introduced somewhere between r218987 and r222750 of the gcc-4.9 branch.

Currently, the buildds did not build any snapshot version between those two
revisions unfortunately, but I can just do more test builds to narrow down the
revision range where we need to look for the change that introduced the
regression.

Adrian


[Bug sanitizer/67286] asan doen't work on Android(32bit ARM)

2015-08-20 Thread y.gribov at samsung dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67286

--- Comment #5 from Yury Gribov y.gribov at samsung dot com ---
(In reply to Dmitry Vyukov from comment #4)
 +eugeni can provide more details.

Please! E.g. how do you build compiler and runtime?


[Bug sanitizer/67286] asan doen't work on Android(32bit ARM)

2015-08-20 Thread weiguo.zhou at spreadtrum dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67286

--- Comment #9 from weiguo.zhou weiguo.zhou at spreadtrum dot com ---
(In reply to Yury Gribov from comment #7)
 (In reply to weiguo.zhou from comment #6)
  It seems Google's official docs indicate the asan only supported on Android
  with  LLVM-based clang toolchain.
 
 That was my impression as well.
 
  in the fact, it should be supported well
  on Android with gcc-based toolchain.
 
 I'm not sure what you mean. Is ASan runtime (libasan.so) built when you
 build Android cross-compiler? If it's not, then ASan is not supported by GCC
 on Android.


as I explained just now, after generate the final cross-compile toolchain for
android/arm32 successfully, the last step is generate the libasasn.so.2

with the final cross-compile toolchain(because the runtime detection asan
library should be running on real ARM32 board).


[Bug sanitizer/67286] asan doen't work on Android(32bit ARM)

2015-08-20 Thread y.gribov at samsung dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67286

--- Comment #10 from Yury Gribov y.gribov at samsung dot com ---
(In reply to weiguo.zhou from comment #9)
 as I explained just now, after generate the final cross-compile toolchain
 for android/arm32 successfully, the last step is generate the libasasn.so.2

How do you generate libasan.so?


[Bug sanitizer/67286] asan doen't work on Android(32bit ARM)

2015-08-20 Thread zhouweiguo2008 at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67286

--- Comment #1 from zhouweiguo2008 at gmail dot com ---
this bug had been fixed and validated with gcc 4.9.2 and gcc 5.2.0.

and the testcases (from external/compiler-rt/test/asan/TestCases) could be
running

normally on the 32-bit Android 5.0 phone.


[Bug target/67280] [5 Regression] wrong C++11 code generated on arm-linux-gnueabihf

2015-08-20 Thread cbaylis at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67280

cbaylis at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |ASSIGNED
   Last reconfirmed||2015-08-20
 CC||cbaylis at gcc dot gnu.org
   Assignee|unassigned at gcc dot gnu.org  |cbaylis at gcc dot 
gnu.org
 Ever confirmed|0   |1

--- Comment #1 from cbaylis at gcc dot gnu.org ---
I will have a look at this.


[Bug c/67279] -fsanitize=undefined spurious error: initializer element is not constant

2015-08-20 Thread mpolacek at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67279

--- Comment #7 from Marek Polacek mpolacek at gcc dot gnu.org ---
Yeah, I think I'll change this.


[Bug sanitizer/67286] asan doen't work on Android(32bit ARM)

2015-08-20 Thread y.gribov at samsung dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67286

--- Comment #7 from Yury Gribov y.gribov at samsung dot com ---
(In reply to weiguo.zhou from comment #6)
 It seems Google's official docs indicate the asan only supported on Android
 with  LLVM-based clang toolchain.

That was my impression as well.

 in the fact, it should be supported well
 on Android with gcc-based toolchain.

I'm not sure what you mean. Is ASan runtime (libasan.so) built when you build
Android cross-compiler? If it's not, then ASan is not supported by GCC on
Android.


[Bug sanitizer/67286] asan doen't work on Android(32bit ARM)

2015-08-20 Thread y.gribov at samsung dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67286

Yury Gribov y.gribov at samsung dot com changed:

   What|Removed |Added

 CC||y.gribov at samsung dot com

--- Comment #3 from Yury Gribov y.gribov at samsung dot com ---
Does GCC even support ASan on Android i.e. builds libasan.so? That's news to
me.


[Bug target/66563] [4.9/5 Regression] ICE (segmentation fault) on sh4-linux-gnu

2015-08-20 Thread glaubitz at physik dot fu-berlin.de
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66563

--- Comment #58 from John Paul Adrian Glaubitz glaubitz at physik dot 
fu-berlin.de ---
Oh, and according to the Debian changelog, it must be a regression that was
introduced somewhere between r218987 and r222750 of the gcc-4.9 branch.

Currently, the buildds did not build any snapshot version between those two
revisions unfortunately, but I can just do more test builds to narrow down the
revision range where we need to look for the change that introduced the
regression.

Adrian


[Bug middle-end/67285] ICE with (rdiv (POW:s @0 REAL_CST@1) @0)

2015-08-20 Thread mpolacek at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67285

Marek Polacek mpolacek at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |WAITING
   Last reconfirmed||2015-08-20
 CC||mpolacek at gcc dot gnu.org
 Ever confirmed|0   |1

--- Comment #1 from Marek Polacek mpolacek at gcc dot gnu.org ---
Testcase?


[Bug sanitizer/67286] asan doen't work on Android(32bit ARM)

2015-08-20 Thread dvyukov at google dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67286

--- Comment #4 from Dmitry Vyukov dvyukov at google dot com ---
Yes, asan should work on android/arm32. There is some ongoing work on arm64.
+eugeni can provide more details.


[Bug sanitizer/67286] asan doen't work on Android(32bit ARM)

2015-08-20 Thread zhouweiguo2008 at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67286

weiguo.zhou zhouweiguo2008 at gmail dot com changed:

   What|Removed |Added

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

--- Comment #2 from weiguo.zhou zhouweiguo2008 at gmail dot com ---
validated with gcc 4.9.2 and gcc 5.2.0.

and the testcases (from external/compiler-rt/test/asan/TestCases) could be
running

normally on the 32-bit Android 5.0 phone.


[Bug regression/67288] New: [4.9 regression] non optimal simple function (useless additional shift/remove/shift/add)

2015-08-20 Thread christophe.le...@c-s.fr
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67288

Bug ID: 67288
   Summary: [4.9 regression] non optimal simple function (useless
additional shift/remove/shift/add)
   Product: gcc
   Version: 4.9.3
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: regression
  Assignee: unassigned at gcc dot gnu.org
  Reporter: christophe.le...@c-s.fr
  Target Milestone: ---

The following function (Linux Kernel, compiled with -O2) was resulting in a
good assembly with GCC 4.8.3. With GCC 4.9.3 there are a lot of unneccessary
instructions

/* L1_CACHE_BYTES = 16 */
/* L1_CACHE_SHIFT = 4 */

#define mb()   __asm__ __volatile__ (sync : : : memory)

static inline void dcbf(void *addr)
{
__asm__ __volatile__ (dcbf 0, %0 : : r(addr) : memory);
}

void flush_dcache_range(unsigned long start, unsigned long stop)
{
void *addr = (void *)(start  ~(L1_CACHE_BYTES - 1));
unsigned int size = stop - (unsigned long)addr + (L1_CACHE_BYTES - 1);
unsigned int i;

for (i = 0; i  size  L1_CACHE_SHIFT; i++, addr += L1_CACHE_BYTES)
dcbf(addr);
if (i)
mb();
}

Result with GCC 4.9.3: (15 insns)

c000d970 flush_dcache_range:
c000d970:   54 63 00 36 rlwinm  r3,r3,0,0,27
c000d974:   38 84 00 0f addir4,r4,15
c000d978:   7c 83 20 50 subfr4,r3,r4
c000d97c:   54 89 e1 3f rlwinm. r9,r4,28,4,31
c000d980:   4d 82 00 20 beqlr   
c000d984:   55 24 20 36 rlwinm  r4,r9,4,0,27
c000d988:   39 24 ff f0 addir9,r4,-16
c000d98c:   55 29 e1 3e rlwinm  r9,r9,28,4,31
c000d990:   39 29 00 01 addir9,r9,1
c000d994:   7d 29 03 a6 mtctr   r9
c000d998:   7c 00 18 ac dcbf0,r3
c000d99c:   38 63 00 10 addir3,r3,16
c000d9a0:   42 00 ff f8 bdnzc000d998 flush_dcache_range+0x28
c000d9a4:   7c 00 04 ac sync
c000d9a8:   4e 80 00 20 blr

The following section is just useless: (shift left 4 bits, remove 16, shift
right 4 bits, add 1)
c000d984:   55 24 20 36 rlwinm  r4,r9,4,0,27
c000d988:   39 24 ff f0 addir9,r4,-16
c000d98c:   55 29 e1 3e rlwinm  r9,r9,28,4,31
c000d990:   39 29 00 01 addir9,r9,1



Result with GCC 4.8.3 was correct: (11 insns)

c000d894 flush_dcache_range:
c000d894:   54 63 00 36 rlwinm  r3,r3,0,0,27
c000d898:   38 84 00 0f addir4,r4,15
c000d89c:   7d 23 20 50 subfr9,r3,r4
c000d8a0:   55 29 e1 3f rlwinm. r9,r9,28,4,31
c000d8a4:   4d 82 00 20 beqlr   
c000d8a8:   7d 29 03 a6 mtctr   r9
c000d8ac:   7c 00 18 ac dcbf0,r3
c000d8b0:   38 63 00 10 addir3,r3,16
c000d8b4:   42 00 ff f8 bdnzc000d8ac flush_dcache_range+0x18
c000d8b8:   7c 00 04 ac sync
c000d8bc:   4e 80 00 20 blr


[Bug driver/67301] New: Unable to compile program using extended assembly and asmSymbolicName

2015-08-20 Thread noloader at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67301

Bug ID: 67301
   Summary: Unable to compile program using extended assembly and
asmSymbolicName
   Product: gcc
   Version: 4.9.3
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: driver
  Assignee: unassigned at gcc dot gnu.org
  Reporter: noloader at gmail dot com
  Target Milestone: ---

The following program:

  $ cat test.cxx
  int main(int argc, char* argv[])
  {
  __asm__ __volatile__ (

\t movl %[__ARGC], %%eax \n
:
: __ARGC  (argc)
  );

  return 0;
  }

Results in a failed compile:

  $ g++ test.cxx
  test.cxx: In function ‘int main(int, char**)’:
  test.cxx:7:5: error: expected string-literal before ‘__ARGC’
 : __ARGC  (argc)
 ^
  test.cxx:7:5: error: expected ‘(’ before ‘__ARGC’
  test.cxx:7:5: error: ‘__ARGC’ was not declared in this scope
  test.cxx:7:12: error: expected ‘)’ before string constant
 : __ARGC  (argc)
^
  test.cxx:7:12: error: expected ‘)’ before string constant

Above, I am trying to use GCC's extended ASM like Microsoft's MASM.

According to the online manual and Assembler Instructions with C Expression
Operands, § 6.44.3.1 Input Operands
(https://gcc.gnu.org/onlinedocs/gcc/Extended-Asm.html), asmSymbolicName is
being used correctly.

Operands are separated by commas. Each operand has this format:

  [ [asmSymbolicName] ] constraint (cexpression)

asmSymbolicName

Specifies a symbolic name for the operand. Reference the name in the
  assembler template by enclosing it in square brackets (i.e. ‘%[Value]’).
  The scope of the name is the asm statement that contains the definition.
  Any valid C variable name is acceptable, including names already defined
  in the surrounding code.

[Bug driver/67301] Unable to compile program using extended assembly and asmSymbolicName

2015-08-20 Thread pinskia at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67301

--- Comment #1 from Andrew Pinski pinskia at gcc dot gnu.org ---
Try:
 int main(int argc, char* argv[])
  {
  __asm__ __volatile__ (

\t movl %[__ARGC], %%eax \n
:
: [__ARGC] r (argc)
  );

  return 0;
  }

Basically the syntax for naming operands is [XYZ] but since it is optional, [
is used to say it is optional part of the syntax.  Yes it is slightly confusing
but that is what you get when you use [] as both part of the actual syntax and
saying it is an optional part.


[Bug tree-optimization/67284] libgo fails to build on trunk r227015 / *-linux-gnu

2015-08-20 Thread miyuki at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67284

Mikhail Maltsev miyuki at gcc dot gnu.org changed:

   What|Removed |Added

 Target|powerpc64le-linux-gnu   |powerpc64le-linux-gnu,
   ||x64_64-pc-linux-gnu
 Status|UNCONFIRMED |NEW
   Last reconfirmed||2015-08-21
 CC||miyuki at gcc dot gnu.org
  Component|go  |tree-optimization
   Assignee|ian at airs dot com|unassigned at gcc dot 
gnu.org
 Ever confirmed|0   |1

--- Comment #1 from Mikhail Maltsev miyuki at gcc dot gnu.org ---
Reduced testcase:

$ cat test.go
package a

type Decoder struct {
wireType map[int32]*int32
}

func (Decoder) ignoreMap(keyOp, elemOp func())

var decIgnoreOpMap map[int32]func()

func (dec Decoder) decIgnoreOpFor(wireId int32) func() {
var op func()
wire := dec.wireType
if wire != nil {
keyId := *dec.wireType[wireId]
elemId := *dec.wireType[wireId]
keyOp := dec.decIgnoreOpFor(keyId)
elemOp := dec.decIgnoreOpFor(elemId)
op = func() {
dec.ignoreMap(keyOp, elemOp)
}
}
return op
}

$ ./go1 -O2 test.go
test.go: In function 'a.decIgnoreOpFor.N12_go.a.Decoder':
test.go:11:1: internal compiler error: in operator[], at vec.h:714
 func (dec Decoder) decIgnoreOpFor(wireId int32) func() {
 ^
0x85bcee vecedge_def*, va_gc, vl_embed::operator[](unsigned int)
/home/miyuki/gcc/src/gcc/vec.h:714


[Bug c++/67065] [DR 1886] Missing diagnostics for ill-formed program with main variable instead of function

2015-08-20 Thread paolo at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67065

--- Comment #5 from paolo at gcc dot gnu.org paolo at gcc dot gnu.org ---
Author: paolo
Date: Thu Aug 20 10:18:03 2015
New Revision: 227027

URL: https://gcc.gnu.org/viewcvs?rev=227027root=gccview=rev
Log:
/cp
2015-08-20  Paolo Carlini  paolo.carl...@oracle.com

PR c++/67065
* decl.c (grokvardecl): Reject 'main' as global variable.

/testsuite
2015-08-20  Paolo Carlini  paolo.carl...@oracle.com

PR c++/67065
* g++.dg/other/pr67065.C: New.

Added:
trunk/gcc/testsuite/g++.dg/other/pr67065.C
Modified:
trunk/gcc/cp/ChangeLog
trunk/gcc/cp/decl.c
trunk/gcc/testsuite/ChangeLog


[Bug tree-optimization/61441] ARM aarch64 fails to quiet signaling NaN

2015-08-20 Thread ssaraswati at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61441

--- Comment #10 from Sujoy ssaraswati at gmail dot com ---
(In reply to jos...@codesourcery.com from comment #9)

 There is no need to wait for bugs to move state (rather, if working on a 
 bug, you may wish to change it to ASSIGNED yourself with yourself as 
 assignee).

Ok, I started working on this and hope to send a fix soon.


[Bug c++/67291] New: error: 'asm' operand has impossible constraints when compiling gromacs 5.1 testsuite on PPC64 and PPC64LE with VSX SIMD

2015-08-20 Thread dominik at greysector dot net
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67291

Bug ID: 67291
   Summary: error: 'asm' operand has impossible constraints when
compiling gromacs 5.1 testsuite on PPC64 and PPC64LE
with VSX SIMD
   Product: gcc
   Version: 5.1.1
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: dominik at greysector dot net
  Target Milestone: ---

When gromacs-5.1 is configured for double precision, I get the following
compilation error when building the internal tests (make check):
[...]
[ 94%] Building CXX object
src/gromacs/simd/tests/CMakeFiles/simd-test.dir/simd_integer.cpp.o
cd /builddir/build/BUILD/gromacs-5.1/openmpi_d/src/gromacs/simd/tests 
/usr/bin/c++   -DGMX_DOUBLE -DGTEST_USE_OWN_TR1_TUPLE=1 -DHAVE_CONFIG_H
-DTEST_DATA_PATH=\src/gromacs/simd/tests\
-DTEST_TEMP_PATH=\/builddir/build/BUILD/gromacs-5.1/openmpi_d/src/gromacs/simd/tests/Testing/Temporary\
-mvsx   -std=c++0x -O2
-g -pipe -Wall -Werror=format-security -Wp
,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong
--param=ssp-buffer-size=4 -grecord-gcc-switches
-specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -m64  -Wundef
-Wextra -Wno-missing-field-initializers -Wpointer-arith -Wall
-Wno-unused-function   -funroll-all-loops -fexcess-precision=fast 
-Wno-array-bounds  -isystem
/builddir/build/BUILD/gromacs-5.1/src/external/gmock-1.7.0/gtest/include
-isystem /builddir/build/BUILD/gromacs-5.1/src/external/gmock-1.7.0/include
-I/builddir/build/BUILD/gromacs-5.1/openmpi_d/src/external/tng_io/include
-I/builddir/build/BUILD/gromacs-5.1/src/external/tng_io/include
-I/builddir/build/BUILD/gromacs-5.1/openmpi_d/src
-I/builddir/build/BUILD/gromacs-5.1/src/external/thread_mpi/include
-I/builddir/build/BUILD/gromacs-5.1/src
-I/usr/include/openmpi-ppc64-Wno-unused-variable -o
CMakeFiles/simd-test.dir/simd_integer.cpp.o -c
/builddir/build/BUILD/gromacs-5.1/src/gromacs/simd/tests/simd_integer.cpp
In file included from
/builddir/build/BUILD/gromacs-5.1/src/gromacs/simd/simd.h:138:0,
 from
/builddir/build/BUILD/gromacs-5.1/src/gromacs/simd/tests/simd_integer.cpp:37:
/builddir/build/BUILD/gromacs-5.1/src/gromacs/simd/impl_ibm_vsx/impl_ibm_vsx.h:
In member function 'virtual void
gmx::test::{anonymous}::SimdIntegerTest_gmxSimdCvtI2R_Test::TestBody()':
/builddir/build/BUILD/gromacs-5.1/src/gromacs/simd/impl_ibm_vsx/impl_ibm_vsx.h:452:80:
error: 'asm' operand has impossible constraints
 __asm__ (xvcvsxwdp %0,%1 : =ww (x) : ww ((__vector signed int)
(ix)));
   
^
/builddir/build/BUILD/gromacs-5.1/src/gromacs/simd/impl_ibm_vsx/impl_ibm_vsx.h:452:80:
error: 'asm' operand has impossible constraints
 __asm__ (xvcvsxwdp %0,%1 : =ww (x) : ww ((__vector signed int)
(ix)));
   
^
src/gromacs/simd/tests/CMakeFiles/simd-test.dir/build.make:209: recipe for
target 'src/gromacs/simd/tests/CMakeFiles/simd-test.dir/simd_integer.cpp.o'
failed
make[3]: ***
[src/gromacs/simd/tests/CMakeFiles/simd-test.dir/simd_integer.cpp.o] Error 1
[...]

This happens on:

$ cat /proc/cpuinfo
processor   : 0
cpu : POWER8E (raw), altivec supported
clock   : 3425.00MHz
revision: 2.1 (pvr 004b 0201)

processor   : 1
cpu : POWER8E (raw), altivec supported
clock   : 3425.00MHz
revision: 2.1 (pvr 004b 0201)

timebase: 51200
platform: pSeries
model   : IBM pSeries (emulated by qemu)
machine : CHRP IBM pSeries (emulated by qemu)

using

$ /usr/bin/c++ -v
Using built-in specs.
COLLECT_GCC=/usr/bin/c++
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/ppc64-redhat-linux/5.1.1/lto-wrapper
Target: ppc64-redhat-linux
Configured with: ../configure --enable-bootstrap
--enable-languages=c,c++,objc,obj-c++,fortran,ada,go,lto --prefix=/usr
--mandir=/usr/share/man --infodir=/usr/share/info
--with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-shared
--enable-threads=posix --enable-checking=release --enable-multilib
--with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions
--enable-gnu-unique-object --enable-linker-build-id
--with-linker-hash-style=gnu --enable-plugin --enable-initfini-array
--disable-libgcj --with-isl --disable-libmpx --enable-gnu-indirect-function
--enable-secureplt --with-long-double-128 --build=ppc64-redhat-linux
Thread model: posix
gcc version 5.1.1 20150618 (Red Hat 5.1.1-4) (GCC) 

in Fedora rawhide (F24) chroot while building the gromacs package
(http://pkgs.fedoraproject.org/cgit/gromacs.git) under mock.
You have to remove the %ifnarch ppc64 ppc64le part in %install section
to reproduce.

More details here: http://redmine.gromacs.org/issues/1808


[Bug middle-end/67285] ICE with (rdiv (POW:s @0 REAL_CST@1) @0)

2015-08-20 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67285

--- Comment #4 from Richard Biener rguenth at gcc dot gnu.org ---
There are two issues here - one is side-effects (virtual definition) and one
is dependences (virtual uses).  The first one you hit with -fmath-errno,
the second you hit with -frounding-math.

On GENERIC there can be nothing inbetween components of the matched
expression
so things are usually fine.

On GIMPLE there can be random statements inbetween the statements composing
the matched expression.  Like

  _1 = pow (x, 2)
  fesetround();
  _2 = _1 / x;

we may not move pow () across fesetround () with -frounding-math, thus we
may not generate the expression replacement at the point of the _2 definition.

The actual ICE is about our failure to keep the virtual operand SSA form
up-to-date in fold_stmt.  As we generally do not want to do IL walks to
find a suitable VUSE/DEF we can use for that (apart from looking at the
current statement) we generally have to fail doing the expression replacement.

Implementation-wise the easiest is to fail when we are trying to generate
a builtin function call which is not CONST.  That doesn't avoid all
questionable
transforms but at least should avoid the ICEs due to non-up-to-date virtual
operand form.

There are cases we could relax (like replacing a call with another call),
but let's do that separately.

Note that this will require -fno-math-errno for any late transforms regarding
to math builtins.


[Bug c++/67065] [DR 1886] Missing diagnostics for ill-formed program with main variable instead of function

2015-08-20 Thread paolo.carlini at oracle dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67065

Paolo Carlini paolo.carlini at oracle dot com changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution|--- |FIXED
   Target Milestone|--- |6.0

--- Comment #6 from Paolo Carlini paolo.carlini at oracle dot com ---
Fixed.


[Bug target/67290] New: powerpc: suboptimal add of u64 with u32

2015-08-20 Thread christophe.le...@c-s.fr
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67290

Bug ID: 67290
   Summary: powerpc: suboptimal add of u64 with u32
   Product: gcc
   Version: 4.9.3
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: target
  Assignee: unassigned at gcc dot gnu.org
  Reporter: christophe.le...@c-s.fr
  Target Milestone: ---

#define u32 unsigned long
#define u64 unsigned long long

u64 target(u64 base, u32 offset)
{
return base + offset;
}


With GCC 4.9.3 we get: (same with GCC 4.8.3)

 target:
   0:   7c ab 2b 78 mr  r11,r5
   4:   39 40 00 00 li  r10,0
   8:   7c 84 58 14 addcr4,r4,r11
   c:   7c 63 51 14 adder3,r3,r10
  10:   4e 80 00 20 blr

I would expect:

target:
addc r4,r4,r5
addze r3,r3
blr


[Bug debug/66728] [5/6 Regression] CONST_WIDE_INT causes corrupted DWARF debug info

2015-08-20 Thread uweigand at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66728

--- Comment #6 from Ulrich Weigand uweigand at gcc dot gnu.org ---
(In reply to rsand...@gcc.gnu.org from comment #4)
 Testing a patch.  It involves tightening the mode of the rtx returned
 by rtl_for_decl_location, as well as new asserts, so some fallout is
 likely...

Hi Richard, just a quick ping ...  Were you able to make any progress with
this?


[Bug bootstrap/67289] New: ICE in ipa-devirt.c

2015-08-20 Thread rai...@emrich-ebersheim.de
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67289

Bug ID: 67289
   Summary: ICE in ipa-devirt.c
   Product: gcc
   Version: 6.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: bootstrap
  Assignee: unassigned at gcc dot gnu.org
  Reporter: rai...@emrich-ebersheim.de
  Target Milestone: ---

Trying to bootstrap trunk revision 227003 using build configuration
bootstrap-lto and ada enabled fails with an ICE in stage 2 while linking gnat1.

/opt/devel/SCRATCH/tmp.Gw2rTvUmtk/gcc-6.0.0-test/gcc-6.0.0-test/./prev-gcc/xg++
-B/opt/devel/SCRATCH/tmp.Gw2rTvUmtk/gcc-6.0.0-test/gcc-6.0.0-test/./prev-gcc/
-B/opt/devel/gnu/gcc/Linux/x86_64-unknown-linux-gnu/openSUSE_13.2/gcc-6.0.0-test/x86_64-pc-linux-gnu/bin/
-nostdinc++
-B/opt/devel/SCRATCH/tmp.Gw2rTvUmtk/gcc-6.0.0-test/gcc-6.0.0-test/prev-x86_64-pc-linux-gnu/libstdc++-v3/src/.libs
-B/opt/devel/SCRATCH/tmp.Gw2rTvUmtk/gcc-6.0.0-test/gcc-6.0.0-test/prev-x86_64-pc-linux-gnu/libstdc++-v3/libsupc++/.libs

-I/opt/devel/SCRATCH/tmp.Gw2rTvUmtk/gcc-6.0.0-test/gcc-6.0.0-test/prev-x86_64-pc-linux-gnu/libstdc++-v3/include/x86_64-pc-linux-gnu

-I/opt/devel/SCRATCH/tmp.Gw2rTvUmtk/gcc-6.0.0-test/gcc-6.0.0-test/prev-x86_64-pc-linux-gnu/libstdc++-v3/include
 -I/opt/devel/gnu/src/gcc/gcc-6.0.0-test/libstdc++-v3/libsupc++
-L/opt/devel/SCRATCH/tmp.Gw2rTvUmtk/gcc-6.0.0-test/gcc-6.0.0-test/prev-x86_64-pc-linux-gnu/libstdc++-v3/src/.libs
-L/opt/devel/SCRATCH/tmp.Gw2rTvUmtk/gcc-6.0.0-test/gcc-6.0.0-test/prev-x86_64-pc-linux-gnu/libstdc++-v3/libsupc++/.libs
-no-pie -g -O2 -flto=jobserver -frandom-seed=1 -DIN_GCC -fPIC -fno-exceptions
-fno-rtti -fasynchronous-unwind-tables -W -Wall -Wno-narrowing -Wwrite-strings
-Wcast-qual -Wmissing-format-attribute -Woverloaded-virtual -pedantic
-Wno-long-long -Wno-variadic-macros -Wno-overlength-strings -DHAVE_CONFIG_H
-static-libstdc++ -static-libgcc  -o gnat1 ada/adadecode.o ada/adaint.o
ada/argv.o ada/cio.o ada/cstreams.o ada/env.o ada/init.o ada/initialize.o
ada/raise.o ada/seh_init.o ada/targext.o ada/cuintp.o ada/decl.o ada/rtfinal.o
ada/rtinit.o ada/misc.o ada/utils.o ada/utils2.o ada/trans.o ada/targtyps.o
ada/a-charac.o ada/a-chlat1.o ada/a-elchha.o ada/a-except.o ada/a-ioexce.o
ada/ada.o ada/spark_xrefs.o ada/ali.o ada/alloc.o ada/aspects.o ada/atree.o
ada/butil.o ada/casing.o ada/checks.o ada/comperr.o ada/csets.o ada/cstand.o
ada/debug.o ada/debug_a.o ada/einfo.o ada/elists.o ada/err_vars.o ada/errout.o
ada/erroutc.o ada/eval_fat.o ada/exp_aggr.o ada/exp_spark.o ada/exp_atag.o
ada/exp_attr.o ada/exp_cg.o ada/exp_ch11.o ada/exp_ch12.o ada/exp_ch13.o
ada/exp_ch2.o ada/exp_ch3.o ada/exp_ch4.o ada/exp_ch5.o ada/exp_ch6.o
ada/exp_ch7.o ada/exp_ch8.o ada/exp_ch9.o ada/exp_code.o ada/exp_dbug.o
ada/exp_disp.o ada/exp_dist.o ada/exp_fixd.o ada/exp_imgv.o ada/exp_intr.o
ada/exp_pakd.o ada/exp_prag.o ada/exp_sel.o ada/exp_smem.o ada/exp_strm.o
ada/exp_tss.o ada/exp_unst.o ada/exp_util.o ada/expander.o ada/fmap.o
ada/fname-uf.o ada/fname.o ada/freeze.o ada/frontend.o ada/g-byorma.o
ada/g-hesora.o ada/g-htable.o ada/g-spchge.o ada/g-speche.o ada/g-u3spch.o
ada/get_spark_xrefs.o ada/get_targ.o ada/ghost.o ada/gnat.o ada/gnatvsn.o
ada/hostparm.o ada/impunit.o ada/inline.o ada/interfac.o ada/itypes.o
ada/krunch.o ada/layout.o ada/lib-load.o ada/lib-util.o ada/lib-writ.o
ada/lib-xref.o ada/lib.o ada/live.o ada/namet-sp.o ada/namet.o ada/nlists.o
ada/nmake.o ada/opt.o ada/osint-c.o ada/osint.o ada/output.o ada/par.o
ada/par_sco.o ada/prep.o ada/prepcomp.o ada/put_spark_xrefs.o ada/put_scos.o
ada/repinfo.o ada/restrict.o ada/rident.o ada/rtsfind.o ada/s-addope.o
ada/s-assert.o ada/s-bitops.o ada/s-carun8.o ada/s-casuti.o ada/s-conca2.o
ada/s-conca3.o ada/s-conca4.o ada/s-conca5.o ada/s-conca6.o ada/s-conca7.o
ada/s-conca8.o ada/s-conca9.o ada/s-crc32.o ada/s-crtl.o ada/s-excdeb.o
ada/s-except.o ada/s-exctab.o ada/s-htable.o ada/s-imenne.o ada/s-imgenu.o
ada/s-mastop.o ada/s-memory.o ada/s-os_lib.o ada/s-parame.o ada/s-purexc.o
ada/s-restri.o ada/s-secsta.o ada/s-soflin.o ada/s-sopco3.o ada/s-sopco4.o
ada/s-sopco5.o ada/s-stache.o ada/s-stalib.o ada/s-stoele.o ada/s-strcom.o
ada/s-strhas.o ada/s-string.o ada/s-strops.o ada/s-traent.o ada/s-unstyp.o
ada/s-utf_32.o ada/s-valint.o ada/s-valuns.o ada/s-valuti.o ada/s-wchcnv.o
ada/s-wchcon.o ada/s-wchjis.o ada/scans.o ada/scil_ll.o ada/scn.o ada/scng.o
ada/scos.o ada/sdefault.o ada/sem.o ada/sem_aggr.o ada/sem_attr.o ada/sem_aux.o
ada/sem_case.o ada/sem_cat.o ada/sem_ch10.o ada/sem_ch11.o ada/sem_ch12.o
ada/sem_ch13.o ada/sem_ch2.o ada/sem_ch3.o ada/sem_ch4.o ada/sem_ch5.o
ada/sem_ch6.o ada/sem_ch7.o ada/sem_ch8.o ada/sem_ch9.o ada/sem_dim.o
ada/sem_disp.o ada/sem_dist.o ada/sem_elab.o ada/sem_elim.o ada/sem_eval.o
ada/sem_intr.o ada/sem_mech.o ada/sem_prag.o ada/sem_res.o ada/sem_scil.o
ada/sem_smem.o ada/sem_type.o ada/sem_util.o ada/sem_warn.o ada/set_targ.o
ada/sinfo-cn.o ada/sinfo.o ada/sinput-d.o 

[Bug middle-end/48544] might be clobbered by ‘longjmp’ diagnostic for unmodified variable

2015-08-20 Thread adl at gnu dot org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=48544

--- Comment #1 from Alexandre Duret-Lutz adl at gnu dot org ---
This works OK with 4.8 and 5.1, so not an issue anymore as far as I'm
concerned.
(Might be related to #48968 which is reported as half-fixed -- I haven't
tried.)


[Bug tree-optimization/67283] GCC regression over inlining of returned structures

2015-08-20 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67283

Richard Biener rguenth at gcc dot gnu.org changed:

   What|Removed |Added

   Keywords||missed-optimization
 Status|UNCONFIRMED |NEW
   Last reconfirmed||2015-08-20
 CC||jamborm at gcc dot gnu.org
  Component|c   |tree-optimization
 Ever confirmed|0   |1

--- Comment #4 from Richard Biener rguenth at gcc dot gnu.org ---
;; Function demo_3 (demo_3, funcdef_no=4, decl_uid=1849, cgraph_uid=4,
symbol_order=4)

Candidate (1904): foo
Candidate (1901): foo
Candidate (1898): foo
Candidate (1870): D.1870
Candidate (1869): D.1869
Candidate (1868): D.1868
! Disqualifying D.1868 - No scalar replacements to be created.
Created a replacement for D.1869 offset: 0, size: 32: SR.30

...
demo_3 ()
{
  int foo;
  int foo;
  int SR.30;
  struct foo foo;
  struct foo foo;
  struct foo foo;
  struct foo D.1870;
  struct foo D.1869;
  struct foo D.1868;

  bb 2:
  foo = {};
  D.1868 = foo;
  foo ={v} {CLOBBER};
  foo = D.1868;
  foo_12 = MEM[(struct foo *)D.1868];
  foo_11 = 1;
  MEM[(struct foo *)foo] = foo_11;
  D.1869 = foo;
  SR.30_13 = foo_11;
  SR.30_14 = 1;
  MEM[(struct foo *)D.1869] = SR.30_14;
  foo = D.1869;
  foo_16 = SR.30_14;
  foo_17 = 3;
  MEM[(struct foo *)foo] = foo_17;
  D.1870 = foo;
  some_unknown_function (D.1870);
  return;

}

so it does _some_ SRA but not all required SRA for some reason.

Starts (IMHO) even with new_foo itself during early opts:

Candidate (1835): foo
! Disqualifying foo - No scalar replacements to be created.
new_foo ()
{
  struct foo foo;

  bb 2:
  foo = {};
  retval = foo;
  foo ={v} {CLOBBER};
  return retval;

}

where for some reason we fail to scalarize foo.  Similar add_flag
which ends up with

add_flag (struct foo foo, int flag)
{
  int foo$flags;
  int _2;
  int _4;

  bb 2:
  foo$flags_5 = MEM[(struct foo *)foo];
  _2 = foo$flags_5;
  _4 = _2 | flag_3(D);
  foo$flags_7 = _4;
  MEM[(struct foo *)foo] = foo$flags_7;
  retval = foo;
  return retval;

}

hmm, but here we are returning a parameter - we can't scalarize the parameter
and we can't scalarize the return.  But we still want to avoid storing
into 'foo' and store into retval directly.

;; Function demo_1 (demo_1, funcdef_no=2, decl_uid=1843, cgraph_uid=2,
symbol_order=2)

Candidate (1890): foo
Candidate (1858): D.1858
! Disqualifying D.1858 - No scalar replacements to be created.
! Disqualifying foo - No scalar replacements to be created.
demo_1 ()
{
  struct foo foo;
  struct foo D.1858;

  bb 2:
  foo = {};
  D.1858 = foo;
  foo ={v} {CLOBBER};
  some_unknown_function (D.1858);
  return;

so no total scalarization for foo?  Maybe SRA is confused by the CLOBBER?


[Bug c++/67291] error: 'asm' operand has impossible constraints when compiling gromacs 5.1 testsuite on PPC64 and PPC64LE with VSX SIMD

2015-08-20 Thread dominik at greysector dot net
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67291

--- Comment #1 from Dominik Mierzejewski dominik at greysector dot net ---
Created attachment 36227
  -- https://gcc.gnu.org/bugzilla/attachment.cgi?id=36227action=edit
Preprocessed source (gzipped)

Preprocessed source generated with:

cd /builddir/build/BUILD/gromacs-5.1/src/gromacs/simd/tests  /usr/bin/c++  
-DGMX_DOUBLE -DGTEST_USE_OWN_TR1_TUPLE=1 -DHAVE_CONFIG_H
-DTEST_DATA_PATH=\src/gromacs/simd/tests\
-DTEST_TEMP_PATH=\/builddir/build/BUILD/gromacs-5.1/src/gromacs/simd/tests/Testing/Temporary\
-mvsx   -std=c++0x -O2 -g -pipe -Wall -Werror=format-security
-Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong
--param=ssp-buffer-size=4 -grecord-gcc-switches
-specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -m64  -Wundef -Wextra
-Wno-missing-field-initializers -Wpointer-arith -Wall -Wno-unused-function  
-funroll-all-loops -fexcess-precision=fast  -Wno-array-bounds  -isystem
/builddir/build/BUILD/gromacs-5.1/src/external/gmock-1.7.0/gtest/include
-isystem /builddir/build/BUILD/gromacs-5.1/src/external/gmock-1.7.0/include
-I/builddir/build/BUILD/gromacs-5.1/src/external/tng_io/include
-I/builddir/build/BUILD/gromacs-5.1/src
-I/builddir/build/BUILD/gromacs-5.1/src/external/thread_mpi/include   
-Wno-unused-variable -o CMakeFiles/simd-test.dir/simd_floatingpoint.cpp.o
-save-temps -c
/builddir/build/BUILD/gromacs-5.1/src/gromacs/simd/tests/simd_floatingpoint.cpp


[Bug target/67280] [5 Regression] wrong C++11 code generated on arm-linux-gnueabihf

2015-08-20 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67280

Richard Biener rguenth at gcc dot gnu.org changed:

   What|Removed |Added

   Target Milestone|--- |5.3


[Bug sanitizer/67286] asan doen't work on Android(32bit ARM)

2015-08-20 Thread weiguo.zhou at spreadtrum dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67286

--- Comment #12 from weiguo.zhou weiguo.zhou at spreadtrum dot com ---
(In reply to weiguo.zhou from comment #8)
 (In reply to Yury Gribov from comment #5)
  (In reply to Dmitry Vyukov from comment #4)
   +eugeni can provide more details.
  
  Please! E.g. how do you build compiler and runtime?
 
 
 the keypoint to generate a gcc-based cross-compiler toolchain for
 android/arm32 as following:
 
 1) generate an stage-1 cross-compile gcc toolchain with  the existing native
 gcc;
 2) build the sysroot from scratch with the stage-1 cross-compile toolchain;
 3) generate the final cross-compile gcc_toolchain with the corresponding
 sysroot.
 
 
 you can see the keypoint is that we should create a right sysroot for the
 final cross-compile gcc-toolchain for android/arm32.


1) generate an stage-1 cross-compile gcc toolchain with  the existing native
 gcc;
2) build the sysroot from scratch with the stage-1 cross-compile toolchain;
3) generate the final cross-compile gcc_toolchain (with --enable-libsanitizer
option) with the corresponding sysroot;so the final cross-compile could
instrument the check code according to the excellent paper
address_sanity_checker.pdf;

4) reset the PATH environment variable, the generate the libasan.so.2 with the
final cross-compile gcc-toolchain:
   mkdir libasan-for-android-build
   cd libasan-for-android-build
   ../gcc-source-tree/libsanitizer/configure --host=arm-linux-androideabi
--prefix=/tmp/toolchain-build-linux-4.9.2/prefix --enable-shared
--disable-static

don't use any cross-tool like utility here. we should create anything we need
from scratch. 

Thanks to great Google, the powerful AddressSanitizer, and the excellent
creator  of the AddressSantizer.(kcc and other greate engineer in Google)


[Bug middle-end/67285] ICE with (rdiv (POW:s @0 REAL_CST@1) @0)

2015-08-20 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67285

Richard Biener rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 Status|WAITING |ASSIGNED
   Assignee|unassigned at gcc dot gnu.org  |rguenth at gcc dot 
gnu.org

--- Comment #3 from Richard Biener rguenth at gcc dot gnu.org ---
Mine.


[Bug regression/67288] [4.9 regression] non optimal simple function (useless additional shift/remove/shift/add)

2015-08-20 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67288

Richard Biener rguenth at gcc dot gnu.org changed:

   What|Removed |Added

   Keywords||missed-optimization
 Target||powerpc*
   Target Milestone|--- |4.9.4


[Bug target/63672] xbegin/xend/xabort missing memory barriers

2015-08-20 Thread bergner at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63672

Peter Bergner bergner at gcc dot gnu.org changed:

   What|Removed |Added

 CC||bergner at gcc dot gnu.org

--- Comment #1 from Peter Bergner bergner at gcc dot gnu.org ---
Andi, did this bug ever get fixed?  I ask, since we're hitting a similar issue
on POWER with our __builtin_tbegin() builtin.  I know we need a minimum of a
memory barrier on our HTM builtins, but I also wonder whether a full
optimization barrier is needed to stop even non loads and stores from being
moved outside of the transaction body.  The following shows a test case that
seems to need a full optimization barrier:

  https://www.sourceware.org/ml/libc-alpha/2015-08/msg00880.html


[Bug target/67291] error: 'asm' operand has impossible constraints when compiling gromacs 5.1 testsuite on PPC64 and PPC64LE with VSX SIMD

2015-08-20 Thread dominik at greysector dot net
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67291

--- Comment #7 from Dominik Mierzejewski dominik at greysector dot net ---
Thanks a lot, everyone. This was really helpful. I'll bring this back to
gromacs upstream.


[Bug target/67297] New: PowerPC does not support all vector interfaces from the ELFv2 1.1 ABI

2015-08-20 Thread wschmidt at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67297

Bug ID: 67297
   Summary: PowerPC does not support all vector interfaces from
the ELFv2 1.1 ABI
   Product: gcc
   Version: 6.0
Status: UNCONFIRMED
  Keywords: ABI
  Severity: normal
  Priority: P3
 Component: target
  Assignee: unassigned at gcc dot gnu.org
  Reporter: wschmidt at gcc dot gnu.org
  Target Milestone: ---
Target: powerpc64le-unknown-linux-gnu

Created attachment 36229
  -- https://gcc.gnu.org/bugzilla/attachment.cgi?id=36229action=edit
List of missing vector interfaces

Version 1.1 of the Power Architecture 64-Bit ELF V2 ABI Specification:
OpenPOWER ABI for Linux Supplement contains an appendix describing built-in
functions for vector programming that compliant compilers should implement. 
GCC currently supports most of these, but a significant number are not yet
implemented.  A full list of missing interfaces is attached.

Intended semantics for the interfaces are described in Appendix A of the ABI
document, which can be obtained here: 
https://www-03.ibm.com/technologyconnect/tgcm/TGCMServlet.wss?alias=OpenPOWER. 
(Unfortunately free registration is still required to access the document at
this site, but you will not be spammed as a result.)


[Bug c++/67292] valgrind error from cc1plus: search_line_sse2(unsigned char const*, unsigned char const*) (lex.c:380)

2015-08-20 Thread redi at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67292

--- Comment #1 from Jonathan Wakely redi at gcc dot gnu.org ---
Oops I forgot the command:

./cc1plus -std=c++11 -o /dev/null - -quiet  'class k{int k{4};};'


[Bug middle-end/67295] New: [ARM][6 Regression] FAIL: gcc.target/arm/builtin-bswap-1.c scan-assembler-times revshne\\t 1

2015-08-20 Thread ktkachov at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67295

Bug ID: 67295
   Summary: [ARM][6 Regression] FAIL:
gcc.target/arm/builtin-bswap-1.c scan-assembler-times
revshne\\t 1
   Product: gcc
   Version: 6.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: middle-end
  Assignee: unassigned at gcc dot gnu.org
  Reporter: ktkachov at gcc dot gnu.org
CC: aoliva at gcc dot gnu.org
  Target Milestone: ---
Target: arm*

After the big copyrename patch r226901 I'm seeing these two fails on arm:
FAIL: gcc.target/arm/builtin-bswap-1.c scan-assembler-times revshne\\t 1
FAIL: gcc.target/arm/builtin-bswap-1.c scan-assembler-times rev16ne\\t 1

The reduced part from these tests is:

extern short foos16 (short);

/* revshne */
short swaps16_cond (short x, int y)
{
  short z = x;
  if (y)
z = __builtin_bswap16 (x);
  return foos16 (z);
}


Compile with -O2.
With the new revision we generate:
cmp r1, #0
rev16ne r0, r0
uxthne  r0, r0
.L2:
sxthr0, r0
b   foos16

whereas before that we generated:
cmp r1, #0
revshne r0, r0
.L2:
b   foos16


Never mind the extra label, I think that's a practically harmless artifact of
if-conversion.
My arm-none-eabi cross compiler was configured with:
--with-arch=armv7-a --with-float=hard --with-fpu=neon-vfpv4

Note, the subsequent commit:
Author: aoliva aoliva@138bc75d-0d04-0410-961f-82ee72b054a4
Date:   Wed Aug 19 17:00:32 2015 +

[PR64164] fix regressions reported on m68k and armeb

Defer stack slot address assignment for all parms that can't live in
pseudos, and accept pseudos assignments in assign_param_setup_block.

for  gcc/ChangeLog

PR rtl-optimization/64164
* cfgexpand.c (parm_maybe_byref_p): Renamed to...
(parm_in_stack_slot_p): ... this.  Disregard mode, what
matters is whether the parm will live in a pseudo or a stack
slot.
(expand_one_ssa_partition): Deal with params without a default
def.  Disregard mode.
* cfgexpand.h: Renamed function declaration.
* tree-ssa-coalesce.c: Adjust.
* function.c (split_complex_args): Allocate stack slot for
unassigned parms before splitting.
(parm_in_unassigned_mem_p): New.  Use it instead of
parm_maybe_byref_p throughout this file.
(assign_parm_setup_block): Use it.  Accept pseudos in the
expand-assigned rtl.
(assign_parm_setup_reg): Drop BLKmode requirement.
(assign_parm_setup_stack): Allocate and fill in the address of
unassigned MEM parms.

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

didn't fix this.

Let me know if any more information is needed


[Bug debug/67293] Very large DW_AT_const_value produced

2015-08-20 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67293

--- Comment #1 from Richard Biener rguenth at gcc dot gnu.org ---
The difference is of course when not optimized out but using only(?)
DW_AT_const_value you can't refer to a in the debugger:

(gdb) p a
Can't take address of a which isn't an lvalue.


[Bug c++/67292] New: valgrind error from cc1plus: search_line_sse2(unsigned char const*, unsigned char const*) (lex.c:380)

2015-08-20 Thread redi at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67292

Bug ID: 67292
   Summary: valgrind error from cc1plus: search_line_sse2(unsigned
char const*, unsigned char const*) (lex.c:380)
   Product: gcc
   Version: 4.9.4
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: redi at gcc dot gnu.org
  Target Milestone: ---
  Host: i686-pc-linux-gnu
Target: i686-pc-linux-gnu
 Build: i686-pc-linux-gnu

==25450== Memcheck, a memory error detector
==25450== Copyright (C) 2002-2013, and GNU GPL'd, by Julian Seward et al.
==25450== Using Valgrind-3.10.1 and LibVEX; rerun with -h for copyright info
==25450== Command: ./cc1plus -std=c++11 -o foo.s -
==25450== 
==25450== Invalid read of size 16
==25450==at 0x8A022A4: search_line_sse2(unsigned char const*, unsigned char
const*) (lex.c:380)
==25450==by 0x8A02A1B: _cpp_clean_line (lex.c:843)
==25450==by 0x8A02DCC: _cpp_get_fresh_line.part.6 (lex.c:2209)
==25450==by 0x8A04DEC: _cpp_get_fresh_line (lex.c:2197)
==25450==by 0x8A04DEC: _cpp_lex_direct (lex.c:2274)
==25450==by 0x8A05B6D: _cpp_lex_token (lex.c:2148)
==25450==by 0x8A09FF0: cpp_get_token_1(cpp_reader*, unsigned int*)
(macro.c:2359)
==25450==by 0x82771FA: c_lex_with_flags(tree_node**, unsigned int*,
unsigned char*, int) (c-lex.c:302)
==25450==by 0x81AD351: cp_lexer_get_preprocessor_token(cp_lexer*,
cp_token*) (parser.c:761)
==25450==by 0x81D9703: cp_parser_initial_pragma (parser.c:31423)
==25450==by 0x81D9703: cp_lexer_new_main (parser.c:631)
==25450==by 0x81D9703: cp_parser_new (parser.c:3407)
==25450==by 0x81D9703: c_parse_file() (parser.c:31694)
==25450==by 0x827BF69: c_common_parse_file() (c-opts.c:1067)
==25450==by 0x855B36A: compile_file() (toplev.c:548)
==25450==by 0x855CFF5: do_compile (toplev.c:1926)
==25450==by 0x855CFF5: toplev_main(int, char**) (toplev.c:2002)
==25450==  Address 0x418b2a0 is 8 bytes before a block of size 36 alloc'd
==25450==at 0x400720D: malloc (in
/usr/lib/valgrind/vgpreload_memcheck-x86-linux.so)
==25450==by 0x8A2FA47: xmalloc (xmalloc.c:147)
==25450==by 0x89FF7D3: read_file_guts (files.c:695)
==25450==by 0x89FF7D3: read_file(cpp_reader*, _cpp_file*) (files.c:751)
==25450==by 0x8A00563: should_stack_file (files.c:796)
==25450==by 0x8A00563: _cpp_stack_file (files.c:874)
==25450==by 0x8A0208C: cpp_read_main_file(cpp_reader*, char const*)
(init.c:617)
==25450==by 0x827B7AF: c_common_post_options(char const**) (c-opts.c:993)
==25450==by 0x855C891: process_options (toplev.c:1246)
==25450==by 0x855C891: do_compile (toplev.c:1895)
==25450==by 0x855C891: toplev_main(int, char**) (toplev.c:2002)
==25450==by 0x89E04EA: main (main.c:36)
==25450==


[Bug target/67291] error: 'asm' operand has impossible constraints when compiling gromacs 5.1 testsuite on PPC64 and PPC64LE with VSX SIMD

2015-08-20 Thread bergner at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67291

Peter Bergner bergner at gcc dot gnu.org changed:

   What|Removed |Added

 CC||bergner at gcc dot gnu.org,
   ||meissner at gcc dot gnu.org

--- Comment #3 from Peter Bergner bergner at gcc dot gnu.org ---
(In reply to Alan Modra from comment #2)
 I think this is a user error.
 
 The ww constraint is for the single precision vsx insns, like xsaddsp. 
 This constraint is only enabled for vsx regs when compiling with
 -mcpu=power8 (or when you compiler defaults to -mcpu=power8), or when
 explicitly enabled with -mupper-regs-sf.  So if your compiler defaults to
 -mcpu=power7, you'll get the impossible constraints message.

Agreed.  Looking at the configure options above, this is a big-endian build
that did not use --with-cpu=..., so the -mcpu= default is much older than
power8.  IIRC, it's even a pre-power4 ISA.


[Bug debug/67293] New: Very large DW_AT_const_value produced

2015-08-20 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67293

Bug ID: 67293
   Summary: Very large DW_AT_const_value produced
   Product: gcc
   Version: 6.0
Status: UNCONFIRMED
  Keywords: memory-hog, missed-optimization
  Severity: normal
  Priority: P3
 Component: debug
  Assignee: unassigned at gcc dot gnu.org
  Reporter: rguenth at gcc dot gnu.org
CC: jakub at gcc dot gnu.org
  Target Milestone: ---

There seems to be no limit on the size of DW_AT_const_value attributes we
generate:

static const int a[100] = { 1, [99] = 1 };
int main() {}

with -O0 -g we produce

 16b: Abbrev Number: 7 (DW_TAG_variable)
6c   DW_AT_name: a
6e   DW_AT_decl_file   : 1
6f   DW_AT_decl_line   : 1
70   DW_AT_type: 0x7e
74   DW_AT_location: 9 byte block: 3 0 0 0 0 0 0 0 0  (DW_OP_addr: 0)

while with -O -g we end up with

 16b: Abbrev Number: 7 (DW_TAG_variable)
6c   DW_AT_name: a
6e   DW_AT_decl_file   : 1
6f   DW_AT_decl_line   : 1
70   DW_AT_type: 0x3d0978
74   DW_AT_const_value : 400 byte block: 1 0 0 0 0 0 0 0 0 0 0 0 


I think that's hardly useful nor very friendly to consumers.

We also fail to take the opportunity to represent the not optimized out
constant value in the DW_AT_const_value form if it is shorter:

static const int a = 1;
int main() {}

produces

 151: Abbrev Number: 4 (DW_TAG_variable)
52   DW_AT_name: a
54   DW_AT_decl_file   : 1
55   DW_AT_decl_line   : 1
56   DW_AT_type: 0x5b
5a   DW_AT_const_value : 1
 15b: Abbrev Number: 5 (DW_TAG_const_type)

when optimized out (1 byte for the const value), compared to

 151: Abbrev Number: 4 (DW_TAG_variable)
52   DW_AT_name: a
54   DW_AT_decl_file   : 1
55   DW_AT_decl_line   : 1
56   DW_AT_type: 0x64
5a   DW_AT_location: 9 byte block: 3 0 0 0 0 0 0 0 0  (DW_OP_addr: 0)
 164: Abbrev Number: 5 (DW_TAG_const_type)

when not optimized out (10 bytes on 64bit archs, 6 bytes on 32bit archs).

I am arriving here because with early LTO debug I'd like to output more
DW_AT_const_value early (before we know whether the decl will go away).

I think the size optimization is obvious (maybe to some extend even factor
in relocation cost, thus allow bigger than 10 or 6 byte constants, like
arbitrary non-aggregate constants), a limit on the maximum size should very
likely be controlled by a --param.


[Bug target/67291] error: 'asm' operand has impossible constraints when compiling gromacs 5.1 testsuite on PPC64 and PPC64LE with VSX SIMD

2015-08-20 Thread amodra at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67291

Alan Modra amodra at gmail dot com changed:

   What|Removed |Added

 CC||amodra at gmail dot com

--- Comment #2 from Alan Modra amodra at gmail dot com ---
I think this is a user error.

The ww constraint is for the single precision vsx insns, like xsaddsp.  This
constraint is only enabled for vsx regs when compiling with -mcpu=power8 (or
when you compiler defaults to -mcpu=power8), or when explicitly enabled with
-mupper-regs-sf.  So if your compiler defaults to -mcpu=power7, you'll get the
impossible constraints message.

Reduced testcase, which compiles OK with -mcpu=power8, but fails with
-mcpu=power7.

__vector double
gmx_simd_cvt_i2d_ibm_vsx(__vector signed int ix)
{
  const __vector unsigned char perm = {4, 5, 6, 7, 0, 1, 2, 3, 12, 13, 14, 15,
8, 9, 10, 11};
  __vector double x;
  ix = __builtin_vec_perm(ix, ix, perm);
  __asm__ (xvcvsxwdp %x0,%x1 : =ww (x) : ww (ix));
  return x;
}

I believe the asm should be using =wd and wa constraints.  Also, that
vec_perm is a bit ugly.  Putting the words of ix in the right place would
better be done with xxsldwi.


[Bug libstdc++/67294] New: FAIL: 30_threads/*timed_mutex/unlock/2.cc (test for excess errors) on x86_64-apple-darwin14

2015-08-20 Thread dominiq at lps dot ens.fr
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67294

Bug ID: 67294
   Summary: FAIL: 30_threads/*timed_mutex/unlock/2.cc (test for
excess errors) on x86_64-apple-darwin14
   Product: gcc
   Version: 6.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: libstdc++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: dominiq at lps dot ens.fr
CC: iains at gcc dot gnu.org, redi at gcc dot gnu.org
  Target Milestone: ---
  Host: x86_64-apple-darwin14
Target: x86_64-apple-darwin14
 Build: x86_64-apple-darwin14

On x86_64-apple-darwin14 I see the following failures

FAIL: 30_threads/recursive_timed_mutex/unlock/2.cc (test for excess errors)
UNRESOLVED: 30_threads/recursive_timed_mutex/unlock/2.cc compilation failed to
produce executable
FAIL: 30_threads/timed_mutex/unlock/2.cc (test for excess errors)
UNRESOLVED: 30_threads/timed_mutex/unlock/2.cc compilation failed to produce
executable

The tests have been introduced at revision r226863 and the failures are

/opt/gcc/work/libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/unlock/2.cc:28:25:
error: 'recursive_timed_mutex' in namespace 'std' does not name a type
 using mutex_type = std::recursive_timed_mutex;
 ^
/opt/gcc/work/libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/unlock/2.cc:30:1:
error: 'mutex_type' does not name a type
 mutex_type m;
 ^
/opt/gcc/work/libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/unlock/2.cc:
In function 'void f()':
/opt/gcc/work/libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/unlock/2.cc:34:19:
error: 'mutex_type' was not declared in this scope
   std::lock_guardmutex_type l(m);
   ^
/opt/gcc/work/libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/unlock/2.cc:34:29:
error: template argument 1 is invalid
   std::lock_guardmutex_type l(m);
 ^
/opt/gcc/work/libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/unlock/2.cc:34:33:
error: 'm' was not declared in this scope
   std::lock_guardmutex_type l(m);
 ^


[Bug driver/67301] Unable to compile program using extended assembly and asmSymbolicName

2015-08-20 Thread noloader at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67301

--- Comment #2 from Jeffrey Walton noloader at gmail dot com ---
(In reply to Andrew Pinski from comment #1)
 Try:
  int main(int argc, char* argv[])
   {
   __asm__ __volatile__ (
 
 \t movl %[__ARGC], %%eax \n
 :
 : [__ARGC] r (argc)
   );
 
   return 0;
   }
 
 Basically the syntax for naming operands is [XYZ] but since it is optional,
 [ is used to say it is optional part of the syntax.  Yes it is slightly
 confusing but that is what you get when you use [] as both part of the
 actual syntax and saying it is an optional part.

Oh, I see. Yes, that's confusing. 

When I read it, I thought the double square brackets were a typo that should
have read something like the following, meaning the asmSymbolicName is optional
(which it is):

[ [asmSymbolicName] constraint (cexpression) ]


Perhaps the docs should call that out specifically to avoid confusion?


[Bug libstdc++/67294] FAIL: 30_threads/*timed_mutex/unlock/2.cc (test for excess errors) on x86_64-apple-darwin14

2015-08-20 Thread redi at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67294

Jonathan Wakely redi at gcc dot gnu.org changed:

   What|Removed |Added

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

--- Comment #3 from Jonathan Wakely redi at gcc dot gnu.org ---
Should be OK now.


[Bug debug/66728] [5/6 Regression] CONST_WIDE_INT causes corrupted DWARF debug info

2015-08-20 Thread rsandifo at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66728

--- Comment #7 from rsandifo at gcc dot gnu.org rsandifo at gcc dot gnu.org 
---
(In reply to Ulrich Weigand from comment #6)
 (In reply to rsand...@gcc.gnu.org from comment #4)
  Testing a patch.  It involves tightening the mode of the rtx returned
  by rtl_for_decl_location, as well as new asserts, so some fallout is
  likely...
 
 Hi Richard, just a quick ping ...  Were you able to make any progress with
 this?

As expected there was a lot of fallout from trying to tighten the mode.
We just seem to be very loose with our type safety here.  Sometimes the
mode of the value associated with the decl is DECL_MODE, sometimes it's
the result of promote_decl_mode, sometimes it's BLKmode when the DECL_MODE
isn't, sometimes the DECL_MODE is BLKmode when the rtl isn't, etc.
It all turned into a bit of a rathole.

I suppose I'm just going to have to admit defeat and use the type or
mode of the decl only in the case where the rtl is a scalar integer
constant -- which seems very inconsistent.


[Bug target/67211] [5 Regression] ICE (insn does not satisfy its constraints) on powerpc64le-linux-gnu

2015-08-20 Thread meissner at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67211

Michael Meissner meissner at gcc dot gnu.org changed:

   What|Removed |Added

  Attachment #36218|0   |1
is obsolete||

--- Comment #11 from Michael Meissner meissner at gcc dot gnu.org ---
Created attachment 36230
  -- https://gcc.gnu.org/bugzilla/attachment.cgi?id=36230action=edit
Patch to fix problem for gcc 5.x that was submitted to gcc-patches


[Bug target/67211] [5 Regression] ICE (insn does not satisfy its constraints) on powerpc64le-linux-gnu

2015-08-20 Thread meissner at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67211

--- Comment #12 from Michael Meissner meissner at gcc dot gnu.org ---
Created attachment 36231
  -- https://gcc.gnu.org/bugzilla/attachment.cgi?id=36231action=edit
Patch to fix problem for gcc 6.x that was submitted to gcc-patches

[gcc]
2015-08-20  Michael Meissner  meiss...@linux.vnet.ibm.com

PR target/67211
* config/rs6000/rs6000-cpus.def (ISA_2_7_MASKS_SERVER): Set
-mefficient-unaligned-vsx on ISA 2.7.

* config/rs6000/rs6000.opt (-mefficient-unaligned-vsx): Convert
option to a masked option.

* config/rs6000/rs6000.c (rs6000_option_override_internal): Rework
logic for -mefficient-unaligned-vsx so that it is set via an arch
ISA option, instead of being set if -mtune=power8 is set. Move
-mefficient-unaligned-vsx and -mallow-movmisalign handling to be
near other default option handling.

[gcc/testsuite]
2015-08-20  Michael Meissner  meiss...@linux.vnet.ibm.com

PR target/67211
* g++.dg/pr67211.C: New test.


[Bug target/67296] New: [HSA] ICE in register allocator (assignment of this argument in a ctor)

2015-08-20 Thread marxin at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67296

Bug ID: 67296
   Summary: [HSA] ICE in register allocator (assignment of this
argument in a ctor)
   Product: gcc
   Version: hsa
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: target
  Assignee: unassigned at gcc dot gnu.org
  Reporter: marxin at gcc dot gnu.org
CC: matz at suse dot de, mjambor at suse dot cz
  Target Milestone: ---

Created attachment 36228
  -- https://gcc.gnu.org/bugzilla/attachment.cgi?id=36228action=edit
Test case

Hello Michael.

Similar problem as yesterday:

$ ./xg++ -B. /tmp/t.c -fdump-tree-hsagen -fdump-tree-hsagen
/tmp/t.c: In constructor ‘C0::C0()’:
/tmp/t.c:4:25: internal compiler error: in linear_scan_regalloc, at
hsa-regalloc.c:686
   __attribute__ ((hsa)) C0() {}
 ^
0xd93138 linear_scan_regalloc
../../gcc/hsa-regalloc.c:686
0xd93725 regalloc
../../gcc/hsa-regalloc.c:793
0xd937de hsa_regalloc()
../../gcc/hsa-regalloc.c:813
0xd8ba12 generate_hsa
../../gcc/hsa-gen.c:3799
0xd8c5e1 execute
../../gcc/hsa-gen.c:4041

$ cat t.c.189t.hsagen 

;; Function C0::C0() (_ZN2C0C2Ev, funcdef_no=1, decl_uid=2259, cgraph_uid=1,
symbol_order=1)

--- Generated SSA form ---

HSAIL IL for __base_ctor 
BB 0:
  ld_kernarg_u64 $_0, [%this]
  Fall-through to BB 1

BB 1:
  ret_none 

--- After out-of-SSA: ---

HSAIL IL for __base_ctor 
BB 0:
  ld_kernarg_u64 $_0, [%this]
  Fall-through to BB 1

BB 1:
  ret_none 

Thanks,
Martin

[Bug middle-end/67298] New: [6 Regression] 254.gap in SPEC CPU 2000 is miscompiled

2015-08-20 Thread hjl.tools at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67298

Bug ID: 67298
   Summary: [6 Regression] 254.gap in SPEC CPU 2000 is miscompiled
   Product: gcc
   Version: 6.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: middle-end
  Assignee: unassigned at gcc dot gnu.org
  Reporter: hjl.tools at gmail dot com
CC: naveenh at gcc dot gnu.org
  Target Milestone: ---

On Linux/x86-64, r226847 compiles 254.gap in SPEC CPU 2000
into an infinite loop with

-O2 -ffast-math  -DSPEC_CPU2000_LP64


[Bug c++/67299] New: demangler mishandles complex types

2015-08-20 Thread ian at airs dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67299

Bug ID: 67299
   Summary: demangler mishandles complex types
   Product: gcc
   Version: 5.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: ian at airs dot com
  Target Milestone: ---

This tiny C++ program
void f(_Complex float c) {}
compiles into this symbol
_Z1fCf
which is demangled as
f(floatcomplex )
It should probably be
f(_Complex float)


[Bug libstdc++/67294] FAIL: 30_threads/*timed_mutex/unlock/2.cc (test for excess errors) on x86_64-apple-darwin14

2015-08-20 Thread redi at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67294

Jonathan Wakely redi at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |ASSIGNED
   Last reconfirmed||2015-08-20
   Assignee|unassigned at gcc dot gnu.org  |redi at gcc dot gnu.org
   Target Milestone|--- |6.0
 Ever confirmed|0   |1

--- Comment #1 from Jonathan Wakely redi at gcc dot gnu.org ---
Sorry about that, I shouldn't be testing features that aren't supported on
Darwin. Fix coming up ...


[Bug libstdc++/67294] FAIL: 30_threads/*timed_mutex/unlock/2.cc (test for excess errors) on x86_64-apple-darwin14

2015-08-20 Thread redi at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67294

--- Comment #2 from Jonathan Wakely redi at gcc dot gnu.org ---
Author: redi
Date: Thu Aug 20 20:36:19 2015
New Revision: 227043

URL: https://gcc.gnu.org/viewcvs?rev=227043root=gccview=rev
Log:
libstdc++/67294 Don't run timed mutex tests on Darwin

PR libstdc++/67294
* testsuite/30_threads/recursive_timed_mutex/unlock/2.cc: Do not run
on Darwin.
* testsuite/30_threads/timed_mutex/unlock/2.cc: Likewise.

Modified:
trunk/libstdc++-v3/ChangeLog
trunk/libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/unlock/2.cc
trunk/libstdc++-v3/testsuite/30_threads/timed_mutex/unlock/2.cc


[Bug middle-end/67298] [6 Regression] 254.gap in SPEC CPU 2000 is miscompiled

2015-08-20 Thread pinskia at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67298

Andrew Pinski pinskia at gcc dot gnu.org changed:

   What|Removed |Added

 CC||pinskia at gcc dot gnu.org

--- Comment #1 from Andrew Pinski pinskia at gcc dot gnu.org ---
This could be a bug in gap. Have you tried using -fsantitized=undefined on the
sources?

How about a reduced testcase?


[Bug c/67224] UTF-8 support for identifier names in GCC

2015-08-20 Thread ejolson at unr dot edu
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67224

--- Comment #20 from Eric ejolson at unr dot edu ---
I've been looking at the code in lex_identifier as well as what goes on in
forms_identifier_p and so forth.  As some point each identifier needs to be
stored in the symbol table using ht_lookup_with_hash.  Proper functioning
requires that UTF-8 and UCN representations of the same unicode characters are
treated as the same symbol.  Thus, there needs to be some point at which the
identifiers are regularized to be either all UTF-8 or all UCN escaped ASCII. 
As gcc is working with UCNs right now, the obvious implementation allocates
temporary memory to hold the UCN escaped ASCII version of an UTF-8 identifier
and then frees it again after calling ht_lookup.  Any comments would be
appreciated.


[Bug target/66312] [SH] Regression: Bootstrap failure gcc/d/ctfeexpr.dmd.o differs with gcc-4.8/4.9

2015-08-20 Thread glaubitz at physik dot fu-berlin.de
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66312

--- Comment #14 from John Paul Adrian Glaubitz glaubitz at physik dot 
fu-berlin.de ---
The issue still reproduces with gcc_4.9_4.9.3-3 in Debian which corresponds to
SVN revision r226107 of the gcc-4.9 branch:

Comparing stages 2 and 3
warning: gcc/cc1plus-checksum.o differs
warning: gcc/cc1obj-checksum.o differs
warning: gcc/cc1objplus-checksum.o differs
warning: gcc/cc1-checksum.o differs
Bootstrap comparison failure!
gcc/d/ctfeexpr.dmd.o differs
Makefile:19827: recipe for target 'compare' failed

I have attached the stage 2 and 3 versions of gcc/d/ctfeexpr.dmd.o respectively
and also disassembled both after stripping them to be able to generate a diff
for the disassembled code. Unlike PR/target 67002, the diff seems rather large
this time.

Let me know if you need anything else, I have kept the full build of the
compiler after it failed the compare target.

Adrian


[Bug preprocessor/67292] valgrind error from cc1plus: search_line_sse2(unsigned char const*, unsigned char const*) (lex.c:380)

2015-08-20 Thread pinskia at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67292

Andrew Pinski pinskia at gcc dot gnu.org changed:

   What|Removed |Added

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

--- Comment #3 from Andrew Pinski pinskia at gcc dot gnu.org ---
Dup of bug 45386.

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


[Bug preprocessor/45386] [4.6 Regression] valgrind reports out-of-bounds read in search_line_sse2

2015-08-20 Thread pinskia at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=45386

Andrew Pinski pinskia at gcc dot gnu.org changed:

   What|Removed |Added

 CC||redi at gcc dot gnu.org

--- Comment #3 from Andrew Pinski pinskia at gcc dot gnu.org ---
*** Bug 67292 has been marked as a duplicate of this bug. ***


[Bug target/67291] error: 'asm' operand has impossible constraints when compiling gromacs 5.1 testsuite on PPC64 and PPC64LE with VSX SIMD

2015-08-20 Thread bergner at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67291

Peter Bergner bergner at gcc dot gnu.org changed:

   What|Removed |Added

 Status|RESOLVED|CLOSED

--- Comment #6 from Peter Bergner bergner at gcc dot gnu.org ---
Closing as invalid.


[Bug preprocessor/45386] [4.6 Regression] valgrind reports out-of-bounds read in search_line_sse2

2015-08-20 Thread manu at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=45386

Manuel López-Ibáñez manu at gcc dot gnu.org changed:

   What|Removed |Added

 CC||manu at gcc dot gnu.org

--- Comment #4 from Manuel López-Ibáñez manu at gcc dot gnu.org ---
It should be possible to create a suppression file to silence false positives:
http://valgrind.org/docs/manual/manual-core.html#manual-core.suppress

but a comment in the code search_line_sse2 (lex.c:372) is probably as good to
avoid further duplicates.

[Bug c++/67292] valgrind error from cc1plus: search_line_sse2(unsigned char const*, unsigned char const*) (lex.c:380)

2015-08-20 Thread pinskia at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67292

--- Comment #2 from Andrew Pinski pinskia at gcc dot gnu.org ---
This is not a bug.
If you look this is an aligned access so it will never fault.  This means we
can read past the array bounds without any issues as long as we don't use those
elements of the vector (which we don't).


[Bug target/67291] error: 'asm' operand has impossible constraints when compiling gromacs 5.1 testsuite on PPC64 and PPC64LE with VSX SIMD

2015-08-20 Thread meissner at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67291

--- Comment #4 from Michael Meissner meissner at gcc dot gnu.org ---
Ww is the wrong constraint to use for this instruction. The ww constraint is
intended to be used with the VSX scalar single precision floating point
instructions added in ISA 2.07 (i.e. power8). On ISA 2.06 (i.e. power7), ww
becomes NO_REGS, because that machine did not provide those instructions. This
is so we can encode SFmode operations in one insn. Here is a simplification of
the add insn for single precision floating point to show how ww is used:

(define_insn addsf3
  [(set (match_operand:SF 0 register_operand =f,ww)
(plus:SF (match_operand:SF 1 register_operand f,ww)
 (match_operand:SF 2 register_opreand f,ww)]
  ...
  @
   fadds %0,%1,%2
   xsaddsp %x0,%x1,%x2)

The appropriate constraint for vector float is wf (you can use wa which is
the constraint for all VSX registers, since we map wf and wd to wa).
There is no constraint that targets integer vectors specifically. If you are
using a VSX instruction you want the wa constraint (instructions with a xs
or xv prefix). If you are using an Altivec instruction (typically
instructions with a v prefix) you want to use v.


[Bug target/67291] error: 'asm' operand has impossible constraints when compiling gromacs 5.1 testsuite on PPC64 and PPC64LE with VSX SIMD

2015-08-20 Thread bergner at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67291

Peter Bergner bergner at gcc dot gnu.org changed:

   What|Removed |Added

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

--- Comment #5 from Peter Bergner bergner at gcc dot gnu.org ---
I'm going to mark this bug as invalid, since it is a gromacs source code error
and not a GCC error.  That said, gromacs should be fixed.  Dominik, are you
planning on pushing those changes?


[Bug other/67300] New: -foffload* undocumented

2015-08-20 Thread jsm28 at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67300

Bug ID: 67300
   Summary: -foffload* undocumented
   Product: gcc
   Version: 6.0
Status: UNCONFIRMED
  Keywords: openacc
  Severity: normal
  Priority: P3
 Component: other
  Assignee: unassigned at gcc dot gnu.org
  Reporter: jsm28 at gcc dot gnu.org
CC: tschwinge at gcc dot gnu.org
  Target Milestone: ---

The -foffload= and -foffload-abi= options have no documentation in invoke.texi.


[Bug c/67224] UTF-8 support for identifier names in GCC

2015-08-20 Thread joseph at codesourcery dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67224

--- Comment #21 from joseph at codesourcery dot com joseph at codesourcery dot 
com ---
_cpp_interpret_identifier converts UCNs to UTF-8 which is the canonical 
internal form for identifiers - for UTF-8 in identifiers, you just need to 
pass in straight through unmodified there.  (cpplib takes care to store 
the original spelling of the identifier as well for purposes for which 
that matters, but that's simply a matter of lex_identifier calling 
cpp_lookup on the original spelling as well as using 
_cpp_interpret_identifier to get the canonical version.)

So you never need to convert UTF-8 to UCNs in order to handle UTF-8 in 
identifiers (cpplib has logic to do so when needed for output, but you 
don't need to add anything new in that regard).  You do need to decode 
UTF-8 into character values for the code that checks normalization, which 
characters are allowed at the start of identifiers, etc., just as the 
existing code decodes UCNs into such values.  (But as I noted, a UCN not 
allowed in identifiers is lexed as part of an identifier, which is then 
considered invalid, whereas a UTF-8 character not allowed in identifiers 
should be lexed as a separate pp-token.  However, UTF-8 for a character 
allowed in identifiers but not at the start of an identifier should, I 
think, be lexed as an identifier character even at the start of an 
identifier, and then give an error for an invalid identifier if it appears 
at the start of an identifier.  That's my reading of the syntax 
productions in the C standard.)

You can ignore anything claiming to handle UTF-EBCDIC.