[Bug tree-optimization/56488] [4.7 Regression] wrong code for loop at -O3

2013-03-01 Thread jakub at gcc dot gnu.org


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



Jakub Jelinek jakub at gcc dot gnu.org changed:



   What|Removed |Added



 Status|UNCONFIRMED |NEW

   Last reconfirmed||2013-03-01

 CC||jakub at gcc dot gnu.org

   Target Milestone|--- |4.7.3

Summary|wrong code for loop at -O3  |[4.7 Regression] wrong code

   ||for loop at -O3

 Ever Confirmed|0   |1



--- Comment #2 from Jakub Jelinek jakub at gcc dot gnu.org 2013-03-01 
07:59:16 UTC ---

Seems to have started with

http://gcc.gnu.org/viewcvs?root=gccview=revrev=181172

and fixed by http://gcc.gnu.org/viewcvs?root=gccview=revrev=190614



Slightly cleaned up testcase:

int a, c, d = 1;

struct S { int s; } b, f;

short e;



void

foo (int x)

{

  int g[] = { };

  for (e = 0; e != 1; e = e + 5)

{

  int *h[1] = { g[0] };

  if (!x)

return;

  f = b;

}

}



int

main ()

{

  int i, j;

  for (i = 0; i  6; i++)

for (j = 8; j; j--)

  a = 0;

  foo (d);

  while (c)

;

  return 0;

}


[Bug target/56484] [4.8 Regression] ICE in assign_by_spills, at lra-assigns.c:1268

2013-03-01 Thread jakub at gcc dot gnu.org


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



Jakub Jelinek jakub at gcc dot gnu.org changed:



   What|Removed |Added



 Status|UNCONFIRMED |NEW

   Last reconfirmed||2013-03-01

 CC||jakub at gcc dot gnu.org,

   ||uros at gcc dot gnu.org

   Target Milestone|--- |4.8.0

Summary|ICE in assign_by_spills, at |[4.8 Regression] ICE in

   |lra-assigns.c:1268  |assign_by_spills, at

   ||lra-assigns.c:1268

 Ever Confirmed|0   |1



--- Comment #4 from Jakub Jelinek jakub at gcc dot gnu.org 2013-03-01 
08:30:31 UTC ---

Started with http://gcc.gnu.org/viewcvs?root=gccview=revrev=188526

but it was merely latent before that, so it isn't LRA bug, because it fails

with reload equally.

I think the problem is in combine, where we have:

ax = call ...

flags = r59 != 0

r60 = flags = 0 ? ax : r59

r65 = buf

r68 = 768

rep stosd [r65 .. r65 + r68 - 4] = 0

r59 = r60



and the combiner combines the r60 = flags = 0 ? ax : r59 instruction with

r59 = r60 into r59 = flags = 0 ? ax : r59 instruction in the last spot, thus

extending the lifetime of the ax and flags hard registers across various other

instructions.


[Bug target/56484] [4.8 Regression] ICE in assign_by_spills, at lra-assigns.c:1268

2013-03-01 Thread venkataramanan.kumar at amd dot com


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



--- Comment #5 from Venkataramanan venkataramanan.kumar at amd dot com 
2013-03-01 08:42:42 UTC ---

-fno-tree-coalesce-vars for workarround


[Bug fortran/56490] New: [4.6/4.7 Regression] -Wall triggering infinite loop

2013-03-01 Thread o.fle...@science-computing.de


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



 Bug #: 56490

   Summary: [4.6/4.7 Regression] -Wall triggering infinite loop

Classification: Unclassified

   Product: gcc

   Version: 4.7.2

Status: UNCONFIRMED

  Severity: normal

  Priority: P3

 Component: fortran

AssignedTo: unassig...@gcc.gnu.org

ReportedBy: o.fle...@science-computing.de





Created attachment 29559

  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=29559

Testcase: Loops forever with -O2 -Wall



Compiling testcase, gfortran seems to loop forever.



gfortran -c -O -Wall testcase.f 



leaving out -Wall seems to compile o.k.





Have to problem on several independent gcc distros: This one for instance:



COLLECT_GCC=/usr/local/gcc-4.6.3/bin/gcc

COLLECT_LTO_WRAPPER=/usr/local/gcc-4.6.3/libexec/gcc/x86_64-unknown-linux-gnu/4.6.3/lto-wrapper

Ziel: x86_64-unknown-linux-gnu

Konfiguriert mit: /soft/os/gcc/gcc-4.6.3/gcc-4.6.3/configure

--srcdir=/soft/os/gcc/gcc-4.6.3/gcc-4.6.3 --prefix=/usr/local/gcc-4.6.3

--with-included-gettext --enable-__cxa_atexit --enable-threads --enable-shared

--enable-languages=c,c++,fortran --enable-libgcj --enable-ssp --disable-libssp

--with-gmp-include=/usr/local/devel/gmp/5.0.1-static/include

--with-gmp-lib=/usr/local/devel/gmp/5.0.1-static/lib64

--with-mpfr-include=/usr/local/devel/mpfr/2.4.2-static/include

--with-mpfr-lib=/usr/local/devel/mpfr/2.4.2-static/lib64

--with-mpc-include=/usr/local/devel/mpc/0.8.1-static/include

--with-mpc-lib=/usr/local/devel/mpc/0.8.1-static/lib64

Thread-Modell: posix

gcc-Version 4.6.3 (GCC)


[Bug c++/56489] [C++11] Member type lookup fails on dependent using-declarations

2013-03-01 Thread paolo.carlini at oracle dot com


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



Paolo Carlini paolo.carlini at oracle dot com changed:



   What|Removed |Added



 Status|UNCONFIRMED |RESOLVED

 Resolution||WORKSFORME



--- Comment #1 from Paolo Carlini paolo.carlini at oracle dot com 2013-03-01 
09:30:17 UTC ---

This is already fixed in mainline and isn't a regression.


[Bug c++/55135] [4.8 Regression] Segfault of gcc on a big file

2013-03-01 Thread paolo.carlini at oracle dot com


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



--- Comment #14 from Paolo Carlini paolo.carlini at oracle dot com 2013-03-01 
09:35:41 UTC ---

Thanks Steven for analyzing / fixing this.


[Bug tree-optimization/56488] [4.7 Regression] wrong code for loop at -O3

2013-03-01 Thread glisse at gcc dot gnu.org


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



--- Comment #3 from Marc Glisse glisse at gcc dot gnu.org 2013-03-01 09:53:20 
UTC ---

Seems to me that 'e' is signed and the testcase relies on wrapping overflow

(-fwrapv helps).


[Bug fortran/56491] New: [OOP] Memory leak with vtab's type-bound-procedures

2013-03-01 Thread burnus at gcc dot gnu.org


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



 Bug #: 56491

   Summary: [OOP] Memory leak with vtab's type-bound-procedures

Classification: Unclassified

   Product: gcc

   Version: 4.8.0

Status: UNCONFIRMED

  Severity: normal

  Priority: P3

 Component: fortran

AssignedTo: unassig...@gcc.gnu.org

ReportedBy: bur...@gcc.gnu.org

CC: ja...@gcc.gnu.org





gfc_find_derived_vtab (gfc_symbol *derived)

...

  if (gfc_add_component (vtype, _copy, c) == FAILURE)

goto cleanup;

  c-attr.proc_pointer = 1;

  c-attr.access = ACCESS_PRIVATE;

  c-tb = XCNEW (gfc_typebound_proc);



The c-tb leaks memory; similarly for gfc_find_intrinsic_vtab.





Example:



class(*), allocatable :: A

allocate(integer :: a)

select type(a)

type is (integer)

  a= 5

  print *, a

end select

end





Looking at source.c, free_components does not handle TBP. Those are only freed

via gfc_free_namespace:

  free_tb_tree (ns-tb_sym_root);

  free_tb_tree (ns-tb_uop_root);

but vtab's tb do not end up in those symtrees.


[Bug tree-optimization/56488] [4.7 Regression] wrong code for loop at -O3

2013-03-01 Thread jakub at gcc dot gnu.org


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



--- Comment #4 from Jakub Jelinek jakub at gcc dot gnu.org 2013-03-01 
09:59:39 UTC ---

But e = e + 5 is avaluated as

e = (short) ((int) e + 5)

and thus I think it just falls down to implementation defined behavior

(assuming short is smaller than int of course), because no overflow happens in

the int type in which the addition is computed, and there is just cast of a

larger int value to smaller short type.


[Bug tree-optimization/56488] [4.7 Regression] wrong code for loop at -O3

2013-03-01 Thread glisse at gcc dot gnu.org


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



--- Comment #5 from Marc Glisse glisse at gcc dot gnu.org 2013-03-01 10:05:53 
UTC ---

You are right, of course. I remembered that gcc defined unsigned-signed

conversion, but I had forgotten that it defined all narrowing conversions as

well, sorry.


[Bug tree-optimization/56486] [4.6/4.7 Regression] infinite loop in cc1 at -O1 and above

2013-03-01 Thread jakub at gcc dot gnu.org


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



Jakub Jelinek jakub at gcc dot gnu.org changed:



   What|Removed |Added



 Status|UNCONFIRMED |NEW

   Last reconfirmed||2013-03-01

 CC||jakub at gcc dot gnu.org

   Target Milestone|--- |4.6.4

Summary|infinite loop in cc1 at -O1 |[4.6/4.7 Regression]

   |and above   |infinite loop in cc1 at -O1

   ||and above

 Ever Confirmed|0   |1



--- Comment #2 from Jakub Jelinek jakub at gcc dot gnu.org 2013-03-01 
10:10:09 UTC ---

Fixed on trunk by http://gcc.gnu.org/viewcvs?root=gccview=revrev=187053

which made gsi_for_stmt O(1).

Random interruption in gdb shows that most time is spent in

#0  0x008bddd5 in gsi_next (i=0x7fffdb90) at

../../gcc/gimple.h:4945

#1  0x008bf07a in gsi_for_stmt (stmt=0x71393b00) at

../../gcc/gimple-iterator.c:560

#2  0x00cfe4dc in remove_visited_stmt_chain (var=0x71394e10) at

../../gcc/tree-ssa-reassoc.c:2228

#3  0x00cfeb5b in rewrite_expr_tree (stmt=0x71393c60, opindex=0,

ops=0x3505a80, moved=0 '\000') at ../../gcc/tree-ssa-reassoc.c:2383

#4  0x00d02614 in reassociate_bb (bb=0x71580750) at

../../gcc/tree-ssa-reassoc.c:3607

#5  0x00d02691 in reassociate_bb (bb=0x715806e8) at

../../gcc/tree-ssa-reassoc.c:3617

#6  0x00d0277f in do_reassoc () at ../../gcc/tree-ssa-reassoc.c:3650

#7  0x00d02b57 in execute_reassoc () at

../../gcc/tree-ssa-reassoc.c:3742



or similar.  Guess for 4.7 and 4.6 perhaps remove_visited_stmt_chain should

before trying gsi_for_stmt test whether gsi from previous iteration isn't

in the same bb as the stmt we'd call gsi_for_stmt on, and if yes, walk from

that gsi backwards manually instead of calling gsi_for_stmt (because, the

definitions generally should be before the uses).  That would make

remove_visited_stmt_chain linear complexity instead of quadratic.


[Bug libstdc++/56475] Incorrect result of configure test for /dev/random (_GLIBCXX_USE_RANDOM_TR1) for MinGW platform (and others?)

2013-03-01 Thread ktietz at gcc dot gnu.org


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



--- Comment #8 from Kai Tietz ktietz at gcc dot gnu.org 2013-03-01 10:23:28 
UTC ---

Author: ktietz

Date: Fri Mar  1 10:23:21 2013

New Revision: 196371



URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=196371

Log:

PR libstdc++/56475

* acinclude.m4 (GLIBCXX_CHECK_RANDOM_TR1): Disable check for

mingw-targets.

* configure: Regenerated.





Modified:

trunk/libstdc++-v3/acinclude.m4

trunk/libstdc++-v3/configure


[Bug libstdc++/56475] Incorrect result of configure test for /dev/random (_GLIBCXX_USE_RANDOM_TR1) for MinGW platform (and others?)

2013-03-01 Thread ktietz at gcc dot gnu.org


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



Kai Tietz ktietz at gcc dot gnu.org changed:



   What|Removed |Added



 Status|UNCONFIRMED |RESOLVED

 Resolution||FIXED



--- Comment #9 from Kai Tietz ktietz at gcc dot gnu.org 2013-03-01 10:27:05 
UTC ---

Fixed on trunk.


[Bug tree-optimization/56294] BOOT_CFLAGS='-O2 -g -fno-ipa-sra' leads to bootstrap comparison failure

2013-03-01 Thread rguenth at gcc dot gnu.org


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



--- Comment #13 from Richard Biener rguenth at gcc dot gnu.org 2013-03-01 
10:27:50 UTC ---

A guess is that you end up creating SSA names during code transform in

different

order - which can result from walking a hashtable to do things (which might

be in different order when it doesn't have the same number of entries).



Note that if you process debug stmts _at all_ (thus end up creating new SSA

names because of them) then this will break as well.


[Bug tree-optimization/56294] BOOT_CFLAGS='-O2 -g -fno-ipa-sra' leads to bootstrap comparison failure

2013-03-01 Thread jakub at gcc dot gnu.org


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



--- Comment #14 from Jakub Jelinek jakub at gcc dot gnu.org 2013-03-01 
10:32:34 UTC ---

No SSA_NAMEs should be created because of debug stmts.

SSA_NAME_VERSION must be identical in between -fvar-tracking-assignments and

-fno-var-tracking-assignments, DECL_UIDs might differ, but sorted by DECL_UID

the decls must be same if you only consider decls seen with

-fno-var-tracking-assignments.


[Bug c++/55135] [4.8 Regression] Segfault of gcc on a big file

2013-03-01 Thread rguenth at gcc dot gnu.org


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



Richard Biener rguenth at gcc dot gnu.org changed:



   What|Removed |Added



 CC||rguenth at gcc dot gnu.org

 Blocks||47344

   Target Milestone|--- |4.8.0


[Bug libstdc++/56492] New: std::packaged_task requires CopyConstructible stored task

2013-03-01 Thread redi at gcc dot gnu.org


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



 Bug #: 56492

   Summary: std::packaged_task requires CopyConstructible stored

task

Classification: Unclassified

   Product: gcc

   Version: 4.8.0

Status: UNCONFIRMED

  Keywords: rejects-valid

  Severity: normal

  Priority: P3

 Component: libstdc++

AssignedTo: unassig...@gcc.gnu.org

ReportedBy: r...@gcc.gnu.org





This is rejected because std::packaged_task uses std::function internally and

std::function requires a CopyConstructible target object:



#include future



struct S

{

  S() = default;

  S(S) = default;

  void operator()() { }

};



std::packaged_taskvoid () pt{ S{} };





It's not necessary to use std::function, the _Task_state type could hold the

stored task directly, which would allow it to be move constructed.


[Bug c++/55135] [4.8 Regression] Segfault of gcc on a big file

2013-03-01 Thread rguenth at gcc dot gnu.org


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



--- Comment #15 from Richard Biener rguenth at gcc dot gnu.org 2013-03-01 
10:44:10 UTC ---

(In reply to comment #10)

 Created attachment 29557 [details]

 Collected hacks to make the test case compile in reasonable time with -O0

 

 Patch does 2 things:

 

 - Queue up to-be-removed EH regions, instead of removing them one-by-one.

   Removing them one at a time results in walking the list of EH regions

   repeatedly, thus taking O(# of EH regions ** 2) time.



This (properly cleaned up) looks reasonable to me.



 - Rewrite init_subregs_of_mode and subroutines to first collect the

   invalid mode change subregs in sbitmaps, and then converting the final

   sbitmap to a bitmap. This trades memory for time: the bitmap lookups are

   also potentially O(# of registers ** 2) and this test case has more than

   one million registers, many of them with invalid mode changes (to be fixed

   up by IRA/LRA).



Hmm - this is because we hit the O(n) complexity we have on our bitmap

implementation?  Can't we improve init_subregs_of_mode by first collecting

all mode changes we see for a pseudo (eventually using DF info?) and

then do the processing in some more optimal order?



Trading memory O(number of pseudos) with a large constant factor sounds

like something waiting for trouble for other testcases ...



 Peak memory at -O0 is 4GB. Compile time on a Quad-Core AMD Opteron(tm)

 Processor 8354 at 2200MHz is 240s, half of it still taken up by IRA+LRA.

 

 At -O1 the einline pass is consuming almost all compile time again.

 - Honza: Can we please have a proper permanent fix for this recurring

 problem? What's there now just Does Not Work!


[Bug libstdc++/56492] std::packaged_task requires CopyConstructible stored task

2013-03-01 Thread redi at gcc dot gnu.org


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



Jonathan Wakely redi at gcc dot gnu.org changed:



   What|Removed |Added



 Status|UNCONFIRMED |ASSIGNED

   Last reconfirmed||2013-03-01

 AssignedTo|unassigned at gcc dot   |redi at gcc dot gnu.org

   |gnu.org |

 Ever Confirmed|0   |1



--- Comment #1 from Jonathan Wakely redi at gcc dot gnu.org 2013-03-01 
10:45:01 UTC ---

mine


[Bug tree-optimization/56486] [4.6/4.7 Regression] infinite loop in cc1 at -O1 and above

2013-03-01 Thread rguenth at gcc dot gnu.org


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



Richard Biener rguenth at gcc dot gnu.org changed:



   What|Removed |Added



   Keywords||compile-time-hog

  Known to work||4.8.0



--- Comment #3 from Richard Biener rguenth at gcc dot gnu.org 2013-03-01 
10:45:45 UTC ---

I suppose hangs == just takes very long.


[Bug middle-end/56483] LTO issue with expanding GIMPLE_COND

2013-03-01 Thread rguenth at gcc dot gnu.org


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



Richard Biener rguenth at gcc dot gnu.org changed:



   What|Removed |Added



 Status|UNCONFIRMED |ASSIGNED

   Keywords||lto, missed-optimization

   Last reconfirmed||2013-03-01

  Component|lto |middle-end

 AssignedTo|unassigned at gcc dot   |rguenth at gcc dot gnu.org

   |gnu.org |

 Ever Confirmed|0   |1



--- Comment #2 from Richard Biener rguenth at gcc dot gnu.org 2013-03-01 
11:00:18 UTC ---

gimple_cond_single_var_p should be inlined at its single caller, it isn't

any good abstraction.



integer_zerop isn't a good enough test for what the single caller tries to

assert as far as I can see.  You'd need to test whether it's precision

is 1 as well (or whether it's BOOLEAN_TYPE).



The IR reader cannot be fixed (the middle-end shouldn't use

frontend boolean_*_node) - frontends have different representation for their

boolean_{true,false,type}_nodes.



Well.  Confirmed and mine.


[Bug middle-end/56483] LTO issue with expanding GIMPLE_COND

2013-03-01 Thread rguenth at gcc dot gnu.org


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



--- Comment #3 from Richard Biener rguenth at gcc dot gnu.org 2013-03-01 
11:03:24 UTC ---

Created attachment 29560

  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=29560

patch



Patch, queued for 4.9.


[Bug c++/55788] inlining failed in call to always_inline: mismatched arguments

2013-03-01 Thread rguenth at gcc dot gnu.org


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



Richard Biener rguenth at gcc dot gnu.org changed:



   What|Removed |Added



 Status|NEW |RESOLVED

 Resolution||DUPLICATE



--- Comment #4 from Richard Biener rguenth at gcc dot gnu.org 2013-03-01 
11:08:02 UTC ---

Yes, looks safe to backport, and indeed a dup.



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


[Bug middle-end/52888] Unable to inline function pointer call with inexact signature match

2013-03-01 Thread rguenth at gcc dot gnu.org


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



Richard Biener rguenth at gcc dot gnu.org changed:



   What|Removed |Added



 CC||geza at bitquad dot com



--- Comment #4 from Richard Biener rguenth at gcc dot gnu.org 2013-03-01 
11:08:02 UTC ---

*** Bug 55788 has been marked as a duplicate of this bug. ***


[Bug tree-optimization/56424] [4.8 Regression] ICE at tree-inline.c:2833 on a-nllcef.ads at -O2

2013-03-01 Thread ebotcazou at gcc dot gnu.org


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



Eric Botcazou ebotcazou at gcc dot gnu.org changed:



   What|Removed |Added



  Component|bootstrap   |tree-optimization



--- Comment #4 from Eric Botcazou ebotcazou at gcc dot gnu.org 2013-03-01 
11:14:51 UTC ---

Recategorizing.


[Bug ada/56474] [4.8 regression] bogus Storage_Error raised for record containing empty zero-based array

2013-03-01 Thread rguenth at gcc dot gnu.org


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



Richard Biener rguenth at gcc dot gnu.org changed:



   What|Removed |Added



 CC||rguenth at gcc dot gnu.org



--- Comment #3 from Richard Biener rguenth at gcc dot gnu.org 2013-03-01 
11:26:59 UTC ---

Probably caused by my sizetype changes.  For frontends that support arbitrary

array domains the only good reliable way out is to support and use both

signed and unsigned TYPE_DOMAINs.


[Bug tree-optimization/49234] [4.5/4.6/4.7/4.8 Regression] -Wstrict-overflow gives obviously unwarranted warning

2013-03-01 Thread rguenth at gcc dot gnu.org


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



Richard Biener rguenth at gcc dot gnu.org changed:



   What|Removed |Added



 CC||iant at google dot com



--- Comment #10 from Richard Biener rguenth at gcc dot gnu.org 2013-03-01 
11:45:54 UTC ---

(In reply to comment #9)

 (In reply to comment #3)

  We hit:

  163724rguenth   /* Similarly, if the new maximum is smaller or 
  larger

  than

  163724rguenththe previous one, go all the way to +INF.  */

  163724rguenth   if (cmp_max  0 || cmp_max  0)

  163724rguenth   {

  163724rguenth if (!needs_overflow_infinity (TREE_TYPE

  (vr_result.max))

  163724rguenth || !vrp_var_may_overflow (lhs, phi))

  163724rguenth   vr_result.max = TYPE_MAX_VALUE (TREE_TYPE

  (vr_result.max));

  163724rguenth else if (supports_overflow_infinity (TREE_TYPE

  (vr_result.max)))

  163724rguenth   vr_result.max =

  163724rguenth   positive_overflow_infinity (TREE_TYPE

  (vr_result.max));

  163724rguenth   }

  

 

 (In reply to comment #8)

  

  Does this seem like an approach worth exploring (this silences the 
  warning), or

  does anyone have a better suggestion?

 

 Isn't the problem that vrp_var_may_overflow returns true even though 'state'

 cannot overflow? Jakub says:

 

  As the IV (i) might overflow, vrp_var_may_overflow returns true.

  In particular, chrec is SCEV_NOT_KNOWN.  Thus it just in case sets

  vr_result.max to +INF(OVF) and later on we warn about it.

  Before hitting this code, vr_result contains the right range [0, 2], but it

  doesn't know it can safely use that.

 

 Couldn't be possible to detect this by the fact that 'state' does not depend 
 on

 anything variable?

 

 Also, in such a case, the algorithm cannot iterate more than the number of phi

 nodes in the loop (if I understand the VRP correctly, which I most likely

 don't).

 

 But I looked around and I honestly don't know how to implement this idea.

 

 In any case, your patch would need to adjust the code for the minimum also, 
 no?

 Because the same behaviour can be triggered just by using negative numbers to

 trigger a negative overflow infinity.



I think we should simply not set overflow on this code path in any case.  We

have (OVF) just for the sake of -Wstrict-overflow warnings which in VRP are

implemeted in the worst possible way.



The issue with iterating is that you either can re-create the issue

with a different testcase or you blow up compile-time.



When somebody wants to improve VRP for SSA cycles then the way to go is

to compute the SSA SCC, classify it (in this case we only have assigns

from constants, not increments or decrements) and choose a solving

strathegy.



Oh, and of course strict-overflow warnings are all Ians fault ;)


[Bug tree-optimization/56488] [4.7 Regression] wrong code for loop at -O3

2013-03-01 Thread rguenth at gcc dot gnu.org


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



Richard Biener rguenth at gcc dot gnu.org changed:



   What|Removed |Added



   Keywords||wrong-code

 CC||rguenth at gcc dot gnu.org



--- Comment #6 from Richard Biener rguenth at gcc dot gnu.org 2013-03-01 
12:20:21 UTC ---

The fixing rev. doesn't make much sense ;)  The issue must be still latent.



 But e = e + 5 is avaluated as

 e = (short) ((int) e + 5)



not true before VRP2:



  short int e.2;

  short int e.4;



...



bb 3:

  # e.2_4 = PHI e.4_18(3), 0(2)

  f = b;

  D.1777_45 = e.2_4 + 5;

  e.4_18 = D.1777_45;

  e = e.4_18;

  if (e.4_18 != 1)

goto bb 3;

  else

goto bb 4;



which turns it into an endless loop.  The FE shortened to



  e = (short int) ((short unsigned int) e + 5);



but IVOPTs makes it short.  There was a related bugfix by Zdenek for 4.8.


[Bug tree-optimization/56488] [4.7 Regression] wrong code for loop at -O3

2013-03-01 Thread rguenth at gcc dot gnu.org


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



Richard Biener rguenth at gcc dot gnu.org changed:



   What|Removed |Added



 Status|NEW |RESOLVED

 Resolution||DUPLICATE



--- Comment #7 from Richard Biener rguenth at gcc dot gnu.org 2013-03-01 
12:23:57 UTC ---

PR55481, backporting that fixes it.



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


[Bug middle-end/55481] [4.8 regression] -O2 generates a wrong-code infinite loop in C++Benchmark's simple_types_constant_folding int8 xor test

2013-03-01 Thread rguenth at gcc dot gnu.org


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



Richard Biener rguenth at gcc dot gnu.org changed:



   What|Removed |Added



 CC||dhazeghi at yahoo dot com



--- Comment #19 from Richard Biener rguenth at gcc dot gnu.org 2013-03-01 
12:23:57 UTC ---

*** Bug 56488 has been marked as a duplicate of this bug. ***


[Bug middle-end/55481] [4.8 regression] -O2 generates a wrong-code infinite loop in C++Benchmark's simple_types_constant_folding int8 xor test

2013-03-01 Thread rguenth at gcc dot gnu.org


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



--- Comment #20 from Richard Biener rguenth at gcc dot gnu.org 2013-03-01 
12:29:46 UTC ---

Author: rguenth

Date: Fri Mar  1 12:29:39 2013

New Revision: 196377



URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=196377

Log:

2013-03-01  Richard Biener  rguent...@suse.de



PR tree-optimization/55481

* gcc.dg/torture/pr56488.c: New testcase.



Added:

trunk/gcc/testsuite/gcc.dg/torture/pr56488.c

Modified:

trunk/gcc/testsuite/ChangeLog


[Bug middle-end/52888] Unable to inline function pointer call with inexact signature match

2013-03-01 Thread rguenth at gcc dot gnu.org


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



--- Comment #5 from Richard Biener rguenth at gcc dot gnu.org 2013-03-01 
12:46:17 UTC ---

Author: rguenth

Date: Fri Mar  1 12:46:12 2013

New Revision: 196378



URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=196378

Log:

2013-03-01  Richard Biener  rguent...@suse.de



Backport from mainline

2012-04-10  Richard Guenther  rguent...@suse.de



PR middle-end/52888

* gimple-low.c (gimple_check_call_args): Properly account for

compatible aggregate types.



Modified:

branches/gcc-4_7-branch/gcc/ChangeLog

branches/gcc-4_7-branch/gcc/gimple-low.c


[Bug middle-end/52888] Unable to inline function pointer call with inexact signature match

2013-03-01 Thread rguenth at gcc dot gnu.org


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



Richard Biener rguenth at gcc dot gnu.org changed:



   What|Removed |Added



  Known to work||4.7.3, 4.8.0

   Target Milestone|4.8.0   |4.7.3

  Known to fail||4.7.2



--- Comment #6 from Richard Biener rguenth at gcc dot gnu.org 2013-03-01 
13:09:58 UTC ---

Fixed for 4.7.3, too.


[Bug c++/56493] New: Performance regression in google dense hashmap

2013-03-01 Thread andrewjcg at gmail dot com


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



 Bug #: 56493

   Summary: Performance regression in google dense hashmap

Classification: Unclassified

   Product: gcc

   Version: 4.7.1

Status: UNCONFIRMED

  Severity: normal

  Priority: P3

 Component: c++

AssignedTo: unassig...@gcc.gnu.org

ReportedBy: andrew...@gmail.com





When compared to gcc-4.6.2, gcc-4.7.1 shows about a 10-20% performance

regression when inserting into a google dense hashmap in a tight loop.  A small

sample program is attached and was compiled with '-O3' and on a linux x86_64

box (using -std=gnu++0x, as required by sparsehash).  Potentially related, the

generated binary under gcc-4.7 is also over 50% bigger.


[Bug c++/56493] Performance regression in google dense hashmap

2013-03-01 Thread andrewjcg at gmail dot com


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



--- Comment #1 from Andrew Gallagher andrewjcg at gmail dot com 2013-03-01 
13:11:30 UTC ---

Created attachment 29561

  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=29561

Sample program using dense hashmap


[Bug c++/56493] Performance regression in google dense hashmap

2013-03-01 Thread andrewjcg at gmail dot com


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



--- Comment #2 from Andrew Gallagher andrewjcg at gmail dot com 2013-03-01 
13:12:41 UTC ---

I also see this same perf regression on trunk (as of r195725).


[Bug libstdc++/56475] Incorrect result of configure test for /dev/random (_GLIBCXX_USE_RANDOM_TR1) for MinGW platform (and others?)

2013-03-01 Thread paolo.carlini at oracle dot com


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



Paolo Carlini paolo.carlini at oracle dot com changed:



   What|Removed |Added



   Target Milestone|--- |4.8.0


[Bug libstdc++/56475] Incorrect result of configure test for /dev/random (_GLIBCXX_USE_RANDOM_TR1) for MinGW platform (and others?)

2013-03-01 Thread k2k at narod dot ru


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



--- Comment #10 from Karlson2k k2k at narod dot ru 2013-03-01 13:29:40 UTC ---

Could you fix 4.7 branch too?


[Bug middle-end/55481] [4.8 regression] -O2 generates a wrong-code infinite loop in C++Benchmark's simple_types_constant_folding int8 xor test

2013-03-01 Thread rguenth at gcc dot gnu.org


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



Richard Biener rguenth at gcc dot gnu.org changed:



   What|Removed |Added



   Target Milestone|4.8.0   |4.7.3



--- Comment #21 from Richard Biener rguenth at gcc dot gnu.org 2013-03-01 
13:55:15 UTC ---

Fixed for 4.7.3 as well.


[Bug middle-end/55481] [4.8 regression] -O2 generates a wrong-code infinite loop in C++Benchmark's simple_types_constant_folding int8 xor test

2013-03-01 Thread rguenth at gcc dot gnu.org


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



Richard Biener rguenth at gcc dot gnu.org changed:



   What|Removed |Added



   Target Milestone|4.8.0   |4.7.3



--- Comment #21 from Richard Biener rguenth at gcc dot gnu.org 2013-03-01 
13:55:15 UTC ---

Fixed for 4.7.3 as well.



--- Comment #22 from Richard Biener rguenth at gcc dot gnu.org 2013-03-01 
13:55:19 UTC ---

Author: rguenth

Date: Fri Mar  1 13:55:11 2013

New Revision: 196379



URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=196379

Log:

2013-03-01  Richard Biener  rguent...@suse.de



Backport from mainline

2012-12-12  Zdenek Dvorak  o...@ucw.cz



PR tree-optimization/55481

* tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Fall

back to general rewriting if we cannot leave an original biv

definition alone.



* gcc.dg/torture/pr55481.c: New testcase.

* gcc.dg/torture/pr56488.c: Likewise.



Added:

branches/gcc-4_7-branch/gcc/testsuite/gcc.dg/torture/pr55481.c

branches/gcc-4_7-branch/gcc/testsuite/gcc.dg/torture/pr56488.c

Modified:

branches/gcc-4_7-branch/gcc/ChangeLog

branches/gcc-4_7-branch/gcc/testsuite/ChangeLog

branches/gcc-4_7-branch/gcc/tree-ssa-loop-ivopts.c


[Bug tree-optimization/56494] New: ICE in simplify_truncation, at simplify-rtx.c:619

2013-03-01 Thread antoine.balestrat at gmail dot com

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

 Bug #: 56494
   Summary: ICE in simplify_truncation, at simplify-rtx.c:619
Classification: Unclassified
   Product: gcc
   Version: 4.8.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: tree-optimization
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: antoine.balest...@gmail.com


With GCC 4.8.0 as of 20130301 :

$ cat trunc.c
char a;
short b;

void f(void)
{
g((!!b ? : (a *= a / 0)) = (a = b));
}

$ xgcc -w -O2 -ftracer trunc.c
trunc.c: In function ‘f’:
trunc.c:7:1: internal compiler error: in simplify_truncation, at
simplify-rtx.c:619
 }
 ^
0x8db526 simplify_truncation
../../srcdir/gcc/simplify-rtx.c:619
0x8dc6fa simplify_unary_operation_1
../../srcdir/gcc/simplify-rtx.c:1046
0x8dc6fa simplify_unary_operation(rtx_code, machine_mode, rtx_def*,
machine_mode)
../../srcdir/gcc/simplify-rtx.c:786
0x8de2ef simplify_gen_unary(rtx_code, machine_mode, rtx_def*, machine_mode)
../../srcdir/gcc/simplify-rtx.c:369
0x8dc6fa simplify_unary_operation_1
../../srcdir/gcc/simplify-rtx.c:1046
0x8dc6fa simplify_unary_operation(rtx_code, machine_mode, rtx_def*,
machine_mode)
../../srcdir/gcc/simplify-rtx.c:786
0x8de2ef simplify_gen_unary(rtx_code, machine_mode, rtx_def*, machine_mode)
../../srcdir/gcc/simplify-rtx.c:369
0x8db057 simplify_truncation
../../srcdir/gcc/simplify-rtx.c:648
0x8dbc2d simplify_gen_subreg(machine_mode, rtx_def*, machine_mode, unsigned
int)
../../srcdir/gcc/simplify-rtx.c:5942
0xce9dce gen_lowpart_for_combine
../../srcdir/gcc/combine.c:10732
0xcef08e expand_compound_operation
../../srcdir/gcc/combine.c:6808
0xcf481f simplify_comparison
../../srcdir/gcc/combine.c:11168
0xcf754e combine_simplify_rtx
../../srcdir/gcc/combine.c:5665
0xcf972a subst
../../srcdir/gcc/combine.c:5155
0xcf93da subst
../../srcdir/gcc/combine.c:5100
0xcfa92f try_combine
../../srcdir/gcc/combine.c:3146
0xcff76c combine_instructions
../../srcdir/gcc/combine.c:1368
0xcff76c rest_of_handle_combine
../../srcdir/gcc/combine.c:13793
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See http://gcc.gnu.org/bugs.html for instructions.


[Bug ada/56474] [4.8 regression] bogus Storage_Error raised for record containing empty zero-based array

2013-03-01 Thread ebotcazou at gcc dot gnu.org


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



--- Comment #4 from Eric Botcazou ebotcazou at gcc dot gnu.org 2013-03-01 
14:25:56 UTC ---

This happens because 0 - 1 overflows in sizetype:



#6  0x00ac3e3d in size_binop_loc (loc=0, code=MINUS_EXPR, 

arg0=0x76d65d60, arg1=0x76d65f00)

at /home/eric/svn/gcc/gcc/fold-const.c:1417

1417  return int_const_binop_1 (code, arg0, arg1, -1);

(gdb) p debug_tree(arg0)

 integer_cst 0x76d65d60 type integer_type 0x76d710a8 sizetype

constant visited 0

$28 = void

(gdb) p debug_tree(arg1)

 integer_cst 0x76d65f00 type integer_type 0x76d710a8 sizetype

constant visited 1

$29 = void

(gdb) frame 4

#4  0x00f28804 in force_fit_type_double (type=0x76d710a8, cst=..., 

overflowable=-1, overflowed=false) at /home/eric/svn/gcc/gcc/tree.c:1109

1109  tree t = make_node (INTEGER_CST);

(gdb) p cst

$30 = {low = 18446744073709551615, high = -1}



Now it didn't overflow on the 4.7 branch:



Breakpoint 2, int_const_binop (code=MINUS_EXPR, arg1=0x76d66f00, 

arg2=0x76d790a0) at /home/eric/svn/gcc-4_7-branch/gcc/fold-const.c:1085

1085  return t;

(gdb) p debug_tree(arg1)

 integer_cst 0x76d66f00 type integer_type 0x76d77000 sizetype

constant visited 0

$4 = void

(gdb) p debug_tree(arg2)

 integer_cst 0x76d790a0 type integer_type 0x76d77000 sizetype

constant visited 1

$5 = void

(gdb) p debug_tree(t)

 integer_cst 0x76d66f20 type integer_type 0x76d77000 sizetype

constant visited -1



This low_bound - 1 idiom is pervasive in Ada and it will probably overflow only

for 0 so we could add a kludge to size_binop_loc, similarly to the kludge that

exists in layout_type:



Index: fold-const.c

===

--- fold-const.c(revision 196253)

+++ fold-const.c(working copy)

@@ -1389,9 +1389,13 @@ size_binop_loc (location_t loc, enum tre

   gcc_assert (int_binop_types_match_p (code, TREE_TYPE (arg0),

TREE_TYPE (arg1)));



-  /* Handle the special case of two integer constants faster.  */

+  /* Handle general case of two integer constants.  For sizetype constant

+ calculations, we always want to know about overflow, even in the

+ unsigned case.  */

   if (TREE_CODE (arg0) == INTEGER_CST  TREE_CODE (arg1) == INTEGER_CST)

 {

+  int overflowable = -1;

+

   /* And some specific cases even faster than that.  */

   if (code == PLUS_EXPR)

{

@@ -1404,6 +1408,11 @@ size_binop_loc (location_t loc, enum tre

{

  if (integer_zerop (arg1)  !TREE_OVERFLOW (arg1))

return arg0;

+

+ /* ??? We make an exception for 0 - 1 because it's an idiom

+used in length calculations for zero-based arrays.  */

+ if (integer_zerop (arg0)  integer_onep (arg1))

+   overflowable = 1;

}

   else if (code == MULT_EXPR)

{

@@ -1411,10 +1420,7 @@ size_binop_loc (location_t loc, enum tre

return arg1;

}



-  /* Handle general case of two integer constants.  For sizetype

- constant calculations we always want to know about overflow,

-even in the unsigned case.  */

-  return int_const_binop_1 (code, arg0, arg1, -1);

+  return int_const_binop_1 (code, arg0, arg1, overflowable);

 }



   return fold_build2_loc (loc, code, type, arg0, arg1);





What do you think Richard?


[Bug c++/56493] Performance regression in google dense hashmap

2013-03-01 Thread redi at gcc dot gnu.org


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



Jonathan Wakely redi at gcc dot gnu.org changed:



   What|Removed |Added



 Status|UNCONFIRMED |WAITING

   Last reconfirmed||2013-03-01

 Ever Confirmed|0   |1



--- Comment #3 from Jonathan Wakely redi at gcc dot gnu.org 2013-03-01 
14:29:24 UTC ---

Instead of expecting everyone who looks at this bug to find and download the

dense hash map code please provide preprocessed source as requested in the bug

reporting guidelines that you were prominently asked to read before you entered

this bug report: http://gcc.gnu.org/bugs/


[Bug middle-end/56474] [4.8 regression] bogus Storage_Error raised for record containing empty zero-based array

2013-03-01 Thread ebotcazou at gcc dot gnu.org


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



Eric Botcazou ebotcazou at gcc dot gnu.org changed:



   What|Removed |Added



  Component|ada |middle-end



--- Comment #5 from Eric Botcazou ebotcazou at gcc dot gnu.org 2013-03-01 
14:32:50 UTC ---

Recategorizing.


[Bug c++/55135] [4.8 Regression] Segfault of gcc on a big file

2013-03-01 Thread steven at gcc dot gnu.org


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



--- Comment #16 from Steven Bosscher steven at gcc dot gnu.org 2013-03-01 
14:35:20 UTC ---

(In reply to comment #15)

  - Queue up to-be-removed EH regions, instead of removing them one-by-one.

Removing them one at a time results in walking the list of EH regions

repeatedly, thus taking O(# of EH regions ** 2) time.

 This (properly cleaned up) looks reasonable to me.



It's not yet complete, I think I need to update the outer region pointers

for the inner region if an outer region is removed. But I think this is

the right approach.





  - Rewrite init_subregs_of_mode and subroutines to first collect the

invalid mode change subregs in sbitmaps, and then converting the final

sbitmap to a bitmap. This trades memory for time: the bitmap lookups are

also potentially O(# of registers ** 2) and this test case has more than

one million registers, many of them with invalid mode changes (to be fixed

up by IRA/LRA).

 Hmm - this is because we hit the O(n) complexity we have on our bitmap

 implementation?



Yes.



  Can't we improve init_subregs_of_mode by first collecting

 all mode changes we see for a pseudo (eventually using DF info?) and

 then do the processing in some more optimal order?



Yes. That is the plan, this was just a proof-of-concept fix (I didn't call

it a patch, I called it a hack - for the good reasons you mentioned :-).



I also want to add a better way to lookup bits as random-access in bitmaps:

change the view of the bitmap, much like what tree-ssa-live does with its

maps).


[Bug lto/56495] New: ICE in lto_output_tree with -g -flto -O2

2013-03-01 Thread spammeup2011 at googlemail dot com


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



 Bug #: 56495

   Summary: ICE in lto_output_tree with -g -flto -O2

Classification: Unclassified

   Product: gcc

   Version: 4.8.0

Status: UNCONFIRMED

  Severity: normal

  Priority: P3

 Component: lto

AssignedTo: unassig...@gcc.gnu.org

ReportedBy: spammeup2...@googlemail.com





GCC segfaults while compiling the attached code from Parma Polyhedra Library.

The testcase is huge, but reducing it led to a testcase that only failed in 1

of 10 cases or so. The error message sometimes changed to tree code '(some

garbage)' is not supported in LTO streams but i could not reproduce that one. 

GCC 4.8.0 20130301 fails while GCC 4.7.2 works.



Compiler output:

gcc -O2 -flto -g -s ppl.ii 

ppl_c_Rational_Box.cc: In function

'Parma_Polyhedra_Library::operator(Parma_Polyhedra_Library::Linear_Expression

const, __gmp_expr__mpz_struct [1], __mpz_struct [1] const)':

ppl_c_Rational_Box.cc:1781:8302: internal compiler error: Segmentation fault

Please submit a full bug report,

with preprocessed source if appropriate.

See http://bugs.gentoo.org/ for instructions.



Backtrace:

Program received signal SIGSEGV, Segmentation fault.

lto_output_tree (ob=0x1ece9d0, expr=0xe0049, ref_p=true, 

this_ref_p=true) at ../.././gcc/lto-streamer-out.c:371

371../.././gcc/lto-streamer-out.c: No such file or directory.

(gdb) bt

#0  lto_output_tree (ob=0x1ece9d0, expr=0xe0049, ref_p=true, 

this_ref_p=true) at ../.././gcc/lto-streamer-out.c:371

#1  0x009ed78b in write_ts_block_tree_pointers (ref_p=true, 

expr=0x7491ca80, ob=0x1ece9d0) at ../.././gcc/tree-streamer-out.c:760

#2  streamer_write_tree_body (ob=0x1ece9d0, expr=0x7491ca80, 

ref_p=optimized out) at ../.././gcc/tree-streamer-out.c:887

#3  0x008194fd in lto_write_tree (ref_p=true, expr=0x7491ca80, 

ob=0x1ece9d0) at ../.././gcc/lto-streamer-out.c:321

#4  lto_output_tree (ob=0x1ece9d0, expr=0x7491ca80, ref_p=optimized out, 

this_ref_p=optimized out) at ../.././gcc/lto-streamer-out.c:410

#5  0x009ed176 in write_ts_common_tree_pointers (ref_p=true, 

expr=0x7fffe85aa0f0, ob=0x1ece9d0) at ../.././gcc/tree-streamer-out.c:514

#6  streamer_write_tree_body (ob=0x1ece9d0, expr=0x7fffe85aa0f0, 

ref_p=optimized out) at ../.././gcc/tree-streamer-out.c:845

#7  0x008194fd in lto_write_tree (ref_p=true, expr=0x7fffe85aa0f0, 

ob=0x1ece9d0) at ../.././gcc/lto-streamer-out.c:321

#8  lto_output_tree (ob=ob@entry=0x1ece9d0, expr=0x7fffe85aa0f0, 

ref_p=ref_p@entry=true, this_ref_p=this_ref_p@entry=true)

at ../.././gcc/lto-streamer-out.c:410

#9  0x009ed82b in write_ts_exp_tree_pointers (ref_p=optimized out, 

expr=optimized out, ob=optimized out)

at ../.././gcc/tree-streamer-out.c:747

#10 streamer_write_tree_body (ob=0x1ece9d0, expr=0x7fffe858d880, 

---Type return to continue, or q return to quit---

ref_p=optimized out) at ../.././gcc/tree-streamer-out.c:884

#11 0x008194fd in lto_write_tree (ref_p=true, expr=0x7fffe858d880, 

ob=0x1ece9d0) at ../.././gcc/lto-streamer-out.c:321

#12 lto_output_tree (ob=0x1ece9d0, expr=0x7fffe858d880, ref_p=optimized out, 

this_ref_p=optimized out) at ../.././gcc/lto-streamer-out.c:410

#13 0x009ed7f5 in write_ts_exp_tree_pointers (ref_p=optimized out, 

expr=optimized out, ob=optimized out)

at ../.././gcc/tree-streamer-out.c:746

#14 streamer_write_tree_body (ob=0x1ece9d0, expr=0x7fffe85a39d8, 

ref_p=optimized out) at ../.././gcc/tree-streamer-out.c:884

#15 0x008194fd in lto_write_tree (ref_p=true, expr=0x7fffe85a39d8, 

ob=0x1ece9d0) at ../.././gcc/lto-streamer-out.c:321

#16 lto_output_tree (ob=0x1ece9d0, expr=0x7fffe85a39d8, ref_p=optimized out, 

this_ref_p=optimized out) at ../.././gcc/lto-streamer-out.c:410

#17 0x009ed7f5 in write_ts_exp_tree_pointers (ref_p=optimized out, 

expr=optimized out, ob=optimized out)

at ../.././gcc/tree-streamer-out.c:746

#18 streamer_write_tree_body (ob=0x1ece9d0, expr=0x7fffe859a300, 

ref_p=optimized out) at ../.././gcc/tree-streamer-out.c:884

#19 0x008194fd in lto_write_tree (ref_p=true, expr=0x7fffe859a300, 

ob=0x1ece9d0) at ../.././gcc/lto-streamer-out.c:321

#20 lto_output_tree (ob=ob@entry=0x1ece9d0, expr=0x7fffe859a300, 

ref_p=ref_p@entry=true, this_ref_p=this_ref_p@entry=true)

---Type return to continue, or q return to quit---

at ../.././gcc/lto-streamer-out.c:410

#21 0x009ed936 in write_ts_decl_common_tree_pointers (ref_p=true, 

expr=0x7fffe85ac5f0, ob=0x1ece9d0) at ../.././gcc/tree-streamer-out.c:584

#22 streamer_write_tree_body (ob=0x1ece9d0, expr=0x7fffe85ac5f0, 

ref_p=optimized out) at ../.././gcc/tree-streamer-out.c:857

#23 0x008194fd in lto_write_tree (ref_p=true, expr

[Bug lto/56495] ICE in lto_output_tree with -g -flto -O2

2013-03-01 Thread spammeup2011 at googlemail dot com


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



--- Comment #1 from Florian Meyer spammeup2011 at googlemail dot com 
2013-03-01 14:47:03 UTC ---

Created attachment 29562

  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=29562

Zipped Preprocessed source



Preprocessed source in zipped form. The file is 3mb unpacked.


[Bug tree-optimization/49234] [4.5/4.6/4.7/4.8 Regression] -Wstrict-overflow gives obviously unwarranted warning

2013-03-01 Thread ian at airs dot com


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



Ian Lance Taylor ian at airs dot com changed:



   What|Removed |Added



 CC||ian at airs dot com



--- Comment #11 from Ian Lance Taylor ian at airs dot com 2013-03-01 14:52:53 
UTC ---

I suspect we can handle this case by observing that all the incoming values to

the PHI node are constants.



It's true that strict overflow warnings are my fault but I believe it was a

necessary move to keep people from turning on -fwrapv.


[Bug fortran/56496] New: [OOP] ICE with TYPE(*) coarray and SELECT TYPE

2013-03-01 Thread burnus at gcc dot gnu.org

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

 Bug #: 56496
   Summary: [OOP] ICE with TYPE(*) coarray and SELECT TYPE
Classification: Unclassified
   Product: gcc
   Version: 4.8.0
Status: UNCONFIRMED
  Keywords: ice-on-valid-code
  Severity: normal
  Priority: P3
 Component: fortran
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: bur...@gcc.gnu.org
CC: pa...@gcc.gnu.org


The following program gives an ICE:

$ gfortran -fcoarray=single test.f90
test.f90: In Funktion »MAIN__«:
test.f90:5:0: interner Compiler-Fehler: Speicherzugriffsfehler
   a= 5
 ^
0x99dc9f crash_signal
../../gcc/toplev.c:332
0x5fde88 tree_class_check
../../gcc/tree.h:3801
0x5fde88 gfc_conv_array_data(tree_node*)
../../gcc/fortran/trans-array.c:2662



class(*), allocatable :: A[:]
allocate(integer :: a[*])
select type(a)
type is (integer)
  a= 5
  print *, a
end select
end


[Bug c++/56497] New: comparison is always true due to limited range of data type

2013-03-01 Thread mathieu.malaterre at gmail dot com


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



 Bug #: 56497

   Summary: comparison is always true due to limited range of data

type

Classification: Unclassified

   Product: gcc

   Version: unknown

Status: UNCONFIRMED

  Severity: normal

  Priority: P3

 Component: c++

AssignedTo: unassig...@gcc.gnu.org

ReportedBy: mathieu.malate...@gmail.com





Created attachment 29563

  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=29563

g++ -Wtype-limits test.cxx



It would be really nice if -Wtype-limits would catch all occurences in the

following test case.



Steps:



$ g++ -Wtype-limits test.cxx

test.cxx: In function 'int main()':

test.cxx:25:33: warning: comparison is always true due to limited range of data

type [-Wtype-limits]


[Bug c++/55135] [4.8 Regression] Segfault of gcc on a big file

2013-03-01 Thread hubicka at ucw dot cz


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



--- Comment #17 from Jan Hubicka hubicka at ucw dot cz 2013-03-01 16:14:08 
UTC ---

 

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

 

 --- Comment #12 from Steven Bosscher steven at gcc dot gnu.org 2013-03-01 
 07:50:43 UTC ---

 Last night's compilation at -O1 with my hacks applied finished after

 a whopping 6 hours. Top compile time consumers:

 

  early inlining heuristics: 12409.92 (55%) usr

  integration  :  1417.65 ( 6%) usr

  tree eh  :  1140.75 ( 5%) usr

  tree PTA :   309.46 ( 1%) usr

  tree SSA incremental :  6065.43 (27%) usr

  tree split crit edges:   515.67 ( 2%) usr

  TOTAL: 22448.04

 

 Peak memory: 4294647808 (~4GB).



I will take care of the early inlining problem.  I wonder, you don't have

oprofile of that, by any chance?



Honza


[Bug c++/55135] [4.8 Regression] Segfault of gcc on a big file

2013-03-01 Thread hubicka at ucw dot cz


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



--- Comment #18 from Jan Hubicka hubicka at ucw dot cz 2013-03-01 16:19:47 
UTC ---

 I will take care of the early inlining problem.  I wonder, you don't have 
 oprofile of that, by any chance?



Aha, callee walking in update_inline_summary. Perhaps I will really need to

make this incremental despite the risk of accmulating roundoff errors..  I will

play with this a bit more.



Honza


[Bug c++/56312] Firefox 20.0a1 compilation with enabled LTO fails

2013-03-01 Thread hubicka at gcc dot gnu.org


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



Jan Hubicka hubicka at gcc dot gnu.org changed:



   What|Removed |Added



 Status|UNCONFIRMED |ASSIGNED

   Last reconfirmed||2013-03-01

 CC||hubicka at gcc dot gnu.org

 AssignedTo|unassigned at gcc dot   |hubicka at gcc dot gnu.org

   |gnu.org |

 Ever Confirmed|0   |1



--- Comment #2 from Jan Hubicka hubicka at gcc dot gnu.org 2013-03-01 
16:31:15 UTC ---

Can you please run it in debugger and let me know where precisely it segfaults

in can_refer_decl_in_current_unit_p?

I will try to update my tree and see if it reproduces.



Honza


[Bug target/47333] [4.6/4.8 regression] g++.dg/lto/20091219 FAILs on Solaris 2 with SUN as

2013-03-01 Thread hubicka at gcc dot gnu.org


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



Jan Hubicka hubicka at gcc dot gnu.org changed:



   What|Removed |Added



 Status|NEW |ASSIGNED



--- Comment #32 from Jan Hubicka hubicka at gcc dot gnu.org 2013-03-01 
16:31:29 UTC ---

mine.


[Bug fortran/56491] [OOP] Memory leak with vtab's type-bound-procedures

2013-03-01 Thread burnus at gcc dot gnu.org


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



Tobias Burnus burnus at gcc dot gnu.org changed:



   What|Removed |Added



 CC||burnus at gcc dot gnu.org



--- Comment #1 from Tobias Burnus burnus at gcc dot gnu.org 2013-03-01 
16:45:01 UTC ---

The VTAB issue is now fixed:

http://gcc.gnu.org/ml/gcc-cvs/2013-03/msg00024.html





However, another issue is still pending:

 864 (192 direct, 672 indirect) bytes in 1 blocks are definitely lost in

  loss record 325 of 355

 at 0x4C2A0B4: calloc (in

/usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)

 by 0xED30B0: xcalloc (xmalloc.c:162)

 by 0x571BBF: gfc_get_expr() (expr.c:47)

 by 0x57442B: gfc_get_variable_expr(gfc_symtree*) (expr.c:3936)

 by 0x5D06E2: resolve_code(gfc_code*, gfc_namespace*) (resolve.c:8536)

 by 0x5D1CEE: resolve_codes(gfc_namespace*) (resolve.c:14972)





That's the following expression in resolve.c:



  st-n.sym-assoc-target = gfc_get_variable_expr (code-expr1-symtree);


[Bug c++/56498] New: invalid declaration of string iterator on comma separated list

2013-03-01 Thread hgkamath at hotmail dot com

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

 Bug #: 56498
   Summary: invalid declaration of string iterator on comma
separated list
Classification: Unclassified
   Product: gcc
   Version: 4.7.2
Status: UNCONFIRMED
  Severity: minor
  Priority: P3
 Component: c++
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: hgkam...@hotmail.com


Trying to declare and initialize two iterators in a comma separated list
results in an invalid declaration error.

workaround, declare the iterator before the for statement.

a.cpp: In function ‘bool ispalindrome(std::string)’:
a.cpp:7:37: error: invalid declaration of
‘std::basic_stringchar::reverse_iterator’
a.cpp:7:62: error: expected ‘;’ before ‘i2’
a.cpp:7:62: error: ‘i2’ was not declared in this scope
a.cpp:7:89: error: expected ‘)’ before ‘;’ token
a.cpp:7:92: error: ‘i1’ was not declared in this scope
a.cpp:7:98: error: ‘i2’ was not declared in this scope
a.cpp:7:102: error: expected ‘;’ before ‘)’ token




#include iostream
#include string

using namespace std;

bool ispalindrome(string s){
  // replace with below line to see the error.
  // for(string::iterator i1=s.begin(),string::reverse_iterator i2=s.rbegin() ;
i1!=s.end();  i1++, i2++) {
  string::reverse_iterator i2=s.rbegin();
  for(string::iterator i1=s.begin() ; i1!=s.end();  i1++, i2++) {
if (*i1!=*i2) return false;
  }
  return true;
}

int main()
{
  string s;
cin  s ; 
  if (ispalindrome(s)) {
cout  First\n;
  }else{
cout  Second\n;
  }
return 0;
}


[Bug bootstrap/56499] New: mpfr subdirectory path mismatch and misnamed files

2013-03-01 Thread gary.barnes at atego dot com


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



 Bug #: 56499

   Summary: mpfr subdirectory path mismatch and misnamed files

Classification: Unclassified

   Product: gcc

   Version: 4.7.2

Status: UNCONFIRMED

  Severity: normal

  Priority: P3

 Component: bootstrap

AssignedTo: unassig...@gcc.gnu.org

ReportedBy: gary.bar...@atego.com





configure uses mpfr/.lib instead of mpfr/src/.lib.

There are two Solaris 10 files named *.hp instead of *.hpp

Makefile.in also has the incorrect mpfr/.lib path but it is not used.



Configuration:



gcc-4.7.2

gmp-5.1.1  inserted into gcc-4.7.2/gmp

mpc-1.0.1  inserted into gcc-4.7.2/mpc

mpfr-3.1.1 inserted into gcc-4.7.2/mpfr



Solaris 10 x86_32bit



../gcc-4.7.2/configure \

--prefix=/ned/tools/i386_solaris2 \

--enable-languages=c,c++ \

--disable-nls



Using gcc (GCC) 3.4.0 to build stage1.



References to mpfr internal structure are incorrect in configure.



  4.4.3d-ategovnc 460: diff configure gcc-4.7.2/configure

  5201,5203c5201,5203

 gmplibs='-L$$r/$(HOST_SUBDIR)/mpfr/src/'$lt_cv_objdir $gmplibs

 gmpinc='-I$$r/$(HOST_SUBDIR)/mpfr/src -I$$s/mpfr/src '$gmpinc

 extra_mpc_mpfr_configure_flags='--with-mpfr-include=$$s/mpfr/src

--with-mpfr-lib=$$r/$(HOST_SUBDIR)/mpfr/src/'$lt_cv_objdir

  ---

 gmplibs='-L$$r/$(HOST_SUBDIR)/mpfr/'$lt_cv_objdir $gmplibs

 gmpinc='-I$$r/$(HOST_SUBDIR)/mpfr -I$$s/mpfr '$gmpinc

 extra_mpc_mpfr_configure_flags='--with-mpfr-include=$$s/mpfr

--with-mpfr-lib=$$r/$(HOST_SUBDIR)/mpfr/'$lt_cv_objdir



The references to mpfr internal structure in Makefile.in are also incorrect,

but are not used anywhere so are harmless.  mpfr/.libs = mpfr/src/.libs



  @if mpfr

  HOST_LIB_PATH_mpfr = \

$$r/$(HOST_SUBDIR)/mpfr/.libs:$$r/$(HOST_SUBDIR)/prev-mpfr/.libs:

  @endif mpfr



These files appear to have an incorrect extension.  These links allow gcc to

locate

them during compiltion.  An mv might be more appropriate but I have not

tested that.



  ln -s \

  

./gcc-4.7.2/libstdc++-v3/include/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_imp.hp

\

  

./gcc-4.7.2/libstdc++-v3/include/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_imp.hpp



  ln -s \

  

./gcc-4.7.2/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/constructors_destructor_fn_imps.hp

\

  

./gcc-4.7.2/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/constructors_destructor_fn_imps.hpp


[Bug c++/56497] comparison is always true due to limited range of data type

2013-03-01 Thread manu at gcc dot gnu.org

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

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

   What|Removed |Added

 CC||manu at gcc dot gnu.org

--- Comment #1 from Manuel López-Ibáñez manu at gcc dot gnu.org 2013-03-01 
17:20:38 UTC ---
(In reply to comment #0)
 Created attachment 29563 [details]
 g++ -Wtype-limits test.cxx
 
 It would be really nice if -Wtype-limits would catch all occurences in the
 following test case.

That seems nearly impossible. The warning is emitted in the FE, and this would
require inlining and/or constant propagation into function calls. Not likely to
ever happen in GCC. You need something like http://clang-analyzer.llvm.org/ or
http://cppcheck.sourceforge.net/. Better report a bug to them.


[Bug bootstrap/56499] mpfr subdirectory path mismatch and misnamed files

2013-03-01 Thread pinskia at gcc dot gnu.org


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



--- Comment #1 from Andrew Pinski pinskia at gcc dot gnu.org 2013-03-01 
17:23:02 UTC ---

There are two Solaris 10 files named *.hp instead of *.hpp



Use gnu tar to extract the tar file otherwise you get the truncated names.


[Bug bootstrap/56499] mpfr subdirectory path mismatch and misnamed files

2013-03-01 Thread gary.barnes at atego dot com


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



--- Comment #2 from Gary Barnes gary.barnes at atego dot com 2013-03-01 
17:29:26 UTC ---

I did use gnu tar.  Those are the only two files with incorrect names.



Gary



-Original Message-

From: pinskia at gcc dot gnu.org [mailto:gcc-bugzi...@gcc.gnu.org] 

Sent: Friday, March 01, 2013 9:23 AM

To: Gary Barnes

Subject: [Bug bootstrap/56499] mpfr subdirectory path mismatch and misnamed

files





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



--- Comment #1 from Andrew Pinski pinskia at gcc dot gnu.org 2013-03-01

17:23:02 UTC ---

There are two Solaris 10 files named *.hp instead of *.hpp



Use gnu tar to extract the tar file otherwise you get the truncated names.



--

Configure bugmail: http://gcc.gnu.org/bugzilla/userprefs.cgi?tab=email

--- You are receiving this mail because: --- You reported the bug.


[Bug c++/56497] comparison is always true due to limited range of data type

2013-03-01 Thread mathieu.malaterre at gmail dot com


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



Mathieu Malaterre mathieu.malaterre at gmail dot com changed:



   What|Removed |Added



 Status|UNCONFIRMED |RESOLVED

 Resolution||INVALID



--- Comment #2 from Mathieu Malaterre mathieu.malaterre at gmail dot com 
2013-03-01 17:40:15 UTC ---

ok. closing then.


[Bug fortran/48636] Enable more inlining with -O2 and higher

2013-03-01 Thread wschmidt at gcc dot gnu.org


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



William J. Schmidt wschmidt at gcc dot gnu.org changed:



   What|Removed |Added



 CC||wschmidt at gcc dot gnu.org



--- Comment #43 from William J. Schmidt wschmidt at gcc dot gnu.org 
2013-03-01 17:48:51 UTC ---

(In reply to comment #38)

 Looks like for x86 r193331 led to significant regression on 172.mgrid for -m32

 -O3 -funroll-loops



The same degradation was seen on powerpc64-unknown-linux-gnu with r193331.  The

fix by Martin Jambor for PR55334 did not help for -m32.  It did give a slight

bump to -m64, but did not return the performance to pre-r193331 levels.  So

there still seems to be a problem with 172.mgrid related to this change.


[Bug target/56484] [4.8 Regression] ICE in assign_by_spills, at lra-assigns.c:1268

2013-03-01 Thread ubizjak at gmail dot com


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



--- Comment #6 from Uros Bizjak ubizjak at gmail dot com 2013-03-01 18:06:28 
UTC ---

(In reply to comment #4)



 and the combiner combines the r60 = flags = 0 ? ax : r59 instruction with

 r59 = r60 into r59 = flags = 0 ? ax : r59 instruction in the last spot, thus

 extending the lifetime of the ax and flags hard registers across various other

 instructions.



But AX is member of likely spilled class, so combine should take some more care

with this insn. Should we just prevent propagations of all insns that mention

likely spilled hard regs?


[Bug fortran/56500] New: [OOP] IMPLICIT CLASS(...) wrongly rejected

2013-03-01 Thread burnus at gcc dot gnu.org


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



 Bug #: 56500

   Summary: [OOP] IMPLICIT CLASS(...) wrongly rejected

Classification: Unclassified

   Product: gcc

   Version: 4.8.0

Status: UNCONFIRMED

  Keywords: rejects-valid

  Severity: normal

  Priority: P3

 Component: fortran

AssignedTo: unassig...@gcc.gnu.org

ReportedBy: bur...@gcc.gnu.org

CC: ja...@gcc.gnu.org





Found at http://mailman.j3-fortran.org/pipermail/j3/2013-March/006167.html



IMPLICIT CLASS(...) (...) does not properly work with gfortran.





R560  implicit-stmt  is  IMPLICIT implicit-spec-list

 or  IMPLICIT NONE

R561  implicit-spec  is  declaration-type-spec ( letter-spec-list )

R403 declaration-type-spec  is  intrinsic-type-spec

or  TYPE ( intrinsic-type-spec )

or  TYPE ( derived-type-spec )

or  CLASS ( derived-type-spec )

or  CLASS ( * )





Example by Reinhold Bader:



module mod_upimp

  type :: foo

 integer :: i

  end type

end module

program upimp

  use mod_upimp

  implicit class(foo) (a-b)

  implicit class(*) (c)

  allocatable :: aaf, caf

  allocate(aaf, source=foo(2))

  allocate(caf, source=foo(3))

  select type (aaf)

  type is (foo)

write(*,*) aaf

  end select

  select type (caf)

  type is (foo)

write(*,*) caf

  end select

end program


[Bug bootstrap/56499] mpfr subdirectory path mismatch and misnamed files

2013-03-01 Thread redi at gcc dot gnu.org


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



--- Comment #3 from Jonathan Wakely redi at gcc dot gnu.org 2013-03-01 
18:17:35 UTC ---

There's nothing wrong with the tarball, it works for everyone else, so either

your copy is corrupted and you need to download it again or you didn't use a

recent version of GNU tar to unpack it.  This is not a bug though.



Every time this happens it's on Solaris, and because someone didn't use GNU tar

or used an ancient version of GNU tar:

http://gcc.gnu.org/ml/gcc-help/2012-06/msg00291.html

http://gcc.gnu.org/ml/gcc-bugs/2008-04/msg01469.html

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33511#c13



http://gcc.gnu.org/install/prerequisites.html says  GNU tar 1.14 or later is

needed


[Bug c++/56498] invalid declaration of string iterator on comma separated list

2013-03-01 Thread redi at gcc dot gnu.org


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



Jonathan Wakely redi at gcc dot gnu.org changed:



   What|Removed |Added



 Status|UNCONFIRMED |RESOLVED

 Resolution||INVALID



--- Comment #1 from Jonathan Wakely redi at gcc dot gnu.org 2013-03-01 
18:20:49 UTC ---

(In reply to comment #0)

 Trying to declare and initialize two iterators in a comma separated list

 results in an invalid declaration error.



There's a very good reason for that, C++ doesn't allow it.



You cannot declare two variables of different types in a single declaration


[Bug bootstrap/56499] mpfr subdirectory path mismatch and misnamed files

2013-03-01 Thread gary.barnes at atego dot com


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



--- Comment #4 from Gary Barnes gary.barnes at atego dot com 2013-03-01 
18:36:46 UTC ---

You are correct.  I used tar 1.13.  Updating the various gnu tools here is

basically why I'm building gcc in the first place.

Thank you, Gary



-Original Message-

From: redi at gcc dot gnu.org [mailto:gcc-bugzi...@gcc.gnu.org] 

Sent: Friday, March 01, 2013 10:18 AM

To: Gary Barnes

Subject: [Bug bootstrap/56499] mpfr subdirectory path mismatch and misnamed

files





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



--- Comment #3 from Jonathan Wakely redi at gcc dot gnu.org 2013-03-01

18:17:35 UTC --- There's nothing wrong with the tarball, it works for everyone

else, so either your copy is corrupted and you need to download it again or you

didn't use a recent version of GNU tar to unpack it.  This is not a bug though.



Every time this happens it's on Solaris, and because someone didn't use GNU tar

or used an ancient version of GNU tar:

http://gcc.gnu.org/ml/gcc-help/2012-06/msg00291.html

http://gcc.gnu.org/ml/gcc-bugs/2008-04/msg01469.html

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33511#c13



http://gcc.gnu.org/install/prerequisites.html says  GNU tar 1.14 or later is

needed



--

Configure bugmail: http://gcc.gnu.org/bugzilla/userprefs.cgi?tab=email

--- You are receiving this mail because: --- You reported the bug.


[Bug tree-optimization/56501] New: gcc 4.6 ICE on noreturn function at -Os and above

2013-03-01 Thread dhazeghi at yahoo dot com

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

 Bug #: 56501
   Summary: gcc 4.6 ICE on noreturn function at -Os and above
Classification: Unclassified
   Product: gcc
   Version: 4.6.3
Status: UNCONFIRMED
  Severity: minor
  Priority: P3
 Component: tree-optimization
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: dhaze...@yahoo.com


The following testcase (derived from gzip) triggers an internal compiler error
with gcc 4.6, 4.5 and 4.4 when compiled at -Os or higher on x86_64-linux.  The
problem does not occur with 4.7 or newer, or with 4.3 or older.

$ gcc-4.6 --version
gcc-4.6 (GCC) 4.6.3
$ gcc-4.6 -O1 -w small.c
$ gcc-4.6 -Os -w small.c
small.c: In function ‘main’:
small.c:24:1: internal compiler error: Segmentation fault
Please submit a full bug report,
with preprocessed source if appropriate.
See http://gcc.gnu.org/bugs.html for instructions.
$ cat small.c

int a;
void try_help () __attribute__ ((__noreturn__));
void try_help ()
{
}

int main ()
{
switch (a)
{
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':
break;
default:
try_help ();
}
}


[Bug c++/55135] [4.8 Regression] Segfault of gcc on a big file

2013-03-01 Thread steven at gcc dot gnu.org


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



--- Comment #19 from Steven Bosscher steven at gcc dot gnu.org 2013-03-01 
19:13:32 UTC ---

(In reply to comment #18)



I thought you had already done that, to handle attribute flatten for

bug 54146 (http://gcc.gnu.org/PR54146#c43). This test case doesn't use

the flatten attribute, but explodes in the same way as the test case

for bug 54146.


[Bug tree-optimization/49234] [4.5/4.6/4.7/4.8 Regression] -Wstrict-overflow gives obviously unwarranted warning

2013-03-01 Thread aldyh at redhat dot com


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



--- Comment #12 from Aldy Hernandez aldyh at redhat dot com 2013-03-01 
19:17:32 UTC ---

 --- Comment #11 from Ian Lance Taylor ian at airs dot com 2013-03-01 
 14:52:53 UTC ---

 I suspect we can handle this case by observing that all the incoming values to

 the PHI node are constants.



Ian.



They're not all constants.  In this particular case we have phis like this:



state_2 = PHI 0(6), state_3(12), 2(5)



I suppose we could chase the SSA def chain and if all the phi arguments 

are either constants, or known to point to an SSA that has been 

previously analyzed as constant, then we can avoid generating an 

overflow.  But we'd have to keep track of states across calls to 

vrp_visit_phi_node.  Is this what you had in mind, or am I 

misunderstanding something?



Obviously, Richi's idea is much simpler :).  With his suggestion we 

could probably do with:



@@ -8111,11 +8109,9 @@ vrp_visit_phi_node (gimple phi)

if (cmp_max  0 || cmp_max  0)

 {

   if (!needs_overflow_infinity (TREE_TYPE (vr_result.max))

- || !vrp_var_may_overflow (lhs, phi))

+ || !vrp_var_may_overflow (lhs, phi)

+ || supports_overflow_infinity (TREE_TYPE (vr_result.max)))

 vr_result.max = TYPE_MAX_VALUE (TREE_TYPE (vr_result.max));

- else if (supports_overflow_infinity (TREE_TYPE (vr_result.max)))

-   vr_result.max =

-   positive_overflow_infinity (TREE_TYPE (vr_result.max));

 }



And similarly for MIN.  In the above, supports_overflow_infinity is just 

there to make sure we have a CONSTANT_CLASS_P.  If that's not needed, we 

could even do:



if (cmp_max  0 || cmp_max  0)

  vr_result.max = TYPE_MAX_VALUE (TREE_TYPE (vr_result.max));



and be done with it.



Let me know.  I am willing to entertain any approach y'all suggest.


[Bug bootstrap/56499] mpfr subdirectory path mismatch and misnamed files

2013-03-01 Thread redi at gcc dot gnu.org


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



Jonathan Wakely redi at gcc dot gnu.org changed:



   What|Removed |Added



 Status|UNCONFIRMED |RESOLVED

 Resolution||INVALID



--- Comment #5 from Jonathan Wakely redi at gcc dot gnu.org 2013-03-01 
19:20:58 UTC ---

.


[Bug tree-optimization/49234] [4.5/4.6/4.7/4.8 Regression] -Wstrict-overflow gives obviously unwarranted warning

2013-03-01 Thread ian at airs dot com


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



--- Comment #13 from Ian Lance Taylor ian at airs dot com 2013-03-01 19:23:00 
UTC ---

How hard would it be to test whether the values are all constant or have the

same SSA_NAME_VAR as the value we are setting?



My only concern about richi's suggestion is that it will miss some simple

cases.

  for (i = 1; i = 0; i *= 2)

{

  int j = fn1 () ? i : 1;

  if (j = 0)

fn ();

}



Here i overflows and so does j, but I think your patch will teach VRP that j

does not overflow, so we will get no warning for j = 0.



Or something like that.


[Bug tree-optimization/49234] [4.5/4.6/4.7/4.8 Regression] -Wstrict-overflow gives obviously unwarranted warning

2013-03-01 Thread aldyh at redhat dot com


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



--- Comment #14 from Aldy Hernandez aldyh at redhat dot com 2013-03-01 
19:33:47 UTC ---

On 03/01/13 13:23, ian at airs dot com wrote:



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



 --- Comment #13 from Ian Lance Taylor ian at airs dot com 2013-03-01 
 19:23:00 UTC ---

 How hard would it be to test whether the values are all constant or have the

 same SSA_NAME_VAR as the value we are setting?



That was actually my first idea, but it seemed too simple :).  I will do 

so and report back.



Thanks.


[Bug c++/52688] static local variable can accessed from local class of function template

2013-03-01 Thread jared.cantwell at gmail dot com


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



jared.cantwell at gmail dot com changed:



   What|Removed |Added



 CC||jared.cantwell at gmail dot

   ||com



--- Comment #8 from jared.cantwell at gmail dot com 2013-03-01 19:53:56 UTC ---

I just came across the same issue in the context of lambdas (for posterity,

since I spent time thinking this was specific to lambdas).



Consider the following source code:

---

templatetypename T

void Foo()

{

static int i = 5;

auto bar = []() { ++i; };

bar();

}



int main()

{

Fooint();

}

---

GCC 4.7.0 produces the following error:



# g++-4.7 -std=c++11 main.cpp

/tmp/ccbZwBzT.o: In function `void Fooint()::{lambda()#1}::operator()()

const':

main.cpp:(.text+0x1a): undefined reference to `i'

main.cpp:(.text+0x23): undefined reference to `i'

collect2: error: ld returned 1 exit status



However, when Foo is not a template there is no error.


[Bug c++/56247] [4.6/4.7/4.8 Regression] internal compiler error: in tsubst_copy, at cp/pt.c:12131

2013-03-01 Thread dsagald8 at gmail dot com


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



DS dsagald8 at gmail dot com changed:



   What|Removed |Added



 Status|RESOLVED|VERIFIED



--- Comment #7 from DS dsagald8 at gmail dot com 2013-03-01 19:59:04 UTC ---

Awesome quick work. Very impressive -- thank you!


[Bug middle-end/56461] [4.8 Regression] GCC is leaking lots of memory

2013-03-01 Thread jakub at gcc dot gnu.org


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



--- Comment #17 from Jakub Jelinek jakub at gcc dot gnu.org 2013-03-01 
20:59:07 UTC ---

Author: jakub

Date: Fri Mar  1 20:58:59 2013

New Revision: 196393



URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=196393

Log:

PR middle-end/56461

* tree-vect-stmts.c (vect_create_vectorized_promotion_stmts): Call

vec_oprnds0-release (); rather than vec_oprnds0-truncate (0)

before overwriting it.



Modified:

trunk/gcc/ChangeLog

trunk/gcc/tree-vect-stmts.c


[Bug c++/55135] [4.8 Regression] Segfault of gcc on a big file

2013-03-01 Thread steven at gcc dot gnu.org


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



--- Comment #20 from Steven Bosscher steven at gcc dot gnu.org 2013-03-01 
21:05:00 UTC ---

(In reply to comment #15)

 Trading memory O(number of pseudos) with a large constant factor sounds

 like something waiting for trouble for other testcases ...



FWIW, for  this particular test case, almost all registers end up in

the set. I'm not sure why.  And since there are NUM_MACHINE_MODES bits

per register (NUM_MACHINE_MODES==87 on x86) the supposed-to-be sparse

bitmaps are huge (100,000 bitmap_elements).



I have a fix proper for this problem in testing.


[Bug middle-end/56461] [4.8 Regression] GCC is leaking lots of memory

2013-03-01 Thread jakub at gcc dot gnu.org


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



--- Comment #18 from Jakub Jelinek jakub at gcc dot gnu.org 2013-03-01 
21:06:13 UTC ---

Author: jakub

Date: Fri Mar  1 21:06:04 2013

New Revision: 196394



URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=196394

Log:

PR middle-end/56461

* files.c (_cpp_save_file_entries): Free result at the end.

* pch.c (cpp_string_free): New function.

(cpp_save_state): Use it in htab_create call.

(cpp_write_pch_deps): Free ss-defs.  Destroy ss-definedhash.



Modified:

trunk/libcpp/ChangeLog

trunk/libcpp/files.c

trunk/libcpp/pch.c


[Bug debug/56502] New: entry-value: Missing DW_AT_linkage_name for C-C++ calls

2013-03-01 Thread jan.kratochvil at redhat dot com


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



 Bug #: 56502

   Summary: entry-value: Missing DW_AT_linkage_name for C-C++

calls

Classification: Unclassified

   Product: gcc

   Version: 4.8.0

Status: UNCONFIRMED

  Severity: normal

  Priority: P3

 Component: debug

AssignedTo: unassig...@gcc.gnu.org

ReportedBy: jan.kratoch...@redhat.com

Target: x86_64-unknown-linux-gnu





Created attachment 29564

  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=29564

FSF GDB HEAD patch before it is upstreamed.



gcc-4.8.0-0.14.fc19.x86_64

gdb FSF HEAD with attached patch (reproducer does not work without patched GDB)



gcc -o extcall3.o -c extcall3.c -Wall -g -O2; g++ -o extcall extcall3.o

extcall{,2}.C -Wall -g -O2

gdb ./extcall -ex 'b a' -ex 'b b' -ex 'set debug entry-values 1' -ex r



Breakpoint 1, Cannot find function f(int) for a call site target at 0x4004ce

in main

(gdb) bt

#0  a (y=1) at extcall3.c:2

#1  0x004004ce in main () at extcall.C:4

(gdb) c

[...]

(gdb) bt

#0  b (y=y@entry=2) at extcall2.C:2

#1  0x00400607 in g (x=x@entry=42) at extcall2.C:3

#2  0x004004d8 in main () at extcall.C:5



You can see the first case main-f-a is missing the tail call frame because:

  Cannot find function f(int) for a call site target at 0x4004ce in main

 0bb: Abbrev Number: 1 (DW_TAG_compile_unit)

c0   DW_AT_language: 4(C++)

c1   DW_AT_name: extcall.C

 2fa: Abbrev Number: 3 (DW_TAG_GNU_call_site)

fb   DW_AT_low_pc  : 0x4004ce

103   DW_AT_abstract_origin: 0x12e

 112e: Abbrev Number: 7 (DW_TAG_subprogram)

12f   DW_AT_external: 1

12f   DW_AT_name: f

133   DW_AT_declaration : 1

 2137: Abbrev Number: 8 (DW_TAG_formal_parameter)

138   DW_AT_type: 0x127

 213c: Abbrev Number: 0



As 12e is in C++ CU and it has no DW_AT_linkage_name GDB expects it is

f(int) but the C symbol is f.



== extcall.C ==

extern C { void f(int x); }

void g(int x);

int main() {

  f(42);

  g(42);

}



== extcall2.C ==

static volatile int j;

static __attribute__((noinline, noclone)) void b(int y) { j=y; }

void g(int x) { b(2); }



== extcall3.c ==

static volatile int i;

static __attribute__((noinline, noclone)) void a(int y) { i=y; }

void f(int x) { a(1); }


[Bug fortran/56503] New: Wrong compiler error message when compiling with default-real-8 option and using intrinsic dble

2013-03-01 Thread cmwieland at gmx dot de


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



 Bug #: 56503

   Summary: Wrong compiler error message when compiling with

default-real-8 option and using intrinsic dble

Classification: Unclassified

   Product: gcc

   Version: 4.7.1

Status: UNCONFIRMED

  Severity: normal

  Priority: P3

 Component: fortran

AssignedTo: unassig...@gcc.gnu.org

ReportedBy: cmwiel...@gmx.de





Hi!



I compile the little program beneath with 

'gfortran -fdefault-integer-8 -fdefault-real-8' command.



I get:

'call t1 ( dble(r4))

  1

Error: Type mismatch in argument 'r' at (1); passed REAL(16) to REAL(8) '



Since r4 is a single precision variable the dble should make a real*8 of it,

or?



The same happens when activating the real*4::r4 declaration in the module.



Thanks,

Maarten





Program, that produces the error:



---



module test



!real*4 :: r4



contains



subroutine t1( r)

real*8 :: r



print*,' hallo r=',r



return

end subroutine t1



end module



program t

use test

real*4 :: r4

r4 = 4

call t1 ( dble(r4))

end program



---


[Bug fortran/56503] Wrong compiler error message when compiling with default-real-8 option and using intrinsic dble

2013-03-01 Thread kargl at gcc dot gnu.org


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



kargl at gcc dot gnu.org changed:



   What|Removed |Added



 Status|UNCONFIRMED |RESOLVED

 CC||kargl at gcc dot gnu.org

 Resolution||INVALID



--- Comment #1 from kargl at gcc dot gnu.org 2013-03-01 21:57:07 UTC ---

(In reply to comment #0)

 Hi!

 

 I compile the little program beneath with 

 'gfortran -fdefault-integer-8 -fdefault-real-8' command.

 

 I get:

 'call t1 ( dble(r4))

   1

 Error: Type mismatch in argument 'r' at (1); passed REAL(16) to REAL(8) '

 

 Since r4 is a single precision variable the dble should make a real*8 of it,

 or?



The error message says 'r' not 'r4'.  The 'r' here comes from

the explicit interface for t1, which has a declaration of 

real*8.  So, if you read the documentation that comes with

your compiler, you see that 'r' has been promoted to real*16.





`-fdefault-double-8'

 Set the `DOUBLE PRECISION' type to an 8 byte wide type.  If

 `-fdefault-real-8' is given, `DOUBLE PRECISION' would instead be

 promoted to 16 bytes if possible, and `-fdefault-double-8' can be

 used to prevent this.



You probably meant to use -freal-4-real-8.  I recommend using none 

of these options and actually writing properly ported code.


[Bug middle-end/56504] New: -mveclibabi=... Support AMD's LibM 3.0 (sucessor of ACML)

2013-03-01 Thread burnus at gcc dot gnu.org


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



 Bug #: 56504

   Summary: -mveclibabi=... Support AMD's LibM 3.0 (sucessor of

ACML)

Classification: Unclassified

   Product: gcc

   Version: 4.8.0

Status: UNCONFIRMED

  Severity: enhancement

  Priority: P3

 Component: middle-end

AssignedTo: unassig...@gcc.gnu.org

ReportedBy: bur...@gcc.gnu.org





GCC currently supports:



   -mveclibabi=type

   Specifies the ABI type to use for vectorizing intrinsics

   [...] and acml for the AMD math core library. [...]



   [...]and __vrd2_sin,

   __vrd2_cos, __vrd2_exp, __vrd2_log, __vrd2_log2,

   __vrd2_log10, __vrs4_sinf, __vrs4_cosf, __vrs4_expf,

   __vrs4_logf, __vrs4_log2f, __vrs4_log10f and

   __vrs4_powf for the corresponding function type when

   -mveclibabi=acml is used.



The current AMD LibM version, however, supports much more:

http://developer.amd.com/tools/cpu-development/libm/





From the release notes:



Vector Functions 



 Exponential

 ---

* vrs4_expf, vrs4_exp2f, vrs4_exp10f, vrs4_expm1f

* vrsa_expf, vrsa_exp2f, vrsa_exp10f, vrsa_expm1f

* vrd2_exp, vrd2_exp2, vrd2_exp10, vrd2_expm1

* vrda_exp, vrda_exp2, vrda_exp10, vrda_expm1



 Logarithmic

 ---

* vrs4_logf, vrs4_log2f, vrs4_log10f, vrs4_log1pf

* vrsa_logf, vrsa_log2f, vrsa_log10f, vrsa_log1pf

* vrd2_log, vrd2_log2, vrd2_log10, vrd2_log1p

* vrda_log, vrda_log2, vrda_log10, vrda_log1p



 Trigonometric

 -

* vrs4_cosf, vrs4_sinf

* vrsa_cosf, vrsa_sinf

* vrd2_cos, vrd2_sin

* vrda_cos, vrda_sin

* vrd2_sincos,vrda_sincos

* vrs4_sincosf,vrsa_sincosf 

* vrd2_tan, vrs4_tanf

* vrd2_cosh





 Power

 -

* vrs4_cbrtf, vrd2_cbrt, vrs4_powf, vrs4_powxf

* vrsa_cbrtf, vrda_cbrt, vrsa_powf, vrsa_powxf

* vrd2_pow





The vector functions are the known (cf. include/amdlibm.h):

__m128d amd_vrd2_exp(__m128d x);

__m128  amd_vrs4_expf   (__m128  x);

etc.



While the array version use:

void amd_vrsa_expf  (int len, float  *src, float  *dst);

void amd_vrda_exp2  (int len, double *src, double *dst);



void amd_vrda_exp   (int len, double *src, double *dst);

void amd_vrsa_expf  (int len, float  *src, float  *dst);



Unfortunately, no further documentation is available, telling whether, e.g.,

src and dst may be the same or not.







Note that AMD LibM now uses amd_ as prefix to the vector functions. It

contains the old version as weak symbols but only those:



0340 W __vrd2_cos

00e0 W __vrd2_exp

01a0 W __vrd2_log

01c0 W __vrd2_log10

01b0 W __vrd2_log2

0330 W __vrd2_sin

0390 W __vrs4_cosf

00a0 W __vrs4_expf

0200 W __vrs4_log10f

01f0 W __vrs4_log2f

01e0 W __vrs4_logf

03a0 W __vrs4_sinf


[Bug c++/56493] Performance regression in google dense hashmap

2013-03-01 Thread andrewjcg at gmail dot com


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



--- Comment #4 from Andrew Gallagher andrewjcg at gmail dot com 2013-03-01 
22:09:10 UTC ---

Created attachment 29565

  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=29565

Preprocessed test program source


[Bug c++/56493] Performance regression in google dense hashmap

2013-03-01 Thread andrewjcg at gmail dot com


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



--- Comment #5 from Andrew Gallagher andrewjcg at gmail dot com 2013-03-01 
22:10:14 UTC ---

Ah, sorry.  Just attached preprocessed sources now (which had to be compressed

to it in the 1K size limit).


[Bug middle-end/56504] -mveclibabi=... Support AMD's LibM 3.0 (sucessor of ACML)

2013-03-01 Thread burnus at gcc dot gnu.org


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



Tobias Burnus burnus at gcc dot gnu.org changed:



   What|Removed |Added



 CC||burnus at gcc dot gnu.org



--- Comment #1 from Tobias Burnus burnus at gcc dot gnu.org 2013-03-01 
22:11:50 UTC ---

For completeness, also Intel strongly extended the supported vectorizing

intrinsics, cf.

http://software.intel.com/sites/products/documentation/doclib/mkl_sa/11/mklman/GUID-7B3B6537-71E2-4BF5-A041-0365E72B211B.htm


[Bug middle-end/56490] [4.6/4.7/4.8 Regression] -Wall triggering infinite loop

2013-03-01 Thread xinliangli at gmail dot com


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



davidxl xinliangli at gmail dot com changed:



   What|Removed |Added



 CC||xinliangli at gmail dot com



--- Comment #2 from davidxl xinliangli at gmail dot com 2013-03-01 22:45:48 
UTC ---

The function has a control flow that post-dom chain is as long as 103. Limiting

the max post-dom walk length solve the problem.


[Bug middle-end/56461] [4.8 Regression] GCC is leaking lots of memory

2013-03-01 Thread jakub at gcc dot gnu.org


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



--- Comment #19 from Jakub Jelinek jakub at gcc dot gnu.org 2013-03-01 
22:54:46 UTC ---

Author: jakub

Date: Fri Mar  1 22:54:39 2013

New Revision: 196396



URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=196396

Log:

PR middle-end/56461

* tree-vect-data-refs.c (vect_permute_store_chain): Avoid using copy

method on dr_chain and result_chain.

* tree-vect-stmts.c (vectorizable_store): Only call

result_chain.create if j == 0.



Modified:

trunk/gcc/ChangeLog

trunk/gcc/tree-vect-data-refs.c

trunk/gcc/tree-vect-stmts.c


[Bug middle-end/56461] [4.8 Regression] GCC is leaking lots of memory

2013-03-01 Thread jakub at gcc dot gnu.org


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



--- Comment #20 from Jakub Jelinek jakub at gcc dot gnu.org 2013-03-01 
22:55:38 UTC ---

Author: jakub

Date: Fri Mar  1 22:55:26 2013

New Revision: 196397



URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=196397

Log:

PR middle-end/56461

* ira-build.c (ira_loop_nodes_count): New variable.

(create_loop_tree_nodes): Initialize it.

(finish_loop_tree_nodes): Use it instead of looking at current_loops.



Modified:

trunk/gcc/ChangeLog

trunk/gcc/ira-build.c


[Bug middle-end/56461] [4.8 Regression] GCC is leaking lots of memory

2013-03-01 Thread jakub at gcc dot gnu.org


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



--- Comment #21 from Jakub Jelinek jakub at gcc dot gnu.org 2013-03-01 
22:56:34 UTC ---

Author: jakub

Date: Fri Mar  1 22:56:18 2013

New Revision: 196398



URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=196398

Log:

PR middle-end/56461

* tree-ssa-loop-ivcanon.c (tree_estimate_loop_size): Release path

vector even when returning true.  Fix up function comment formatting.



Modified:

trunk/gcc/ChangeLog

trunk/gcc/tree-ssa-loop-ivcanon.c


[Bug c++/52688] static local variable can accessed from local class of function template

2013-03-01 Thread paolo.carlini at oracle dot com


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



--- Comment #9 from Paolo Carlini paolo.carlini at oracle dot com 2013-03-01 
23:08:40 UTC ---

(In reply to comment #8)

 I just came across the same issue in the context of lambdas (for posterity,

 since I spent time thinking this was specific to lambdas).

 

 Consider the following source code:

 ---

 templatetypename T

 void Foo()

 {

 static int i = 5;

 auto bar = []() { ++i; };

 bar();

 }

 

 int main()

 {

 Fooint();

 }

 ---

 GCC 4.7.0 produces the following error:

 

 # g++-4.7 -std=c++11 main.cpp

 /tmp/ccbZwBzT.o: In function `void Fooint()::{lambda()#1}::operator()()

 const':

 main.cpp:(.text+0x1a): undefined reference to `i'

 main.cpp:(.text+0x23): undefined reference to `i'

 collect2: error: ld returned 1 exit status



Can't be exactly the same issue: mainline and 4.7.3 get this one right.


[Bug bootstrap/55644] bootstrap-lto fails on current trunk (with and without profiledbootstrap)

2013-03-01 Thread matt at use dot net


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



--- Comment #10 from Matt Hargett matt at use dot net 2013-03-01 23:11:50 UTC 
---

I'll file a new bug for each warning false positive that results in a bootstrap

failure. Feel free to close this one.


[Bug c++/52688] static local variable can accessed from local class of function template

2013-03-01 Thread paolo.carlini at oracle dot com


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



Paolo Carlini paolo.carlini at oracle dot com changed:



   What|Removed |Added



 Status|NEW |RESOLVED

  Known to work||4.8.0

 Resolution||FIXED

   Target Milestone|--- |4.8.0



--- Comment #10 from Paolo Carlini paolo.carlini at oracle dot com 2013-03-01 
23:15:22 UTC ---

In fact this issue (in terms of Comment #0 and Comment #7) is fixed for 4.8.0.


[Bug c++/52688] static local variable can accessed from local class of function template

2013-03-01 Thread jared.cantwell at gmail dot com


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



--- Comment #11 from jared.cantwell at gmail dot com 2013-03-01 23:18:23 UTC ---

(In reply to comment #9)

 (In reply to comment #8)

  I just came across the same issue in the context of lambdas (for posterity,

  since I spent time thinking this was specific to lambdas).

  

  Consider the following source code:

  ---

  templatetypename T

  void Foo()

  {

  static int i = 5;

  auto bar = []() { ++i; };

  bar();

  }

  

  int main()

  {

  Fooint();

  }

  ---

  GCC 4.7.0 produces the following error:

  

  # g++-4.7 -std=c++11 main.cpp

  /tmp/ccbZwBzT.o: In function `void Fooint()::{lambda()#1}::operator()()

  const':

  main.cpp:(.text+0x1a): undefined reference to `i'

  main.cpp:(.text+0x23): undefined reference to `i'

  collect2: error: ld returned 1 exit status

 

 Can't be exactly the same issue: mainline and 4.7.3 get this one right.



It seems my comment is more aligned with

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54276 then this case.


[Bug c++/52688] static local variable can accessed from local class of function template

2013-03-01 Thread paolo.carlini at oracle dot com


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



--- Comment #12 from Paolo Carlini paolo.carlini at oracle dot com 2013-03-01 
23:23:40 UTC ---

Yes, it seems your own issue is a duplicate of PR54276, which luckily is

already fixed both in mainline and for 4.7.3.


[Bug bootstrap/55644] maybe-uninitialized false positive

2013-03-01 Thread matt at use dot net


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



Matt Hargett matt at use dot net changed:



   What|Removed |Added



Summary|bootstrap-lto fails on  |maybe-uninitialized false

   |current trunk (with and |positive

   |without profiledbootstrap)  |



--- Comment #11 from Matt Hargett matt at use dot net 2013-03-01 23:34:53 UTC 
---

The current false positives emitted:



mhargett@chert:/work/mhargett/gcc-trunk-lto-O3-debug/gcc$

/work/mhargett/gcc-trunk-lto-O3-debug/./prev-gcc/xg++

-B/work/mhargett/gcc-trunk-lto-O3-debug/./prev-gcc/

-B/u/mhargett/x86_64-unknown-linux-gnu/bin/ -nostdinc++

-B/work/mhargett/gcc-trunk-lto-O3-debug/prev-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs

-B/work/mhargett/gcc-trunk-lto-O3-debug/prev-x86_64-unknown-linux-gnu/libstdc++-v3/libsupc++/.libs

-I/work/mhargett/gcc-trunk-lto-O3-debug/prev-x86_64-unknown-linux-gnu/libstdc++-v3/include/x86_64-unknown-linux-gnu

-I/work/mhargett/gcc-trunk-lto-O3-debug/prev-x86_64-unknown-linux-gnu/libstdc++-v3/include

-I/work/mhargett/gcc-trunk/libstdc++-v3/libsupc++

-L/work/mhargett/gcc-trunk-lto-O3-debug/prev-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs

-L/work/mhargett/gcc-trunk-lto-O3-debug/prev-x86_64-unknown-linux-gnu/libstdc++-v3/libsupc++/.libs

  -O3 -g -flto=jobserver -flto-partition=none -frandom-seed=1 -gtoggle -DIN_GCC

  -fno-exceptions -fno-rtti -fasynchronous-unwind-tables -W -Wall

-Wno-narrowing -Wwrite-strings -Wcast-qual -Wmissing-format-attribute -pedantic

-Wno-long-long -Wno-variadic-macros -Wno-overlength-strings -Werror -fno-common

 -DHAVE_CONFIG_H -static-libstdc++ -static-libgcc  gcov-dump.o

libcommon.a ../libcpp/libcpp.a   ../libbacktrace/.libs/libbacktrace.a

../libiberty/libiberty.a ../libdecnumber/libdecnumber.a  -o gcov-dump

../../gcc-trunk/libbacktrace/elf.c: In function 'elf_add':

../../gcc-trunk/libbacktrace/mmapio.c:98:14: error: 'ehdr_view.len' may be used

uninitialized in this function [-Werror=maybe-uninitialized]

   if (munmap (const_cast.v, view-len)  0)

  ^

../../gcc-trunk/libbacktrace/elf.c:476:25: note: 'ehdr_view.len' was declared

here

   struct backtrace_view ehdr_view;

 ^

../../gcc-trunk/libbacktrace/mmapio.c:98:14: error: 'ehdr_view.base' may be

used uninitialized in this function [-Werror=maybe-uninitialized]

   if (munmap (const_cast.v, view-len)  0)

  ^

../../gcc-trunk/libbacktrace/elf.c:476:25: note: 'ehdr_view.base' was declared

here

   struct backtrace_view ehdr_view;

 ^

../../gcc-trunk/libbacktrace/elf.c:516:10: error: 'ehdr_view.data' may be used

uninitialized in this function [-Werror=maybe-uninitialized]

   memcpy (ehdr, ehdr_view.data, sizeof ehdr);

  ^

../../gcc-trunk/libbacktrace/elf.c:476:25: note: 'ehdr_view.data' was declared

here

   struct backtrace_view ehdr_view;

 ^





which is a false positive, because



ehdr_view's fields are correctly initialized via a call from elf_add() to

backtrace_get_view()

  view-data = (char *) map + inpage;

  view-base = map;

  view-len = size;



if the mmap() earlier in the backtrace_get_view() didn't fail, view is

initialized and the backtrace_get_view() returns 1. if that mmap() fails, view

remains uninitialized and backtrace_get_view() returns 0.



elf_add()'s invocation checks the return value of backtrace_get_view(). in the

0 (failure) case, backtrace_release_view() is never invoked:

  if (!backtrace_get_view (state, descriptor, 0, sizeof ehdr, error_callback,

   data, ehdr_view))

goto fail;



since backtrace_release_view() is never called in the case where the fields are

uninitialized, the warning is a false positive. while it occurs here with the

confluence of several optimizations, it looks like the same problem would

happen in a contrived single-file case.



attached are the temp files for the module the generated this false positive.


[Bug middle-end/55644] maybe-uninitialized false positive due to incorrect flow analysis when gotos are present

2013-03-01 Thread matt at use dot net


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



--- Comment #12 from Matt Hargett matt at use dot net 2013-03-01 23:38:51 UTC 
---

Created attachment 29566

  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=29566

files generated during compilation where false positive happens with save-temps


[Bug fortran/56500] [OOP] IMPLICIT CLASS(...) wrongly rejected

2013-03-01 Thread burnus at gcc dot gnu.org


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



Tobias Burnus burnus at gcc dot gnu.org changed:



   What|Removed |Added



 CC||burnus at gcc dot gnu.org



--- Comment #1 from Tobias Burnus burnus at gcc dot gnu.org 2013-03-02 
00:06:45 UTC ---

The problem seems to be that class_ok is not true; the reason seems to be

that gfc_build_class_symbol does not get called.



I am not sure, when it has to be called but it currently fails for:



  implicit class(*) (a-z)

  allocatable :: foo

  end

and for

  subroutine foo(x)

  implicit class(*) (a-z)

  end



The error message is printed in resolve.c's resolve_fl_var_and_proc:



  /* Constraints on polymorphic variables.  */

...

  if (!sym-attr.class_ok  !sym-attr.use_assoc  !sym-assoc)

{

  gfc_error (CLASS variable '%s' at %L must be dummy, allocatable 

 or pointer, sym-name, sym-declared_at);





gfc_build_class_symbol is currently only called in decl.c via build_struct

and via attr_decl1. One probably has to call it in symbol.c's 

gfc_set_default_type


[Bug c++/56493] Performance regression in google dense hashmap

2013-03-01 Thread redi at gcc dot gnu.org


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



Jonathan Wakely redi at gcc dot gnu.org changed:



   What|Removed |Added



 Status|WAITING |UNCONFIRMED

 Ever Confirmed|1   |0



--- Comment #6 from Jonathan Wakely redi at gcc dot gnu.org 2013-03-02 
00:56:53 UTC ---

thanks


[Bug libstdc++/56505] New: [4.7 Regression] cannot construct std::thread with pointer to member and non-pointer

2013-03-01 Thread redi at gcc dot gnu.org


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



 Bug #: 56505

   Summary: [4.7 Regression] cannot construct std::thread with

pointer to member and non-pointer

Classification: Unclassified

   Product: gcc

   Version: 4.7.3

Status: UNCONFIRMED

  Keywords: rejects-valid

  Severity: normal

  Priority: P3

 Component: libstdc++

AssignedTo: r...@gcc.gnu.org

ReportedBy: r...@gcc.gnu.org





Switching std::thread to use __bind_simple broke this code, because std::mem_fn

can't handle rvalues:



#include thread



struct S {

void f() { }

} s;



std::thread t(S::f, s);





This was fixed on trunk by PR 55463 but is a regression since 4.6


[Bug libstdc++/56505] [4.7 Regression] cannot construct std::thread with pointer to member and non-pointer

2013-03-01 Thread redi at gcc dot gnu.org


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



--- Comment #1 from Jonathan Wakely redi at gcc dot gnu.org 2013-03-02 
01:51:11 UTC ---

note to self, the follow-up patch in http://gcc.gnu.org/r193879 was also needed

on trunk


  1   2   >