[Bug inline-asm/64119] asm triggers local register variable data corruption

2014-12-01 Thread trippels at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64119

Markus Trippelsdorf  changed:

   What|Removed |Added

 CC||trippels at gcc dot gnu.org
 Resolution|FIXED   |INVALID


[Bug sanitizer/64131] [5 Regression] libsanitizer fails to build for AARCH64 with the glibc from the trunk

2014-12-01 Thread clyon at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64131

clyon at gcc dot gnu.org changed:

   What|Removed |Added

 CC||clyon at gcc dot gnu.org

--- Comment #2 from clyon at gcc dot gnu.org ---
Hi Andrew,
I've been made aware of this problem a few days ago by Marcus.
I plan to work on cleaning libsanitizer a bit (the other cleanup I'm working on
first is the old_[gu]id type change in the kernel).


[Bug tree-optimization/64126] [5.0 Regression] FAIL: gcc.dg/pr37289.c scan-tree-dump original "-\\(long unsigned int\\) x"

2014-12-01 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64126

Richard Biener  changed:

   What|Removed |Added

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

--- Comment #3 from Richard Biener  ---
Testing a fix.


[Bug c++/64127] [5.0 regression] ICE on invalid: tree check: expected identifier_node, have template_id_expr in cp_parser_diagnose_invalid_type_name, at cp/parser.c:2980

2014-12-01 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64127

Richard Biener  changed:

   What|Removed |Added

   Target Milestone|--- |5.0


[Bug tree-optimization/64130] vrp: handle non zero constant divided by range cannot be zero.

2014-12-01 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64130

Richard Biener  changed:

   What|Removed |Added

   Keywords||missed-optimization
 Status|UNCONFIRMED |NEW
   Last reconfirmed||2014-12-01
 Ever confirmed|0   |1

--- Comment #4 from Richard Biener  ---
(In reply to Andi Kleen from comment #3)
> You're right. I actually meant
> 
> x >= maxval(typeof(a)), x / a   cannot be 0.
> 
> Corrected test case (assuming 64bit target):
> 
> #include 
> 
> int fsigned(int a)
> {
> return 0x1fffL / a == 0;
> }

0x1fffL / 0x2000 == 0

Maybe you meant 0x1fffL / a == 0?

> int funsigned(unsigned a)
> {
> return 0x1fffL / a == 0;
> }
> 
> >So this should be optimized to a > 100 instead.
> 
> Yes this would make sense too.

Yes.


[Bug tree-optimization/63738] [4.9/5 Regression] ssa corruption when compiled with -O3

2014-12-01 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63738

--- Comment #10 from Richard Biener  ---
Author: rguenth
Date: Mon Dec  1 09:35:15 2014
New Revision: 218201

URL: https://gcc.gnu.org/viewcvs?rev=218201&root=gcc&view=rev
Log:
2014-12-01  Richard Biener  

PR tree-optimization/63738
* gcc.dg/torture/pr63738.c: Fix call to setjmp.

Modified:
trunk/gcc/testsuite/ChangeLog
trunk/gcc/testsuite/gcc.dg/torture/pr63738.c


[Bug tree-optimization/63738] [4.9/5 Regression] ssa corruption when compiled with -O3

2014-12-01 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63738

--- Comment #11 from Richard Biener  ---
Author: rguenth
Date: Mon Dec  1 09:36:56 2014
New Revision: 218202

URL: https://gcc.gnu.org/viewcvs?rev=218202&root=gcc&view=rev
Log:
2014-12-01  Richard Biener  

PR tree-optimization/63738
* gcc.dg/torture/pr63738.c: Fix call to setjmp.

Modified:
branches/gcc-4_9-branch/gcc/testsuite/ChangeLog
branches/gcc-4_9-branch/gcc/testsuite/gcc.dg/torture/pr63738.c


[Bug gcov-profile/64123] [5 Regression] Instrumented Firefox segfaults on start

2014-12-01 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64123

Richard Biener  changed:

   What|Removed |Added

   Target Milestone|--- |5.0


[Bug target/64134] (vector float){0, 0, b, a} Uses stores when it does need to

2014-12-01 Thread ktkachov at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64134

ktkachov at gcc dot gnu.org changed:

   What|Removed |Added

   Keywords||missed-optimization
 Status|UNCONFIRMED |NEW
   Last reconfirmed||2014-12-01
 CC||alan.lawrence at arm dot com,
   ||ktkachov at gcc dot gnu.org
 Ever confirmed|0   |1

--- Comment #2 from ktkachov at gcc dot gnu.org ---
Confirmed. CC'ing Alan, he might find this of interest


[Bug tree-optimization/64121] [5 Regression] ICE: SSA corruption with -O -fsanitize=undefined

2014-12-01 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64121

--- Comment #2 from Richard Biener  ---
  # xp_1(ab) = PHI 
base:
  if (x_5(D) != 0)
goto ;
  else
goto ;

  :
  xp.0_6 = xp_1(ab);
  xp_7(ab) = xp.0_6 + 4;
  _15 = __builtin_object_size (ip_8(D), 0);
  _16 = ip_8(D);
  UBSAN_OBJECT_SIZE (_16, 4, _15, 0);
  _9 = *ip_8(D);
  _17 = __builtin_object_size (xp_1(ab), 0);
...
 _13 = &base + _12;
  gotovar.1_14 = _13;
  goto gotovar.1_14;


xp_1 and xp_7 are life at the same time - the above is from 017t.ubsan.

You may not refer to xp_1(ab) but should use xp.0_6 here.


[Bug tree-optimization/64121] [5 Regression] ICE: SSA corruption with -O -fsanitize=undefined

2014-12-01 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64121

Richard Biener  changed:

   What|Removed |Added

   Priority|P3  |P1


[Bug bootstrap/64116] ice with -O3 -fgraphite-identity on bootstrap

2014-12-01 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64116

Richard Biener  changed:

   What|Removed |Added

 Status|UNCONFIRMED |WAITING
   Last reconfirmed||2014-12-01
 Ever confirmed|0   |1

--- Comment #2 from Richard Biener  ---
Please provide preprocessed source and the output of appending -v - esp.
important because you are using -march-native.


[Bug target/64115] [4.9/5 Regression] ICE: : in rs6000_delegitimize_address, at config/rs6000/rs6000.c:7051

2014-12-01 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64115

Richard Biener  changed:

   What|Removed |Added

   Priority|P3  |P2
   Target Milestone|--- |4.9.3


[Bug tree-optimization/64121] [5 Regression] ICE: SSA corruption with -O -fsanitize=undefined

2014-12-01 Thread mpolacek at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64121

Marek Polacek  changed:

   What|Removed |Added

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

--- Comment #3 from Marek Polacek  ---
Thanks.  Let me dig into this.


[Bug tree-optimization/64111] [5.0 regression] ICE: conversion of register to a different size

2014-12-01 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64111

Richard Biener  changed:

   What|Removed |Added

 Status|NEW |ASSIGNED
   Assignee|unassigned at gcc dot gnu.org  |rguenth at gcc dot 
gnu.org
   Target Milestone|--- |5.0

--- Comment #17 from Richard Biener  ---
 
unit size 
align 64 symtab 0 alias set -1 canonical type 0x10001dedc8
precision 64 min  max

pointer_to_this >
V4DI
size 
unit size 
align 256 symtab 0 alias set -1 canonical type 0x10001e86b0 nunits 4
pointer_to_this >

arg 0 
unsigned V4DI
size  unit size

align 256 symtab 0 alias set 6 canonical type 0x7686a000 nunits
4
pointer_to_this >
var def_stmt vect_var_.22_70 =
MEM[(struct QAbstractAnimationTimer * const &)vect_ppretmp.18_68];

version 70>>

It looks like PCH causes integer constant sharing to break down.

(gdb) p debug_tree ((tree)0x76851de0)
 
constant 256>
$2 = void
(gdb) p debug_tree ((tree)0x110d40)
 
constant 256>

the constant is above the integer share limit thus it only gets shared
via the int_cst_hash_table hashtable which is collectible:

static GTY ((if_marked ("ggc_marked_p"), param_is (union tree_node)))
 htab_t int_cst_hash_table;

but we are supposed to save that into the PCH file and restore it.

tree-cfg.c relies on this:

  else if (TREE_CODE (op) == SSA_NAME
   && TYPE_SIZE (TREE_TYPE (expr)) != TYPE_SIZE (TREE_TYPE
(op)))
{
  error ("conversion of register to a different size");

though from a quick grep it doesn't seem to be the only one doing so:

fold-const.c: return ((TYPE_SIZE (TREE_TYPE (arg0)) == TYPE_SIZE (TREE_TYPE
(arg1))
tree-inline.c:  gcc_checking_assert (TYPE_SIZE (type) == TYPE_SIZE
(TYPE_MAIN_VARIANT (type)));
tree-inline.c:  gcc_checking_assert (TYPE_SIZE_UNIT (type) ==
TYPE_SIZE_UNIT (TYPE_MAIN_VARIANT (type)));
tree-inline.c:|| TYPE_SIZE (TREE_TYPE (p)) == TYPE_SIZE (TREE_TYPE
(value)))
tree-inline.c:  else if (TYPE_SIZE (req_type) == TYPE_SIZE
(TREE_TYPE (replace_info->new_tree)))

Ah, the issue might be that we have (on the 4.8 branch):

/* Return the hash code code X, an INTEGER_CST.  */

static hashval_t
int_cst_hash_hash (const void *x)
{
  const_tree const t = (const_tree) x;

  return (TREE_INT_CST_HIGH (t) ^ TREE_INT_CST_LOW (t)
  ^ htab_hash_pointer (TREE_TYPE (t)));
}

thus we hash in the pointer value ... (oops).  Similar on trunk:

/* Return the hash code code X, an INTEGER_CST.  */

hashval_t
int_cst_hasher::hash (tree x)
{
  const_tree const t = x;
  hashval_t code = htab_hash_pointer (TREE_TYPE (t));
  int i;

  for (i = 0; i < TREE_INT_CST_NUNITS (t); i++)
code ^= TREE_INT_CST_ELT (t, i);

  return code;
}

I'm quite sure that doesn't survive pointer-swizzling with PCH.

I suggest to use a better hash than a simple XOR and rather than hashing
in TREE_TYPE hash in TYPE_UID.


[Bug middle-end/64111] [5.0 regression] ICE: conversion of register to a different size

2014-12-01 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64111

--- Comment #18 from Richard Biener  ---
I've posted a patch for trunk.  The following patch for the 4.8 branch fixes
the testcase:

Index: gcc/tree.c
===
--- gcc/tree.c  (revision 218016)
+++ gcc/tree.c  (working copy)
@@ -1130,7 +1130,7 @@ int_cst_hash_hash (const void *x)
   const_tree const t = (const_tree) x;

   return (TREE_INT_CST_HIGH (t) ^ TREE_INT_CST_LOW (t)
- ^ htab_hash_pointer (TREE_TYPE (t)));
+ ^ TYPE_UID (TREE_TYPE (t)));
 }

 /* Return nonzero if the value represented by *X (an INTEGER_CST tree node)


[Bug libstdc++/64128] Let vector take advantage of malloc_usable_size for malloc-using allocators

2014-12-01 Thread redi at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64128

--- Comment #2 from Jonathan Wakely  ---
Comment on attachment 34150
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=34150
testcase

Users can specialize std::allocator so we'd need to use SFINAE hacks to find
out if __gnu_cxx::new_allocator is the base class and if it's unspecialized.

It's a silly test though, if you care about performance there use reserve().


[Bug libstdc++/64135] New: Allocator base classes should use reserved names

2014-12-01 Thread redi at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64135

Bug ID: 64135
   Summary: Allocator base classes should use reserved names
   Product: gcc
   Version: 5.0
Status: UNCONFIRMED
  Keywords: rejects-valid
  Severity: normal
  Priority: P3
 Component: libstdc++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: redi at gcc dot gnu.org

This is a valid program and should compile:

#define new_allocator 1
#include 
int main() { }


[Bug middle-end/64101] GCC considers that the erf math function does not set errno

2014-12-01 Thread niva at niisi dot msk.ru
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64101

--- Comment #2 from niva at niisi dot msk.ru ---
Please explain why erf is marked as 'const' and
does not use ATTR_MATHFN_FPROUNDING_ERRNO? 
ISO C does not say that erf may not set errno. 
And POSIX directly requires that erf, erff, erfl 
set errno=ERANGE in case of underflow.

Here is another example:

#include 
#include 
#include 

extern double res;
int main ()
{
   errno = 0;
   res = erf (-1.2553634935946022721708238314E-308);
   printf ("errno=%d, res=%g\n", errno, res);
   return 0;
}

As a result of

mips64-none-elf-gcc -O1 -S tst2_erf.c -o tst2_erf.s

the following code is generated:

main:
...
addiu$sp,$sp,-40
sd$31,32($sp)
sw$0,%gp_rel(errno)($28)
jalerf
ldc1$f12,%gp_rel($LC0)($28)

sdc1$f0,%gp_rel(res)($28)
lui$4,%hi($LC1)# printf arg 0: format line
addiu$4,$4,%lo($LC1)
dmfc1$6,$f0# printf arg 2: res
jalprintf
move$5,$0#! printf arg 1: zero (must be errno)

move$2,$0
ld$31,32($sp)
j$31
addiu$sp,$sp,40

Zero ($0) is passed to printf instead of errno.
If -fno-builtin-printf is used the compiler generates

lw$5,%gp_rel(errno)($28)

instead of 

move$5,$0

in the delay slot after "jal  printf".





В Птн, 28/11/2014 в 13:24 +, rguenth at gcc dot gnu.org пишет:
> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64101
> 
> Richard Biener  changed:
> 
>What|Removed |Added
> 
>  Target||x86_64-*-*, mips64-none-elf
>  Status|UNCONFIRMED |NEW
>Last reconfirmed||2014-11-28
>  Ever confirmed|0   |1
> 
> --- Comment #1 from Richard Biener  ---
> I think the issue is that you don't use the result of erf() and the function
> is marked as 'const' - thus does not use ATTR_MATHFN_FPROUNDING_ERRNO.
> If you make 'res' global then it will work.
>

[Bug bootstrap/64102] ARM bootstrap fails with segfault with -mapcs in BOOT_CFLAGS

2014-12-01 Thread ktkachov at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64102

--- Comment #3 from ktkachov at gcc dot gnu.org ---
Hmm...
Trying to bootstrap 4.9 with the same configuration and -mapcs results in an
ICE in stage2 when compiling haifa-sched.c
$SRC/gcc/haifa-sched.c:6507:1: internal compiler error: in lra_create_copy, at
lra.c:1532
 }
 ^
0x6f240b lra_create_copy(int, int, int)
$SRC/gcc/lra.c:1532
0x70f447 process_bb_lives
$SRC/gcc/lra-lives.c:568
0x710761 lra_create_live_ranges(bool)
$SRC/gcc/lra-lives.c:1008
0x6f3f33 lra(_IO_FILE*)
$SRC/gcc/lra.c:2372
0x6ad3a1 do_reload
$SRC/gcc/ira.c:5457
0x6ad717 rest_of_handle_reload
$SRC/gcc/ira.c:5598
0x6ad75f execute
$SRC/gcc/ira.c:5627
Please submit a full bug report,
with preprocessed source if appropriate.


I didn't try without -mapcs on 4.9 though, so need to check that first.


[Bug libstdc++/64128] Let vector take advantage of malloc_usable_size for malloc-using allocators

2014-12-01 Thread trippels at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64128

Markus Trippelsdorf  changed:

   What|Removed |Added

 CC||trippels at gcc dot gnu.org

--- Comment #3 from Markus Trippelsdorf  ---
Or LD_PRELOAD a different malloc implementation like llalloc or tcmalloc.
llalloc (http://locklessinc.com/articles/allocator_tricks/) for example,
speeds up the testcase by 36% on my machine.


[Bug c++/60894] [4.8/4.9/5 Regression] Use of redundant struct keyword in function prototype combined with using statement causes compilation error

2014-12-01 Thread fabien at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60894

--- Comment #11 from fabien at gcc dot gnu.org ---
I posted a patch here:
https://gcc.gnu.org/ml/gcc-patches/2014-09/msg02190.html


[Bug fortran/60898] [4.8/4.9/5 Regression] model compile error with gfortran 4.7 and gcc 4.9

2014-12-01 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60898

Richard Biener  changed:

   What|Removed |Added

   Priority|P3  |P4


[Bug target/60925] [4.9/5 Regression] hppa: can't find a register in class 'R1_REGS' while reloading 'asm'

2014-12-01 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60925

Richard Biener  changed:

   What|Removed |Added

   Keywords||ice-on-valid-code, ra
   Priority|P3  |P4


[Bug debug/61014] [4.8/4.9/5 Regression] gdb can't find symbol of derived data type array in nested subroutine

2014-12-01 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61014

Richard Biener  changed:

   What|Removed |Added

   Priority|P3  |P4


[Bug c++/61018] [4.8/4.9/5 Regression] -Wvarargs does not print warning for member functions

2014-12-01 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61018

Richard Biener  changed:

   What|Removed |Added

   Priority|P3  |P2
   Target Milestone|5.0 |4.8.4


[Bug plugins/61176] plugin builds including gimple.h not building

2014-12-01 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61176

Richard Biener  changed:

   What|Removed |Added

   Target Milestone|4.9.3   |---
Summary|[4.9/5 Regression] plugin   |plugin builds including
   |builds including gimple.h   |gimple.h not building
   |not building|
  Known to fail|4.10.0  |5.0

--- Comment #12 from Richard Biener  ---
Surely not a "regression" in the classical sense but a plugin bug or a plugin
(stable-) API deficiency.


[Bug tree-optimization/61194] [4.9/5 Regression] vectorization failed with "bit-precision arithmetic not supported" even if conversion to int is requested

2014-12-01 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61194

Richard Biener  changed:

   What|Removed |Added

   Priority|P3  |P2

--- Comment #18 from Richard Biener  ---
There is a proposed patch to if-conversion that solves the multiple-use issue
by
duplicating the involved statements (ugh).


[Bug tree-optimization/63551] [4.9/5 Regression] wrong code (segfaults) at -Os on x86_64-linux-gnu

2014-12-01 Thread jamborm at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63551

--- Comment #8 from Martin Jambor  ---
Author: jamborm
Date: Mon Dec  1 12:05:41 2014
New Revision: 218205

URL: https://gcc.gnu.org/viewcvs?rev=218205&root=gcc&view=rev
Log:
2014-12-01  Martin Jambor  

PR ipa/63551
* ipa-inline-analysis.c (evaluate_conditions_for_known_args): Convert
value of the argument to the type of the value in the condition.

testsuite/
* gcc.dg/ipa/pr63551.c: New test.
* gcc.dg/ipa/pr64041.c: Likewise.


Added:
trunk/gcc/testsuite/gcc.dg/ipa/pr63551.c
trunk/gcc/testsuite/gcc.dg/ipa/pr64041.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/ipa-inline-analysis.c
trunk/gcc/testsuite/ChangeLog


[Bug c++/64110] [5 Regression] ICE: Max. number of generated reload insns per insn is achieved (90)

2014-12-01 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64110

Jakub Jelinek  changed:

   What|Removed |Added

 CC||jakub at gcc dot gnu.org

--- Comment #5 from Jakub Jelinek  ---
Simplified testcase (-O3 -march=core-avx2):

int foo (void);
int a;
short *b;

void
bar (short x)
{
  while (a--)
{
  int i, j = foo ();
  for (i = 0; i < j; ++i)
*b++ = x;
}
}


[Bug tree-optimization/63941] [5 Regression] ICE on valid code at -O3 and above on x86_64-linux-gnu

2014-12-01 Thread ienkovich at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63941

--- Comment #3 from ienkovich at gcc dot gnu.org ---
Author: ienkovich
Date: Mon Dec  1 12:19:28 2014
New Revision: 218206

URL: https://gcc.gnu.org/viewcvs?rev=218206&root=gcc&view=rev
Log:
gcc/

PR tree-optimization/63941
* tree-if-conv.c (add_to_predicate_list): Delete wrong assertion that
DOM_BB has non-true predicate, conditionally set non-true predicate
for BB.

gcc/testsuite/

PR tree-optimization/63941
* gcc.dg/torture/pr63941.c: New test.


Added:
trunk/gcc/testsuite/gcc.dg/torture/pr63941.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/testsuite/ChangeLog
trunk/gcc/tree-if-conv.c


[Bug tree-optimization/61203] [4.8/4.9/5 Regression] g++.old-deja/g++.jason/rvalue2.C FAILs with -O2 -fno-inline

2014-12-01 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61203

Richard Biener  changed:

   What|Removed |Added

 Status|UNCONFIRMED |WAITING
   Last reconfirmed||2014-12-01
 CC||jason at gcc dot gnu.org
 Ever confirmed|0   |1
  Known to fail|4.10.0  |5.0

--- Comment #4 from Richard Biener  ---
(In reply to Michael Matz from comment #3)
> (In reply to Jakub Jelinek from comment #2)
> > same spot.  No idea what to do against this though, treating a CLOBBER as a
> > barrier for propagation of addresses to other local variables would penalize
> > stuff way too much.
> 
> Conceptually this should be the right thing.  The clobber says
> the object doesn't exist anymore, so also forming its address should be
> invalid/implementation defined.  Either the clobber should move or it should
> be a barrier also for addresses of the clobbered object.  I'm not sure if
> that
> really would penalize much.

But I don't see how it could be easily implemented.

> > And giving up on stack slot sharing because of such an
> > artificial testcase is not useful either.
> 
> Perhaps expansion could detect the situation (address of clobbered object
> leaked after the clobber) and disable sharing just for such problematic
> objects.

Likewise.  (it would be whether the address escaped the function before
the clobber)

I'd rather say that optimization is permitted to make &a and A(a).get_this ()
equal.

Btw, there is also the missed optimization that get_this, discovered as
'const', passed &decl can only return either NULL or an address based on
&decl and thus the result cannot compare equal to &a.  So even without
inlining we could statically compute the comparison.


[Bug c/61240] [4.8/4.9/5 Regression] Incorrect warning "integer overflow in expression" on pointer-pointer subtraction

2014-12-01 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61240

Richard Biener  changed:

   What|Removed |Added

   Keywords||diagnostic,
   ||missed-optimization
   Priority|P3  |P2

--- Comment #8 from Richard Biener  ---
So this is also a missed optimization on the C++ side?  Btw, the C++ FE warns
for me as well (on trunk).


[Bug ipa/61548] [5 Regression] FAIL: gcc.dg/tls/alias-1.c (internal compiler error)

2014-12-01 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61548

Richard Biener  changed:

   What|Removed |Added

   Priority|P3  |P1


[Bug target/61622] [4.8 regression] internal compiler error: in simplify_const_unary_operation, at simplify-rtx.c:1508

2014-12-01 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61622

Richard Biener  changed:

   What|Removed |Added

   Priority|P3  |P2


[Bug target/61878] Missing intrinsic functions in avx512intrin.h

2014-12-01 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61878

Richard Biener  changed:

   What|Removed |Added

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

--- Comment #4 from Richard Biener  ---
Fixed.


[Bug lto/61886] [4.8/4.9/5 Regression] LTO breaks fread with _FORTIFY_SOURCE=2

2014-12-01 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61886

Richard Biener  changed:

   What|Removed |Added

   Priority|P3  |P2


[Bug target/62231] [4.8/4.9 regression] Exception handling broken on powerpc-e500v2-linux-gnuspe

2014-12-01 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=62231

Richard Biener  changed:

   What|Removed |Added

   Priority|P3  |P4


[Bug middle-end/62247] [5.0 Regression] FAIL: g++.dg/abi/anon3.C -std=c++98 scan-assembler .weak(_definition)

2014-12-01 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=62247

Richard Biener  changed:

   What|Removed |Added

   Priority|P3  |P1


[Bug pch/63319] [5 Regression] ICE: Segmentation fault building qt5 with pch

2014-12-01 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63319

Richard Biener  changed:

   What|Removed |Added

 Status|UNCONFIRMED |WAITING
   Last reconfirmed||2014-12-01
 Ever confirmed|0   |1


[Bug c/61240] [4.8/4.9/5 Regression] Incorrect warning "integer overflow in expression" on pointer-pointer subtraction

2014-12-01 Thread mpolacek at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61240

--- Comment #9 from Marek Polacek  ---
I view this as a problem that we fold too early - I think this bug (and its
kin) are to be solved with delayed folding.


[Bug other/63630] [5.0 Regression] internal compiler error: Spill fail with invalid register

2014-12-01 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63630

Richard Biener  changed:

   What|Removed |Added

   Priority|P3  |P4


[Bug libstdc++/64132] [5.0 Regression] FAIL: 22_locale/numpunct/members/char/3.cc execution test

2014-12-01 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64132

Richard Biener  changed:

   What|Removed |Added

   Target Milestone|--- |5.0


[Bug c++/64110] [5 Regression] ICE: Max. number of generated reload insns per insn is achieved (90)

2014-12-01 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64110

Jakub Jelinek  changed:

   What|Removed |Added

 CC|jakub at redhat dot com|vmakarov at gcc dot 
gnu.org

--- Comment #6 from Jakub Jelinek  ---
So, before LRA we have:
(insn 27 36 28 2 (set (reg:SI 178 [ x ])
(reg:SI 5 di [ x ])) pr64110.C:7 90 {*movsi_internal}
 (expr_list:REG_DEAD (reg:SI 5 di [ x ])
(nil)))
(insn 28 27 29 2 (set (reg/v:HI 177 [ x ])
(subreg:HI (reg:SI 178 [ x ]) 0)) pr64110.C:7 92 {*movhi_internal}
 (expr_list:REG_DEAD (reg:SI 178 [ x ])
(nil)))
(note 29 28 89 2 NOTE_INSN_FUNCTION_BEG)
(insn 89 29 247 2 (set (reg:V16HI 214 [ vect_cst_.21 ])
(vec_duplicate:V16HI (reg/v:HI 177 [ x ]))) 4254 {*vec_dupv16hi}
 (nil))

and *vec_dupv16hi is:
(define_insn "*vec_dup"
  [(set (match_operand:AVX2_VEC_DUP_MODE 0 "register_operand" "=x,x,x")
(vec_duplicate:AVX2_VEC_DUP_MODE
  (match_operand: 1 "nonimmediate_operand" "m,x,!r")))]
  "TARGET_AVX2"

Thus, I don't see a bug on the md side, I would have expected LRA to just
use (vec_duplicate:V16HI (reg/v:HI 5 di)) on the rhs (yes, it will be split
after reload).
But, during the ICE I see:
(insn 27 36 28 2 (set (reg:SI 178 [ x ])
(reg:SI 5 di [ x ])) pr64110.C:7 90 {*movsi_internal}
 (expr_list:REG_DEAD (reg:SI 5 di [ x ])
(nil)))

(insn 28 27 29 2 (set (reg/v:HI 177 [ x ])
(subreg:HI (reg:SI 178 [ x ]) 0)) pr64110.C:7 92 {*movhi_internal}
 (expr_list:REG_DEAD (reg:SI 178 [ x ])
(nil)))

(note 29 28 262 2 NOTE_INSN_FUNCTION_BEG)

(insn 262 29 263 2 (set (reg/v:HI 218 [orig:177 x ] [177])
(reg/v:HI 177 [ x ])) 92 {*movhi_internal}
 (nil))

(insn 263 262 264 2 (set (reg/v:HI 219 [orig:177 x ] [177])
(reg/v:HI 218 [orig:177 x ] [177])) 92 {*movhi_internal}
 (nil))

(insn 264 263 265 2 (set (reg/v:HI 220 [orig:177 x ] [177])
(reg/v:HI 219 [orig:177 x ] [177])) 92 {*movhi_internal}
 (nil))

...
(repeated many times for pseudos 221, 222, ... 305)
(insn 350 349 351 2 (set (reg/v:HI 306 [orig:177 x ] [177])
(reg/v:HI 305 [orig:177 x ] [177])) 92 {*movhi_internal}
 (nil))

(insn 351 350 89 2 (set (reg/v:HI 217 [orig:177 x ] [177])
(reg/v:HI 306 [orig:177 x ] [177])) 92 {*movhi_internal}
 (nil))

(insn 89 351 261 2 (set (reg:V16HI 216 [orig:214 vect_cst_.21 ] [214])
(vec_duplicate:V16HI (reg/v:HI 217 [orig:177 x ] [177]))) 4254
{*vec_dupv16hi}
 (nil))

Vlad, can you please have a look?  Thanks.


[Bug target/62231] [4.8/4.9 regression] Exception handling broken on powerpc-e500v2-linux-gnuspe

2014-12-01 Thread asolokha at gmx dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=62231

--- Comment #6 from Arseny Solokha  ---
(In reply to manfred.rudigier from comment #3)
> I was probably to enthusiastic, the problem is still there, even in GCC
> 4.9.2. In order to reproduce the bug, you either have to use a root file
> system which was also built with GCC 4.8.3 or 4.9.2, or you just link the
> example program statically (which is probably the easier thing).

OK, when I've built the program statically I reproduced the issue.


[Bug target/64055] [5 regression] gnat.dg/derived_aggregate.adb FAILs on 32-bit i386

2014-12-01 Thread ienkovich at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64055

--- Comment #8 from ienkovich at gcc dot gnu.org ---
Author: ienkovich
Date: Mon Dec  1 12:43:04 2014
New Revision: 218207

URL: https://gcc.gnu.org/viewcvs?rev=218207&root=gcc&view=rev
Log:
PR target/64055
* tree-chkp.c (chkp_find_bound_slots_1): Allow non constant
values in array domain.


Modified:
trunk/gcc/ChangeLog
trunk/gcc/tree-chkp.c


[Bug tree-optimization/64121] [5 Regression] ICE: SSA corruption with -O -fsanitize=undefined

2014-12-01 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64121

Jakub Jelinek  changed:

   What|Removed |Added

 CC||jakub at gcc dot gnu.org

--- Comment #4 from Jakub Jelinek  ---
Maybe you should just add to the instrument_object_size while (TREE_CODE (base)
== SSA_NAME) loop
  if (SSA_NAME_OCCURS_IN_ABNORMAL_PHI (base))
break;
?


[Bug tree-optimization/63941] [5 Regression] ICE on valid code at -O3 and above on x86_64-linux-gnu

2014-12-01 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63941

Jakub Jelinek  changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 CC||jakub at gcc dot gnu.org
 Resolution|--- |FIXED

--- Comment #4 from Jakub Jelinek  ---
Fixed.


[Bug tree-optimization/63551] [4.9/5 Regression] wrong code (segfaults) at -Os on x86_64-linux-gnu

2014-12-01 Thread jamborm at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63551

--- Comment #9 from Martin Jambor  ---
Author: jamborm
Date: Mon Dec  1 12:52:58 2014
New Revision: 218208

URL: https://gcc.gnu.org/viewcvs?rev=218208&root=gcc&view=rev
Log:
2014-12-01  Martin Jambor  

PR ipa/63551
* ipa-inline-analysis.c (evaluate_conditions_for_known_args): Convert
value of the argument to the type of the value in the condition.

testsuite/
* gcc.dg/ipa/pr63551.c: New test.
* gcc.dg/ipa/pr64041.c: Likewise.


Added:
branches/gcc-4_9-branch/gcc/testsuite/gcc.dg/ipa/pr63551.c
branches/gcc-4_9-branch/gcc/testsuite/gcc.dg/ipa/pr64041.c
Modified:
branches/gcc-4_9-branch/gcc/ChangeLog
branches/gcc-4_9-branch/gcc/ipa-inline-analysis.c
branches/gcc-4_9-branch/gcc/testsuite/ChangeLog


[Bug tree-optimization/64121] [5 Regression] ICE: SSA corruption with -O -fsanitize=undefined

2014-12-01 Thread mpolacek at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64121

--- Comment #5 from Marek Polacek  ---
Unfortunately, that doesn't seem to help.


[Bug c/64136] New: gcc tree optimization removes basic block containing break condition

2014-12-01 Thread ecd at brainaid dot de
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64136

Bug ID: 64136
   Summary: gcc tree optimization removes basic block containing
break condition
   Product: gcc
   Version: unknown
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c
  Assignee: unassigned at gcc dot gnu.org
  Reporter: ecd at brainaid dot de

Created attachment 34152
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=34152&action=edit
bug.i source code

When compiling the following code the loop does not terminate properly, if day
is greater than 334 and leap equal 0 or day is greater than 335 and leap equals
1:

#include 

static const uint16_t days_on_first[2][12] =
{
{ 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334 },
{ 0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335 }
};

int
foo(int leap, int32_t days)
{
int i = 0;

while ((days <= days_on_first[leap][i + 1]) && (i < 11)) {
i++;
}

return i;
}

The test for (i << 11) is removed from the loop. This is verified by looking at
the generated output bug.c.056t.cunrolli.

The bug can be reproduced on gcc for x86 with the following options:

gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-pc-cygwin/4.8.3/lto-wrapper.exe
Target: x86_64-pc-cygwin
Configured with:
/cygdrive/i/szsz/tmpp/gcc/gcc-4.8.3-3.x86_64/src/gcc-4.8.3/configure
--srcdir=/cygdrive/i/szsz/tmpp/gcc/gcc-4.8.3-3.x86_64/src/gcc-4.8.3
--prefix=/usr --exec-prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin
--libexecdir=/usr/libexec --datadir=/usr/share --localstatedir=/var
--sysconfdir=/etc --libdir=/usr/lib --datarootdir=/usr/share
--docdir=/usr/share/doc/gcc --htmldir=/usr/share/doc/gcc/html -C
--build=x86_64-pc-cygwin --host=x86_64-pc-cygwin --target=x86_64-pc-cygwin
--without-libiconv-prefix --without-libintl-prefix --libexecdir=/usr/lib
--enable-shared --enable-shared-libgcc --enable-static
--enable-version-specific-runtime-libs --enable-bootstrap --enable-__cxa_atexit
--with-dwarf2 --with-tune=generic
--enable-languages=ada,c,c++,fortran,lto,objc,obj-c++ --enable-graphite
--enable-threads=posix --enable-libatomic --enable-libgomp --disable-libitm
--enable-libquadmath --enable-libquadmath-support --enable-libssp
--enable-libada --enable-libgcj-sublibs --disable-java-awt --disable-symvers
--with-ecj-jar=/usr/share/java/ecj.jar --with-gnu-ld --with-gnu-as
--with-cloog-include=/usr/include/cloog-isl --without-libiconv-prefix
--without-libintl-prefix --with-system-zlib --enable-linker-build-id
Thread model: posix
gcc version 4.8.3 (GCC)

and on arm-none-eabi-gcc compiled with these options:

arm-none-eabi-gcc -v
Using built-in specs.
COLLECT_GCC=arm-none-eabi-gcc
COLLECT_LTO_WRAPPER=/opt/gcc-arm-none-eabi-4_8-2014q4/bin/../lib/gcc/arm-none-eabi/4.8.4/lto-wrapper
Target: arm-none-eabi
Configured with:
/home/IS/ecd/src/gcc-arm-none-eabi-4_8-2014q3-20140805/src/gcc/configure
--target=arm-none-eabi
--prefix=/home/IS/ecd/src/gcc-arm-none-eabi-4_8-2014q3-20140805/install-native
--libexecdir=/home/IS/ecd/src/gcc-arm-none-eabi-4_8-2014q3-20140805/install-native/lib
--infodir=/home/IS/ecd/src/gcc-arm-none-eabi-4_8-2014q3-20140805/install-native/share/doc/gcc-arm-none-eabi/info
--mandir=/home/IS/ecd/src/gcc-arm-none-eabi-4_8-2014q3-20140805/install-native/share/doc/gcc-arm-none-eabi/man
--htmldir=/home/IS/ecd/src/gcc-arm-none-eabi-4_8-2014q3-20140805/install-native/share/doc/gcc-arm-none-eabi/html
--pdfdir=/home/IS/ecd/src/gcc-arm-none-eabi-4_8-2014q3-20140805/install-native/share/doc/gcc-arm-none-eabi/pdf
--enable-languages=c,c++ --enable-plugins --disable-decimal-float
--disable-libffi --disable-libgomp --disable-libmudflap --disable-libquadmath
--disable-libssp --disable-libstdcxx-pch --disable-nls --disable-shared
--disable-threads --disable-tls --with-gnu-as --with-gnu-ld --with-newlib
--with-headers=yes --with-python-dir=share/gcc-arm-none-eabi
--with-sysroot=/home/IS/ecd/src/gcc-arm-none-eabi-4_8-2014q3-20140805/install-native/arm-none-eabi
--build=x86_64-linux-gnu --host=x86_64-linux-gnu
--with-gmp=/home/IS/ecd/src/gcc-arm-none-eabi-4_8-2014q3-20140805/build-native/host-libs/usr
--with-mpfr=/home/IS/ecd/src/gcc-arm-none-eabi-4_8-2014q3-20140805/build-native/host-libs/usr
--with-mpc=/home/IS/ecd/src/gcc-arm-none-eabi-4_8-2014q3-20140805/build-native/host-libs/usr
--with-isl=/home/IS/ecd/src/gcc-arm-none-eabi-4_8-2014q3-20140805/build-native/host-libs/usr
--with-cloog=/home/IS/ecd/src/gcc-arm-none-eabi-4_8-2014q3-20140805/build-native/host-libs/usr
--with-libelf=/home/IS/ecd/src/gcc-arm-none-eabi-4_8-2014q3-20140805/build-native/host-libs/usr
--with-host-libstdcxx='-static-libgcc -Wl,-Bstatic,-lstdc++,-Bdynamic -lm'
--with-pkgversion='GNU Tools for ARM Embedded Processors'
--with-multilib-list=armv6-m,armv7-m,armv7e-m,armv7-r
Thread model: single
gcc version 4

[Bug c/64136] gcc tree optimization removes basic block containing break condition

2014-12-01 Thread ecd at brainaid dot de
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64136

--- Comment #1 from Eddie C. Dost  ---
Created attachment 34153
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=34153&action=edit
bug.i cunrolli dump


[Bug tree-optimization/64121] [5 Regression] ICE: SSA corruption with -O -fsanitize=undefined

2014-12-01 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64121

--- Comment #6 from Jakub Jelinek  ---
Ah, indeed.  So perhaps better replace the:
1565base = gimple_assign_rhs1 (def_stmt);
line in the loop with
{
  tree rhs1 = gimple_assign_rhs1 (def_stmt);
  if (TREE_CODE (rhs1) == SSA_NAME && SSA_NAME_OCCURS_IN_ABNORMAL_PHI (rhs1))
break;
  else
base = rhs1;
}
or so?


[Bug rtl-optimization/63957] [5 Regression] rename -fuse-caller-save to -fipa-ra

2014-12-01 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63957

Jakub Jelinek  changed:

   What|Removed |Added

 CC||jakub at gcc dot gnu.org

--- Comment #2 from Jakub Jelinek  ---
So, Tom, are you going to propose a patch?


[Bug c/64136] gcc tree optimization removes basic block containing break condition

2014-12-01 Thread pinskia at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64136

Andrew Pinski  changed:

   What|Removed |Added

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

--- Comment #2 from Andrew Pinski  ---
12 < 12 is false. So you read one past the array bounds.


[Bug c/64136] gcc tree optimization removes basic block containing break condition

2014-12-01 Thread pinskia at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64136

--- Comment #3 from Andrew Pinski  ---
Swap around the conditions that you have and it will work correctly.


[Bug target/63661] [4.9 Regression] -O2 miscompiles with -mtune=nehalem or corei7

2014-12-01 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63661

Jakub Jelinek  changed:

   What|Removed |Added

  Known to work||5.0
Summary|[4.9/5 Regression] -O2  |[4.9 Regression] -O2
   |miscompiles with|miscompiles with
   |-mtune=nehalem or corei7|-mtune=nehalem or corei7
  Known to fail|5.0 |

--- Comment #27 from Jakub Jelinek  ---
Thus fixed on the trunk so far.


[Bug tree-optimization/64126] [5.0 Regression] FAIL: gcc.dg/pr37289.c scan-tree-dump original "-\\(long unsigned int\\) x"

2014-12-01 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64126

--- Comment #4 from Richard Biener  ---
Author: rguenth
Date: Mon Dec  1 13:08:10 2014
New Revision: 218210

URL: https://gcc.gnu.org/viewcvs?rev=218210&root=gcc&view=rev
Log:
2014-12-01  Richard Biener  

PR middle-end/64126
* match.pd: Allow conversions in ~A + 1 -> -A, add -A - 1 -> ~A
and -1 - A -> ~A.
* fold-const.c (fold_binary_loc): Remove transforms here.

Modified:
trunk/gcc/ChangeLog
trunk/gcc/fold-const.c
trunk/gcc/match.pd


[Bug tree-optimization/64121] [5 Regression] ICE: SSA corruption with -O -fsanitize=undefined

2014-12-01 Thread mpolacek at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64121

--- Comment #7 from Marek Polacek  ---
Yup, that works.  Testing in progress.  Thanks.


[Bug tree-optimization/15346] [tree-ssa] combine two successive divisions

2014-12-01 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=15346

Richard Biener  changed:

   What|Removed |Added

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

--- Comment #7 from Richard Biener  ---
Fixed.


[Bug tree-optimization/15346] [tree-ssa] combine two successive divisions

2014-12-01 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=15346

--- Comment #8 from Richard Biener  ---
Author: rguenth
Date: Mon Dec  1 13:13:28 2014
New Revision: 218211

URL: https://gcc.gnu.org/viewcvs?rev=218211&root=gcc&view=rev
Log:
2014-12-01  Richard Biener  

PR tree-optimization/15346
* Makefile.in (gimple-match.o-warn): Remove -Wno-unused-parameter,
add -Wno-unused-but-set-variable.
* match.pd: Combine two successive divisions.

* gcc.dg/tree-ssa/forwprop-32.c: New testcase.

Added:
trunk/gcc/testsuite/gcc.dg/tree-ssa/forwprop-32.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/Makefile.in
trunk/gcc/match.pd
trunk/gcc/testsuite/ChangeLog


[Bug rtl-optimization/63957] [5 Regression] rename -fuse-caller-save to -fipa-ra

2014-12-01 Thread vries at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63957

vries at gcc dot gnu.org changed:

   What|Removed |Added

   Assignee|unassigned at gcc dot gnu.org  |vries at gcc dot gnu.org

--- Comment #3 from vries at gcc dot gnu.org ---
> So, Tom, are you going to propose a patch?

Yes.


[Bug fortran/64137] New: Fortran FE builds invalid GENERIC

2014-12-01 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64137

Bug ID: 64137
   Summary: Fortran FE builds invalid GENERIC
   Product: gcc
   Version: 5.0
Status: UNCONFIRMED
  Keywords: wrong-code
  Severity: normal
  Priority: P3
 Component: fortran
  Assignee: unassigned at gcc dot gnu.org
  Reporter: rguenth at gcc dot gnu.org

#6  0x0085f420 in gfc_conv_intrinsic_minmaxloc (se=0x7fffd150, 
expr=0x235ba70, op=GT_EXPR)
at /space/rguenther/tramp3d/trunk/gcc/fortran/trans-intrinsic.c:3734
(gdb) l
3729 possible value is HUGE in both cases.  */
3730  if (op == GT_EXPR)
3731tmp = fold_build1_loc (input_location, NEGATE_EXPR, TREE_TYPE
(tmp), tmp);
3732  if (op == GT_EXPR && expr->ts.type == BT_INTEGER)
3733tmp = fold_build2_loc (input_location, MINUS_EXPR, TREE_TYPE (tmp),
tmp,
3734   build_int_cst (type, 1));

the body of the 2nd if builds REAL_CST - INTEGER_CST for at least
gfortran.dg/maxloc_2.f90 at -O1+.  Currently it is lucky that fold-const.c

10523 /* A - B -> A + (-B) if B is easily negatable.  */
10524 if (negate_expr_p (arg1)
10525 && !TYPE_OVERFLOW_SANITIZED (type)
(gdb) l
10526 && ((FLOAT_TYPE_P (type)
10527  /* Avoid this transformation if B is a positive
REAL_CST.  */
10528  && (TREE_CODE (arg1) != REAL_CST
10529  ||  REAL_VALUE_NEGATIVE (TREE_REAL_CST (arg1
10530 || INTEGRAL_TYPE_P (type)))
10531   return fold_build2_loc (loc, PLUS_EXPR, type,
10532   fold_convert_loc (loc, type, arg0),
10533   fold_convert_loc (loc, type,
10534 negate_expr (arg1)));

applies as that fold_convert()s to REAL after negating the integer, hiding
this bug.  When I move that to match.pd patterns that no longer happens,
but we simply get -Huge + -1 with bogus types here.

Not sure what is intended here (integer Huge or Float 1).


[Bug c/64136] gcc tree optimization removes basic block containing break condition

2014-12-01 Thread ecd at brainaid dot de
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64136

--- Comment #4 from Eddie C. Dost  ---
Andrew,

thank you very much, you are correct and I was blind. I now see the problem
from gcc's optimizer view and it makes sense to remove the second condition.


[Bug middle-end/64111] [5.0 regression] ICE: conversion of register to a different size

2014-12-01 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64111

--- Comment #19 from Richard Biener  ---
Author: rguenth
Date: Mon Dec  1 13:42:45 2014
New Revision: 218212

URL: https://gcc.gnu.org/viewcvs?rev=218212&root=gcc&view=rev
Log:
2014-12-01  Richard Biener  

PR middle-end/64111
* tree.c (int_cst_hasher::hash): Use TYPE_UID instead of
htab_hash_pointer to not break PCH.

Modified:
trunk/gcc/ChangeLog
trunk/gcc/tree.c


[Bug fortran/64137] Fortran FE builds invalid GENERIC

2014-12-01 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64137

Richard Biener  changed:

   What|Removed |Added

 Status|UNCONFIRMED |ASSIGNED
   Last reconfirmed||2014-12-01
   Assignee|unassigned at gcc dot gnu.org  |rguenth at gcc dot 
gnu.org
 Ever confirmed|0   |1

--- Comment #1 from Richard Biener  ---
Index: gcc/fortran/trans-intrinsic.c
===
--- gcc/fortran/trans-intrinsic.c   (revision 218211)
+++ gcc/fortran/trans-intrinsic.c   (working copy)
@@ -3729,7 +3729,7 @@ gfc_conv_intrinsic_minmaxloc (gfc_se * s
  possible value is HUGE in both cases.  */
   if (op == GT_EXPR)
 tmp = fold_build1_loc (input_location, NEGATE_EXPR, TREE_TYPE (tmp), tmp);
-  if (op == GT_EXPR && expr->ts.type == BT_INTEGER)
+  if (op == GT_EXPR && arrayexpr->ts.type == BT_INTEGER)
 tmp = fold_build2_loc (input_location, MINUS_EXPR, TREE_TYPE (tmp), tmp,
   build_int_cst (type, 1));


works for me.  So I suppose this is a wrong-code bug as we shouldn't have
subtracted 1 off -Huge (what's that anyway?)  But then is "integer -Huge"
C INT_MIN + 1?

Anyway, testing the above.


[Bug middle-end/64111] [5.0 regression] ICE: conversion of register to a different size

2014-12-01 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64111

--- Comment #20 from Richard Biener  ---
Author: rguenth
Date: Mon Dec  1 13:47:11 2014
New Revision: 218213

URL: https://gcc.gnu.org/viewcvs?rev=218213&root=gcc&view=rev
Log:
2014-12-01  Richard Biener  

PR middle-end/64111
* tree.c (int_cst_hash_hash): Use TYPE_UID instead of
htab_hash_pointer to not break PCH.

Modified:
branches/gcc-4_9-branch/gcc/ChangeLog
branches/gcc-4_9-branch/gcc/tree.c


[Bug middle-end/64111] [5.0 regression] ICE: conversion of register to a different size

2014-12-01 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64111

--- Comment #21 from Richard Biener  ---
Author: rguenth
Date: Mon Dec  1 13:48:21 2014
New Revision: 218214

URL: https://gcc.gnu.org/viewcvs?rev=218214&root=gcc&view=rev
Log:
2014-12-01  Richard Biener  

PR middle-end/64111
* tree.c (int_cst_hash_hash): Use TYPE_UID instead of
htab_hash_pointer to not break PCH.

Modified:
branches/gcc-4_8-branch/gcc/ChangeLog
branches/gcc-4_8-branch/gcc/tree.c


[Bug bootstrap/64102] ARM bootstrap fails with segfault with -mapcs in BOOT_CFLAGS

2014-12-01 Thread ktkachov at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64102

--- Comment #4 from ktkachov at gcc dot gnu.org ---
(In reply to ktkachov from comment #3)
> Hmm...
> Trying to bootstrap 4.9 with the same configuration and -mapcs results in an
> ICE in stage2 when compiling haifa-sched.c
> $SRC/gcc/haifa-sched.c:6507:1: internal compiler error: in lra_create_copy,
> at lra.c:1532
>  }
>  ^
> 0x6f240b lra_create_copy(int, int, int)
> $SRC/gcc/lra.c:1532
> 0x70f447 process_bb_lives
> $SRC/gcc/lra-lives.c:568
> 0x710761 lra_create_live_ranges(bool)
> $SRC/gcc/lra-lives.c:1008
> 0x6f3f33 lra(_IO_FILE*)
> $SRC/gcc/lra.c:2372
> 0x6ad3a1 do_reload
> $SRC/gcc/ira.c:5457
> 0x6ad717 rest_of_handle_reload
> $SRC/gcc/ira.c:5598
> 0x6ad75f execute
> $SRC/gcc/ira.c:5627
> Please submit a full bug report,
> with preprocessed source if appropriate.
> 
> 
> I didn't try without -mapcs on 4.9 though, so need to check that first.

Ah, this is a known bootstrap failure: PR 63740
so can't check whether the -mapcs issue is a regression until that's resolved


[Bug libstdc++/63840] std::function copy constructor deletes an uninitialized pointer if new fails

2014-12-01 Thread redi at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63840

Jonathan Wakely  changed:

   What|Removed |Added

   Target Milestone|--- |4.8.4

--- Comment #3 from Jonathan Wakely  ---
Fixed on trunk so far.


[Bug libstdc++/63840] std::function copy constructor deletes an uninitialized pointer if new fails

2014-12-01 Thread redi at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63840

--- Comment #2 from Jonathan Wakely  ---
Author: redi
Date: Mon Dec  1 13:49:20 2014
New Revision: 218215

URL: https://gcc.gnu.org/viewcvs?rev=218215&root=gcc&view=rev
Log:
PR libstdc++/63840
* include/std/functional (function::function(const function&)): Set
_M_manager after operations that might throw.
* include/tr1/functional (function::function(const function&),
function::function(_Functor, _Useless)): Likewise.
* testsuite/20_util/function/63840.cc: New.
* testsuite/tr1/3_function_objects/function/63840.cc: New.

Added:
trunk/libstdc++-v3/testsuite/20_util/function/63840.cc
trunk/libstdc++-v3/testsuite/tr1/3_function_objects/function/63840.cc
Modified:
trunk/libstdc++-v3/ChangeLog
trunk/libstdc++-v3/include/std/functional
trunk/libstdc++-v3/include/tr1/functional


[Bug plugins/61176] plugin builds including gimple.h not building

2014-12-01 Thread amacleod at redhat dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61176

--- Comment #13 from Andrew Macleod  ---
gcc-plugin.h has had a number of includes added to ease the pain of flattening
basic-block.h and cgraph.h this release.  If there are still issues with tree.h
or others, submit a patch which adds the required includes.


[Bug tree-optimization/63551] [4.9/5 Regression] wrong code (segfaults) at -Os on x86_64-linux-gnu

2014-12-01 Thread jamborm at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63551

Martin Jambor  changed:

   What|Removed |Added

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

--- Comment #10 from Martin Jambor  ---
Fixed.


[Bug tree-optimization/15826] don't use "if" to extract a single bit bit-field.

2014-12-01 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=15826

--- Comment #9 from Richard Biener  ---
Which boils down to the premature fold-const.c:optimize_bit_field_compare
which creates this BIT_FIELD_REF (fold_truth_andor_1 does similar stupid
stuff).


[Bug tree-optimization/14541] [tree-ssa] built-in math functions are not fully optimized at tree level

2014-12-01 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=14541

--- Comment #16 from Richard Biener  ---
(for logfn (BUILT_IN_LOGF BUILT_IN_LOG BUILT_IN_LOGL)
 expfn (BUILT_IN_EXPF BUILT_IN_EXP BUILT_IN_EXPL)
 (simplify
  (logfn (expfn @0))
  (if (flag_unsafe_math_optimizations)
   @0)))

with the still somewhat awkward syntax, patch for proposed better one
is not yet ready but would look like

(define_operator_list log (BUILT_IN_LOGF BUILT_IN_LOG BUILT_IN_LOGL))
(define_operator_list exp (BUILT_IN_EXPF BUILT_IN_EXP BUILT_IN_EXPL))

(simplify
 (log (exp @0))
 (if (flag_unsafe_math_optimizations)
  @0)))

thus the 'for' would be implicit.  Note that fold_builtin_logarithm does handle
some more cases.  The match-and-simplify branch already covers quite some
patterns in match-builtins.def (but not the above).

I'll see if I can take the syntax patch (I was waiting for that so not to
merge the "ugly" syntax).


[Bug target/64115] [4.9/5 Regression] ICE: : in rs6000_delegitimize_address, at config/rs6000/rs6000.c:7051

2014-12-01 Thread uweigand at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64115

Ulrich Weigand  changed:

   What|Removed |Added

 Status|UNCONFIRMED |ASSIGNED
   Last reconfirmed||2014-12-01
   Assignee|unassigned at gcc dot gnu.org  |uweigand at gcc dot 
gnu.org
 Ever confirmed|0   |1

--- Comment #2 from Ulrich Weigand  ---
Confirmed.


[Bug c++/58107] missing destructor call after thrown exception in lambda capture

2014-12-01 Thread ville.voutilainen at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58107

Ville Voutilainen  changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2014-12-01
 CC||ville.voutilainen at gmail dot 
com
 Ever confirmed|0   |1

--- Comment #1 from Ville Voutilainen  ---
Still happens with the gcc5 trunk.


[Bug c++/60845] print original type for typedef classes in diagnostics

2014-12-01 Thread paolo at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60845

--- Comment #1 from paolo at gcc dot gnu.org  ---
Author: paolo
Date: Mon Dec  1 14:58:01 2014
New Revision: 218218

URL: https://gcc.gnu.org/viewcvs?rev=218218&root=gcc&view=rev
Log:
/cp
2014-12-01  Paolo Carlini  

PR c++/60845
* typeck.c (finish_class_member_access_expr): Use %q#T instead of
%qD in error message.

/testsuite
2014-12-01  Paolo Carlini  

PR c++/60845
* g++.dg/parse/error55.C: New.

Added:
trunk/gcc/testsuite/g++.dg/parse/error55.C
Modified:
trunk/gcc/cp/ChangeLog
trunk/gcc/cp/typeck.c
trunk/gcc/testsuite/ChangeLog


[Bug c++/60845] print original type for typedef classes in diagnostics

2014-12-01 Thread paolo.carlini at oracle dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60845

Paolo Carlini  changed:

   What|Removed |Added

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

--- Comment #2 from Paolo Carlini  ---
Done.


[Bug fortran/64138] New: gfortran interface issue

2014-12-01 Thread wong.david-c at epa dot gov
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64138

Bug ID: 64138
   Summary: gfortran interface issue
   Product: gcc
   Version: 4.9.3
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: fortran
  Assignee: unassigned at gcc dot gnu.org
  Reporter: wong.david-c at epa dot gov

Hi,

   I have created a complex number module:

   module complex_number_module
implicit none

integer, parameter :: loc_real_precision = 8

type complex_number
  real(kind=loc_real_precision) :: real_part, imag_part
end type complex_number

interface c_sub
  module procedure c_sub_cc,&  ! z1 - z2
   c_sub_cr,&  ! z1 - num, where num is a real
number
   c_sub_rc! num - z1, where num is a real
number
end interface

! --
type (complex_number) function c_sub_cc (z1, z2)

type (complex_number), intent(in) :: z1, z2

c_sub_cc%real_part = z1%real_part - z2%real_part
c_sub_cc%imag_part = z1%imag_part - z2%imag_part

end function c_sub_ccj

! --
type (complex_number) function c_sub_cr (z1, num)

type (complex_number), intent(in) :: z1
real(kind=loc_real_precision), intent(in) :: num

c_sub_cr%real_part = z1%real_part - num
c_sub_cr%imag_part = z1%imag_part

end function c_sub_cr

! --
type (complex_number) function c_sub_rc (num, z1)

type (complex_number), intent(in) :: z1
real(kind=loc_real_precision), intent(in) :: num

c_sub_rc%real_part = num - z1%real_part
c_sub_rc%imag_part = - z1%imag_part

end function c_sub_rc

  end module complex_number_module

When I compile with gfortran (version 4.6.4), I got the following error:

module_twoway_rrtmg_aero_optical_util.F:14.85:

 c_sub_rc! num - z1, where num is a real number
   1
Error: Ambiguous interfaces 'c_sub_rc' and 'c_sub_cr' in generic interface
'c_sub' at (1)

I don't see any ambiguity and I don't encounter any problem with other
compilers such pgi and ifort. Please advise.

Cheers,
David


[Bug sanitizer/63956] [5 Regression][UBSAN] ICE segfault in cxx_eval_call_expression ../../gcc/cp/constexpr.c

2014-12-01 Thread mpolacek at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63956

--- Comment #13 from Marek Polacek  ---
Author: mpolacek
Date: Mon Dec  1 15:29:11 2014
New Revision: 218221

URL: https://gcc.gnu.org/viewcvs?rev=218221&root=gcc&view=rev
Log:
PR sanitizer/63956
* ubsan.c (is_ubsan_builtin_p): Check also built-in class.
cp/
* constexpr.c: Include ubsan.h.
(cxx_eval_call_expression): Bail out for IFN_UBSAN_{NULL,BOUNDS}
internal functions and for ubsan builtins.
* error.c: Include internal-fn.h.
(dump_expr): Add printing of internal functions.
testsuite/
* c-c++-common/ubsan/shift-5.c: Add xfails.
* g++.dg/ubsan/div-by-zero-1.C: Don't use -w.  Add xfail.
* g++.dg/ubsan/pr63956.C: New test.

Added:
trunk/gcc/testsuite/g++.dg/ubsan/pr63956.C
Modified:
trunk/gcc/ChangeLog
trunk/gcc/cp/ChangeLog
trunk/gcc/cp/constexpr.c
trunk/gcc/cp/error.c
trunk/gcc/testsuite/ChangeLog
trunk/gcc/testsuite/c-c++-common/ubsan/shift-5.c
trunk/gcc/testsuite/g++.dg/ubsan/div-by-zero-1.C
trunk/gcc/ubsan.c


[Bug sanitizer/63956] [5 Regression][UBSAN] ICE segfault in cxx_eval_call_expression ../../gcc/cp/constexpr.c

2014-12-01 Thread mpolacek at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63956

Marek Polacek  changed:

   What|Removed |Added

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

--- Comment #14 from Marek Polacek  ---
Fixed.


[Bug tree-optimization/64121] [5 Regression] ICE: SSA corruption with -O -fsanitize=undefined

2014-12-01 Thread mpolacek at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64121

--- Comment #8 from Marek Polacek  ---
Author: mpolacek
Date: Mon Dec  1 15:37:55 2014
New Revision: 218222

URL: https://gcc.gnu.org/viewcvs?rev=218222&root=gcc&view=rev
Log:
PR sanitizer/64121
* ubsan.c (instrument_object_size): Stop searching if the base
occurs in abnormal phi.

* c-c++-common/ubsan/pr64121.c: New test.

Added:
trunk/gcc/testsuite/c-c++-common/ubsan/pr64121.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/testsuite/ChangeLog
trunk/gcc/ubsan.c


[Bug tree-optimization/64121] [5 Regression] ICE: SSA corruption with -O -fsanitize=undefined

2014-12-01 Thread mpolacek at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64121

Marek Polacek  changed:

   What|Removed |Added

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

--- Comment #9 from Marek Polacek  ---
Fixed.


[Bug jit/63969] gccjit segfaults when it can't locate the correct gcc driver program

2014-12-01 Thread dmalcolm at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63969

dmalcolm at gcc dot gnu.org changed:

   What|Removed |Added

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

--- Comment #8 from dmalcolm at gcc dot gnu.org ---
Should be fixed as of r218226.


[Bug jit/63969] gccjit segfaults when it can't locate the correct gcc driver program

2014-12-01 Thread dmalcolm at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63969

--- Comment #7 from dmalcolm at gcc dot gnu.org ---
Author: dmalcolm
Date: Mon Dec  1 15:58:11 2014
New Revision: 218226

URL: https://gcc.gnu.org/viewcvs?rev=218226&root=gcc&view=rev
Log:
PR jit/63969: Fix segfault in error-handling when driver isn't found

gcc/jit/ChangeLog:
PR jit/63969
* jit-playback.c: Ensure that ctxt_progname is non-NULL.

gcc/testsuite/ChangeLog:
PR jit/63969
* jit.dg/harness.h (CHECK_STRING_STARTS_WITH): New.
(check_string_starts_with): New.
* jit.dg/test-error-pr63969-missing-driver.c: New.

Added:
trunk/gcc/testsuite/jit.dg/test-error-pr63969-missing-driver.c
Modified:
trunk/gcc/jit/ChangeLog
trunk/gcc/jit/jit-playback.c
trunk/gcc/testsuite/ChangeLog
trunk/gcc/testsuite/jit.dg/harness.h


[Bug jit/63854] Fix memory leaks seen in JIT

2014-12-01 Thread dmalcolm at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63854

--- Comment #20 from dmalcolm at gcc dot gnu.org ---
Author: dmalcolm
Date: Mon Dec  1 16:13:29 2014
New Revision: 218227

URL: https://gcc.gnu.org/viewcvs?rev=218227&root=gcc&view=rev
Log:
PR jit/63854: Add support for running "make check-jit" under valgrind

gcc/testsuite/ChangeLog:
PR jit/63854
* jit.dg/jit.exp (report_leak): New.
(parse_valgrind_logfile): New.
(fixed_host_execute): Detect if RUN_UNDER_VALGRIND is present
in the environment, and if so, run the executable under
valgrind, capturing valgrind's output to a logfile.  Parse the
log file, generating PASSes and XFAILs for the summary of leaks.
Use "wait" before "close": valgrind might not have finished
writing the log out before we parse it, so we need to wait for
the spawnee to finish.


Modified:
trunk/gcc/testsuite/ChangeLog
trunk/gcc/testsuite/jit.dg/jit.exp


[Bug target/64115] [4.9/5 Regression] ICE: : in rs6000_delegitimize_address, at config/rs6000/rs6000.c:7051

2014-12-01 Thread uweigand at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64115

Ulrich Weigand  changed:

   What|Removed |Added

 CC||dje.gcc at gmail dot com

--- Comment #3 from Ulrich Weigand  ---
The ICE is triggered by checking code in rs6000_delegitimize_address:

  if (GET_CODE (y) == UNSPEC
  && XINT (y, 1) == UNSPEC_TOCREL)
{
#ifdef ENABLE_CHECKING
  if (REG_P (XVECEXP (y, 0, 1))
  && REGNO (XVECEXP (y, 0, 1)) == TOC_REGISTER)
{
  /* All good.  */
}
  else if (GET_CODE (XVECEXP (y, 0, 1)) == DEBUG_EXPR)
{
  /* Weirdness alert.  df_note_compute can replace r2 with a
 debug_expr when this unspec is in a debug_insn.
 Seen in gcc.dg/pr51957-1.c  */
}
  else
{
  debug_rtx (orig_x);
  abort ();
}
#endif

which attempts to ensure that the second argument of UNSPEC_TOCREL is the TOC
register.   However, this check seems fragile; in debug code, we can get RTX
simplifications that replace the TOC register by some equivalent expression.

The code already recognizes one such case; this bug shows another case, where
the TOC register is replaced by a MEM RTX for the TOC save slot holding the TOC
value.  [ This case is probably made more likely by the change in my ELFv2 ABI
preparation patch, which has the effect of making TOC moves into the save slot
more explicit at the RTL level, allowing var-tracking code to detect that
equivalence. ]

One could try to make this check in rs6000_delegitimize_address more generic by
allowing some (or all) MEM RTXes.  However, I'm wonding what exactly that check
is supposed to achieve in the first place; for the purposes of this routine,
the second argument of UNSPEC_TOCREL is really irrelevant.

David, would you be OK with simply removing the check (everything enclosed with
ENABLE_CHECKING in the above code)?


[Bug c++/60859] Value-initialization of scalar in aggregate yields "braces around scalar initializer"

2014-12-01 Thread paolo.carlini at oracle dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60859

Paolo Carlini  changed:

   What|Removed |Added

 Status|UNCONFIRMED |ASSIGNED
   Last reconfirmed||2014-12-01
   Assignee|unassigned at gcc dot gnu.org  |paolo.carlini at oracle 
dot com
 Ever confirmed|0   |1

--- Comment #1 from Paolo Carlini  ---
Mine.


[Bug rtl-optimization/63957] [5 Regression] rename -fuse-caller-save to -fipa-ra

2014-12-01 Thread vries at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63957

--- Comment #4 from vries at gcc dot gnu.org ---
Created attachment 34154
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=34154&action=edit
tentative patch


[Bug c++/64139] New: ice in possible_polymorphic_call_targets, at ipa-devirt.c:2410

2014-12-01 Thread dcb314 at hotmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64139

Bug ID: 64139
   Summary: ice in possible_polymorphic_call_targets, at
ipa-devirt.c:2410
   Product: gcc
   Version: 5.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: dcb314 at hotmail dot com

Created attachment 34155
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=34155&action=edit
gzipped C++ source code

I just tried to compile the attached C++ code with the latest trunk
dated 20141130 on a Fedora Linux x86_64 box.

The compiler said

/home/dcb/rpmbuild/BUILD/spatialindex-src-1.8.1/src/mvrtree/MVRTree.cc:1360:1:
i
nternal compiler error: in possible_polymorphic_call_targets, at
ipa-devirt.c:24
10
 }
 ^
0xa47df4 possible_polymorphic_call_targets(tree_node*, long,
ipa_polymorphic_cal
l_context, bool*, void**, bool)
../../src/trunk/gcc/ipa-devirt.c:2410
0x17e4127 ipa_get_indirect_edge_target_1(cgraph_edge*, vec, vec,
vec, ipa_agg_replacement_value*, bool*)
../../src/trunk/gcc/ipa-cp.c:1872
0xa5ebbd estimate_edge_devirt_benefit(cgraph_edge*, int*, int*, vec, vec,
vec)
../../src/trunk/gcc/ipa-inline-analysis.c:2999
0xa5ebbd estimate_edge_size_and_time(cgraph_edge*, int*, int*, int*, int,
vec, vec, 
vec, int*)
../../src/trunk/gcc/ipa-inline-analysis.c:3040
0xa5c7c4 estimate_calls_size_and_time(cgraph_node*, int*, int*, int*, int*,
unsi
gned int, vec, vec, vec)
../../src/trunk/gcc/ipa-inline-analysis.c:3099
0xa5ab25 estimate_node_size_and_time(cgraph_node*, unsigned int,
vec, vec,
vec, int*, int*, int*, int*,
vec)

Flag -O2 required.


[Bug libstdc++/64128] Let vector take advantage of malloc_usable_size for malloc-using allocators

2014-12-01 Thread gcc-bugzilla at contacts dot eelis.net
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64128

--- Comment #4 from Eelis  ---
Yeah, I noticed that tcmalloc is also way faster, and since tcmalloc barely
over-allocates for the sizes requested by vector, there is no benefit to using
malloc_usable_size (which it also supports) there.

So I think the bottom line is indeed: just don't use glibc malloc, because it's
very slow.


[Bug jit/63854] Fix memory leaks seen in JIT

2014-12-01 Thread dmalcolm at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63854

--- Comment #21 from dmalcolm at gcc dot gnu.org ---
Author: dmalcolm
Date: Mon Dec  1 17:16:04 2014
New Revision: 218230

URL: https://gcc.gnu.org/viewcvs?rev=218230&root=gcc&view=rev
Log:
PR jit/63854: Fix leak in tree-ssa-math-opts.c

gcc/ChangeLog:
PR jit/63854
* tree-ssa-math-opts.c (execute_cse_sincos_1): Fix a missing
release of stmts by converting it to an auto_vec.


Modified:
trunk/gcc/ChangeLog
trunk/gcc/tree-ssa-math-opts.c



[Bug c++/63779] g++ 4.9 generates invalid object provoking a GOT relative relocation must reference a local symbol linker error on SunOS

2014-12-01 Thread richard at netbsd dot org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63779

--- Comment #3 from Richard PALO  ---
Well, apparently this was affecting many using gcc 4.9.x and a workaround was
given here https://bugzilla.mozilla.org/show_bug.cgi?id=999496

I tested it and now have (as with 4.8.x):
>richard@omnis:/tmp/pkgsrc/devel/xulrunner31/work/build/content/media$ nm -C 
>MediaDecoderReader.o |grep MallocSizeOf
>[148]  | 0|29|FUNC |WEAK |2|90 
>|mozilla::AudioQueueMemoryFunctor::MallocSizeOf(const void*)
>  
> [_ZN7mozilla23AudioQueueMemoryFunctor12MallocSizeOfEPKv]
>[145]  | 0|29|FUNC |WEAK |2|87 
>|mozilla::VideoQueueMemoryFunctor::MallocSizeOf(const void*)
>  
> [_ZN7mozilla23VideoQueueMemoryFunctor12MallocSizeOfEPKv]

Is there any further information I can provide now to find this nasty problem?

[Bug jit/63854] Fix memory leaks seen in JIT

2014-12-01 Thread dmalcolm at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63854

--- Comment #22 from dmalcolm at gcc dot gnu.org ---
Author: dmalcolm
Date: Mon Dec  1 17:22:19 2014
New Revision: 218231

URL: https://gcc.gnu.org/viewcvs?rev=218231&root=gcc&view=rev
Log:
PR jit/63854: Fix leak within jit-builtins.c

gcc/jit/ChangeLog:
PR jit/63854
* jit-builtins.c
(gcc::jit::recording::builtins_manager::make_fn_type): Call the
context's new_function_type method, rather than directly creating
a function_type instance.
* jit-recording.c
(gcc::jit::recording::context::new_function_type): New method,
adapted from part of...
(gcc::jit::recording::context::new_function_ptr_type): ...this.
Update to call new_function_type.
* jit-recording.h
(gcc::jit::recording::context::new_function_type): New method.

Modified:
trunk/gcc/jit/ChangeLog
trunk/gcc/jit/jit-builtins.c
trunk/gcc/jit/jit-recording.c
trunk/gcc/jit/jit-recording.h


[Bug fortran/64138] gfortran interface issue

2014-12-01 Thread kargl at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64138

kargl at gcc dot gnu.org changed:

   What|Removed |Added

 CC||kargl at gcc dot gnu.org

--- Comment #1 from kargl at gcc dot gnu.org ---
(In reply to david from comment #0)
> Hi,
> 
>I have created a complex number module:
> 
>module complex_number_module
> implicit none
> 
> integer, parameter :: loc_real_precision = 8
> 
> type complex_number
>   real(kind=loc_real_precision) :: real_part, imag_part
> end type complex_number
> 
> interface c_sub
>   module procedure c_sub_cc,&  ! z1 - z2
>c_sub_cr,&  ! z1 - num, where num is a
> real number
>c_sub_rc! num - z1, where num is a
> real number
> end interface
> 
> ! --
> type (complex_number) function c_sub_cc (z1, z2)
> 
> type (complex_number), intent(in) :: z1, z2
> 
> c_sub_cc%real_part = z1%real_part - z2%real_part
> c_sub_cc%imag_part = z1%imag_part - z2%imag_part
> 
> end function c_sub_ccj
> 
> ! --
> type (complex_number) function c_sub_cr (z1, num)
> 
> type (complex_number), intent(in) :: z1
> real(kind=loc_real_precision), intent(in) :: num
> 
> c_sub_cr%real_part = z1%real_part - num
> c_sub_cr%imag_part = z1%imag_part
> 
> end function c_sub_cr
> 
> ! --
> type (complex_number) function c_sub_rc (num, z1)
> 
> type (complex_number), intent(in) :: z1
> real(kind=loc_real_precision), intent(in) :: num
> 
> c_sub_rc%real_part = num - z1%real_part
> c_sub_rc%imag_part = - z1%imag_part
> 
> end function c_sub_rc
> 
>   end module complex_number_module
> 
> When I compile with gfortran (version 4.6.4), I got the following error:
> 
> module_twoway_rrtmg_aero_optical_util.F:14.85:
> 
>  c_sub_rc! num - z1, where num is a real number
>1
> 
> Error: Ambiguous interfaces 'c_sub_rc' and 'c_sub_cr' in generic interface
> 'c_sub' at (1)
> 
> I don't see any ambiguity and I don't encounter any problem with other
> compilers such pgi and ifort. Please advise.
> 
> Cheers,
> David

Please attach the exact code you tried to compile.  The above is nonsense.


[Bug jit/63854] Fix memory leaks seen in JIT

2014-12-01 Thread dmalcolm at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63854

--- Comment #23 from dmalcolm at gcc dot gnu.org ---
Author: dmalcolm
Date: Mon Dec  1 17:28:28 2014
New Revision: 218233

URL: https://gcc.gnu.org/viewcvs?rev=218233&root=gcc&view=rev
Log:
PR jit/63854: Fix leak in real.c for i386:init_ext_80387_constants

gcc/ChangeLog:
PR jit/63854
* real.c (real_from_string): Add missing mpfr_clear.


Modified:
trunk/gcc/ChangeLog
trunk/gcc/real.c


[Bug libstdc++/64140] New: match_results.prefix() returns an incorrect result if regex_iterator holds a zero-length match

2014-12-01 Thread kariya_mitsuru at hotmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64140

Bug ID: 64140
   Summary: match_results.prefix() returns an incorrect result if
regex_iterator holds a zero-length match
   Product: gcc
   Version: 5.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: libstdc++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: kariya_mitsuru at hotmail dot com

Created attachment 34156
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=34156&action=edit
g++ -v

Please see the following sample.

== sample code
==
#include 
#include 
#include 

void print(const char* t, const std::string& s, const std::ssub_match& sub)
{
std::cout << "  " << t << ": " << (sub.matched ? "matched  " : "unmatched")
<< ", "
"length() = " << sub.length() << ", str() = '" << sub.str() << "\', "
"pair = (" << sub.first - s.begin() << ", " << sub.second - s.begin()
<< "), "
"'" << std::string(sub.first, sub.second) << '\'' << std::endl;
}

int main()
{
const std::regex e("z*");
const std::string s("ab");

int i = 0;
for (auto&& it = std::sregex_iterator(s.begin(), s.end(), e), end =
std::sregex_iterator();
 it != end; ++it) {
std::cout << i++ << ':' << std::endl;
print("prefix", s, it->prefix());
print("match ", s, (*it)[0]);
std::cout << std::endl;
}
}
=

= output =
0:
  prefix: unmatched, length() = 0, str() = '', pair = (0, 0), ''
  match : matched  , length() = 0, str() = '', pair = (0, 0), ''

1:
  prefix: unmatched, length() = 0, str() = '', pair = (0, 1), 'a'
  match : matched  , length() = 0, str() = '', pair = (1, 1), ''

2:
  prefix: unmatched, length() = 0, str() = '', pair = (1, 2), 'b'
  match : matched  , length() = 0, str() = '', pair = (2, 2), ''
==

cf. http://melpon.org/wandbox/permlink/JSkP6tl2QWFxmOEv


According to C++11 standard 28.11.3[re.alg.search]/p.3 Table 143,
prefix().matched should be true
if prefix().first != prefix().second.

(prefix().first is correct, because 28.12.1.4[re.regiter.incr]/p.5 says
"match.prefix().first
shall be equal to the previous value of match[0].second".)

So, I think that the output should be 

= output =
0:
  prefix: unmatched, length() = 0, str() = '', pair = (0, 0), ''
  match : matched  , length() = 0, str() = '', pair = (0, 0), ''

1:
  prefix: matched  , length() = 1, str() = 'a', pair = (0, 1), 'a'
  match : matched  , length() = 0, str() = '', pair = (1, 1), ''

2:
  prefix: matched  , length() = 1, str() = 'b', pair = (1, 2), 'b'
  match : matched  , length() = 0, str() = '', pair = (2, 2), ''
==


[Bug ipa/64139] [5 Regression] ice in possible_polymorphic_call_targets, at ipa-devirt.c:2410

2014-12-01 Thread hjl.tools at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64139

H.J. Lu  changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2014-12-01
 CC||mjambor at suse dot cz
  Component|c++ |ipa
   Target Milestone|--- |5.0
Summary|ice in  |[5 Regression] ice in
   |possible_polymorphic_call_t |possible_polymorphic_call_t
   |argets, at  |argets, at
   |ipa-devirt.c:2410   |ipa-devirt.c:2410
 Ever confirmed|0   |1

--- Comment #1 from H.J. Lu  ---
It was caused by r217587.


[Bug jit/63854] Fix memory leaks seen in JIT

2014-12-01 Thread dmalcolm at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63854

--- Comment #24 from dmalcolm at gcc dot gnu.org ---
Author: dmalcolm
Date: Mon Dec  1 17:40:03 2014
New Revision: 218234

URL: https://gcc.gnu.org/viewcvs?rev=218234&root=gcc&view=rev
Log:
PR jit/63854: Fix leaks in toyvm.c

gcc/jit/ChangeLog:
PR jit/63854
* docs/examples/tut04-toyvm/toyvm.c
(toyvm_compiled_function): New typedef.
(toyvm_compiled_func) Rename to...
(toyvm_compiled_code) ...this.
(struct toyvm_compiled_function): New struct.
(toyvm_function_compile): Return a toyvm_compiled_function *
rather than a toyvm_compiled_func, so that the caller can fully
clean things up.  Free "funcname".
(test_script): Update for change to toyvm_function_compile.
Clean up the toyvm_compiled_function.
(main): Likewise.
(docs/intro/tutorial04.rst): Update to reflect the above changes,
and to better spell out the lifetime of the compiled code.


Modified:
trunk/gcc/jit/ChangeLog
trunk/gcc/jit/docs/examples/tut04-toyvm/toyvm.c
trunk/gcc/jit/docs/intro/tutorial04.rst


  1   2   >