Re: Modifying the datatype of a formal parameter

2011-12-19 Thread Martin Jambor
Hi,

On Sun, Dec 18, 2011 at 01:57:17PM +1100, Matt Davis wrote:
 I am using 'ipa_modify_formal_parameters()' to change the type of a function's
 formal parameter.  After my pass completes, I get a 'gimple_expand_cfg()'
 error. I must be missing some key piece here, as the failure points to a NULL
 SA.partition_to_pseudo value.  I also set_default_ssa_name() on the returned
 value from ipa_modify_formal_parameter (the adjustment's 'reduction' field).  
 Do
 I need to re-gimplify the function or run some kind of 'cleanup' or 'update'
 once I modify this formal parameter?

It's difficult to say without knowing what and at what stage of the
compilation you are doing.  The sad truth is that
ipa_modify_formal_parameters is very much crafted for its sole user
which is IPA-SRA and is probably quite less general than what the
original intention was.  Any pass using the function then must modify
the body itself to reflect the changes, just like IPA-SRA does.

SRA does not re-gimplify the modify functions, it just returns
TODO_update_ssa or (TODO_update_ssa | TODO_cleanup_cfg) if any EH
cleanup changed the CFG.

So I would suggest to have a look at IPA-SRA (grep for the only call
to ipa_modify_formal_parameters in tree-sra.c), especially at what you
do differently.  If you then have any further questions, feel free to
ask.

Martin


Re: Modifying the datatype of a formal parameter

2011-12-19 Thread Matt Davis
Hi Martin and thank you very much for your reply.  I do have some more
resolution to my issue.

On Mon, Dec 19, 2011 at 8:42 PM, Martin Jambor mjam...@suse.cz wrote:
 Hi,

 On Sun, Dec 18, 2011 at 01:57:17PM +1100, Matt Davis wrote:
 I am using 'ipa_modify_formal_parameters()' to change the type of a 
 function's
 formal parameter.  After my pass completes, I get a 'gimple_expand_cfg()'
 error. I must be missing some key piece here, as the failure points to a NULL
 SA.partition_to_pseudo value.  I also set_default_ssa_name() on the 
 returned
 value from ipa_modify_formal_parameter (the adjustment's 'reduction' field). 
  Do
 I need to re-gimplify the function or run some kind of 'cleanup' or 'update'
 once I modify this formal parameter?

 It's difficult to say without knowing what and at what stage of the
 compilation you are doing.

My pass is getting called as the last IPA pass
(PLUGIN_ALL_IPA_PASSES_END).  I do use the same function
ipa_modify_formal_parameters() to add additional parameters to
certain functions.  And it works well.

 The sad truth is that
 ipa_modify_formal_parameters is very much crafted for its sole user
 which is IPA-SRA and is probably quite less general than what the
 original intention was.  Any pass using the function then must modify
 the body itself to reflect the changes, just like IPA-SRA does.

 SRA does not re-gimplify the modify functions, it just returns
 TODO_update_ssa or (TODO_update_ssa | TODO_cleanup_cfg) if any EH
 cleanup changed the CFG.

Yep, and I do call update_ssa and cleanup_tree_cfg() after my pass.

 So I would suggest to have a look at IPA-SRA (grep for the only call
 to ipa_modify_formal_parameters in tree-sra.c), especially at what you
 do differently.  If you then have any further questions, feel free to
 ask.

Yeah, that was one of the first things I did.   Now, as mentioned, I
do have some more clarity on my issue.  Basically, I am just changing
the type of an existing formal parameter.  When I look at
gimple_expand_cfg() which is called later, I notice that the
SA.partition_to_pseudo for that parameter is NULL, to which
gimple_expand_cfg() aborts() on.  Now, that value is NULL, because
in gimple_expand_cfg() the function expand_used_vars() is called.
I need expand_one_var() called since that should fix-up the RTX
assigned to the parameter I am modifying.  Unfortunately, the bitmap,
SA.partition_has_default_def is true for the parameter, even if I do
not set it explicitly.  And since it is always set, the
expand_one_var() routine is never called.  I need to unset the
default def associated to the param to force expand_one_var() to
execute.  So, for the ssa name assigned to the parameter I am
modifying, I use SSA_NAME_IS_DEFAULT_DEF to set the flag to 'false'
This sounds like a really gross hack.  If I do this, I will need to
set a new ssa definition for the modified parameter.

-Matt


NYC: Moving and other jobs from 19$ per man on van/truck/hour,discounts for 7th and latest hours of jobtime or fix rate for whole jobs

2011-12-19 Thread support
NYC:Moving and other jobs 19$/hour/man on van/truck with no hidden fees

Our team of healthy english and russian speaking guys looking for a group or 
personal job on own minivans or rented truck
We doing deliveries and any type of movies 
From delivery of a coach to 3 bedroom house relocation
**$19/HOUR 1 MAN ON MINIVAN+$19/TRUCK No hidden fees. All other work free
Local and long distances

WE DO NOT charge for:
-stairs
-mileage
-tools
-blankets
-etc

Call Michael (646) 515-3056 any time 24/7 
my Email:  ourkons...@yahoo.co.uk






SKILLS RYTMIKO and intonation COMMUNICATIVE EXERCISES PREDTEKSTOVYE EXERCISES

Possible wrong-way example in gcc4-4-2 documentation of __builtin_expect

2011-12-19 Thread Jim Avera

Hello,

The online docs at
http://gcc.gnu.org/onlinedocs/gcc-4.4.2/gcc/Other-Builtins.html
has a confusing (to me) example of __builtin_expect.  Could someone take 
a look at this?


start quote from above-referenced page
  Since you are limited to integral expressions for exp, you should
  use constructions such as

  if (__builtin_expect (ptr != NULL, 1))
error ();
end quote

This seems backwards.The return value of __builtin_expect
is the first argument, namely (ptr != NULL), which presumably is true in 
the NON-error case.   The following example might be more helpful:


  if (__builtin_expect (ptr == NULL, 0))
error ();

Apologies if I'm not reading this correctly.

-Jim


[Bug tree-optimization/51606] [4.7 Regression] FAIL: gcc.dg/vect/pr51015.c (internal compiler error) on ppc*-*-*

2011-12-19 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51606

Jakub Jelinek jakub at gcc dot gnu.org changed:

   What|Removed |Added

 CC||jakub at gcc dot gnu.org
   Target Milestone|--- |4.7.0


[Bug fortran/51616] [4.7 Regression] gfortran.dg/quad_2.f90 fails on hppa*-*-hpux*

2011-12-19 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51616

Richard Guenther rguenth at gcc dot gnu.org changed:

   What|Removed |Added

   Target Milestone|--- |4.7.0


[Bug tree-optimization/51606] [4.7 Regression] FAIL: gcc.dg/vect/pr51015.c (internal compiler error) on ppc*-*-*

2011-12-19 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51606

Jakub Jelinek jakub at gcc dot gnu.org changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution||DUPLICATE

--- Comment #2 from Jakub Jelinek jakub at gcc dot gnu.org 2011-12-19 
09:23:00 UTC ---
Dup (and PR51580 likely too).

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


[Bug middle-end/51590] [4.7 Regression] ICE in gsi_for_stmt, at gimple-iterator.c:560

2011-12-19 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51590

Jakub Jelinek jakub at gcc dot gnu.org changed:

   What|Removed |Added

 CC||dominiq at lps dot ens.fr

--- Comment #3 from Jakub Jelinek jakub at gcc dot gnu.org 2011-12-19 
09:23:00 UTC ---
*** Bug 51606 has been marked as a duplicate of this bug. ***


[Bug testsuite/51603] ERROR: g++.dg/cpp0x/rv-cast[34].C: syntax error in target selector target c++11

2011-12-19 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51603

--- Comment #2 from Richard Guenther rguenth at gcc dot gnu.org 2011-12-19 
09:23:20 UTC ---
Works for me as well (checked on trunk and the 4.6 branch).


[Bug middle-end/51590] [4.7 Regression] ICE in gsi_for_stmt, at gimple-iterator.c:560

2011-12-19 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51590

Jakub Jelinek jakub at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |ASSIGNED
   Last reconfirmed||2011-12-19
 AssignedTo|unassigned at gcc dot   |jakub at gcc dot gnu.org
   |gnu.org |
 Ever Confirmed|0   |1

--- Comment #4 from Jakub Jelinek jakub at gcc dot gnu.org 2011-12-19 
09:25:07 UTC ---
Created attachment 26134
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=26134
gcc47-pr51590.patch

Untested fix.


[Bug c++/51601] ice in verify_live_on_entry

2011-12-19 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51601

Richard Guenther rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2011-12-19
 Ever Confirmed|0   |1

--- Comment #1 from Richard Guenther rguenth at gcc dot gnu.org 2011-12-19 
09:27:06 UTC ---
Confirmed, reducing.


[Bug c++/51600] ice in estimate_local_effects

2011-12-19 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51600

Richard Guenther rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2011-12-19
 Ever Confirmed|0   |1

--- Comment #1 from Richard Guenther rguenth at gcc dot gnu.org 2011-12-19 
09:29:13 UTC ---
Confirmed.  Reducing.


[Bug bootstrap/51599] [4.7 Regression] Bootstrap failure

2011-12-19 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51599

Richard Guenther rguenth at gcc dot gnu.org changed:

   What|Removed |Added

   Target Milestone|--- |4.7.0


[Bug tree-optimization/51596] [4.7 Regression] ICE: verify_flow_info failed: BB 6 can not throw but has an EH edge with -fnon-call-exceptions

2011-12-19 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51596

Richard Guenther rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2011-12-19
   Target Milestone|--- |4.7.0
 Ever Confirmed|0   |1

--- Comment #1 from Richard Guenther rguenth at gcc dot gnu.org 2011-12-19 
09:30:51 UTC ---
Confirmed.


[Bug c/51597] math libraryb not works

2011-12-19 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51597

Richard Guenther rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 Status|WAITING |RESOLVED
 Resolution||INVALID

--- Comment #3 from Richard Guenther rguenth at gcc dot gnu.org 2011-12-19 
09:31:25 UTC ---
linker arguments need to follow sources.


[Bug c/51595] math libraryb not works

2011-12-19 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51595

Richard Guenther rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||INVALID

--- Comment #1 from Richard Guenther rguenth at gcc dot gnu.org 2011-12-19 
09:31:41 UTC ---
.


[Bug tree-optimization/51581] Integer division by constant is not vectorized

2011-12-19 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51581

Richard Guenther rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2011-12-19
 Ever Confirmed|0   |1
   Severity|normal  |enhancement

--- Comment #2 from Richard Guenther rguenth at gcc dot gnu.org 2011-12-19 
09:34:08 UTC ---
Confirmed.


[Bug c++/51620] [c++0x] [4.6/4.7 Regression] ICE with private destructor

2011-12-19 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51620

Jakub Jelinek jakub at gcc dot gnu.org changed:

   What|Removed |Added

   Priority|P3  |P4
 CC||jakub at gcc dot gnu.org


[Bug c++/51477] [c++0x] ICE with initialization of invalid non-static data member

2011-12-19 Thread dodji at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51477

--- Comment #4 from Dodji Seketeli dodji at gcc dot gnu.org 2011-12-19 
09:47:51 UTC ---
Author: dodji
Date: Mon Dec 19 09:47:46 2011
New Revision: 182474

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=182474
Log:
PR c++/51477 - ICE with invalid NSDMI

gcc/cp/

PR c++/51477
* search.c (lookup_member): Get out early on invalid base type.

gcc/testsuite/

PR c++/51477
* g++.dg/cpp0x/nsdmi6.C: New test.

Added:
trunk/gcc/testsuite/g++.dg/cpp0x/nsdmi6.C
Modified:
trunk/gcc/cp/ChangeLog
trunk/gcc/cp/search.c
trunk/gcc/testsuite/ChangeLog


[Bug c++/51477] [c++0x] ICE with initialization of invalid non-static data member

2011-12-19 Thread dodji at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51477

Dodji Seketeli dodji at gcc dot gnu.org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution||FIXED

--- Comment #5 from Dodji Seketeli dodji at gcc dot gnu.org 2011-12-19 
09:48:32 UTC ---
This should be fixed in trunk (4.7)


[Bug libstdc++/48881] Dynamic link to libstdc++-6.dll / libgcc_s_sjlj-1.dll produces broken binaries

2011-12-19 Thread ossman at cendio dot se
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48881

Pierre Ossman ossman at cendio dot se changed:

   What|Removed |Added

 CC||ossman at cendio dot se

--- Comment #4 from Pierre Ossman ossman at cendio dot se 2011-12-19 10:11:18 
UTC ---
Well that was a bit rude. If this bug only appears under certain circumstances,
then shouldn't we try to find those circumstances rather than just saying that
if gcc works on your machine then that's good enough?


[Bug c++/51532] Invalid Code Generated for cpu32.

2011-12-19 Thread schwab at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51532

--- Comment #6 from Andreas Schwab schwab at gcc dot gnu.org 2011-12-19 
10:14:17 UTC ---
Author: schwab
Date: Mon Dec 19 10:14:13 2011
New Revision: 182475

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=182475
Log:
PR target/51532
* config/m68k/m68k.h (FL_CAS, TARGET_CAS): Define.
* config/m68k/m68k.c (FL_FOR_isa_20): Add FL_CAS.
* config/m68k/sync.md: Use TARGET_CAS instead of (TARGET_68020 ||
TARGET_68040).

Modified:
trunk/gcc/ChangeLog
trunk/gcc/config/m68k/m68k.c
trunk/gcc/config/m68k/m68k.h
trunk/gcc/config/m68k/sync.md


[Bug target/51532] Invalid Code Generated for cpu32.

2011-12-19 Thread sch...@linux-m68k.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51532

Andreas Schwab sch...@linux-m68k.org changed:

   What|Removed |Added

 Status|NEW |RESOLVED
  Component|c++ |target
 Resolution||FIXED

--- Comment #7 from Andreas Schwab sch...@linux-m68k.org 2011-12-19 10:15:03 
UTC ---
Fixed.


[Bug c++/51619] [c++0x] [4.6/4.7 Regression] ICE with array class member

2011-12-19 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51619

Jakub Jelinek jakub at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |ASSIGNED
   Last reconfirmed||2011-12-19
 AssignedTo|unassigned at gcc dot   |jakub at gcc dot gnu.org
   |gnu.org |
 Ever Confirmed|0   |1

--- Comment #1 from Jakub Jelinek jakub at gcc dot gnu.org 2011-12-19 
10:20:37 UTC ---
Created attachment 26135
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=26135
gcc47-pr51619.patch

Untested fix.


[Bug libstdc++/48881] Dynamic link to libstdc++-6.dll / libgcc_s_sjlj-1.dll produces broken binaries

2011-12-19 Thread ktietz at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48881

--- Comment #5 from Kai Tietz ktietz at gcc dot gnu.org 2011-12-19 10:23:51 
UTC ---
Well, I wouldn't say that this was rude.  The issue here is most likely, that
the runtime DLLs by gcc aren't in search-path when you are trying to execute
your built application.  But this isn't a subject of gcc itself.  I see that
you have this issue, but user-support questions on how to setup environment for
built applications, or what is necessary to provide along-side
built-application so that they run, is more something related to gcc's user ML,
or even better to ask directly for it on mingw.org's or mingw-w64's public
user-mailing lists.  On those later lists you can be sure that you will find a
solution for your issue.


[Bug libstdc++/51609] [C++11] unique_ptrconst T[]::reset rejects cv-compatible argument pointers

2011-12-19 Thread redi at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51609

Jonathan Wakely redi at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||INVALID

--- Comment #4 from Jonathan Wakely redi at gcc dot gnu.org 2011-12-19 
10:26:57 UTC ---
OK, thanks, Daniel


[Bug libstdc++/51617] [C++0x] async(f) isn't.

2011-12-19 Thread redi at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51617

--- Comment #2 from Jonathan Wakely redi at gcc dot gnu.org 2011-12-19 
10:43:22 UTC ---
Yes, this was an intentional choice (as I described in message
c++std-lib-30840) to ensure the system doesn't get killed by a fork bomb, e.g.
writing a parallel sort algorithm using async which launches a new thread for
every partition. I tried it, it wasn't pretty :)

At some point I will use getloadavg() or equivalent functionality to check the
system load and decide whether to launch a new thread or not, until then the
safer choice is to require a user to explicitly request it (then it's the
user's fault if they fork bomb their machine!)


[Bug libstdc++/51617] [C++0x] async(f) isn't.

2011-12-19 Thread redi at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51617

Jonathan Wakely redi at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2011-12-19
 Blocks||49204
 Ever Confirmed|0   |1
   Severity|normal  |enhancement

--- Comment #3 from Jonathan Wakely redi at gcc dot gnu.org 2011-12-19 
10:49:41 UTC ---
confirming as an enhancement request


[Bug tree-optimization/51596] [4.7 Regression] ICE: verify_flow_info failed: BB 6 can not throw but has an EH edge with -fnon-call-exceptions

2011-12-19 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51596

Jakub Jelinek jakub at gcc dot gnu.org changed:

   What|Removed |Added

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

--- Comment #2 from Jakub Jelinek jakub at gcc dot gnu.org 2011-12-19 
10:51:47 UTC ---
Created attachment 26136
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=26136
gcc47-pr51596.patch

Untested fix.


[Bug java/51465] internal compiler error: Segmentation fault

2011-12-19 Thread gykarsai at all dot hu
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51465

--- Comment #2 from Kiskunsag gykarsai at all dot hu 2011-12-19 10:54:50 UTC 
---
Created attachment 26137
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=26137
file for Error message by compilation

Error message by compilation


[Bug java/51465] internal compiler error: Segmentation fault

2011-12-19 Thread gykarsai at all dot hu
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51465

--- Comment #3 from Kiskunsag gykarsai at all dot hu 2011-12-19 10:57:02 UTC 
---
Created attachment 26138
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=26138
Breaked assembler source

Breaked by error assembler source of converted JAVA jar


[Bug java/51465] internal compiler error: Segmentation fault

2011-12-19 Thread gykarsai at all dot hu
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51465

Kiskunsag gykarsai at all dot hu changed:

   What|Removed |Added

   Severity|normal  |blocker


[Bug libstdc++/51617] [C++0x] async(f) isn't.

2011-12-19 Thread dave at boostpro dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51617

--- Comment #4 from Dave Abrahams dave at boostpro dot com 2011-12-19 
10:58:46 UTC ---
(In reply to comment #2)
 Yes, this was an intentional choice (as I described in message
 c++std-lib-30840) to ensure the system doesn't get killed by a fork bomb, e.g.
 writing a parallel sort algorithm using async which launches a new thread for
 every partition. I tried it, it wasn't pretty :)

Hey, cool; I tried it too.  I mean, when I discovered async wasn't async. :-)

 At some point I will use getloadavg() or equivalent functionality to check the
 system load and decide whether to launch a new thread or not, until then the
 safer choice is to require a user to explicitly request it (then it's the
 user's fault if they fork bomb their machine!)

Yeah, but in the meantime you could also just limit async() threads to
hardware_concurrency() using the technique shown in my attachment.  It wouldn't
necessarily guarantee good performance but it would be enough to prevent async
from fork bombing while still allowing some semi-intelligent amount of
parallelism.


[Bug tree-optimization/51601] [4.7 Regression] ice in verify_live_on_entry

2011-12-19 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51601

Richard Guenther rguenth at gcc dot gnu.org changed:

   What|Removed |Added

  Component|c++ |tree-optimization
   Target Milestone|--- |4.7.0
Summary|ice in verify_live_on_entry |[4.7 Regression] ice in
   ||verify_live_on_entry

--- Comment #2 from Richard Guenther rguenth at gcc dot gnu.org 2011-12-19 
11:04:30 UTC ---
int 
getDuration(int dot_)
{
  int duration = (int) 32;
  int dotLength = duration;
  for (int i = 0; i  dot_; ++i) 
  dotLength /= 2;
  duration += dotLength;
  return duration;
}

Caused by the vectorizer.


[Bug libstdc++/51617] [C++0x] async(f) isn't.

2011-12-19 Thread redi at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51617

--- Comment #5 from Jonathan Wakely redi at gcc dot gnu.org 2011-12-19 
11:13:25 UTC ---
That would require a global integer somewhere to count the threads, which would
probably have to be kept forever to maintain ABI compatibility.  If I had time
to implement a temporary semi-intelligent fix then I'd rather just do it
properly instead :)


[Bug middle-end/51590] [4.7 Regression] ICE in gsi_for_stmt, at gimple-iterator.c:560

2011-12-19 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51590

--- Comment #5 from Jakub Jelinek jakub at gcc dot gnu.org 2011-12-19 
11:16:11 UTC ---
*** Bug 51601 has been marked as a duplicate of this bug. ***


[Bug tree-optimization/51601] [4.7 Regression] ice in verify_live_on_entry

2011-12-19 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51601

Jakub Jelinek jakub at gcc dot gnu.org changed:

   What|Removed |Added

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

--- Comment #3 from Jakub Jelinek jakub at gcc dot gnu.org 2011-12-19 
11:16:11 UTC ---
Dup.

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


[Bug c++/51328] [4.4/4.5/4.6/4.7 Regression] ICE on invalid template parameter

2011-12-19 Thread paolo.carlini at oracle dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51328

Paolo Carlini paolo.carlini at oracle dot com changed:

   What|Removed |Added

 CC||jason at gcc dot gnu.org

--- Comment #2 from Paolo Carlini paolo.carlini at oracle dot com 2011-12-19 
11:22:34 UTC ---
Fixing the ICE seems rather easy (an overeager gcc_assert?), but then we
reject:

templatetypename T struct A
{
  void foo(Atypename T::~T);
};

which EDG accepts, apparently. Jason, is this also a rejects-valid?


[Bug fortran/51605] internal compiler error gfc_trans_block_construct, at fortran/trans-stmt.c:984

2011-12-19 Thread burnus at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51605

--- Comment #8 from Tobias Burnus burnus at gcc dot gnu.org 2011-12-19 
11:39:55 UTC ---
Created attachment 26139
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=26139
Draft patch (for the rejects-valid part, not for the ICE)

Draft patch, which allows again
  ptr = associate-name
It also fixes an ICE (class_ok part, (a)) and issues with coarrays and
select type. [Coarrays now fail after resolution with an ICE.]

Test cases (a) to (d):

type t
end type t
class(t), target :: p1   ! (a) Invalid (was ICEing before)
!class(t), allocatable, target :: p1 ! (b) Valid (unchanged by the patch)
!class(t), allocatable :: p1 ! (c) Correctly fails (ditto)
!class(t), pointer :: p1 ! (d) Valid (now accepted)
class(t), pointer :: p2

select type(p1)
  type is(t)
p2 = p1
  class is(t)
p2 = p1
end select
end

 * * *

Having fixed the rejects-valid issue, one again hits:
  internal compiler error: in gfc_trans_block_construct, at
fortran/trans-stmt.c:1215

1209  ns = code-ext.block.ns;
1211  sym = ns-proc_name;
1215  gcc_assert (!sym-tlink);

Here, sym-name is eval_int_expr and sym-tlink == sym.


The issue is seemingly the following code in an internal procedure:
  integer_or_logical: select type(symbol_ptr)
  ...
  end select integer_or_logical

and then another internal procedure:

  subroutine integer_or_logical( expr_str, flag)
...
  end subroutine integer_or_logical

  recursive subroutine eval_int_expr( int_expr, value)

The label integer_or_logical of the block some clashes with the same-named
subroutine - and thus marks the subroutine which follows somehow as
EXPR_BLOCK?!?


[Bug libstdc++/51618] synchronous futures are slow

2011-12-19 Thread redi at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51618

--- Comment #1 from Jonathan Wakely redi at gcc dot gnu.org 2011-12-19 
11:51:52 UTC ---
Could you expand on what you mean by no attached synchronization?

If a global future visible to all threads stores a deferred function then it
still needs synchronization to ensure only one thread can invoke the deferred
function and that other threads will wait for it to complete.

std::async is not meant to be the fastest or most flexible solution, it's meant
to be a simple way to exploit a limited amount of concurrency, without breaking
the Kona compromise.  Better solutions are suitable for TR2.


[Bug c/51622] New: GCC generates bad code that generate big executable sizes when using _Decimal*

2011-12-19 Thread mingodad at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51622

 Bug #: 51622
   Summary: GCC generates bad code that generate big executable
sizes when using _Decimal*
Classification: Unclassified
   Product: gcc
   Version: 4.6.1
Status: UNCONFIRMED
  Severity: major
  Priority: P3
 Component: c
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: mingo...@gmail.com


Created attachment 26140
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=26140
Program and a batch file to show how strange is gcc code generation when using
_Decimal*

The main point here is to demonstrate that gcc is capable to generate good code
size when using _Decimal* but for some reason it get lost with some code
combinations and generates very big executables unnecessarily making a bad
balance between functionality/size.

Here is a program that demonstrate that gcc is generating bad code resulting in
big executables when using _Decimal*.

There is a main.c with several operations on _Decimal64, few on _Decimal128
with some combination of the code (with all operations) the final executable
file is 8KB but with a different combination (again with all operations) the
executable is 2.206KB or 2.2MB. This last one is very strange because the
diference betwen then is calling a printf to print several existing _Decimal64
variable (the biggest 2.2MB) and calling a printf to print only one existing
_Decimal64 variable ((double)discount_over_sales the smallest 8KB but if we try
to any other existing variables it goes to 2.2MB).

gcc -s -O2 -DWITH_TMP main.c -o smallest.exe - 8KB
gcc -s -O2 -DWITH_ONE_BIG_PRINTF -DWITH_TMP main.c -o strange-big-size-jump.exe
- 2.206KB or 2.2MB
gcc -s -O2 main.c -o good1.exe - 8KB
gcc -s -O2 -DWITH_DEC128 -DWITH_ISNAN -DWITH_MPRINTF main.c printf.c -o
biggest.exe - 2.444KB or 2.4MB
gcc -s -O2 -DWITH_MPRINTF main.c printf.c -o optimus.exe - 154KB
gcc -s -O2 -DWITH_DEC128 -DWITH_MPRINTF main.c printf.c -o good2.exe - 367KB


[Bug libstdc++/51618] synchronous futures are slow

2011-12-19 Thread dave at boostpro dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51618

--- Comment #2 from Dave Abrahams dave at boostpro dot com 2011-12-19 
12:11:33 UTC ---
on Mon Dec 19 2011, redi at gcc dot gnu.org gcc-bugzilla-AT-gcc.gnu.org
wrote:

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

 --- Comment #1 from Jonathan Wakely redi at gcc dot gnu.org 2011-12-19 
 11:51:52 UTC ---
 Could you expand on what you mean by no attached synchronization?

There's not much to say.  Attached is probably superfluous.

 If a global future visible to all threads stores a deferred function then it
 still needs synchronization to ensure only one thread can invoke the deferred
 function and that other threads will wait for it to complete.

I'm confused.  IIUC even shared_futures aren't supposed to be accessed
concurrently from multiple threads.  Why would multiple threads be
accessing a single plain future?

 std::async is not meant to be the fastest or most flexible solution, it's 
 meant
 to be a simple way to exploit a limited amount of concurrency, without 
 breaking
 the Kona compromise.  Better solutions are suitable for TR2.

I know it's not supposed to be the fastest, but it seems as though it
can be optimized.  If a trivial parallel mergesort using async can run
3x faster than it does now, that's a huge win for users: it means they
can put off trying complex and/or dangerous alternatives.


[Bug c/51622] GCC generates bad code that generate big executable sizes when using _Decimal*

2011-12-19 Thread mingodad at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51622

--- Comment #1 from Domingo Alvarez mingodad at gmail dot com 2011-12-19 
12:17:28 UTC ---
If code generation is solved probably we can have better results with the
following:

lua 5.1.4 with double - 150KB
lua 5.1.4 with _Decimal64 - 2.4MB *with ***bad code generation
lua 5.1.4 with _Decimal64 - 160KB *with hopefully ***good code generation

sqlite3 with double - 500KB
sqlite3 with _Decimal64 - 3MB *with ***bad code generation
sqlite3 with _Decimal64 - 530KB *with hopefully ***good code generation

The same proportion probably will apply to any other program using _Decimal*
wich will make using _Decimal* a very interesting option.


[Bug libstdc++/48881] Dynamic link to libstdc++-6.dll / libgcc_s_sjlj-1.dll produces broken binaries

2011-12-19 Thread astrand at cendio dot se
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48881

Peter Åstrand astrand at cendio dot se changed:

   What|Removed |Added

 Status|RESOLVED|UNCONFIRMED
 Resolution|WORKSFORME  |

--- Comment #6 from Peter Åstrand astrand at cendio dot se 2011-12-19 
12:23:59 UTC ---
(In reply to comment #5)
 Well, I wouldn't say that this was rude.  The issue here is most likely, that
 the runtime DLLs by gcc aren't in search-path when you are trying to execute
 your built application. 

This is not how Windows works. If the DLLs aren't found, the application isn't
started at all. But in this case, the binaries do start, but immediately
crashes. Thus, this cannot be an installation problem. 

It's of course possible that our *build* of GCC is different in some way that
triggers this bug. But something is clearly wrong here, and as I mentioned in
the original report, 4.4.3 worked fine. We are working a Subversion based build
environment, and our build of 4.5.2 is therefore done in exactly the same way
as 4.4.3, which worked. We did however upgrade binutils from 2.20 to 2.21 in
the same step. We also migrated our thread fixes. I will attach both patches. 

Can you reproduce the problem if you are using the same settings as we?


[Bug libstdc++/48881] Dynamic link to libstdc++-6.dll / libgcc_s_sjlj-1.dll produces broken binaries

2011-12-19 Thread astrand at cendio dot se
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48881

--- Comment #7 from Peter Åstrand astrand at cendio dot se 2011-12-19 
12:24:44 UTC ---
Created attachment 26141
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=26141
gcc-4.4.3-threads.patch


[Bug c/51622] GCC generates bad code that generate big executable sizes when using _Decimal*

2011-12-19 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51622

Richard Guenther rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |WAITING
   Last reconfirmed||2011-12-19
 Ever Confirmed|0   |1

--- Comment #2 from Richard Guenther rguenth at gcc dot gnu.org 2011-12-19 
12:25:16 UTC ---
Which architecture are you compiling for?


[Bug libstdc++/48881] Dynamic link to libstdc++-6.dll / libgcc_s_sjlj-1.dll produces broken binaries

2011-12-19 Thread astrand at cendio dot se
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48881

--- Comment #8 from Peter Åstrand astrand at cendio dot se 2011-12-19 
12:25:13 UTC ---
Created attachment 26142
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=26142
gcc-4.5.2-threads.patch


[Bug c/51622] GCC generates bad code that generate big executable sizes when using _Decimal*

2011-12-19 Thread redi at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51622

Jonathan Wakely redi at gcc dot gnu.org changed:

   What|Removed |Added

   Severity|major   |normal

--- Comment #3 from Jonathan Wakely redi at gcc dot gnu.org 2011-12-19 
12:33:42 UTC ---
There are already some partial explanations in bug 51364


[Bug target/51003] bfin ICE compiling libgcc in gen_const_vector, at emit-rtl.c:5476

2011-12-19 Thread bernds at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51003

Bernd Schmidt bernds at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||FIXED

--- Comment #3 from Bernd Schmidt bernds at gcc dot gnu.org 2011-12-19 
12:41:00 UTC ---
Fixed.


[Bug fortran/51616] [4.7 Regression] gfortran.dg/quad_2.f90 fails on hppa*-*-hpux*

2011-12-19 Thread dave.anglin at bell dot net
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51616

--- Comment #6 from dave.anglin at bell dot net 2011-12-19 13:05:34 UTC ---
On 18-Dec-11, at 9:21 PM, sgk at troutmask dot apl.washington.edu wrote:

 http://gcc.gnu.org/ml/fortran/2011-11/msg00051.html

 hpux11 appears to be yet another OS that has sufficient quad
 support that gfortran detects a REAL(16) type, but the OS
 lacks the basic libm functions.


Yes.

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


[Bug bootstrap/51388] Configure failure to detect unsupported warning options for non-bootstrap builds (including cross builds)

2011-12-19 Thread schwab at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51388

--- Comment #9 from Andreas Schwab schwab at gcc dot gnu.org 2011-12-19 
13:12:31 UTC ---
Author: schwab
Date: Mon Dec 19 13:12:26 2011
New Revision: 182478

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=182478
Log:
Check for warning flags without no- prefix

config/:
PR bootstrap/51388
* warnings.m4 (ACX_PROG_CC_WARNING_OPTS)
(ACX_PROG_CC_WARNING_ALMOST_PEDANTIC): Run the test without the
no- prefix.
fixincludes/:
* configure: Regenerate.
gcc/:
* configure: Regenerate.
libcpp/:
* configure: Regenerate.
libdecnumber/:
* configure: Regenerate.
libiberty/:
* configure: Regenerate.
lto-plugin/:
* configure: Regenerate.

Modified:
trunk/config/ChangeLog
trunk/config/warnings.m4
trunk/fixincludes/ChangeLog
trunk/fixincludes/configure
trunk/gcc/ChangeLog
trunk/gcc/configure
trunk/libcpp/ChangeLog
trunk/libcpp/configure
trunk/libdecnumber/ChangeLog
trunk/libdecnumber/configure
trunk/libiberty/ChangeLog
trunk/libiberty/configure
trunk/lto-plugin/ChangeLog
trunk/lto-plugin/configure


[Bug libstdc++/51618] synchronous futures are slow

2011-12-19 Thread redi at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51618

--- Comment #3 from Jonathan Wakely redi at gcc dot gnu.org 2011-12-19 
13:13:32 UTC ---
(In reply to comment #2)
 I'm confused.  IIUC even shared_futures aren't supposed to be accessed
 concurrently from multiple threads.  Why would multiple threads be
 accessing a single plain future?

future::wait() and shared_future::get() are const member functions, so must not
introduce data races if called from multiple threads (17.6.5.9
[res.on.data.races]). So it doesn't matter _why_ someone might want to do that,
they're not forbidden from doing so and therefore we have to provide some level
of internal synchronization to prevent data races.

I'm not claiming the current implementation is optimal but I don't think we can
just turn off all synchronization for deferred functions, and identifying if we
can make specific changes for deferred functions is not high on my priority
list.  I'd rather spend time replacing the mutex-protected
std::unique_ptrResult_base with a std::atomicResult_base*, which could
benefit all uses of futures rather than just the deferred async case. Although
maybe sub-optimal the current mutex-based impl has the advantage of (relative)
simplicity because the unique_ptr manages the result's lifetime and the mutex
is also used by the condition_variable that signals when the result becomes
ready.

If you have specific suggestions for improving anything then I'll be happy to
hear them, but don't expect me to work on this otherwise, sorry.


[Bug fortran/51605] internal compiler error gfc_trans_block_construct, at fortran/trans-stmt.c:984

2011-12-19 Thread burnus at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51605

--- Comment #9 from Tobias Burnus burnus at gcc dot gnu.org 2011-12-19 
13:17:15 UTC ---
Dan: Your program should work (with 4.6.2 - or with 4.7 + my patch) if you
either change either the SELECT TYPE label or the subroutine name from
integer_or_logical to something else.

 * * *

Reduced test case for the ICE:

contains
  subroutine foo
BLOCK_NAME: block
end block BLOCK_NAME
  end subroutine foo

  subroutine BLOCK_NAME()
  end subroutine BLOCK_NAME

  subroutine bar()
  end subroutine bar
end


[Bug rtl-optimization/51271] [4.7 Regression] ICE in in maybe_record_trace_start, at dwarf2cfi.c:2244

2011-12-19 Thread vries at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51271

--- Comment #15 from vries at gcc dot gnu.org 2011-12-19 13:17:23 UTC ---
 given this definition, maybe insn 141 should be marked as frame-related, since
 it restores a reg in the epilogue.

It seems to be the other way round: insn 141 is ignored by scan_insn_after,
because:
- it is not frame-related, and 
- doesn't contain a REG_ARGS_SIZE note.
The problematic insn is insn 143. That one has the REG_CFA notes attached, and
is causes changes in cfi state.

In scan_trace, we're handling insn 143 as element in the delay slot of an
annulling branch, executed only on taken branch:
...
(gdb) call debug_rtx (elt)
(insn/s/f 143 79 162 (set (reg/f:SI 29 $sp)
(plus:SI (reg/f:SI 29 $sp)
(const_int 16 [0x10]))) 10 {*addsi3}
 (expr_list:REG_CFA_DEF_CFA (reg/f:SI 29 $sp)
(expr_list:REG_CFA_RESTORE (reg:DI 28 $28)
(nil
...

The row state at that point is:
...
(gdb) call debug_cfi_row (cur_row)
.cfi_def_cfa 29, 16
.cfi_offset 28, -8
...

we then execute scan_insn_after to setup the trace at the target of the jump:
...
(gdb) 
2460  scan_insn_after (elt);


at which point the REG_CFAs have been taken into account:
...
(gdb) call debug_cfi_row (cur_row)
.cfi_def_cfa 29, 0
...

we then try to restore for the fallthru path:
...
2467  cur_trace-end_true_args_size = restore_args_size;
(gdb) n
2468  cur_row-cfa = this_cfa;
(gdb) 
...

but the state is not sufficiently restored:
...
(gdb) call debug_cfi_row (cur_row)
.cfi_def_cfa 29, 16
...
The '.cfi_offset 28, -8' is missing.

This tentative patch fixes the problem for the testcase:
...
Index: src/gcc-mainline/gcc/dwarf2cfi.c
===
--- src/gcc-mainline/gcc/dwarf2cfi.c (revision 182341)
+++ src/gcc-mainline/gcc/dwarf2cfi.c (working copy)
@@ -2452,10 +2452,12 @@ scan_trace (dw_trace_info *trace)
   if (INSN_FROM_TARGET_P (elt))
 {
   HOST_WIDE_INT restore_args_size;
+  cfi_vec save_row_reg_save;

   add_cfi_insn = NULL;
   restore_args_size = cur_trace-end_true_args_size;
   cur_cfa = cur_row-cfa;
+  save_row_reg_save = VEC_copy (dw_cfi_ref, gc, cur_row-reg_save);

   scan_insn_after (elt);

@@ -2466,6 +2468,7 @@ scan_trace (dw_trace_info *trace)

   cur_trace-end_true_args_size = restore_args_size;
   cur_row-cfa = this_cfa;
+  cur_row-reg_save = save_row_reg_save;
   cur_cfa = this_cfa;
   continue;
 }
...


[Bug libstdc++/51618] synchronous futures are slow

2011-12-19 Thread dave at boostpro dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51618

--- Comment #4 from Dave Abrahams dave at boostpro dot com 2011-12-19 
13:24:16 UTC ---
Not a problem; thanks for looking.


[Bug debug/51471] [4.7 Regression] gcc.c-torture/execute/20040811-1.c and gcc.c-torture/execute/vla-dealloc-1.c fails at -O3 -g on mips64-linux-gnu

2011-12-19 Thread vries at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51471

--- Comment #13 from vries at gcc dot gnu.org 2011-12-19 13:23:41 UTC ---
(In reply to comment #11)
 This is the patch which I am testing:
 Index: genattrtab.c
 ===
 --- genattrtab.c(revision 182342)
 +++ genattrtab.c(working copy)
 @@ -4280,6 +4280,11 @@ write_eligible_delay (const char *kind)
printf (  if (!INSN_P (candidate_insn))\n);
printf (return 0;\n);
printf (\n);
 +  /* Frame related instructions are hard to put in the delay slot for
 + debugging info reasons. */
 +  printf (  if (RTX_FRAME_RELATED_P (candidate_insn))\n);
 +  printf (return 0;\n);
 +  printf (\n);
 
/* If more than one delay type, find out which type the delay insn is.  */

What is the exact reason we're completely avoiding scheduling frame-related
insns in delay slots? Why don't we try to fix it like this?:
...
Index: src/gcc-mainline/gcc/reorg.c
===
--- src/gcc-mainline/gcc/reorg.c (revision 182341)
+++ src/gcc-mainline/gcc/reorg.c (working copy)
@@ -2716,7 +2716,7 @@ fill_slots_from_thread (rtx insn, rtx co
   if (!must_annul
(condition == const_true_rtx
   || (! insn_sets_resource_p (trial, opposite_needed, true)
-   ! may_trap_or_fault_p (pat
+   ! may_trap_or_fault_p (pat)  !RTX_FRAME_RELATED_P
(trial
 {
   old_trial = trial;
   trial = try_split (pat, trial, 0);
...
AFAIU, the only thing causing problems is frame-related insns being speculated.


[Bug bootstrap/51572] [4.7 Regression] LTO bootstrap failed with bootstrap-profiled

2011-12-19 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51572

Richard Guenther rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution||FIXED

--- Comment #18 from Richard Guenther rguenth at gcc dot gnu.org 2011-12-19 
13:34:09 UTC ---
Original profilebootstrap fail is fixed (from looking at gcc-testresults).


[Bug bootstrap/51572] [4.7 Regression] LTO bootstrap failed with bootstrap-profiled

2011-12-19 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51572

--- Comment #19 from Richard Guenther rguenth at gcc dot gnu.org 2011-12-19 
13:39:04 UTC ---
Author: rguenth
Date: Mon Dec 19 13:37:06 2011
New Revision: 182479

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=182479
Log:
2011-12-19  Richard Guenther  rguent...@suse.de

PR lto/51572
* tree.c (free_lang_data_in_type): Do not unlink TYPE_DECL
from TYPE_FIELDS.
(find_decls_types_r): Walk TYPE_DECLs in TYPE_FIELDS.
* tree-streamer-out.c (write_ts_field_decl_tree_pointers): Do
not stream TREE_CHAIN.
(write_ts_type_non_common_tree_pointers): Stream TYPE_FIELDS
using streamer_write_chain.
* tree-streamer-in.c (lto_input_ts_field_decl_tree_pointers):
Do not stream TREE_CHAIN.
(lto_input_ts_type_non_common_tree_pointers): Stream TYPE_FIELDS
using streamer_read_chain.
* gimple-streamer-in.c (input_gimple_stmt): Skip non-FIELD_DECLs.
* gimple.c (gimple_canonical_types_compatible_p): Properly
handle trailing non-FIELD_DECLs in TYPE_FIELDS.

* g++.dg/lto/pr51572-2_0.C: New testcase.

Added:
trunk/gcc/testsuite/g++.dg/lto/pr51572-2_0.C
Modified:
trunk/gcc/ChangeLog
trunk/gcc/gimple-streamer-in.c
trunk/gcc/gimple.c
trunk/gcc/testsuite/ChangeLog
trunk/gcc/tree-streamer-in.c
trunk/gcc/tree-streamer-out.c
trunk/gcc/tree.c


[Bug tree-optimization/51600] [4.7 Regression] ice in estimate_local_effects

2011-12-19 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51600

Richard Guenther rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 CC||jamborm at gcc dot gnu.org
  Component|c++ |tree-optimization
   Target Milestone|--- |4.7.0
Summary|ice in  |[4.7 Regression] ice in
   |estimate_local_effects  |estimate_local_effects

--- Comment #2 from Richard Guenther rguenth at gcc dot gnu.org 2011-12-19 
13:44:41 UTC ---
templateclass T inline T min(T a, T b) { return a  b ? a : b; }
double cornerbound(double *P, double (*m)(double, double))
{
  double b=m(P[0],P[3]);
  return m(b,P[12]);
}
void bound(double *P, double (*m)(double, double), double b)
{
  m(b,cornerbound(P,m));
}
void bounds(double fuzz, unsigned maxdepth)
{
  double Px[]={};
  double bx=Px[0];
  bound(Px,min,bx);
}


[Bug tree-optimization/51606] [4.7 Regression] FAIL: gcc.dg/vect/pr51015.c (internal compiler error) on ppc*-*-*

2011-12-19 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51606

--- Comment #3 from Jakub Jelinek jakub at gcc dot gnu.org 2011-12-19 
14:22:36 UTC ---
Author: jakub
Date: Mon Dec 19 14:22:29 2011
New Revision: 182480

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=182480
Log:
PR middle-end/51590
PR tree-optimization/51606
* tree-vect-patterns.c (append_pattern_def_seq, new_pattern_def_seq):
New inline functions.
(vect_recog_over_widening_pattern,
vect_recog_vector_vector_shift_pattern,
vect_recog_sdivmod_pow2_pattern, vect_recog_mixed_size_cond_pattern,
adjust_bool_pattern_cast, vect_recog_bool_pattern): Use them.

* gcc.dg/vect/pr51590.c: New test.

Added:
trunk/gcc/testsuite/gcc.dg/vect/pr51590.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/testsuite/ChangeLog
trunk/gcc/tree-vect-patterns.c


[Bug middle-end/51590] [4.7 Regression] ICE in gsi_for_stmt, at gimple-iterator.c:560

2011-12-19 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51590

--- Comment #6 from Jakub Jelinek jakub at gcc dot gnu.org 2011-12-19 
14:22:36 UTC ---
Author: jakub
Date: Mon Dec 19 14:22:29 2011
New Revision: 182480

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=182480
Log:
PR middle-end/51590
PR tree-optimization/51606
* tree-vect-patterns.c (append_pattern_def_seq, new_pattern_def_seq):
New inline functions.
(vect_recog_over_widening_pattern,
vect_recog_vector_vector_shift_pattern,
vect_recog_sdivmod_pow2_pattern, vect_recog_mixed_size_cond_pattern,
adjust_bool_pattern_cast, vect_recog_bool_pattern): Use them.

* gcc.dg/vect/pr51590.c: New test.

Added:
trunk/gcc/testsuite/gcc.dg/vect/pr51590.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/testsuite/ChangeLog
trunk/gcc/tree-vect-patterns.c


[Bug tree-optimization/51596] [4.7 Regression] ICE: verify_flow_info failed: BB 6 can not throw but has an EH edge with -fnon-call-exceptions

2011-12-19 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51596

--- Comment #3 from Jakub Jelinek jakub at gcc dot gnu.org 2011-12-19 
14:24:34 UTC ---
Author: jakub
Date: Mon Dec 19 14:24:29 2011
New Revision: 182481

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=182481
Log:
PR tree-optimization/51596
* tree-cfg.c (replace_uses_by): Call gimple_purge_dead_eh_edges
when needed.

* g++.dg/opt/pr51596.C: New test.

Added:
trunk/gcc/testsuite/g++.dg/opt/pr51596.C
Modified:
trunk/gcc/ChangeLog
trunk/gcc/testsuite/ChangeLog
trunk/gcc/tree-cfg.c


[Bug tree-optimization/51596] [4.7 Regression] ICE: verify_flow_info failed: BB 6 can not throw but has an EH edge with -fnon-call-exceptions

2011-12-19 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51596

Jakub Jelinek jakub at gcc dot gnu.org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution||FIXED

--- Comment #4 from Jakub Jelinek jakub at gcc dot gnu.org 2011-12-19 
14:27:13 UTC ---
Fixed.


[Bug middle-end/51590] [4.7 Regression] ICE in gsi_for_stmt, at gimple-iterator.c:560

2011-12-19 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51590

Jakub Jelinek jakub at gcc dot gnu.org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution||FIXED

--- Comment #7 from Jakub Jelinek jakub at gcc dot gnu.org 2011-12-19 
14:26:48 UTC ---
Fixed.


[Bug c++/51328] [4.4/4.5/4.6/4.7 Regression] ICE on invalid template parameter

2011-12-19 Thread paolo.carlini at oracle dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51328

--- Comment #3 from Paolo Carlini paolo.carlini at oracle dot com 2011-12-19 
14:29:44 UTC ---
Well, rejects it a instantiation time.

Thus I guess rejecting it earlier is fine, but we don't want to misled people
by saying that 'typename T::~T' would be ok.


[Bug c/51622] GCC generates bad code that generate big executable sizes when using _Decimal*

2011-12-19 Thread mingodad at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51622

--- Comment #4 from Domingo Alvarez mingodad at gmail dot com 2011-12-19 
14:30:26 UTC ---
Created attachment 26143
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=26143
Another program to demonstrate gcc bad code generation

On the previous example program my conclusions doesn't make much senes because
gcc was optimizing the code and removing all code without side effects or in
other words the small executables end up almost empty (good job of gcc).

This new program contains the previous and add a program main2.c that when
compiled without any optimization to not ending empty demonstrate the problem.

Doing almost any arithmetic operations with _Decimal64 without mix with
_Decimal128 or with automatic convertion to double gives an executable of
270KB.

If we mix with _Decimal128 gives executable of 473KB.

Now if we add a call to isnan the executable goes to 2.374KB, almost 2MB
monolithic code only to isnan or even if we use ceil or floor or any other math
functions, it seems too much for only a small adittion.

And if I use a home made function to convert from _Decima64 to double there is
now increase on executable size, but if using automatic generated conversion
from gcc it grows to 2.374KB.

I think that there is a problem with the way the _Decimal* library is coded,
maybe all in one single code file instead of small ones with only one function,
because with one function per code file adding a new function call will not
link a lot of unnecessary code.

gcc main2.c -o no-opt-small.exe - 270KB
gcc -DWITH_GCC_DEC2DBL main2.c -o no-opt-gcc-dec2dbl.exe - 2.374KB
gcc -DWITH_MIX128 main2.c -o no-opt-mix128.exe - 473KB
gcc -DWITH_ISNAN main2.c -o no-opt-isnan.exe - 2.374KB
gcc -DWITH_MIX128 -DWITH_ISNAN main2.c -o no-opt-isnan-mix128.exe - 2.578KB


[Bug tree-optimization/51583] One more missing force_gimple_operand in SRA

2011-12-19 Thread jamborm at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51583

--- Comment #2 from Martin Jambor jamborm at gcc dot gnu.org 2011-12-19 
14:33:21 UTC ---
Author: jamborm
Date: Mon Dec 19 14:33:18 2011
New Revision: 182483

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=182483
Log:
2011-12-19  Martin Jambor  mjam...@suse.cz

PR tree-optimization/51583
* tree-sra.c (load_assign_lhs_subreplacements): Call
force_gimple_operand_gsi when necessary also in case of no
corresponding replacement on the RHS.

* testsuite/gcc.dg/tree-ssa/pr51583.c: New test.


Added:
trunk/gcc/testsuite/gcc.dg/tree-ssa/pr51583.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/testsuite/ChangeLog
trunk/gcc/tree-sra.c


[Bug c/51622] GCC generates bad code that generate big executable sizes when using _Decimal*

2011-12-19 Thread mingodad at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51622

--- Comment #5 from Domingo Alvarez mingodad at gmail dot com 2011-12-19 
14:34:11 UTC ---
(In reply to comment #2)
 Which architecture are you compiling for?

gcc mingw32 4.6.1 32bits


[Bug c/51622] GCC generates bad code that generate big executable sizes when using _Decimal*

2011-12-19 Thread mingodad at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51622

--- Comment #6 from Domingo Alvarez mingodad at gmail dot com 2011-12-19 
14:40:45 UTC ---
Rewrite expected executable sizes with a realistic better code generation by
gcc.

If code generation is solved probably we can have better results with the
following:

lua 5.1.4 with double - 150KB
lua 5.1.4 with _Decimal64 - 2.4MB *with ***bad code generation
lua 5.1.4 with _Decimal64 - 370KB *with hopefully ***good code generation

sqlite3 with double - 500KB
sqlite3 with _Decimal64 - 3MB *with ***bad code generation
sqlite3 with _Decimal64 - 930KB *with hopefully ***good code generation

The same proportion probably will apply to any other program using _Decimal*
wich will make using _Decimal* a very interesting option.


[Bug c++/50012] [4.5/4.6/4.7 Regression] C++ front end misses -Wsign-compare warnings when extraneous parentheses are present

2011-12-19 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50012

--- Comment #5 from Jakub Jelinek jakub at gcc dot gnu.org 2011-12-19 
14:43:05 UTC ---
This has been introduced with
http://gcc.gnu.org/ml/gcc-patches/2009-06/msg01402.html
which has been written as a better way of:
http://gcc.gnu.org/ml/gcc-patches/2009-06/msg01393.html
Perhaps the older patch is a better way than this one, which, if I understand
it right, is that ignoring of the promotion at the -Wsign-compare handling
spot?
Setting TREE_NO_WARNING, at least until we have a way to say which warnings we
want to prohibit and which should be kept, is an ugly hack and shouldn't be
taken lightly.

While Ian's patch doesn't set TREE_NO_WARNING in this testcase, it just
disables the warning if any of the operands is TREE_NO_WARNING and uses this
bit for yet another purpose.  The TREE_NO_WARNING bit in this case is set by
finish_parenthesized_expr:
1504  if (EXPR_P (expr))
1505/* This inhibits warnings in c_common_truthvalue_conversion.  */
1506TREE_NO_WARNING (expr) = 1;

So, what was wrong with the first approach?
And, perhaps for 4.8 we want to turn TREE_NO_WARNING bit into a bit that just
tells us whether that tree in question is in some hash table (see e.g.
DECL_HAS_VALUE_EXPR_P etc.) and that hash table would contain details what
warnings are we supposed to ignore.  This isn't the only problematic spot.


[Bug c/51622] GCC generates bad code that generate big executable sizes when using _Decimal*

2011-12-19 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51622

Jakub Jelinek jakub at gcc dot gnu.org changed:

   What|Removed |Added

 CC||jakub at gcc dot gnu.org

--- Comment #7 from Jakub Jelinek jakub at gcc dot gnu.org 2011-12-19 
14:59:44 UTC ---
Seems to me that you don't seem to understand what it means that the dfp
support bits from libgcc.a are statically linked into your application.  There
is no bad code generation, the only problem is that libbid has lots of small
*.o files, then about 7 mid size *.o files (~ 16KB to ~ 64KB of code, almost no
.rodata) and then a single huge one - bid_binarydecimal.o - which, while it
contains a tiny bit above 64KB of code, contains additionally 2MB of read-only
data in various tables, and unfortunately this huge 6MB of source file is used
by many of the routines.  The reason why the decimal stuff isn't in libgcc_s
(i.e. shared library) is because _Decimal* support is huge amount of code for
something used extremely rarely.  It could be either built into a separate
shared library and ask people to add that library in, or perhaps this single
huge source file could be split into several smaller ones, so you get only the
code you really need to handle the operations you are using, or it could be
built with -ffunction-sections -fdata-sections and allow people to use
-Wl,--gc-sections to garbage collect it.

OT, your comments about using _Decimal64 as an interesting option to double are
very weird, the two types are completely different, have different purpose,
_Decimal* is (except for some PowerPC and S390* chips) completely software
emulated type and thus very slow, double has on the other side usually very
fast operations on it implemented in hw.


[Bug fortran/51605] internal compiler error gfc_trans_block_construct, at fortran/trans-stmt.c:984

2011-12-19 Thread burnus at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51605

--- Comment #10 from Tobias Burnus burnus at gcc dot gnu.org 2011-12-19 
15:30:29 UTC ---
Author: burnus
Date: Mon Dec 19 15:30:23 2011
New Revision: 182484

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=182484
Log:
2011-12-19  Tobias Burnus  bur...@net-b.de

PR fortran/51605
* match.c (gfc_match_select_type): Handle
scalar polymophic coarrays.
(select_type_set_tmp, ): Ditto; avoid segfault if !class_ok.
* primary.c (gfc_match_rvalue): Avoid segfault if !class_ok.
* resolve.c (resolve_select_type): Ditto.
(resolve_assoc_var): Fix setting the TARGET attribute for
polymorphic selectors which are pointers.

2011-12-19  Tobias Burnus  bur...@net-b.de

PR fortran/51605
* gfortran.dg/select_type_25.f90: New.


Added:
trunk/gcc/testsuite/gfortran.dg/select_type_25.f90
Modified:
trunk/gcc/fortran/ChangeLog
trunk/gcc/fortran/match.c
trunk/gcc/fortran/primary.c
trunk/gcc/fortran/resolve.c
trunk/gcc/testsuite/ChangeLog


[Bug rtl-optimization/51366] [cygwin] ICE in maybe_record_trace_start, at dwarf2cfi.c:2244

2011-12-19 Thread g...@denis-excoffier.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51366

--- Comment #5 from Denis Excoffier g...@denis-excoffier.org 2011-12-19 
15:31:46 UTC ---
Reduced test case is:

% cat exclude.c
int version;
int zz1(char *);

static void zz2(int flags)
{
 static int initialized = 0;
 char xx[4096];
 if (initialized)
  return;
 initialized = 1;
 zz2(flags | (version ? 2 : 0));
 zz2(flags);
 zz1(xx);
}

void zz3()
{
 zz2(0);
}
% gcc -v -O -c exclude.c
Using built-in specs.
COLLECT_GCC=/tmp/lcl/uxl/gcc/bin/gcc
COLLECT_LTO_WRAPPER=/cygdrive/D/Home/dexcoff1/dexcoff1/cyglcl/uxl/gcc-4.7-201112
10/bin/../libexec/gcc/i686-pc-cygwin/4.7.0/lto-wrapper.exe
Target: i686-pc-cygwin
Configured with: /tmp/lcl/tmp/gcc/gcc-4.7-20111210/configure
--prefix=/tmp/lcl/u
xl/gcc-4.7-20111210 --with-local-prefix=/usr/local/here
--enable-languages=c,c++
 --disable-sjlj-exceptions
Thread model: single
gcc version 4.7.0 20111210 (experimental) (GCC) 
COLLECT_GCC_OPTIONS='-v' '-O' '-c' '-mtune=generic' '-march=pentiumpro'

/cygdrive/D/Home/dexcoff1/dexcoff1/cyglcl/uxl/gcc-4.7-20111210/bin/../libexec/g
cc/i686-pc-cygwin/4.7.0/cc1.exe -quiet -v -iprefix
/cygdrive/D/Home/dexcoff1/dex
coff1/cyglcl/uxl/gcc-4.7-20111210/bin/../lib/gcc/i686-pc-cygwin/4.7.0/
-D__CYGWI
N32__ -D__CYGWIN__ -Dunix -D__unix__ -D__unix -idirafter
/usr/lib/../include/w32
api -idirafter ../../include/w32api exclude.c -quiet -dumpbase exclude.c
-mtune=
generic -march=pentiumpro -auxbase exclude -O -version -o /tmp/ccK5Dvq6.s
GNU C (GCC) version 4.7.0 20111210 (experimental) (i686-pc-cygwin)
compiled by GNU C version 4.7.0 20111210 (experimental), GMP version
5.0
.2, MPFR version 3.1.0-p4, MPC version 0.9
GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096
ignoring nonexistent directory
/cygdrive/D/Home/dexcoff1/dexcoff1/cyglcl/uxl/gc
c-4.7-20111210/bin/../lib/gcc/i686-pc-cygwin/4.7.0/../../../../i686-pc-cygwin/in
clude
ignoring duplicate directory
/cygdrive/D/Home/dexcoff1/dexcoff1/cyglcl/uxl/gcc-
4.7-20111210/bin/../lib/gcc/../../lib/gcc/i686-pc-cygwin/4.7.0/include
ignoring nonexistent directory /usr/local/here/include
ignoring duplicate directory
/cygdrive/D/Home/dexcoff1/dexcoff1/cyglcl/uxl/gcc-
4.7-20111210/bin/../lib/gcc/../../lib/gcc/i686-pc-cygwin/4.7.0/include-fixed
ignoring nonexistent directory
/cygdrive/D/Home/dexcoff1/dexcoff1/cyglcl/uxl/gc
c-4.7-20111210/bin/../lib/gcc/../../lib/gcc/i686-pc-cygwin/4.7.0/../../../../i68
6-pc-cygwin/include
ignoring nonexistent directory ../../include/w32api
#include ... search starts here:
#include ... search starts here:

/cygdrive/D/Home/dexcoff1/dexcoff1/cyglcl/uxl/gcc-4.7-20111210/bin/../lib/gcc/i686-pc-cygwin/4.7.0/include

/cygdrive/D/Home/dexcoff1/dexcoff1/cyglcl/uxl/gcc-4.7-20111210/bin/../lib/gcc/i686-pc-cygwin/4.7.0/include-fixed

/cygdrive/D/Home/dexcoff1/dexcoff1/cyglcl/uxl/gcc-4.7-20111210/bin/../lib/gcc/../../include
 /usr/include
 /usr/lib/../include/w32api
End of search list.
GNU C (GCC) version 4.7.0 20111210 (experimental) (i686-pc-cygwin)
compiled by GNU C version 4.7.0 20111210 (experimental), GMP version
5.0.2, MPFR version 3.1.0-p4, MPC version 0.9
GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096
Compiler executable checksum: e4de487ff334f86f04bb7cab20aac91a
exclude.c: In function 'zz2':
exclude.c:14:1: internal compiler error: in maybe_record_trace_start, at
dwarf2cfi.c:2244
Please submit a full bug report,
with preprocessed source if appropriate.
See http://gcc.gnu.org/bugs.html for instructions.
%


[Bug c++/51619] [c++0x] [4.6/4.7 Regression] ICE with array class member

2011-12-19 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51619

--- Comment #2 from Jakub Jelinek jakub at gcc dot gnu.org 2011-12-19 
15:38:09 UTC ---
Author: jakub
Date: Mon Dec 19 15:38:06 2011
New Revision: 182485

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=182485
Log:
PR c++/51619
* semantics.c (cxx_eval_vec_init_1): If init is NULL for
multidimensional array, just set eltinit to NULL_TREE.

* g++.dg/cpp0x/pr51619.C: New test.

Added:
trunk/gcc/testsuite/g++.dg/cpp0x/pr51619.C
Modified:
trunk/gcc/cp/ChangeLog
trunk/gcc/cp/semantics.c
trunk/gcc/testsuite/ChangeLog


[Bug rtl-optimization/51623] New: PowerPC section type conflict

2011-12-19 Thread cltang at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51623

 Bug #: 51623
   Summary: PowerPC section type conflict
Classification: Unclassified
   Product: gcc
   Version: 4.7.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: rtl-optimization
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: clt...@gcc.gnu.org
Target: powerpc-linux


Created attachment 26144
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=26144
Uboot nand_dump testcase

gcc-patches discussion thread:
http://gcc.gnu.org/ml/gcc-patches/2011-12/msg01240.html

During final output of objects, existence of a .text.unlikely section triggers
a section flag mismatch when looking up in the section htab.

More information in mailing list thread, attached are testcases, a larger one
from U-boot, and a very minimal one trying to demonstrate the fail.  (for the
minimal testcase, use -Os/-O2 -mrelocatable to trigger, for the Uboot one add
-ffreestanding)


[Bug rtl-optimization/51623] PowerPC section type conflict

2011-12-19 Thread cltang at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51623

--- Comment #1 from Chung-Lin Tang cltang at gcc dot gnu.org 2011-12-19 
15:44:10 UTC ---
Created attachment 26145
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=26145
Minimal testcase


[Bug c++/51619] [c++0x] [4.6 Regression] ICE with array class member

2011-12-19 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51619

Jakub Jelinek jakub at gcc dot gnu.org changed:

   What|Removed |Added

Summary|[c++0x] [4.6/4.7|[c++0x] [4.6 Regression]
   |Regression] ICE with array  |ICE with array class member
   |class member|

--- Comment #3 from Jakub Jelinek jakub at gcc dot gnu.org 2011-12-19 
15:48:05 UTC ---
Fixed on the trunk so far.  On the branch the PR49924 changes look very
different between trunk and 4.6, so I wonder what exactly to do.  Perhaps guard
the else if (!init) code with else if (!init  TREE_CODE (elttype) !=
ARRAY_TYPE) instead?


[Bug fortran/51605] internal compiler error gfc_trans_block_construct, at fortran/trans-stmt.c:984

2011-12-19 Thread danlnagle at me dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51605

--- Comment #11 from Dan Nagle danlnagle at me dot com 2011-12-19 15:51:40 
UTC ---
Hi,

I can confirm that changing the label of the select type to

integer_or_logical_or_error

removes the ICE.

I did so at lines 9325 and 13536 in the original source.

The new label is a better description of the purpose of the select type anyway.

Thanks, everyone!  The new version of coco has some (I think anyway)
good new features, and some older stuff removed, as per requests.
So it's very good to have gfortran on the list of compilers known to work.

The new coco is in testing now, but I hope to be able to distribute it RSN.

On Dec 19, 2011, at 08:17 , burnus at gcc dot gnu.org wrote:

 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51605
 
 --- Comment #9 from Tobias Burnus burnus at gcc dot gnu.org 2011-12-19 
 13:17:15 UTC ---
 Dan: Your program should work (with 4.6.2 - or with 4.7 + my patch) if you
 either change either the SELECT TYPE label or the subroutine name from
 integer_or_logical to something else.
 
 * * *
 
 Reduced test case for the ICE:
 
 contains
  subroutine foo
BLOCK_NAME: block
end block BLOCK_NAME
  end subroutine foo
 
  subroutine BLOCK_NAME()
  end subroutine BLOCK_NAME
 
  subroutine bar()
  end subroutine bar
 end
 
 -- 
 Configure bugmail: http://gcc.gnu.org/bugzilla/userprefs.cgi?tab=email
 --- You are receiving this mail because: ---
 You reported the bug.


[Bug tree-optimization/51580] [4.7 regression] segfault during loop vectorization at -O3

2011-12-19 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51580

Jakub Jelinek jakub at gcc dot gnu.org changed:

   What|Removed |Added

 CC||jakub at gcc dot gnu.org

--- Comment #1 from Jakub Jelinek jakub at gcc dot gnu.org 2011-12-19 
15:53:37 UTC ---
Please recheck with current trunk -
http://gcc.gnu.org/viewcvs?root=gccview=revrev=182480 or later.


[Bug lto/51573] [4.7 Regression] ICE (segfault) in lto_varpool_encoder_encode_initializer_p

2011-12-19 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51573

Richard Guenther rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution||FIXED

--- Comment #12 from Richard Guenther rguenth at gcc dot gnu.org 2011-12-19 
15:57:25 UTC ---
Fixed.


[Bug lto/51573] [4.7 Regression] ICE (segfault) in lto_varpool_encoder_encode_initializer_p

2011-12-19 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51573

--- Comment #11 from Richard Guenther rguenth at gcc dot gnu.org 2011-12-19 
15:57:06 UTC ---
Author: rguenth
Date: Mon Dec 19 15:57:02 2011
New Revision: 182487

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=182487
Log:
2011-12-19  Richard Guenther  rguent...@suse.de

PR lto/51573
* streamer-hooks.h (struct streamer_hooks): Add second
ref_p parameter to write_tree.
(stream_write_tree): Adjust.
(stream_write_tree_shallow_non_ref): New define.
* lto-streamer.h (lto_output_tree): Adjust.
* lto-streamer-out.c (lto_output_tree): Likewise.
* tree-streamer-out.c (streamer_write_chain): Only
force the immediate tree to be streamed as non-reference.

* gcc.dg/lto/20111207-2_0.c: Adjust.
* g++.dg/lto/pr51573-1_0.C: New testcase.

Added:
trunk/gcc/testsuite/g++.dg/lto/pr51573-1_0.C
Modified:
trunk/gcc/ChangeLog
trunk/gcc/lto-streamer-out.c
trunk/gcc/lto-streamer.h
trunk/gcc/streamer-hooks.h
trunk/gcc/testsuite/ChangeLog
trunk/gcc/testsuite/gcc.dg/lto/20111207-2_0.c
trunk/gcc/tree-streamer-out.c


[Bug c++/51328] [4.4/4.5/4.6/4.7 Regression] ICE on invalid template parameter

2011-12-19 Thread jason at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51328

--- Comment #4 from Jason Merrill jason at gcc dot gnu.org 2011-12-19 
15:58:13 UTC ---
(In reply to comment #3)
 Thus I guess rejecting it earlier is fine, but we don't want to misled people
 by saying that 'typename T::~T' would be ok.

Agreed.  I would expect it to be straightforward to catch this at the point we
currently give the misleading message.


[Bug tree-optimization/51600] [4.7 Regression] ice in estimate_local_effects

2011-12-19 Thread jamborm at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51600

Martin Jambor jamborm at gcc dot gnu.org changed:

   What|Removed |Added

 CC||hubicka at gcc dot gnu.org

--- Comment #3 from Martin Jambor jamborm at gcc dot gnu.org 2011-12-19 
16:08:28 UTC ---
Well, this means that estimate_ipcp_clone_size_and_time returns a
negative size growth estimate.  The function is basically inlining
heuristics with special interface so perhaps such mishaps are to be
expected and I should take care even of negative values (PR 51362 was
about this function returning zero size growth estimates).  Or are
they not, Honza?


[Bug c++/51553] brace initialization and conversion operators

2011-12-19 Thread jason at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51553

Jason Merrill jason at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |ASSIGNED
   Last reconfirmed||2011-12-19
 CC||jason at gcc dot gnu.org
 AssignedTo|unassigned at gcc dot   |jason at gcc dot gnu.org
   |gnu.org |
 Ever Confirmed|0   |1


[Bug bootstrap/50686] [4.7 regression] IRIX 6.5 bootstrap failure: ICE in in lookup_cfa_1, at dwarf2cfi.c:595

2011-12-19 Thread ro at CeBiTec dot Uni-Bielefeld.DE
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50686

--- Comment #26 from ro at CeBiTec dot Uni-Bielefeld.DE ro at CeBiTec dot 
Uni-Bielefeld.DE 2011-12-19 16:40:33 UTC ---
 --- Comment #25 from Andrew Pinski pinskia at gcc dot gnu.org 2011-12-16 
 20:05:16 UTC ---
 Can you try the patch in PR 51471#c11 ? That patch fixes most of the
 maybe_record_trace_start on mips* for me.

The patch fixes the ICE in the i686-linux x mips-irix6.5 cross and
allowed a native bootstrap to continue beyond the previous failure
point.

I'm now seeing an Ada ICE which is unrelated since it also just occured
on the 4.6 branch.

Rainer


[Bug tree-optimization/51583] One more missing force_gimple_operand in SRA

2011-12-19 Thread jamborm at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51583

--- Comment #3 from Martin Jambor jamborm at gcc dot gnu.org 2011-12-19 
16:47:35 UTC ---
Author: jamborm
Date: Mon Dec 19 16:47:28 2011
New Revision: 182488

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=182488
Log:
2011-12-19  Martin Jambor  mjam...@suse.cz

PR tree-optimization/51583
* tree-sra.c (load_assign_lhs_subreplacements): Call
force_gimple_operand_gsi when necessary also in case of no
corresponding replacement on the RHS.

* testsuite/gcc.dg/tree-ssa/pr51583.c: New test.


Added:
branches/gcc-4_6-branch/gcc/testsuite/gcc.dg/tree-ssa/pr51583.c
Modified:
branches/gcc-4_6-branch/gcc/ChangeLog
branches/gcc-4_6-branch/gcc/testsuite/ChangeLog
branches/gcc-4_6-branch/gcc/tree-sra.c


[Bug ada/51624] New: [4.6/4.7 regression] Assert_Failure atree.adb:808 on IRIX 6.5

2011-12-19 Thread ro at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51624

 Bug #: 51624
   Summary: [4.6/4.7 regression] Assert_Failure atree.adb:808 on
IRIX 6.5
Classification: Unclassified
   Product: gcc
   Version: 4.7.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: ada
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: r...@gcc.gnu.org
CC: char...@gcc.gnu.org, ebotca...@gcc.gnu.org
  Host: mips-sgi-irix6.5
Target: mips-sgi-irix6.5
 Build: mips-sgi-irix6.5


Between 20111209 (r182157) and 20111216 (r182397), Ada bootstrap started to
fail
on IRIX 6.5 in stage 3:

+===GNAT BUG DETECTED==+
| 4.6.3 20111216 (prerelease) [gcc-4_6-branch revision 182397]
(mips-sgi-irix6.5) |
| Assert_Failure atree.adb:794 |
| Error detected at ali.adb:2008:45  

When I apply the patch for PR bootstrap/50686 just suggested, I observe a
similar
ICE on mainline, too:

+===GNAT BUG DETECTED==+
| 4.7.0 20111216 (experimental) [trunk revision 182408] (mips-sgi-irix6.5) |
| Assert_Failure atree.adb:808 |
| Error detected at a-exexda.adb:635:15   

This suggests that a recent patch that has also been backported to the 4.6
branch
is the culprit.

  Rainer


[Bug c++/51625] New: -Wconversion should be on by default, or at least included in -Wall

2011-12-19 Thread pnf at podsnap dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51625

 Bug #: 51625
   Summary: -Wconversion should be on by default, or at least
included in -Wall
Classification: Unclassified
   Product: gcc
   Version: 4.4.2
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: p...@podsnap.com


Sometime after 4.1.2, conversion errors stopped being reported by default, and
in fact don't even show up with -Wall and -Wextra.  My opinion is that they
should be reported by default unless explicitly suppressed, but failing that,
at least they should be included in -Wall.

% cat boffo.C
#include math.h
#include stdlib.h
#include stdio.h
#include cmath
//using namespace std;
int main() {
  double x = abs(3.5), y= fabs(3.5);
  printf(%g %g\n,x,y);
  return 0;
}
% # No warning in 4.2.2 or 4.4.2
% /sbcimp/run/pd/gcc/32-bit/4.2.2/bin/g++ -Wextra -Wall  boffo.C
% /sbcimp/run/pd/gcc/32-bit/4.4.2/bin/g++ -Wextra -Wall  boffo.C
% # 4.1.2 warns, even without any option -W flags
% /sbcimp/run/pd/gcc/32-bit/4.1.2/bin/g++ -Wextra -Wall  boffo.C
boffo.C: In function 'int main()':
boffo.C:7: warning: passing 'double' for argument 1 to 'int abs(int)'
% /sbcimp/run/pd/gcc/32-bit/4.1.2/bin/g++ boffo.C
boffo.C: In function 'int main()':
boffo.C:7: warning: passing 'double' for argument 1 to 'int abs(int)'
# 4.2.2 and 4.4.2 warn correctly when -Wconversion turned on
% /sbcimp/run/pd/gcc/32-bit/4.2.2/bin/g++ -Wextra -Wall -Wconversion  boffo.C
boffo.C: In function 'int main()':
boffo.C:7: warning: passing 'double' for argument 1 to 'int abs(int)'
% /sbcimp/run/pd/gcc/32-bit/4.4.2/bin/g++ -Wextra -Wall -Wconversion  boffo.C
boffo.C: In function 'int main()':
boffo.C:7: warning: conversion to 'int' alters 'double' constant value


[Bug c++/51328] [4.4/4.5/4.6/4.7 Regression] ICE on invalid template parameter

2011-12-19 Thread paolo.carlini at oracle dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51328

Paolo Carlini paolo.carlini at oracle dot com changed:

   What|Removed |Added

 Status|NEW |ASSIGNED
 AssignedTo|unassigned at gcc dot   |paolo.carlini at oracle dot
   |gnu.org |com

--- Comment #5 from Paolo Carlini paolo.carlini at oracle dot com 2011-12-19 
17:22:24 UTC ---
Ok thanks. I can do this.


[Bug target/48743] -march=native mis-detects AMD K6-2+ / K6-3 as Athlon - compiled C fails with illegal instruction

2011-12-19 Thread qneill at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48743

--- Comment #6 from Quentin Neill qneill at gcc dot gnu.org 2011-12-19 
17:57:42 UTC ---
Author: qneill
Date: Mon Dec 19 17:57:32 2011
New Revision: 182489

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=182489
Log:
2011-12-19  Quentin Neill  quentin.ne...@amd.com
2011-12-19  Quentin Neill  quentin.ne...@amd.com

PR target/48743
* config/i386/driver-i386.c (host_detect_local_cpu): Also check
family to distinguish PROCESSOR_ATHLON.


Modified:
trunk/gcc/ChangeLog
trunk/gcc/config/i386/driver-i386.c


[Bug libstdc++/51626] New: [4.6 Regression] [C++0x] can't use C++98 allocators with -std=c++0x

2011-12-19 Thread redi at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51626

 Bug #: 51626
   Summary: [4.6 Regression] [C++0x] can't use C++98 allocators
with -std=c++0x
Classification: Unclassified
   Product: gcc
   Version: 4.6.2
Status: UNCONFIRMED
  Keywords: rejects-valid
  Severity: normal
  Priority: P3
 Component: libstdc++
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: r...@gcc.gnu.org


#include memory
#include vector

template class T
struct allocator98 : std::allocatorT
{
template class U struct rebind { typedef allocator98U other; };

allocator98() { }

template class U allocator98(const allocator98U) { };

void construct(T* p, const T val) { std::allocatorT::construct(p, val);
}
};

int main()
{
std::vector int, allocator98int  v(1);
}

This fails in c++0x mode because std::__uninitialized_default_n_a() incorrectly
assumes it's OK to call Alloc::construct with a single argument.  That is true
for std::allocator in C++0x mode, but not true for most user-defined allocators
written to the C++98 requirements.

This is the cause of https://svn.boost.org/trac/boost/ticket/5538

The bug is fixed in 4.7 because std::allocator_traits provides a default
implementation of construct, ensuring backwards-compatibility with C++98-style
allocators.

A workaround for user-defined allocators is to add:
  void construct(pointer p) { return construct(p, value_type()); }

The fix for libstdc++ would be to avoid calling construct with a single
argument, or to backport a minimal version of allocator_traits from 4.7


[Bug testsuite/50722] FAIL: gcc.dg/pr49994-3.c (test for excess errors)

2011-12-19 Thread sje at cup dot hp.com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50722

--- Comment #4 from Steve Ellcey sje at cup dot hp.com 2011-12-19 18:33:07 
UTC ---
Yes, this was failing on ia64 hpux as well as hppa hpux.


[Bug rtl-optimization/50063] [4.6/4.7 Regression] DSE: wrong code for gcc.dg/torture/pta-ptrarith-3.c

2011-12-19 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50063

Jakub Jelinek jakub at gcc dot gnu.org changed:

   What|Removed |Added

 CC||jakub at gcc dot gnu.org

--- Comment #12 from Jakub Jelinek jakub at gcc dot gnu.org 2011-12-19 
18:34:16 UTC ---
I believe this is just because of very weird target avr stuff, either it is a
target bug that can be fixed up in the backend somehow, or perhaps would need
some middle-end help, but still it is avr specific.
Doesn't seem to have anything to do with PR49330.

The problem seems to be that the prologue here looks like:
(insn/f 43 7 44 2 (set (mem/c:QI (post_dec:HI (reg/f:HI 32 __SP_L__)) [5 S1
A8])
(reg:QI 28 r28)) pr50063.c:9 -1
 (nil))
(insn/f 44 43 45 2 (set (mem/c:QI (post_dec:HI (reg/f:HI 32 __SP_L__)) [5 S1
A8])
(reg:QI 29 r29)) pr50063.c:9 -1
 (expr_list:REG_DEAD (reg:QI 29 r29)
(nil)))
(insn 45 44 46 2 (set (reg/f:HI 28 r28)
(reg/f:HI 32 __SP_L__)) pr50063.c:9 -1
 (nil))
(insn/f 46 45 47 2 (set (reg/f:HI 28 r28)
(plus:HI (reg/f:HI 28 r28)
(const_int -12 [0xfff4]))) pr50063.c:9 -1
 (expr_list:REG_CFA_ADJUST_CFA (set (reg/f:HI 28 r28)
(plus:HI (reg/f:HI 32 __SP_L__)
(const_int -12 [0xfff4])))
(nil)))
(insn 47 46 48 2 (set (reg/f:HI 32 __SP_L__)
(reg/f:HI 28 r28)) pr50063.c:9 -1
 (nil))

where reg 28 is frame pointer and reg 32 is stack pointer.  When
canon_true_dependence is called by DSE, one of the mem addresses is r28 plus
CONST_INT, the other is a VALUE, which is in the end a VALUE of r28 plus some
offset.  But r28 (frame pointer) and r32 (stack pointer) have the same VALUE in
this case, and because of the initialization of sp from fp r32 is actually
before r28 in that VALUE's locs list.  So, find_base_term for that VALUE
returns (address r32), while find_base_term for r28 plus CONST_INT doesn't use
cselib values at all and thus returns (address r28) and base_alias_check just
fails.  The question is why avr does this, and if it really has to do that, it
should make sure somehow that for the alias analysis either REG_BASE_VALUE of
r28 is the same as REG_BASE_VALUE of r32.  E.g. it could define FIND_BASE_TERM
and do something for r28/r32 if they are known to be the same.
init_alias_analysis ignores prologue and epilogue insns after reload, which is
probably why record_set isn't called here on the r32 = r28 set.


[Bug libstdc++/51626] [4.6 Regression] [C++0x] can't use C++98 allocators with -std=c++0x

2011-12-19 Thread paolo.carlini at oracle dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51626

--- Comment #1 from Paolo Carlini paolo.carlini at oracle dot com 2011-12-19 
18:38:56 UTC ---
Bah, in my opinion it's late to attempt sophisticated things in 4.6, either we
can do something minimal or we should just tell people that in 4.6 a C++0x
container wants a C++0x allocator.


[Bug fortran/51605] internal compiler error gfc_trans_block_construct, at fortran/trans-stmt.c:984

2011-12-19 Thread burnus at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51605

--- Comment #12 from Tobias Burnus burnus at gcc dot gnu.org 2011-12-19 
18:41:24 UTC ---
(In reply to comment #9)
   subroutine foo
 BLOCK_NAME: block
 end block BLOCK_NAME
   end subroutine foo
   subroutine BLOCK_NAME()
   end subroutine BLOCK_NAME

The problem is the call to gfc_fixup_sibling_symbols which finds in
subroutine foo the symbol block_name (FL_LABEL) - and overrides it with the
subroutine (FL_PROCEDURE).

The source code has:
 /* By 14.6.1.3, host association should be excluded
for the following.  */

I think it missed F95's
(13) The name of a named construct

Patch:
--- a/gcc/fortran/parse.c
+++ b/gcc/fortran/parse.c
@@ -3908,6 +3908,7 @@ gfc_fixup_sibling_symbols (gfc_symbol *sym, gfc_namespace
*siblings)
  || old_sym-attr.intrinsic
  || old_sym-attr.generic
  || old_sym-attr.flavor == FL_NAMELIST
+ || old_sym-attr.flavor == FL_LABEL
  || old_sym-attr.proc == PROC_ST_FUNCTION))
{
  /* Replace it with the symbol from the parent namespace.  */


[Bug target/48743] -march=native mis-detects AMD K6-2+ / K6-3 as Athlon - compiled C fails with illegal instruction

2011-12-19 Thread qneill at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48743

Quentin Neill qneill at gcc dot gnu.org changed:

   What|Removed |Added

 CC||qneill at gcc dot gnu.org

--- Comment #7 from Quentin Neill qneill at gcc dot gnu.org 2011-12-19 
18:55:49 UTC ---
Waiting to fix in 4.5 and 4.6 per Uros:
http://gcc.gnu.org/ml/gcc-patches/2011-12/msg00938.html

Meanwhile, fixed in trunk (4.7) after testing on amdfam10 and bdver1:

Author: qneill
Date: Mon Dec 19 17:57:32 2011
New Revision: 182489

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=182489
Log:
2011-12-19  Quentin Neill  quentin.ne...@amd.com
2011-12-19  Quentin Neill  quentin.ne...@amd.com

PR target/48743
* config/i386/driver-i386.c (host_detect_local_cpu): Also check
family to distinguish PROCESSOR_ATHLON.

Modified:
trunk/gcc/ChangeLog
trunk/gcc/config/i386/driver-i386.c


[Bug rtl-optimization/50063] [4.6/4.7 Regression] DSE: wrong code for gcc.dg/torture/pta-ptrarith-3.c

2011-12-19 Thread gjl at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50063

--- Comment #13 from Georg-Johann Lay gjl at gcc dot gnu.org 2011-12-19 
18:56:49 UTC ---
(In reply to comment #12)
 I believe this is just because of very weird target avr stuff, either it is a
 target bug that can be fixed up in the backend somehow, or perhaps would need
 some middle-end help, but still it is avr specific.

The insns describe exactly what the machine is doing:

insn 43/44: Save FP (r28/29) to Stack. This in done in two QI pushes and not in
one HI. SP push is post-decrement and with a HI push the resulting address
would be wrong. AVR is 8-bit machine with 16-bit PMODE.

insn 45: Initialize FP with SP

insn 46: Set up a frame (12 bytes here). AVR's SP cannot be changed directly,
not even atomically so changing SP is quite expensive and IRQs must be turned
off. Therefore, prologue generation works out two methods of setting up
frame/changing SP and picks the most efficient:

* For big offsets it is:
FP = SP;
FP -= const;
SP = FP

* For small offsets SP is adjusted by dummy pushes/pops, for example:
SP -= 2 as of: push(dummy); push(dummy);
FP = SP

Similar applies to epilogue generation.

This example exercises the first approach. The 3rd step is (SP = FP):

insn 47: Write back SP

If the generic analysis ignores prologue/epilogue but optimizers optimize
against prologue/epilogue using that incorrect information based on lazy
analysis, then the problem is in generic code.


[Bug libstdc++/51626] [4.6 Regression] [C++0x] can't use C++98 allocators with -std=c++0x

2011-12-19 Thread redi at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51626

--- Comment #2 from Jonathan Wakely redi at gcc dot gnu.org 2011-12-19 
18:57:45 UTC ---
I agree with the sentiment, but unfortunately a C++11 allocator isn't required
to provide a construct member at all.  17.6.3.5 p5 shows a minimal C++11
allocator, and that won't work either, so 4.6 doesn't correctly support
user-defined C++98 allocators or user-defined C++11 allocators!

I think the minimal fix is for __uninitialized_default_n_a and
__uninitialized_default_a to default construct an object of the iterator's
value_type and pass that to __alloc.construct(addressof(*cur))

A less-minimal fix would be to change all the containers to use
__uninitialized_fill_a instead of __uninitialized_default_a


[Bug libstdc++/51626] [4.6 Regression] [C++0x] can't use C++98 allocators with -std=c++0x

2011-12-19 Thread redi at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51626

--- Comment #3 from Jonathan Wakely redi at gcc dot gnu.org 2011-12-19 
19:04:53 UTC ---
Unfortunately either of those would cause a regression for PR 32618


[Bug rtl-optimization/50063] [4.6/4.7 Regression] DSE: wrong code for gcc.dg/torture/pta-ptrarith-3.c

2011-12-19 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50063

Jakub Jelinek jakub at gcc dot gnu.org changed:

   What|Removed |Added

   Priority|P2  |P4

--- Comment #14 from Jakub Jelinek jakub at gcc dot gnu.org 2011-12-19 
19:12:56 UTC ---
Well, it is certainly desirable not to process the prologue insns during
init_alias_analysis.  The fact that stack pointer has the same value as frame
pointer after the prologue is not usual and something the generic code isn't
prepared for (usually either frame pointer is eliminated (of course then the
register can be used for something else) or frame pointer is initialized from
stack pointer and then decremented (or incremented) still inside of the
prologue).
So you need to tell the alias analysis about that, as the prologue isn't
scanned, it is the backend responsibility to tell that.


  1   2   3   >