[Bug fortran/65419] New: incorrect sibcalls to libgomp functions

2015-03-13 Thread cesar at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65419

Bug ID: 65419
   Summary: incorrect sibcalls to libgomp functions
   Product: gcc
   Version: unknown
Status: UNCONFIRMED
  Keywords: openacc
  Severity: normal
  Priority: P3
 Component: fortran
  Assignee: unassigned at gcc dot gnu.org
  Reporter: cesar at gcc dot gnu.org
CC: jakub at gcc dot gnu.org

I'm not sure if this problem is fortran specific, but I noticed that gfortran
is identifying calls to libgomp, specifically GOACC_data_end, as a sibcall if a
acc data region is the last statement inside the main function. That's a
problem because GOACC_data_end transfers data from the accelerator to the host
at the end of an acc data region. In the attached test case, the data in
question happens to be allocated on the stack. If you look at the epilogue of
the stack frame

callGOACC_data_start
movq%rbx, %rsi
movq%rsp, %rdi
call__field_summary_kernel_module_MOD_field_summary_kernel
addq$1296, %rsp
.cfi_def_cfa_offset 16
popq%rbx
.cfi_def_cfa_offset 8
# SUCC: EXIT [100.0%]  (ABNORMAL,SIBCALL)
jmpGOACC_data_end
.cfi_endproc
.LFE1:

you'll see that %rsp is restored before GOACC_data_end is called. You should be
able to reproduce this bug with -fopenacc -O2.

Did we specify the built-in declaration for GOACC_data_end wrong, or is this a
fortran specific quirk? I don't mind fixing it, but I'm not even sure what a
sibling call is. I think it has something to do with recursion.

Cesar


[Bug libstdc++/65420] New: Enumerators in std::regex_constants should be constexpr variables instead

2015-03-13 Thread redi at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65420

Bug ID: 65420
   Summary: Enumerators in std::regex_constants should be
constexpr variables instead
   Product: gcc
   Version: 5.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: libstdc++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: redi at gcc dot gnu.org

28.5 [re.const] says the members of namespace std::regex_constants should be
variables, not enumerators.

The difference is observable, as perverse users could try to take their
addresses.


[Bug jit/64780] toplevel configure should reject jit as a language if --enable-host-shared is not supplied

2015-03-13 Thread dmalcolm at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64780

David Malcolm dmalcolm at gcc dot gnu.org changed:

   What|Removed |Added

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

--- Comment #4 from David Malcolm dmalcolm at gcc dot gnu.org ---
I've also added some docs on how to package the jit:
  https://gcc.gnu.org/ml/gcc-patches/2015-03/msg00759.html

Closing this bug out


[Bug middle-end/65409] [4.8/4.9/5 Regression] ICE in store_field

2015-03-13 Thread ebotcazou at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65409

--- Comment #10 from Eric Botcazou ebotcazou at gcc dot gnu.org ---
 I agree for 4.8/4.9 that your version is safer.
 Anyway, you're the RTL maintainer, so I'll let you decide.

OK, testing went fine, so I'll go for this version on all branches.


[Bug target/59371] [4.8/4.9/5 Regression] Performance regression in GCC 4.8 and later versions.

2015-03-13 Thread sje at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=59371

--- Comment #15 from Steve Ellcey sje at gcc dot gnu.org ---
I am not sure yet where and how to improve this automatically but I have found
an interesting hand optimization that could point to a way to fix this.  If I
change the original function:

int foo(int *p, unsigned short c)
{
signed short i;
int x = 0;
for (i = 0; i  c; i++) {
x = x + *p; p++;
}
return x;
}

To:

int foo(int *p, unsigned short c)
{
signed short i;
unsigned short new_i;
int x = 0;

if (c  32767)
for (i = 0; i  c; i++) {
x = x + *p; p++;
}
else
for (new_i = 0; new_i  c; new_i++) {
x = x + *p; p++;
}
return x;
}


Then GCC 5.0 generates an empty infinite loop for the first for loop and
a compact 4 instruction loop (better even then 4.7) for the second for loop.

I am not sure where or if we can do this optimization in GCC but I am going
to investigate some more.


[Bug tree-optimization/65177] [5 Regression]: extend jump thread for finite state automata causes miscompilation

2015-03-13 Thread spop at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65177

--- Comment #16 from Sebastian Pop spop at gcc dot gnu.org ---
Created attachment 35030
  -- https://gcc.gnu.org/bugzilla/attachment.cgi?id=35030action=edit
IR before and after for failing FSM jump thread

After updating the sources of GCC, I now see the fail as Jakub has reported at
dbgctr=199.

The difference between 198 and 199 is this jump thread path:

FSM jump thread: (13, 53) incoming edge;  (53, 55)  (55, 64)  (64, 66)  (66,
67)  (67, 68)  (68, 69)  (69, 95)  (95, 94)  (94, 5) nocopy; (94, 5)

The attached file is a dump of the IR just before and after SEME code
generation of this path.


[Bug target/64623] ppc64 build failure, ISA_2_7_MASKS_SERVER not declared

2015-03-13 Thread dje at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64623

David Edelsohn dje at gcc dot gnu.org changed:

   What|Removed |Added

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

--- Comment #4 from David Edelsohn dje at gcc dot gnu.org ---
Fixed with revised version of patch for PR target/59828.


[Bug tree-optimization/65177] [5 Regression]: extend jump thread for finite state automata causes miscompilation

2015-03-13 Thread spop at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65177

--- Comment #17 from Sebastian Pop spop at gcc dot gnu.org ---
Trying to figure out why we FSM jump thread this path: (13, 53) (53, 55)  (55,
64)  (64, 66)  (66, 67)  (67, 68)  (68, 69)  (69, 95)  (95, 94)  (94, 5) (94,
5)

In BB_94 we have this code:

  switch (sprv_49) default: L13, case 1: L5, case 2: L6, case 3:
L7, case 5: L28, case 6: L29, case 7: L38, case 8: L36, case 10:
L37

at this point FSM infers that sprv_49 == 1 and we jump to bb_5.  Why?
Following the FSM jump thread path backward from 94 to 13, we have these SSA
definitions:

  # sprv_49 = PHI 8(4), sprv_737(95)
  # sprv_737 = PHI sprv_735(66), sprv_735(67), sprv_736(68), sprv_739(92),
10(88)
  # sprv_736 = PHI sprv_768(67), sprv_738(90)
  # sprv_768 = PHI sprv_764(55), 8(61), sprv_765(58), sprv_766(60)
  # sprv_764 = PHI 1(13), 7(52)

So if we are coming from bb_13, we are guaranteed to have a value of 1.


[Bug target/65408] powerpc64 function argument passing may access invalid memory

2015-03-13 Thread amodra at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65408

Alan Modra amodra at gmail dot com changed:

   What|Removed |Added

 Status|UNCONFIRMED |ASSIGNED
   Last reconfirmed||2015-03-14
   Assignee|unassigned at gcc dot gnu.org  |amodra at gmail dot com
 Ever confirmed|0   |1

--- Comment #4 from Alan Modra amodra at gmail dot com ---
Created attachment 35032
  -- https://gcc.gnu.org/bugzilla/attachment.cgi?id=35032action=edit
prototype patch

Patch I'm about to test


[Bug c++/65422] New: [C++11] Rejected valid double expansion packs.

2015-03-13 Thread bugs at qult dot net
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65422

Bug ID: 65422
   Summary: [C++11] Rejected valid double expansion packs.
   Product: gcc
   Version: 5.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: bugs at qult dot net

Created attachment 35031
  -- https://gcc.gnu.org/bugzilla/attachment.cgi?id=35031action=edit
Failing code with double parameter pack expansion.

The attached code fails to compile with pretty much any version of GCC (up to
the head of the Git repository), with -std=c++11, complaining about the double
parameter pack expansion.  When using the brace-initialization syntax instead
(commented-out in the attached code), the code compiles fine.

Clang 3.5 compiles both versions fine.


[Bug sanitizer/65400] tsan mis-compiles inlineable C functions

2015-03-13 Thread bernd.edlinger at hotmail dot de
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65400

--- Comment #5 from Bernd Edlinger bernd.edlinger at hotmail dot de ---
Created attachment 35033
  -- https://gcc.gnu.org/bugzilla/attachment.cgi?id=35033action=edit
stripped down second test case

For completeness, here is the stripped down test case for the tail call flag.

It reproduces with current trunk and:
[-O2|-Os] -fsanitize=treand[,undefined]

not with -O1 and not with -O3, and not in january either :)


[Bug middle-end/36043] gcc reads 8 bytes for a struct of size 6 which leads to sigsegv

2015-03-13 Thread amodra at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=36043

Alan Modra amodra at gmail dot com changed:

   What|Removed |Added

 Status|NEW |ASSIGNED
 CC||amodra at gmail dot com
   Assignee|unassigned at gcc dot gnu.org  |amodra at gmail dot com


[Bug target/58744] Illegal Memory Access on 3-byte packed struct ARCH: x86_64

2015-03-13 Thread amodra at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58744

Alan Modra amodra at gmail dot com changed:

   What|Removed |Added

 Status|NEW |ASSIGNED
   Assignee|unassigned at gcc dot gnu.org  |amodra at gmail dot com


[Bug tree-optimization/46038] Vectorizer generates misaligned address for vld1 qn, [rn:alignment]

2015-03-13 Thread mshawcroft at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=46038

mshawcroft at gcc dot gnu.org changed:

   What|Removed |Added

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

--- Comment #2 from mshawcroft at gcc dot gnu.org ---
Issue can't be reproduced in trunk or 4.9


[Bug target/65421] New: inefficient code returning float aggregates on powepc64le

2015-03-13 Thread msebor at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65421

Bug ID: 65421
   Summary: inefficient code returning float aggregates on
powepc64le
   Product: gcc
   Version: 5.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: target
  Assignee: unassigned at gcc dot gnu.org
  Reporter: msebor at gcc dot gnu.org

When returning homogeneous floating-point aggregates, gcc first loads the
aggregate into GPRs, then saves it to the save area, and then copies the
aggregate from the GPRs to the floating registers used to return it to the
caller.  Clang emits much more efficient code (see below).

$ cat x.c  ./gcc/xgcc -B./gcc -O3 -o/dev/tty -S x.c
typedef struct { double a[4]; } A;

A foo (const A *a) { return *a; }

.filex.c
.machine power8
.abiversion 2
.section.toc,aw
.section.text
.align 2
.p2align 4,,15
.globl foo
.typefoo, @function
foo:
ld 7,0(3)
ld 8,8(3)
ld 10,16(3)
ld 9,24(3)
std 7,-64(1)
std 8,-56(1)
std 10,-48(1)
std 9,-40(1)
lfd 2,-56(1)
lfd 1,-64(1)
ori 2,2,0
lfd 3,-48(1)
lfd 4,-40(1)
blr
.long 0
.byte 0,0,0,0,0,0,0,0
.sizefoo,.-foo
.identGCC: (GNU) 5.0.0 20150310 (experimental)
.section.note.GNU-stack,,@progbits


Clang emits:
.text
.abiversion 2
.file-
.globlfoo
.align2
.typefoo,@function
foo:
lfd 1, 0(3)
lfd 2, 8(3)
lfd 3, 16(3)
lfd 4, 24(3)
blr
.long0
.quad0
.Ltmp0:
.sizefoo, .Ltmp0-foo


.identclang version 3.6.0 (trunk 215935)


[Bug target/65369] [5 Regression] nettle test failure on powerpc64le-linux-gnu when built with -O3

2015-03-13 Thread trippels at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65369

Markus Trippelsdorf trippels at gcc dot gnu.org changed:

   What|Removed |Added

 CC||wschmidt at gcc dot gnu.org

--- Comment #29 from Markus Trippelsdorf trippels at gcc dot gnu.org ---
CCing Bill because this might be a bug in rs6000_analyze_swaps().


[Bug target/65369] [5 Regression] nettle test failure on powerpc64le-linux-gnu when built with -O3

2015-03-13 Thread amodra at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65369

--- Comment #28 from Alan Modra amodra at gmail dot com ---
Created attachment 35024
  -- https://gcc.gnu.org/bugzilla/attachment.cgi?id=35024action=edit
modified testcase without bswap optimization

This modified testcase avoids triggering the bswap optimization but still shows
a failure at -O3.  So definitely not a problem caused by Thomas' patch.

-O3 -fno-tree-slp-vectorize is OK

-O3 slp dump shows weird offset of +12 between vector loads rather than +16 as
is usual


[Bug ipa/44563] GCC uses a lot of RAM when compiling a large numbers of functions

2015-03-13 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=44563

Richard Biener rguenth at gcc dot gnu.org changed:

   What|Removed |Added

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

--- Comment #33 from Richard Biener rguenth at gcc dot gnu.org ---
Assigning to Honza - I wonder if there is any low-hanging fruit to improve
things for GCC 5 still.


[Bug tree-optimization/65412] missing control flow optimisation

2015-03-13 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65412

--- Comment #1 from Richard Biener rguenth at gcc dot gnu.org ---
I think there exist patches for if-to-switch conversion.


[Bug rtl-optimization/65371] arm loop with volatile variable

2015-03-13 Thread gcc-bugzilla at enginuities dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65371

--- Comment #2 from Stuart gcc-bugzilla at enginuities dot com ---
I compiled it for x86_64 and thought it was fine, however, after your comment I
tried compiling it with clang/llvm and can see the difference (I'm not
particularly familiar with the full instruction set)...

I've found another case which could also be improved:

func.c:

#include stdint.h

#define PERIPH_BASE0x4000
#define PERIPH ((PERIPH_TypeDef *) PERIPH_BASE)

typedef struct
{
volatile uint32_t REG1;
} PERIPH_TypeDef;

void func(uint16_t a)
{
uint32_t t = PERIPH-REG1;

while ((uint16_t) (PERIPH-REG1 - t)  a) { }
}

gives:

 func:
   0:   f04f 4380   mov.w   r3, #1073741824 ; 0x4000
   4:   461amov r2, r3
   6:   6819ldr r1, [r3, #0]
   8:   6813ldr r3, [r2, #0]
   a:   1a5bsubsr3, r3, r1
   c:   b29buxthr3, r3
   e:   4283cmp r3, r0
  10:   d3fabcc.n   8 func+0x8
  12:   4770bx  lr

For some reason r3 is moved in to r2 and then value at the address in r2 is
loaded in to r3 for the loop!

I would expect the following:

 func:
   0:   f04f 4180   mov.w   r1, #1073741824 ; 0x4000
   4:   680aldr r2, [r1, #0]
   6:   680bldr r3, [r1, #0]
   8:   1a9bsubsr3, r3, r2
   a:   b29buxthr3, r3
   c:   4283cmp r3, r0
   e:   d3fabcc.n   6 func+0x6
  10:   4770bx  lr


[Bug c++/65415] using, base class static member function template, and decltype

2015-03-13 Thread redi at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65415

Jonathan Wakely redi at gcc dot gnu.org changed:

   What|Removed |Added

   Keywords||rejects-valid
 Status|UNCONFIRMED |NEW
   Last reconfirmed||2015-03-13
 Ever confirmed|0   |1

--- Comment #1 from Jonathan Wakely redi at gcc dot gnu.org ---
Confirmed. EDG and Clang both accept it.


[Bug middle-end/65409] [4.8/4.9/5 Regression] ICE in store_field

2015-03-13 Thread ebotcazou at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65409

Eric Botcazou ebotcazou at gcc dot gnu.org changed:

   What|Removed |Added

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

--- Comment #3 from Eric Botcazou ebotcazou at gcc dot gnu.org ---
Fixing.


[Bug target/64600] [5 regression] arm-rtems ICE on valid code (-mcpu=xscale)

2015-03-13 Thread ktkachov at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64600

--- Comment #14 from ktkachov at gcc dot gnu.org ---
Should be fixed on trunk.
Joel, can you please confirm for you and close if appropriate?


[Bug target/64600] [5 regression] arm-rtems ICE on valid code (-mcpu=xscale)

2015-03-13 Thread ktkachov at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64600

--- Comment #13 from ktkachov at gcc dot gnu.org ---
Author: ktkachov
Date: Fri Mar 13 10:48:44 2015
New Revision: 221413

URL: https://gcc.gnu.org/viewcvs?rev=221413root=gccview=rev
Log:
[ARM] PR target/64600 Fix another ICE with -mtune=xscale: properly sign-extend
mask during constant splitting

PR target/64600
* config/arm/arm.c (arm_gen_constant, AND case): Use
ARM_SIGN_EXTEND when constructing AND mask.

PR target/64600
* gcc.target/arm/pr64600_1.c: New test.

Added:
trunk/gcc/testsuite/gcc.target/arm/pr64600_1.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/config/arm/arm.c
trunk/gcc/testsuite/ChangeLog


[Bug middle-end/65409] [4.8/4.9/5 Regression] ICE in store_field

2015-03-13 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65409

--- Comment #4 from Jakub Jelinek jakub at gcc dot gnu.org ---
I've so far came up with:
--- gcc/expr.c.jj2015-01-19 09:31:15.0 +0100
+++ gcc/expr.c2015-03-13 11:30:25.699805379 +0100
@@ -6656,14 +6656,18 @@ store_field (rtx target, HOST_WIDE_INT b
(bitpos % BITS_PER_UNIT) == 0
(bitsize % BITS_PER_UNIT) == 0)))
 {
-  gcc_assert (MEM_P (target)  MEM_P (temp)
+  gcc_assert (MEM_P (target)
+   (MEM_P (temp) || GET_CODE (temp) == PARALLEL)
(bitpos % BITS_PER_UNIT) == 0);

   target = adjust_address (target, VOIDmode, bitpos / BITS_PER_UNIT);
-  emit_block_move (target, temp,
-   GEN_INT ((bitsize + BITS_PER_UNIT - 1)
-/ BITS_PER_UNIT),
-   BLOCK_OP_NORMAL);
+  HOST_WIDE_INT bytesize
+= (bitsize + BITS_PER_UNIT - 1) / BITS_PER_UNIT;
+  if (GET_CODE (temp) == PARALLEL)
+emit_group_store (target, temp, TREE_TYPE (exp), bytesize);
+  else
+emit_block_move (target, temp, GEN_INT (bytesize),
+ BLOCK_OP_NORMAL);

   return const0_rtx;
 }
which seems to DTRT in this case.


[Bug middle-end/65409] [4.8/4.9/5 Regression] ICE in store_field

2015-03-13 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65409

--- Comment #6 from Jakub Jelinek jakub at gcc dot gnu.org ---
Doesn't it generate worse code though?  I mean, for BLKmode PARALLEL, forcing
it into some very wide pseudo (TImode in this case, perhaps OImode for even
larger ones?) and then storing might be more expensive than what my patch does.


[Bug ipa/44563] GCC uses a lot of RAM when compiling a large numbers of functions

2015-03-13 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=44563

--- Comment #32 from Richard Biener rguenth at gcc dot gnu.org ---
Author: rguenth
Date: Fri Mar 13 08:52:51 2015
New Revision: 221410

URL: https://gcc.gnu.org/viewcvs?rev=221410root=gccview=rev
Log:
2015-03-12  Richard Biener  rguent...@suse.de

PR middle-end/44563
* tree-inline.c (gimple_expand_calls_inline): Walk BB backwards
to avoid quadratic behavior with inline expansion splitting blocks.
* tree-cfgcleanup.c (cleanup_tree_cfg_bb): Do not merge block
with the successor if the predecessor will be merged with it.
* tree-cfg.c (gimple_can_merge_blocks_p): We can't merge the
entry block with its successor.

Modified:
trunk/gcc/ChangeLog
trunk/gcc/tree-cfg.c
trunk/gcc/tree-cfgcleanup.c
trunk/gcc/tree-inline.c


[Bug target/65414] [5 Regression] ICE while building libgcc after stage 2, bootstrap failure on aarch64-linux-gnu

2015-03-13 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65414

Richard Biener rguenth at gcc dot gnu.org changed:

   What|Removed |Added

   Target Milestone|--- |5.0


[Bug middle-end/65409] [4.8/4.9/5 Regression] ICE in store_field

2015-03-13 Thread ebotcazou at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65409

--- Comment #8 from Eric Botcazou ebotcazou at gcc dot gnu.org ---
The difference is that we go through a pseudo with my version, but the code is
optimal at -O1:

call_Z8copy_foo3Foo
movq%rax, a(%rip)
movb%dl, a+8(%rip)

and the change looks safe enough for all the branches.


[Bug ipa/44563] GCC uses a lot of RAM when compiling a large numbers of functions

2015-03-13 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=44563

Richard Biener rguenth at gcc dot gnu.org changed:

   What|Removed |Added

  Component|tree-optimization   |ipa
  Known to fail||5.0

--- Comment #30 from Richard Biener rguenth at gcc dot gnu.org ---
With all the patches I have for now we end up with a pure IPA issue:

 phase opt and generate  : 193.97 (99%) usr  13.82 (93%) sys 207.75 (99%) wall
3311016 kB (94%) ggc
 ipa inlining heuristics : 140.48 (72%) usr   0.44 ( 3%) sys 141.13 (67%) wall 
396289 kB (11%) ggc
 dominance computation   :   2.99 ( 2%) usr   1.00 ( 7%) sys   3.89 ( 2%) wall 
 0 kB ( 0%) ggc
 integrated RA   :   4.05 ( 2%) usr   0.85 ( 6%) sys   5.26 ( 3%) wall
1577496 kB (45%) ggc
 rest of compilation :   6.53 ( 3%) usr   1.67 (11%) sys   7.91 ( 4%) wall 
155664 kB ( 4%) ggc
 unaccounted todo:   3.82 ( 2%) usr   1.07 ( 7%) sys   4.98 ( 2%) wall 
 0 kB ( 0%) ggc
 TOTAL : 195.4614.79   210.23   
3514948 kB

everything = 1% dropped.  I wonder what that unaccounted todo is ;)


[Bug target/65369] [5 Regression] nettle test failure on powerpc64le-linux-gnu when built with -O3

2015-03-13 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65369

--- Comment #30 from Richard Biener rguenth at gcc dot gnu.org ---
(In reply to Alan Modra from comment #28)
 Created attachment 35024 [details]
 modified testcase without bswap optimization
 
 This modified testcase avoids triggering the bswap optimization but still
 shows a failure at -O3.  So definitely not a problem caused by Thomas' patch.
 
 -O3 -fno-tree-slp-vectorize is OK
 
 -O3 slp dump shows weird offset of +12 between vector loads rather than +16
 as is usual

Well, that's the realign-load sequence.  Load ptr  ~15 and then load (ptr +
12)  ~15.  If ptr is already aligned both loads should load from the same
location.

SLP happens in md4_update only (but it's quite trivial).


[Bug c++/65398] [5 Regression] [C++11] GCC rejects constexpr variable definitions with valid initialization

2015-03-13 Thread mpolacek at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65398

Marek Polacek mpolacek at gcc dot gnu.org changed:

   What|Removed |Added

   Keywords||rejects-valid
 Status|UNCONFIRMED |NEW
   Last reconfirmed||2015-03-13
 CC||mpolacek at gcc dot gnu.org
   Target Milestone|--- |5.0
Summary|[C++11] GCC rejects |[5 Regression] [C++11] GCC
   |constexpr variable  |rejects constexpr variable
   |definitions with valid  |definitions with valid
   |initialization  |initialization
 Ever confirmed|0   |1

--- Comment #1 from Marek Polacek mpolacek at gcc dot gnu.org ---
Confirmed, started with r214941, which did away with try_move_mult_to_index
that tried to replace a[idx] p+ s * delta with a[idx + delta].  I think the
fix is to teach cxx_fold_indirect_ref to do similar transformation.


[Bug middle-end/65409] [4.8/4.9/5 Regression] ICE in store_field

2015-03-13 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65409

--- Comment #9 from Jakub Jelinek jakub at gcc dot gnu.org ---
I agree for 4.8/4.9 that your version is safer.
Anyway, you're the RTL maintainer, so I'll let you decide.


[Bug tree-optimization/62173] [5/6 Regression] 64bit Arch can't ivopt while 32bit Arch can

2015-03-13 Thread amker at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=62173

--- Comment #38 from amker at gcc dot gnu.org ---
The first patch actually helping this case is at
https://gcc.gnu.org/ml/gcc-patches/2015-02/msg00836.html

But the real problem lies in scev/ivopt about how type conversion and scev
overflow are handled.  I am working on this.

According to Richard, both the patch and the real fix are stage1 stuff.  That's
why it has been quite recently.


[Bug ipa/44563] GCC uses a lot of RAM when compiling a large numbers of functions

2015-03-13 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=44563

--- Comment #31 from Richard Biener rguenth at gcc dot gnu.org ---
Author: rguenth
Date: Fri Mar 13 08:47:14 2015
New Revision: 221409

URL: https://gcc.gnu.org/viewcvs?rev=221409root=gccview=rev
Log:
2015-03-10  Richard Biener  rguent...@suse.de

PR middle-end/44563
* tree-cfgcleanup.c (split_bb_on_noreturn_calls): Remove.
(cleanup_tree_cfg_1): Do not call it.
(execute_cleanup_cfg_post_optimizing): Fixup the CFG here.
(fixup_noreturn_call): Mark the stmt as control altering.
* tree-cfg.c (execute_fixup_cfg): Do not dump the function
here.
(pass_data_fixup_cfg): Produce a dump file.
* tree-ssa-dom.c: Include tree-cfgcleanup.h.
(need_noreturn_fixup): New global.
(pass_dominator::execute): Fixup queued noreturn calls.
(optimize_stmt): Queue calls that became noreturn for fixup.
* tree-ssa-forwprop.c (pass_forwprop::execute): Likewise.
* tree-ssa-pre.c: Include tree-cfgcleanup.h.
(el_to_fixup): New global.
(eliminate_dom_walker::before_dom_childre): Queue calls that
became noreturn for fixup.
(eliminate): Fixup queued noreturn calls.
* tree-ssa-propagate.c: Include tree-cfgcleanup.h.
(substitute_and_fold_dom_walker): New member stmts_to_fixup.
(substitute_and_fold_dom_walker::before_dom_children): Queue
alls that became noreturn for fixup.
(substitute_and_fold): Fixup queued noreturn calls.

Modified:
trunk/gcc/ChangeLog
trunk/gcc/tree-cfg.c
trunk/gcc/tree-cfgcleanup.c
trunk/gcc/tree-ssa-dom.c
trunk/gcc/tree-ssa-forwprop.c
trunk/gcc/tree-ssa-pre.c
trunk/gcc/tree-ssa-propagate.c


[Bug jit/64810] jit not working on armv7hl (ld: error: /tmp/libgccjit-ZGemdr/fake.so uses VFP register arguments, /tmp/ccJFCBsE.o does not)

2015-03-13 Thread ramana at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64810

--- Comment #25 from Ramana Radhakrishnan ramana at gcc dot gnu.org ---
Fixed presumably ?


[Bug middle-end/65409] [4.8/4.9/5 Regression] ICE in store_field

2015-03-13 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65409

Richard Biener rguenth at gcc dot gnu.org changed:

   What|Removed |Added

   Keywords||ice-on-valid-code
   Priority|P3  |P2
 CC||ebotcazou at gcc dot gnu.org
  Component|c++ |middle-end


[Bug tree-optimization/65337] [5 Regression] bootstrap-lto gnat1 linktime ICE: gcc/ada/exp_aggr.adb:6570:0: internal compiler error: in forward_edge_to_pdom, at tree-ssa-dce.c:1086

2015-03-13 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65337

Richard Biener rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2015-03-13
 Ever confirmed|0   |1

--- Comment #2 from Richard Biener rguenth at gcc dot gnu.org ---
Thus confirmed at least.  IIRC this is a tricky area ;)  (but the issue is
surely latent since quite some time)


[Bug target/63347] [4.9 regression] m68k misoptimisation with -fschedule-insns

2015-03-13 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63347

Richard Biener rguenth at gcc dot gnu.org changed:

   What|Removed |Added

  Known to work||5.0
   Target Milestone|--- |4.9.3


[Bug c++/65398] [5 Regression] [C++11] GCC rejects constexpr variable definitions with valid initialization

2015-03-13 Thread mpolacek at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65398

Marek Polacek mpolacek at gcc dot gnu.org changed:

   What|Removed |Added

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

--- Comment #2 from Marek Polacek mpolacek at gcc dot gnu.org ---
So let me try that out.


[Bug middle-end/65409] [4.8/4.9/5 Regression] ICE in store_field

2015-03-13 Thread ebotcazou at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65409

--- Comment #5 from Eric Botcazou ebotcazou at gcc dot gnu.org ---
This looks redundant to me, the following is sufficient:

Index: expr.c
===
--- expr.c  (revision 221407)
+++ expr.c  (working copy)
@@ -6645,11 +6645,12 @@ store_field (rtx target, HOST_WIDE_INT b
   mode != TYPE_MODE (TREE_TYPE (exp)))
temp = convert_modes (mode, TYPE_MODE (TREE_TYPE (exp)), temp, 1);

-  /* If the modes of TEMP and TARGET are both BLKmode, both
-must be in memory and BITPOS must be aligned on a byte
-boundary.  If so, we simply do a block copy.  Likewise
-for a BLKmode-like TARGET.  */
-  if (GET_MODE (temp) == BLKmode
+  /* If TEMP is not a PARALLEL (see below) and its mode and that of TARGET
+are both BLKmode, both must be in memory and BITPOS must be aligned
+on a byte boundary.  If so, we simply do a block copy.  Likewise for
+a BLKmode-like TARGET.  */
+  if (GET_CODE (temp) != PARALLEL
+  GET_MODE (temp) == BLKmode
   (GET_MODE (target) == BLKmode
  || (MEM_P (target)
   GET_MODE_CLASS (GET_MODE (target)) == MODE_INT


[Bug c++/65350] [C++14] operator new[] should not be called if # of initializer elements exceeds # of elements

2015-03-13 Thread redi at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65350

Jonathan Wakely redi at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2015-03-13
 Ever confirmed|0   |1


[Bug middle-end/65409] [4.8/4.9/5 Regression] ICE in store_field

2015-03-13 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65409

--- Comment #7 from Jakub Jelinek jakub at gcc dot gnu.org ---
Ok, the pessimization (your patch vs. my patch) is only at -O0:
+movl%edx, %ecx
+movl%ecx, %esi
+movq%rdx, %rdi
+movabsq$-4294967296, %rcx
+andq%rdi, %rcx
+orq%rsi, %rcx
+movq%rcx, %rdx
is added, for -O1+ the optimizers manage to fix it up.


[Bug target/65408] powerpc64 function argument passing may access invalid memory

2015-03-13 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65408

--- Comment #3 from Richard Biener rguenth at gcc dot gnu.org ---
ISTR there is an even older bug for this - PR36043.


[Bug target/65414] [5 Regression] ICE while building libgcc after stage 2, bootstrap failure on aarch64-linux-gnu

2015-03-13 Thread doko at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65414

Matthias Klose doko at gcc dot gnu.org changed:

   What|Removed |Added

 Target|aarch64-linux-gnu   |aarch64-linux-gnu,
   ||arm-linux-gnuebihf
 CC||ramana at gcc dot gnu.org

--- Comment #1 from Matthias Klose doko at gcc dot gnu.org ---
same on arm-linux-gnuebihf


[Bug go/65417] New: debug/elf: lacks support for PPC relocations

2015-03-13 Thread doko at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65417

Bug ID: 65417
   Summary: debug/elf: lacks support for PPC relocations
   Product: gcc
   Version: 5.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: go
  Assignee: ian at airs dot com
  Reporter: doko at gcc dot gnu.org
CC: cmang at google dot com

tracking this here, because golang doesn't support ppc32 (yet).

https://github.com/golang/go/issues/10118

debug/elf supports 64-bit powerpc, 32-bit and 64-bit arm, 386 and amd64
relocations, but not 32bit powerpc.


[Bug fortran/65397] [Coarrays][OOP] ICE in resolve_ordinary_assign

2015-03-13 Thread dominiq at lps dot ens.fr
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65397

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

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2015-03-13
 Ever confirmed|0   |1

--- Comment #3 from Dominique d'Humieres dominiq at lps dot ens.fr ---
Confirmed on trunk (5.0 r221188) with -fcoarray=lib. The test compiles with
-fcoarray=single and with 4.9.2 with -fcoarray=lib: is it a regression?


[Bug target/65369] [5 Regression] nettle test failure on powerpc64le-linux-gnu when built with -O3

2015-03-13 Thread trippels at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65369

--- Comment #33 from Markus Trippelsdorf trippels at gcc dot gnu.org ---
FWIW Alan's new testcase started to fail with r212452.


[Bug tree-optimization/60172] [4.9/5 Regression] ARM performance regression from trunk@207239

2015-03-13 Thread joey.ye at arm dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60172

--- Comment #26 from Joey Ye joey.ye at arm dot com ---
Regression disappeared from 4.9 branch since Aug 2014, though the problem
discussed here is not yet confirmed solved.


[Bug target/65416] xtensa: memory allocated by alloca is used before the stack pointer is updated

2015-03-13 Thread jcmvbkbc at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65416

--- Comment #1 from jcmvbkbc at gcc dot gnu.org ---
It's ok up to sched2 pass, but sched2 does the following to it:

;;   ==
;;   -- basic block 62 from 252 to 295 -- after reload
;;   ==

;;0-- b  0: i 253 a3=[`*.LC13']   :nothing
;;1-- b  0: i 252 a10=a2  :nothing
;;2-- b  0: i 254 a10=call [a3]   :nothing
;;3-- b  0: i 257 a11=[`*.LC22']  :nothing
;;4-- b  0: i 259 a3=[`*.LC13']   :nothing
;;5-- b  0: i 258 a10=a2  :nothing
;;6-- b  0: i 260 a10=call [a3]   :nothing
;;7-- b  0: i 261 a11=[a7+0x4]:nothing
;;8-- b  0: i 262 a10=a2  :nothing
;;9-- b  0: i 264 a10=call [a3]   :nothing
;;   10-- b  0: i 265 a3=sp-0x20  :nothing
;;   11-- b  0: i 271 a4=[`*.LC23']   :nothing
;;   12-- b  0: i 276 [a3+0x8]=a2 :nothing
;;   13-- b  0: i 277 a2=0:nothing
;;   14-- b  0: i 278 [a3+0xc]=a2 :nothing
;;   15-- b  0: i 279 a2=[`*.LC26']   :nothing
;;   16-- b  0: i 272 [a4]=a3 :nothing
;;   17-- b  0: i 626 a4=[a7] :nothing
;;   18-- b  0: i 280 a2=[a2] :nothing
;;   19-- b  0: i 273 [a3]=a4 :nothing
;;   20-- b  0: i 274 a4=[`*.LC25']   :nothing
;;   21-- b  0: i 627 [a7+0x14]=a2:nothing
;;   22-- b  0: i 281 a10=[a7+0x18]   :nothing
;;   23-- b  0: i 282 a2=[`*.LC27']   :nothing
;;   24-- b  0: i 625 sp=a3   :nothing
;;   25-- b  0: i 275 [a3+0x4]=a4 :nothing
;;   26-- b  0: i 283 call [a2]   :nothing
;;   27-- b  0: i 285 a2=[`*.LC28']   :nothing
;;   29-- b  0: i 286 a10=[a2]:nothing
;;   30-- b  0: i 287 a2=[`*.LC29']   :nothing
;;   32-- b  0: i 288 call [a2]   :nothing
;;   33-- b  0: i 290 a3=[`*.LC30']   :nothing
;;   35-- b  0: i 291 a10=[a3]:nothing
;;   37-- b  0: i 293 call [a2]   :nothing
;;   38-- b  0: i 628 a2=[a7+0x10]:nothing
;;   39-- b  0: i 302 a10=[`*.LC31']  :nothing
;;   40-- b  0: i 295 pc={(a2==0)?L657:pc}:nothing
;;  Ready list (final):  
;;   total time = 40
;;   new head = 253
;;   new tail = 295


[Bug libgcc/57221] [4.8/4.9/5 regression] libgcc symbol visibility changes break Android blobs

2015-03-13 Thread ramana at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=57221

Ramana Radhakrishnan ramana at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2015-03-13
 CC||mkuvyrkov at gcc dot gnu.org,
   ||ramana at gcc dot gnu.org
 Ever confirmed|0   |1
  Known to fail||4.8.0, 4.8.1, 4.8.2, 4.9.0,
   ||4.9.1, 5.0

--- Comment #8 from Ramana Radhakrishnan ramana at gcc dot gnu.org ---
(In reply to Bernhard Rosenkränzer from comment #3)
 Created attachment 30068 [details]
 Another patch
 
 This patch is needed as well to make sure Bionic can re-export __aeabi_lmul
 and friends.
 
 Unlike the other patch, this one should be fixed before being applied: There
 should be a #ifdef around the added attribute (not sure if there's already a
 define for whether or not the target system is Android?)

Uggh, As you say this should be just for Android foo - please work out how to
deal with this to handle Android and not affect all standard Linux targets.
Maxim - can you handle this please ?

regards
Ramana

[Bug target/65416] New: xtensa: memory allocated by alloca is used before the stack pointer is updated

2015-03-13 Thread jcmvbkbc at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65416

Bug ID: 65416
   Summary: xtensa: memory allocated by alloca is used before the
stack pointer is updated
   Product: gcc
   Version: 5.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: target
  Assignee: unassigned at gcc dot gnu.org
  Reporter: jcmvbkbc at gcc dot gnu.org

Created attachment 35025
  -- https://gcc.gnu.org/bugzilla/attachment.cgi?id=35025action=edit
preprocessed source with a single function that demonstrates the issue

Hi,

I'm building gcc for xtensa linux. The function 'fork_inferior' has the
following fragment:

  argv = (char **) alloca (4 * sizeof (char *));
  argv[0] = shell_file;
  argv[1] = -c;
  argv[2] = shell_command;
  argv[3] = (char *) 0;

that gcc compiles into this:

addia3, sp, -32 
l32ra4, .LC23 
s32i.n  a2, a3, 8 
movi.n  a2, 0 
s32i.n  a2, a3, 12 
l32ra2, .LC26 
s32i.n  a3, a4, 0 
l32i.n  a4, a7, 0 
l32i.n  a2, a2, 0 
s32i.n  a4, a3, 0 
l32ra4, .LC25 
s32i.n  a2, a7, 20 
l32i.n  a10, a7, 24 
l32ra2, .LC27 
movsp   sp, a3 

Here argv is a3. The space below the stack pointer is used before the stack
pointer is updated.

This is reproducible with gcc-4.8.3 and the current 5.0 mainline.

Command line:
xtensa-buildroot-linux-uclibc-gcc -mlongcalls -mtext-section-literals -pipe -Os
-S -o fork-child.s fork-child.i

Compilers:

Using built-in specs.
COLLECT_GCC=/home/jcmvbkbc/tmp/br/build-xea3/host/usr/bin/xtensa-buildroot-linux-uclibc-gcc
COLLECT_LTO_WRAPPER=/home/jcmvbkbc/tmp/br/build-xea3/host/usr/libexec/gcc/xtensa-buildroot-linux-uclibc/4.8.3/lto-wrapper
Target: xtensa-buildroot-linux-uclibc
Configured with: ./configure --prefix=/home/jcmvbkbc/tmp/br/build-xea3/host/usr
--sysconfdir=/home/jcmvbkbc/tmp/br/build-xea3/host/etc --enable-static
--target=xtensa-buildroot-linux-uclibc
--with-sysroot=/home/jcmvbkbc/tmp/br/build-xea3/host/usr/xtensa-buildroot-linux-uclibc/sysroot
--disable-__cxa_atexit --with-gnu-ld --disable-libssp --disable-multilib
--with-gmp=/home/jcmvbkbc/tmp/br/build-xea3/host/usr
--with-mpfr=/home/jcmvbkbc/tmp/br/build-xea3/host/usr --enable-target-optspace
--disable-libsanitizer --disable-tls --disable-libmudflap --enable-threads
--with-mpc=/home/jcmvbkbc/tmp/br/build-xea3/host/usr --without-isl
--without-cloog --disable-decimal-float --with-pkgversion='Buildroot
2014.08-4-ge3e7af8' --with-bugurl=http://bugs.buildroot.net/
--enable-languages=c,c++
--with-build-time-tools=/home/jcmvbkbc/tmp/br/build-xea3/host/usr/xtensa-buildroot-linux-uclibc/bin
--enable-shared --disable-libgomp
Thread model: posix
gcc version 4.8.3 (Buildroot 2014.08-4-ge3e7af8) 

and

Using built-in specs.
COLLECT_GCC=/home/jcmvbkbc/ws/tensilica/projects/201409-call0/build-5.0.0-windowed-check/root/bin/xtensa-buildroot-linux-uclibc-gcc
COLLECT_LTO_WRAPPER=/home/jcmvbkbc/ws/tensilica/projects/201409-call0/build-5.0.0-windowed-check/root/libexec/gcc/xtensa-buildroot-linux-uclibc/5.0.0/lto-wrapper
Target: xtensa-buildroot-linux-uclibc
Configured with: ../gcc/configure
--prefix=/home/jcmvbkbc/ws/tensilica/projects/201409-call0/build-5.0.0-windowed-check/root
--target=xtensa-buildroot-linux-uclibc --disable-shared --disable-libssp
--disable-libisl --enable-languages=c,c++
--with-sysroot=/home/jcmvbkbc/tmp/br/build-dejagnu-windowed/host/usr/xtensa-buildroot-linux-uclibc/sysroot
--disable-threads --disable-tls
Thread model: single
gcc version 5.0.0 20150303 (experimental) (GCC)


[Bug target/65414] [5 Regression] ICE while building libgcc after stage 2, bootstrap failure on aarch64-linux-gnu

2015-03-13 Thread ramana at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65414

Ramana Radhakrishnan ramana at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2015-03-13
 CC||avelenko at gcc dot gnu.org
 Ever confirmed|0   |1

--- Comment #2 from Ramana Radhakrishnan ramana at gcc dot gnu.org ---
Alex Velenko was looking into something similar today.


[Bug target/61578] [4.9/5 regression] Code size increase for ARM thumb compared to 4.8.x when compiling with -Os

2015-03-13 Thread ramana at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61578

--- Comment #15 from Ramana Radhakrishnan ramana at gcc dot gnu.org ---
I'm going to remove the regression marker on this as this is now just purely
further code size improvements. Please submit patches on
gcc-patc...@gcc.gnu.org for further discussion. Patches attached to bug reports
aren't reviewed.


[Bug sanitizer/65400] tsan mis-compiles inlineable C functions

2015-03-13 Thread bernd.edlinger at hotmail dot de
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65400

--- Comment #3 from Bernd Edlinger bernd.edlinger at hotmail dot de ---
Hmm, 


I tried this:

--- gcc/ipa-split.c.jj2015-02-08 21:13:01.0 +0100
+++ gcc/ipa-split.c2015-03-13 11:29:08.878923384 +0100
@@ -1509,6 +1509,16 @@ split_function (struct split_point *spli
   || DECL_BY_REFERENCE (DECL_RESULT (current_function_decl
 gimple_call_set_return_slot_opt (call, true);

+  /* Re-insert a TSAN_FUNC_EXIT immediately _before_ the actual call,
+ because we are actually calling ourselves, so the call stack
+ should look correct this way, and it does not prevent the
+ possible tail-call optimization.  */
+  if ((flag_sanitize  SANITIZE_THREAD) != 0
+   !lookup_attribute (no_sanitize_thread,
+DECL_ATTRIBUTES (current_function_decl)))
+gsi_insert_after (gsi, gimple_build_call_internal (IFN_TSAN_FUNC_EXIT,
0),
+  GSI_NEW_STMT);
+
   /* Update return value.  This is bit tricky.  When we do not return,
  do nothing.  When we return we might need to update return_bb
  or produce a new return statement.  */


BUT there are more problems (in another C file):

opcua_p_binary.c.103t.sink-OpcUa_Int32_P_NativeToWire (OpcUa_Int32_Wire * wire,
OpcUa_Int32 * native)
opcua_p_binary.c.103t.sink-{
opcua_p_binary.c.103t.sink-  OpcUa_StatusCode retval.25;
opcua_p_binary.c.103t.sink-
opcua_p_binary.c.103t.sink-  bb 2:
opcua_p_binary.c.103t.sink:  retval.25_5 = OpcUa_Float_P_NativeToWire
(wire_2(D), native_3(D)); [tail call]
opcua_p_binary.c.103t.sink:  return retval.25_5;
opcua_p_binary.c.103t.sink-
opcua_p_binary.c.103t.sink-}
--
opcua_p_binary.c.105t.tsan1-OpcUa_Int32_P_NativeToWire (OpcUa_Int32_Wire *
wire, OpcUa_Int32 * native)
opcua_p_binary.c.105t.tsan1-{
opcua_p_binary.c.105t.tsan1-  OpcUa_StatusCode retval.25;
opcua_p_binary.c.105t.tsan1-  void * _6;
opcua_p_binary.c.105t.tsan1-
opcua_p_binary.c.105t.tsan1-  bb 2:
opcua_p_binary.c.105t.tsan1-  _6 = __builtin_return_address (0);
opcua_p_binary.c.105t.tsan1-  __builtin___tsan_func_entry (_6);
opcua_p_binary.c.105t.tsan1:  retval.25_5 = OpcUa_Float_P_NativeToWire
(wire_2(D), native_3(D)); [tail call]
opcua_p_binary.c.105t.tsan1-  __builtin___tsan_func_exit ();
opcua_p_binary.c.105t.tsan1:  return retval.25_5;
opcua_p_binary.c.105t.tsan1-
opcua_p_binary.c.105t.tsan1-}

objdump -d shows this!
021755a0 OpcUa_Int32_P_NativeToWire:
 21755a0:   55  push   %rbp
 21755a1:   53  push   %rbx
 21755a2:   48 89 fbmov%rdi,%rbx
 21755a5:   48 89 f5mov%rsi,%rbp
 21755a8:   48 83 ec 08 sub$0x8,%rsp
 21755ac:   48 8b 7c 24 18  mov0x18(%rsp),%rdi
 21755b1:   e8 6a 72 29 fe  callq  40c820 __tsan_func_entry@plt
 21755b6:   48 83 c4 08 add$0x8,%rsp
 21755ba:   48 89 eemov%rbp,%rsi
 21755bd:   48 89 dfmov%rbx,%rdi
 21755c0:   5b  pop%rbx
 21755c1:   5d  pop%rbp
 21755c2:   e9 19 ff ff ff  jmpq   21754e0
OpcUa_Float_P_NativeToWire
 21755c7:   66 0f 1f 84 00 00 00nopw   0x0(%rax,%rax,1)
 21755ce:   00 00


[Bug libstdc++/64847] [5 Regression] FAIL: 30_threads/shared_lock/requirements/explicit_instantiation.cc (test for excess errors)

2015-03-13 Thread redi at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64847

Jonathan Wakely redi at gcc dot gnu.org changed:

   What|Removed |Added

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

--- Comment #2 from Jonathan Wakely redi at gcc dot gnu.org ---
(In reply to Jonathan Wakely from comment #1)
 https://gcc.gnu.org/ml/gcc-patches/2015-03/msg00701.html should fix this

Actually no it won't, because it looks like HPUX supports pthread_wrlocK_t but
not the timed-lock functions.

In which case, it should have been fixed by r220161 as part of PR64368

And indeed I don't see a current failure at
https://gcc.gnu.org/ml/gcc-testresults/2015-03/msg01405.html
https://gcc.gnu.org/ml/gcc-testresults/2015-02/msg03251.html


[Bug target/65369] [5 Regression] nettle test failure on powerpc64le-linux-gnu when built with -O3

2015-03-13 Thread wschmidt at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65369

--- Comment #34 from Bill Schmidt wschmidt at gcc dot gnu.org ---
(In reply to Markus Trippelsdorf from comment #29)
 CCing Bill because this might be a bug in rs6000_analyze_swaps().

Adding -mno-optimize-swaps to Alan's example does not fix the problem, so no...


[Bug target/65369] [5 Regression] nettle test failure on powerpc64le-linux-gnu when built with -O3

2015-03-13 Thread amodra at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65369

--- Comment #32 from Alan Modra amodra at gmail dot com ---
Richi, ptr+12 is nonsense.  Suppose ptr is 16k+1, then first vector loads from
16k and second from the same address since (16k+1+12)  ~15 == 16k.  But we
want to end up with 15 bytes from the first 16-byte aligned block and one byte
from the *next* 16-byte aligned block, which means we must use ptr+16.


[Bug tree-optimization/65418] New: [5 Regression] vim miscompilation

2015-03-13 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65418

Bug ID: 65418
   Summary: [5 Regression] vim miscompilation
   Product: gcc
   Version: 5.0
Status: UNCONFIRMED
  Keywords: wrong-code
  Severity: normal
  Priority: P3
 Component: tree-optimization
  Assignee: jakub at gcc dot gnu.org
  Reporter: jakub at gcc dot gnu.org

__attribute__((noinline, noclone)) int
foo (int x)
{
  if (x == '(' - 256 || x == '|' - 256 || x == '' - 256 || x == 'n' - 256)
 return 1;
  return 0;
}

int
main ()
{
  if (foo ('n' - 256) != 1
  || foo ('(' - 256) != 1
  || foo ('|' - 256) != 1
  || foo ('' - 256) != 1
  || foo ('q' - 256) != 0)
__builtin_abort ();
  return 0;
}

is miscompiled at -O2 starting with r216393.


[Bug target/65369] [5 Regression] nettle test failure on powerpc64le-linux-gnu when built with -O3

2015-03-13 Thread amodra at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65369

Alan Modra amodra at gmail dot com changed:

   What|Removed |Added

  Attachment #35016|0   |1
is obsolete||
  Attachment #35019|0   |1
is obsolete||
  Attachment #35024|0   |1
is obsolete||

--- Comment #31 from Alan Modra amodra at gmail dot com ---
Created attachment 35027
  -- https://gcc.gnu.org/bugzilla/attachment.cgi?id=35027action=edit
reduced testcase


[Bug fortran/65359] [OOP] undefined output with array and inheritance

2015-03-13 Thread dominiq at lps dot ens.fr
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65359

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

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2015-03-13
 Ever confirmed|0   |1

--- Comment #1 from Dominique d'Humieres dominiq at lps dot ens.fr ---
Confirmed on 4.8.4, 4.9.2, and trunk (5.0). Note that the test compiled with
4.8.4 fails with

a.out(3185,0x7fff7d157300) malloc: *** error for object 0x7fd4a9405aa0:
incorrect checksum for freed object - object was probably modified after being
freed.
*** set a breakpoint in malloc_error_break to debug


[Bug jit/64810] jit not working on armv7hl (ld: error: /tmp/libgccjit-ZGemdr/fake.so uses VFP register arguments, /tmp/ccJFCBsE.o does not)

2015-03-13 Thread dmalcolm at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64810

--- Comment #26 from David Malcolm dmalcolm at gcc dot gnu.org ---
(In reply to Ramana Radhakrishnan from comment #25)
 Fixed presumably ?

Mostly.  The remaining issue with configure-time options reaching the jit is
when gcc is configured with:
  --with-arch=native
I attempted to fix that, but it appeared to be non-trivial, so I think I'll
open that as a separate (non-arm) bug (sorry, have been on vacation in the
meantime, and need to page it all back in to my brain...)


[Bug tree-optimization/65418] [5 Regression] vim miscompilation

2015-03-13 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65418

Jakub Jelinek jakub at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |ASSIGNED
   Last reconfirmed||2015-03-13
 Ever confirmed|0   |1


[Bug tree-optimization/65418] [5 Regression] vim miscompilation

2015-03-13 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65418

Jakub Jelinek jakub at gcc dot gnu.org changed:

   What|Removed |Added

   Priority|P3  |P1
   Target Milestone|--- |5.0


[Bug sanitizer/65400] tsan mis-compiles inlineable C functions

2015-03-13 Thread bernd.edlinger at hotmail dot de
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65400

--- Comment #4 from Bernd Edlinger bernd.edlinger at hotmail dot de ---
ok,

this should fix the second regression:

Index: tsan.c
===
--- tsan.c(revision 221355)
+++ tsan.c(working copy)
@@ -682,6 +682,7 @@
 {
   if (gimple_call_builtin_p (stmt, BUILT_IN_NORMAL))
 instrument_builtin_call (gsi);
+  gimple_call_set_tail (as_a gcall * (stmt), false);
   return true;
 }
   else if (is_gimple_assign (stmt)


--
opcua_p_binary.c.103t.sink-{
opcua_p_binary.c.103t.sink-  OpcUa_StatusCode retval.25;
opcua_p_binary.c.103t.sink-
opcua_p_binary.c.103t.sink-  bb 2:
opcua_p_binary.c.103t.sink:  retval.25_5 = OpcUa_Float_P_NativeToWire
(wire_2(D), native_3(D)); [tail call]
opcua_p_binary.c.103t.sink:  return retval.25_5;
opcua_p_binary.c.103t.sink-
opcua_p_binary.c.103t.sink-}
--
opcua_p_binary.c.105t.tsan1-  bb 2:
opcua_p_binary.c.105t.tsan1-  _6 = __builtin_return_address (0);
opcua_p_binary.c.105t.tsan1-  __builtin___tsan_func_entry (_6);
opcua_p_binary.c.105t.tsan1:  retval.25_5 = OpcUa_Float_P_NativeToWire
(wire_2(D), native_3(D));
opcua_p_binary.c.105t.tsan1-  __builtin___tsan_func_exit ();
opcua_p_binary.c.105t.tsan1:  return retval.25_5;
opcua_p_binary.c.105t.tsan1-
opcua_p_binary.c.105t.tsan1-}

see the [tail call] is removed,
and the generated code is now OK.

trying to use -O3 next.


[Bug tree-optimization/65418] [5 Regression] vim miscompilation

2015-03-13 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65418

--- Comment #1 from Jakub Jelinek jakub at gcc dot gnu.org ---
Created attachment 35028
  -- https://gcc.gnu.org/bugzilla/attachment.cgi?id=35028action=edit
gcc5-pr65418.patch

Untested fix.


[Bug c++/65143] [C++11] missing devirtualization for virtual base in final classes

2015-03-13 Thread balakrishnan.erode at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65143

--- Comment #2 from Balakrishnan B balakrishnan.erode at gmail dot com ---
Can someone please confirm the bug?


[Bug target/65369] [5 Regression] nettle test failure on powerpc64le-linux-gnu when built with -O3

2015-03-13 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65369

--- Comment #35 from Jakub Jelinek jakub at gcc dot gnu.org ---
Note to self.  This is the case dr_explicit_realign: case of vectorizable_load.
(ptr + 12)  -16L - i.e. vs_minus_1 * TYPE_ALIGN_UNIT (element) is reasonable
for the case where the original stmt data ref is naturally aligned, but in this
case it is an unaligned load and thus we can't use + 12 but should use + 15
instead.  This is quite related to PR63341, but that was the
dr_explicit_realign_optimized case, not dr_explicit_realign.


[Bug target/65369] [5 Regression] nettle test failure on powerpc64le-linux-gnu when built with -O3

2015-03-13 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65369

Jakub Jelinek jakub at gcc dot gnu.org changed:

   What|Removed |Added

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

--- Comment #36 from Jakub Jelinek jakub at gcc dot gnu.org ---
Created attachment 35029
  -- https://gcc.gnu.org/bugzilla/attachment.cgi?id=35029action=edit
gcc5-pr65369.patch

Untested fix.


[Bug target/65369] [5 Regression] nettle test failure on powerpc64le-linux-gnu when built with -O3

2015-03-13 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65369

Jakub Jelinek jakub at gcc dot gnu.org changed:

   What|Removed |Added

   Priority|P3  |P1


[Bug go/65404] cgo tool on powerpc-linux-gnu maybe incomplete

2015-03-13 Thread stgraber at stgraber dot org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65404

--- Comment #7 from Stéphane Graber stgraber at stgraber dot org ---
So with the cherry-picked fix, I get:

(vivid-powerpc-sbuild)root@winton-06:~# cat test.go
package main

/*
#include stdio.h
now
void hello() {
printf(Hello world!\n);
}
*/
import C

func main() {
C.hello()
}

(vivid-powerpc-sbuild)root@winton-06:~# go build -v -x test.go
WORK=/tmp/go-build320378268
command-line-arguments
mkdir -p $WORK/command-line-arguments/_obj/
cd /root
CGO_LDFLAGS=-g -O2 /usr/lib/gcc/powerpc-linux-gnu/5/cgo -objdir
$WORK/command-line-arguments/_obj/ -gccgo -- -I
$WORK/command-line-arguments/_obj/ test.go
# command-line-arguments
./test.go:13:5: call of non-function C.hello


So cgo is now supported and I don't have to force it with CGO_ENABLED=1 but I
still can't use my cgo function.

[Bug go/65404] cgo tool on powerpc-linux-gnu maybe incomplete

2015-03-13 Thread stgraber at stgraber dot org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65404

--- Comment #8 from Stéphane Graber stgraber at stgraber dot org ---
Mathias suggested this may be #65417 but I'm not familiar enough with gccgo and
cgo to know whether that's the case or not.

[Bug go/65404] cgo tool on powerpc-linux-gnu maybe incomplete

2015-03-13 Thread ian at airs dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65404

--- Comment #9 from Ian Lance Taylor ian at airs dot com ---
It could be due to PR 65417, yes.