[Bug c/39620] New: wrong assumption of clobbered registers of inline assembly

2009-04-03 Thread codemasterhs at yahoo dot de
I have the following code:

static inline void zeromem4b(uint32t *dst, uint32t count) {
asm volatile("xor %%eax,%%eax\n\trep stosl"
:
:"c"(count),"D"(dst)
:"%eax", "cc", "memory");
}

If I call it and after it want to, e.g. print out the value of *dst it gives me
the value which it has after running the function. That means that gcc thinks
that "%edi" hasn´t changed, but it did and I can not put it into the clobbered
list, because this gives me an error.

I compile with "-O2 -Wall -fno-builtin -march=i586".


-- 
   Summary: wrong assumption of clobbered registers of inline
assembly
   Product: gcc
   Version: 4.3.3
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: codemasterhs at yahoo dot de
  GCC host triplet: cygwin
GCC target triplet: i586 elf


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



[Bug c/39620] wrong assumption of clobbered registers of inline assembly

2009-04-03 Thread jakub at gcc dot gnu dot org


--- Comment #1 from jakub at gcc dot gnu dot org  2009-04-03 08:11 ---
User error, if you don't tell gcc that %edi is clobbered, obviously it can
assume it hasn't.
As rep stosl modifies both %ecx and %edi, you can write e.g.:
int tmp1, tmp2;
asm volatile("xor %%eax,%%eax\n\trep stosl" : "=c" (tmp1), "=D" (tmp2) : "0"
(count), "1" (dst) : "%eax", "cc", "memory");
or:
asm volatile("xor %%eax,%%eax\n\trep stosl" : "+c" (count), "+D" (dst) : :
"%eax", "cc", "memory");
if you don't mind that the count and dst variables will change.
Also note that __builtin_memset (dst, '\0', count); will in most cases
result in more optimal code for your CPU, hardcoding these in assembly is
usually a bad idea.


-- 

jakub at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||INVALID


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



[Bug c/39620] wrong assumption of clobbered registers of inline assembly

2009-04-03 Thread codemasterhs at yahoo dot de


--- Comment #2 from codemasterhs at yahoo dot de  2009-04-03 08:30 ---
Subject: Re:  wrong assumption of clobbered registers of inline
 assembly

The code is for my loader/os and so I can´t and do not want to use the 
builtin functions.

Your 1st example works, but I find it a bit strange that I have to write 
such code only to tell gcc, that 2 registers are clobbered! Your 2nd 
example doesn´t work, because of the plus, this gives me an error.

I think the better way would be either gcc assumes that edi and ecx are 
clobbered (which isn´t so) or I can specify that in the clobbered list 
(which is not possible)!

jakub at gcc dot gnu dot org wrote:
> --- Comment #1 from jakub at gcc dot gnu dot org  2009-04-03 08:11 ---
> User error, if you don't tell gcc that %edi is clobbered, obviously it can
> assume it hasn't.
> As rep stosl modifies both %ecx and %edi, you can write e.g.:
> int tmp1, tmp2;
> asm volatile("xor %%eax,%%eax\n\trep stosl" : "=c" (tmp1), "=D" (tmp2) : "0"
> (count), "1" (dst) : "%eax", "cc", "memory");
> or:
> asm volatile("xor %%eax,%%eax\n\trep stosl" : "+c" (count), "+D" (dst) : :
> "%eax", "cc", "memory");
> if you don't mind that the count and dst variables will change.
> Also note that __builtin_memset (dst, '\0', count); will in most cases
> result in more optimal code for your CPU, hardcoding these in assembly is
> usually a bad idea.
>
>
>   


-- 


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



[Bug c/39621] New: Delaying operation to end of function causes high stack usage

2009-04-03 Thread wvangulik at xs4all dot nl
Function like this:

extern int bar(void);
int foo(int in)
{
 in += bar();
 in += bar(); 
 in += bar(); 
 in += bar(); 
 return in;
}

Result in putting the output of bar on stack, and adding the result just before
returning. It continues on until it about 16 iteration. Meaning useless heavy
stack usage and for some targets much code.

The general assembler will look like this:

push stack
call bar
put result on stack
call bar
put result on stack
call bar
put result on stack
call bar
add to in
add stack to in
add stack to in
add stack to in
pop stack
return 

This behaviour is seen on recent version for arm (4.3.3), x86 (4.3.3) and avr
(4.3.2).

Interresting is that providing the 'register' keyword on input for -00 'solves'
the problem.

It seems that GCC delays the add operations until returning, however delaying
beyond a function call is normally pointless and more expensive in terms of
code size and cycles.

See attached file for a test case with for unroll-loops and normal code.


-- 
   Summary: Delaying operation to end of function causes high stack
usage
   Product: gcc
   Version: 4.3.3
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: wvangulik at xs4all dot nl
  GCC host triplet: linux-x86
GCC target triplet: multiple (at least: arm, x86, avr)


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



[Bug c/39621] Delaying operation to end of function causes high stack usage

2009-04-03 Thread wvangulik at xs4all dot nl


--- Comment #1 from wvangulik at xs4all dot nl  2009-04-03 08:48 ---
Created an attachment (id=17580)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=17580&action=view)
C file showing bug

compile using:
gcc -S -funroll-loops -0[0123s] main.c


-- 


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



[Bug bootstrap/39622] New: Missing -isystem include-fixed when building canadian cross libgcc

2009-04-03 Thread georgjohann at web dot de
The following is just a verbatim copy of
   http://gcc.gnu.org/ml/gcc-help/2009-04/msg00023.html
For details and possible patch follow the link.

--

I'd like to build a canadian cross configured with
  --host=i586-mingw32
  --build=i686-linux-gnu

Everything goes fine except building libgcc because limits.h cannot be found,
as include-fixed is not in include path.

The problem looks like this: For a native build, i.e. host=build,
libgcc/Makefile sets CC to
> CC = [target-gcc-build-dir]/./gcc/xgcc -B[target-gcc-build-dir]/./gcc/
but for host != build it is
> CC = [target-gcc]
without adding [target-gcc-build-dir]/./gcc/include-fixed
to the include directory search path my means of -isystem.
However, this directory contains the limits.h.


-- 
   Summary: Missing -isystem include-fixed when building canadian
cross libgcc
   Product: gcc
   Version: 4.3.3
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: bootstrap
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: georgjohann at web dot de
 GCC build triplet: i686-linux-gnu
  GCC host triplet: i586-mingw32
GCC target triplet: any


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



[Bug bootstrap/39617] bootstrap failure with ICE building libiberty in stage3

2009-04-03 Thread rguenth at gcc dot gnu dot org


--- Comment #1 from rguenth at gcc dot gnu dot org  2009-04-03 08:57 ---
Can you attach preprocessed source?


-- 


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



[Bug c++/39623] New: Optimizer changes return from htons(uint16)

2009-04-03 Thread strk at keybit dot net
The bug is known to occur with the following versions:
 - gcc version 4.3.2 20081105 (Red Hat 4.3.2-7) (GCC)
 - g++ (Ubuntu 4.3.2-2ubuntu11) 4.3.3 20090111 (prerelease) 

The symptom of the bug is that when you use -O2 htons(short) returns
'unsigned int' (32 bit) rather then the expected 16bit value.
With no optimization it returns the correct 16bit.

I'll attach a testcase.


-- 
   Summary: Optimizer changes return from htons(uint16)
   Product: gcc
   Version: 4.3.3
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: strk at keybit dot net


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



[Bug c++/39623] Optimizer changes return from htons(uint16)

2009-04-03 Thread strk at keybit dot net


--- Comment #1 from strk at keybit dot net  2009-04-03 09:01 ---
Created an attachment (id=17581)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=17581&action=view)
Testcase for optimizer bug


-- 


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



[Bug c++/39404] -fpack-struct causes iostream to error, -O3 makes problem worse

2009-04-03 Thread jmichae3 at yahoo dot com


--- Comment #11 from jmichae3 at yahoo dot com  2009-04-03 09:02 ---
I get perfect code with the borland compiler packing switch with C++ code. it
would be nice if gcc could do the same in C++.

I don't necessarily have to have -O3, but I need to be able to pack structs
somehow so I don't end up with holes.  the structs are required for BIOS I/O or
other things as well.  any holes will render the I/O useless as I use sizeof()
and it can be fooled with holes.  any workarounds? sure-fire pragmas?


-- 


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



[Bug c++/39623] Optimizer changes return from htons(uint16)

2009-04-03 Thread strk at keybit dot net


--- Comment #3 from strk at keybit dot net  2009-04-03 09:27 ---
You mean I should file a bug against libc ? Or that it's a non-bug ?
The htons() manual page states it'd return a short...


-- 


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



[Bug c++/36982] Unfolding of template function (in namespace) using overloads (in same namespace) requires forward declarations

2009-04-03 Thread lfn dot privat at mail dot dk


--- Comment #4 from lfn dot privat at mail dot dk  2009-04-03 09:41 ---
Thanks for clarifying how the compiler works. Actually this was the kind of
answer detail level I was looking for in the first place to find some kind of
work around to the problem.

Now, I assume that your answer implies that your described compiler behaviour
is C++ standard compliant - is this a correct assumption ?

I think many developers will find it easier to understand if the compiler
delayed resolution of overloads until point of use/instantiation - in this case
in the main() function. The understanding here is that the compiler should have
the following picture when compiling main():

  struct MyType
  {
int i;
  };

  namespace ReadSpace
  {
static inline bool Read( const char* Str, int& v );

template< class T >
static inline bool Read( const char* Str, std::vector< T >& v );

static inline bool Read( const char* Str, MyType& v );
  }

  using namespace ReadSpace;

  int main() // Should have all the bricks to resolve intended use ...
  {
std::vector< MyType > v;
...

It appears that the compilers you refer to as broken has this picture and are
able to offer much more flexibility (maybe more than the standard states I
presume you will claim).

By the way, it is interesting that the given example works for 'int' as 'int'
is also in the global namespace (or is it implicit in any namespace ?). If you
replace ...

  int main()  
  {
std::vector< MyType > v;

... with ...

  int main()  
  {
std::vector< int > v;

... the example compiles. But there is a catch here. If you move the Read( int&
) overload AFTER the Read( vector< T> ) in the namespace definition, the
example does NOT compile:

namespace ReadSpace
{
  template< class T >
  static inline bool Read( const char* Str, std::vector< T >& v )
  {
T Help;
if ( !Read( Str, Help ) )
  return false;
v.push_back( Help );
return true;
  }

  // Moved ...
  static inline bool Read( const char* Str, int& v )
{ v = 0; return true; }
}

int main()  
{
  std::vector< int > v; // Does NOT compile ...

  // x.cpp:48: error: no matching function for call to
  //  ‘Read(const char*&, int&)’

- o -

All in all I think this compiler behaviour makes it much harder to extend
(template) libraries and developers are given much less order-of-definition
flexibility. If it is standard C++ mandated, then we will have to live with
that for now, but if it is not, I still think gcc/g++ may be broken on this
issue.


-- 

lfn dot privat at mail dot dk changed:

   What|Removed |Added

 CC||lfn dot privat at mail dot
   ||dk


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



[Bug c++/39623] Optimizer changes return from htons(uint16)

2009-04-03 Thread schwab at linux-m68k dot org


--- Comment #2 from schwab at linux-m68k dot org  2009-04-03 09:22 ---
 probably defines different versions of htons depending on
optimisation level.


-- 

schwab at linux-m68k dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||INVALID


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



[Bug tree-optimization/33237] [4.3/4.4/4.5 Regression] Tree memory partitioning is spending 430 seconds of a 490 second compile.

2009-04-03 Thread rguenth at gcc dot gnu dot org


--- Comment #20 from rguenth at gcc dot gnu dot org  2009-04-03 10:26 
---
Subject: Bug 33237

Author: rguenth
Date: Fri Apr  3 10:24:28 2009
New Revision: 145494

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=145494
Log:
2009-04-03  Richard Guenther  

PR middle-end/13146
PR tree-optimization/23940
PR tree-optimization/33237
PR middle-end/33974
PR middle-end/34093
PR tree-optimization/36201
PR tree-optimization/36230
PR tree-optimization/38049
PR tree-optimization/38207
PR tree-optimization/38230
PR tree-optimization/38301
PR tree-optimization/38585
PR middle-end/38895
PR tree-optimization/38985
PR tree-optimization/39299
* tree-ssa-structalias.h: Remove.
* tree-ssa-operands.h (NULL_USE_OPERAND_P): Make of type use_operand_p.
(NULL_DEF_OPERAND_P): Make of type def_operand_p.
(struct vuse_element_d): Remove.
(struct vuse_vec_d): Likewise.
(VUSE_VECT_NUM_ELEM, VUSE_VECT_ELEMENT_NC, VUSE_ELEMENT_PTR_NC,
VUSE_ELEMENT_VAR_NC, VUSE_VECT_ELEMENT, VUSE_ELEMENT_PTR,
SET_VUSE_VECT_ELEMENT, SET_VUSE_ELEMENT_VAR, SET_VUSE_ELEMENT_PTR,
VUSE_ELEMENT_VAR): Likewise.
(struct voptype_d): Likewise.
(NUM_VOP_FREE_BUCKETS): Likewise.
(struct ssa_operands): Remove vop_free_buckets and mpt_table fields.
(struct stmt_operands_d): Remove.
(VUSE_OP_PTR, VUSE_OP, SET_VUSE_OP, VUSE_NUM, VUSE_VECT,
VDEF_RESULT_PTR, VDEF_RESULT, VDEF_OP_PTR, VDEF_OP, SET_VDEF_OP,
VDEF_NUM, VDEF_VECT): Likewise.
(copy_virtual_operands): Remove.
(operand_build_cmp): Likewise.
(create_ssa_artificial_load_stmt): Likewise.
(enum ssa_op_iter_type): Remove ssa_op_iter_vdef.
(struct ssa_operand_iterator_d): Remove vuses, vdefs, mayusesm
vuse_index and mayuse_index members.  Pack and move done and iter_type
members to the front.
(SSA_OP_VMAYUSE): Remove.
(SSA_OP_VIRTUAL_USES): Adjust.
(FOR_EACH_SSA_VDEF_OPERAND): Remove.
(unlink_stmt_vdef): Declare.
(add_to_addressable_set): Remove.
* tree-vrp.c (stmt_interesting_for_vrp): Adjust.
(vrp_visit_stmt): Likewise.
* doc/tree-ssa.texi (Alias analysis): Update.
* doc/invoke.texi (max-aliased-vops): Remove docs.
(avg-aliased-vops): Likewise.
* tree-into-ssa.c (syms_to_rename): Remove.
(need_to_update_vops_p): Likewise.
(need_to_initialize_update_ssa_p): Rename to ...
(update_ssa_initialized_fn): ... this.  Track function we are
initialized for.
(symbol_marked_for_renaming): Simplify.
(add_new_name_mapping): Do not set need_to_update_vops_p.
(dump_currdefs): Use SYMS_TO_RENAME.
(rewrite_update_stmt): Always walk all uses/defs.
(dump_update_ssa): Adjust.
(init_update_ssa): Take function argument.  Track what we are
initialized for.
(delete_update_ssa): Reset SYMS_TO_RENAME and
update_ssa_initialized_fn.
(create_new_def_for): Initialize for cfun, assert we are initialized
for cfun.
(mark_sym_for_renaming): Simplify.
(mark_set_for_renaming): Do not initialize update-ssa.
(need_ssa_update_p): Simplify.  Take function argument.
(name_mappings_registered_p): Assert we ask for the correct function.
(name_registered_for_update_p): Likewise.
(ssa_names_to_replace): Likewise.
(release_ssa_name_after_update_ssa): Likewise.
(update_ssa): Likewise.  Use SYMS_TO_RENAME.
(dump_decl_set): Do not print a newline.
(debug_decl_set): Do it here.
(dump_update_ssa): And here.
* tree-ssa-loop-im.c (move_computations): Adjust.
(movement_possibility): Likewise.
(determine_max_movement): Likewise.
(gather_mem_refs_stmt): Likewise.
* tree-dump.c (dequeue_and_dump): Do not handle SYMBOL_MEMORY_TAG
or NAME_MEMORY_TAG.
* tree-complex.c (update_all_vops): Remove.
(expand_complex_move): Adjust.
* tree-ssa-loop-niter.c (chain_of_csts_start): Use NULL_TREE.
Simplify test for memory referencing statement.  Exclude
non-invariant ADDR_EXPRs.
* tree-pretty-print.c (dump_generic_node): Do not handle memory tags.
* tree-loop-distribution.c (generate_memset_zero): Adjust.
(rdg_flag_uses): Likewise.
* tree-tailcall.c (suitable_for_tail_opt_p): Remove memory-tag
related code.
(tree_optimize_tail_calls_1): Also split the
edge from the entry block if we have degenerate PHI nodes in
the first basic block.
* tree.c (init_ttree): Remove memory-tag related code.
(tree_code_size): Likewise.
(tree_node_structure): Likewise.
(build7_stat): Re-write to be build6_stat.
* tree.h (MTAG_P

[Bug middle-end/13146] inheritance for nonoverlapping_component_refs_p

2009-04-03 Thread rguenth at gcc dot gnu dot org


--- Comment #14 from rguenth at gcc dot gnu dot org  2009-04-03 10:26 
---
Subject: Bug 13146

Author: rguenth
Date: Fri Apr  3 10:24:28 2009
New Revision: 145494

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=145494
Log:
2009-04-03  Richard Guenther  

PR middle-end/13146
PR tree-optimization/23940
PR tree-optimization/33237
PR middle-end/33974
PR middle-end/34093
PR tree-optimization/36201
PR tree-optimization/36230
PR tree-optimization/38049
PR tree-optimization/38207
PR tree-optimization/38230
PR tree-optimization/38301
PR tree-optimization/38585
PR middle-end/38895
PR tree-optimization/38985
PR tree-optimization/39299
* tree-ssa-structalias.h: Remove.
* tree-ssa-operands.h (NULL_USE_OPERAND_P): Make of type use_operand_p.
(NULL_DEF_OPERAND_P): Make of type def_operand_p.
(struct vuse_element_d): Remove.
(struct vuse_vec_d): Likewise.
(VUSE_VECT_NUM_ELEM, VUSE_VECT_ELEMENT_NC, VUSE_ELEMENT_PTR_NC,
VUSE_ELEMENT_VAR_NC, VUSE_VECT_ELEMENT, VUSE_ELEMENT_PTR,
SET_VUSE_VECT_ELEMENT, SET_VUSE_ELEMENT_VAR, SET_VUSE_ELEMENT_PTR,
VUSE_ELEMENT_VAR): Likewise.
(struct voptype_d): Likewise.
(NUM_VOP_FREE_BUCKETS): Likewise.
(struct ssa_operands): Remove vop_free_buckets and mpt_table fields.
(struct stmt_operands_d): Remove.
(VUSE_OP_PTR, VUSE_OP, SET_VUSE_OP, VUSE_NUM, VUSE_VECT,
VDEF_RESULT_PTR, VDEF_RESULT, VDEF_OP_PTR, VDEF_OP, SET_VDEF_OP,
VDEF_NUM, VDEF_VECT): Likewise.
(copy_virtual_operands): Remove.
(operand_build_cmp): Likewise.
(create_ssa_artificial_load_stmt): Likewise.
(enum ssa_op_iter_type): Remove ssa_op_iter_vdef.
(struct ssa_operand_iterator_d): Remove vuses, vdefs, mayusesm
vuse_index and mayuse_index members.  Pack and move done and iter_type
members to the front.
(SSA_OP_VMAYUSE): Remove.
(SSA_OP_VIRTUAL_USES): Adjust.
(FOR_EACH_SSA_VDEF_OPERAND): Remove.
(unlink_stmt_vdef): Declare.
(add_to_addressable_set): Remove.
* tree-vrp.c (stmt_interesting_for_vrp): Adjust.
(vrp_visit_stmt): Likewise.
* doc/tree-ssa.texi (Alias analysis): Update.
* doc/invoke.texi (max-aliased-vops): Remove docs.
(avg-aliased-vops): Likewise.
* tree-into-ssa.c (syms_to_rename): Remove.
(need_to_update_vops_p): Likewise.
(need_to_initialize_update_ssa_p): Rename to ...
(update_ssa_initialized_fn): ... this.  Track function we are
initialized for.
(symbol_marked_for_renaming): Simplify.
(add_new_name_mapping): Do not set need_to_update_vops_p.
(dump_currdefs): Use SYMS_TO_RENAME.
(rewrite_update_stmt): Always walk all uses/defs.
(dump_update_ssa): Adjust.
(init_update_ssa): Take function argument.  Track what we are
initialized for.
(delete_update_ssa): Reset SYMS_TO_RENAME and
update_ssa_initialized_fn.
(create_new_def_for): Initialize for cfun, assert we are initialized
for cfun.
(mark_sym_for_renaming): Simplify.
(mark_set_for_renaming): Do not initialize update-ssa.
(need_ssa_update_p): Simplify.  Take function argument.
(name_mappings_registered_p): Assert we ask for the correct function.
(name_registered_for_update_p): Likewise.
(ssa_names_to_replace): Likewise.
(release_ssa_name_after_update_ssa): Likewise.
(update_ssa): Likewise.  Use SYMS_TO_RENAME.
(dump_decl_set): Do not print a newline.
(debug_decl_set): Do it here.
(dump_update_ssa): And here.
* tree-ssa-loop-im.c (move_computations): Adjust.
(movement_possibility): Likewise.
(determine_max_movement): Likewise.
(gather_mem_refs_stmt): Likewise.
* tree-dump.c (dequeue_and_dump): Do not handle SYMBOL_MEMORY_TAG
or NAME_MEMORY_TAG.
* tree-complex.c (update_all_vops): Remove.
(expand_complex_move): Adjust.
* tree-ssa-loop-niter.c (chain_of_csts_start): Use NULL_TREE.
Simplify test for memory referencing statement.  Exclude
non-invariant ADDR_EXPRs.
* tree-pretty-print.c (dump_generic_node): Do not handle memory tags.
* tree-loop-distribution.c (generate_memset_zero): Adjust.
(rdg_flag_uses): Likewise.
* tree-tailcall.c (suitable_for_tail_opt_p): Remove memory-tag
related code.
(tree_optimize_tail_calls_1): Also split the
edge from the entry block if we have degenerate PHI nodes in
the first basic block.
* tree.c (init_ttree): Remove memory-tag related code.
(tree_code_size): Likewise.
(tree_node_structure): Likewise.
(build7_stat): Re-write to be build6_stat.
* tree.h (MTAG_P

[Bug tree-optimization/33974] [meta-bug] memory partitioning sucks

2009-04-03 Thread rguenth at gcc dot gnu dot org


--- Comment #5 from rguenth at gcc dot gnu dot org  2009-04-03 10:26 ---
Subject: Bug 33974

Author: rguenth
Date: Fri Apr  3 10:24:28 2009
New Revision: 145494

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=145494
Log:
2009-04-03  Richard Guenther  

PR middle-end/13146
PR tree-optimization/23940
PR tree-optimization/33237
PR middle-end/33974
PR middle-end/34093
PR tree-optimization/36201
PR tree-optimization/36230
PR tree-optimization/38049
PR tree-optimization/38207
PR tree-optimization/38230
PR tree-optimization/38301
PR tree-optimization/38585
PR middle-end/38895
PR tree-optimization/38985
PR tree-optimization/39299
* tree-ssa-structalias.h: Remove.
* tree-ssa-operands.h (NULL_USE_OPERAND_P): Make of type use_operand_p.
(NULL_DEF_OPERAND_P): Make of type def_operand_p.
(struct vuse_element_d): Remove.
(struct vuse_vec_d): Likewise.
(VUSE_VECT_NUM_ELEM, VUSE_VECT_ELEMENT_NC, VUSE_ELEMENT_PTR_NC,
VUSE_ELEMENT_VAR_NC, VUSE_VECT_ELEMENT, VUSE_ELEMENT_PTR,
SET_VUSE_VECT_ELEMENT, SET_VUSE_ELEMENT_VAR, SET_VUSE_ELEMENT_PTR,
VUSE_ELEMENT_VAR): Likewise.
(struct voptype_d): Likewise.
(NUM_VOP_FREE_BUCKETS): Likewise.
(struct ssa_operands): Remove vop_free_buckets and mpt_table fields.
(struct stmt_operands_d): Remove.
(VUSE_OP_PTR, VUSE_OP, SET_VUSE_OP, VUSE_NUM, VUSE_VECT,
VDEF_RESULT_PTR, VDEF_RESULT, VDEF_OP_PTR, VDEF_OP, SET_VDEF_OP,
VDEF_NUM, VDEF_VECT): Likewise.
(copy_virtual_operands): Remove.
(operand_build_cmp): Likewise.
(create_ssa_artificial_load_stmt): Likewise.
(enum ssa_op_iter_type): Remove ssa_op_iter_vdef.
(struct ssa_operand_iterator_d): Remove vuses, vdefs, mayusesm
vuse_index and mayuse_index members.  Pack and move done and iter_type
members to the front.
(SSA_OP_VMAYUSE): Remove.
(SSA_OP_VIRTUAL_USES): Adjust.
(FOR_EACH_SSA_VDEF_OPERAND): Remove.
(unlink_stmt_vdef): Declare.
(add_to_addressable_set): Remove.
* tree-vrp.c (stmt_interesting_for_vrp): Adjust.
(vrp_visit_stmt): Likewise.
* doc/tree-ssa.texi (Alias analysis): Update.
* doc/invoke.texi (max-aliased-vops): Remove docs.
(avg-aliased-vops): Likewise.
* tree-into-ssa.c (syms_to_rename): Remove.
(need_to_update_vops_p): Likewise.
(need_to_initialize_update_ssa_p): Rename to ...
(update_ssa_initialized_fn): ... this.  Track function we are
initialized for.
(symbol_marked_for_renaming): Simplify.
(add_new_name_mapping): Do not set need_to_update_vops_p.
(dump_currdefs): Use SYMS_TO_RENAME.
(rewrite_update_stmt): Always walk all uses/defs.
(dump_update_ssa): Adjust.
(init_update_ssa): Take function argument.  Track what we are
initialized for.
(delete_update_ssa): Reset SYMS_TO_RENAME and
update_ssa_initialized_fn.
(create_new_def_for): Initialize for cfun, assert we are initialized
for cfun.
(mark_sym_for_renaming): Simplify.
(mark_set_for_renaming): Do not initialize update-ssa.
(need_ssa_update_p): Simplify.  Take function argument.
(name_mappings_registered_p): Assert we ask for the correct function.
(name_registered_for_update_p): Likewise.
(ssa_names_to_replace): Likewise.
(release_ssa_name_after_update_ssa): Likewise.
(update_ssa): Likewise.  Use SYMS_TO_RENAME.
(dump_decl_set): Do not print a newline.
(debug_decl_set): Do it here.
(dump_update_ssa): And here.
* tree-ssa-loop-im.c (move_computations): Adjust.
(movement_possibility): Likewise.
(determine_max_movement): Likewise.
(gather_mem_refs_stmt): Likewise.
* tree-dump.c (dequeue_and_dump): Do not handle SYMBOL_MEMORY_TAG
or NAME_MEMORY_TAG.
* tree-complex.c (update_all_vops): Remove.
(expand_complex_move): Adjust.
* tree-ssa-loop-niter.c (chain_of_csts_start): Use NULL_TREE.
Simplify test for memory referencing statement.  Exclude
non-invariant ADDR_EXPRs.
* tree-pretty-print.c (dump_generic_node): Do not handle memory tags.
* tree-loop-distribution.c (generate_memset_zero): Adjust.
(rdg_flag_uses): Likewise.
* tree-tailcall.c (suitable_for_tail_opt_p): Remove memory-tag
related code.
(tree_optimize_tail_calls_1): Also split the
edge from the entry block if we have degenerate PHI nodes in
the first basic block.
* tree.c (init_ttree): Remove memory-tag related code.
(tree_code_size): Likewise.
(tree_node_structure): Likewise.
(build7_stat): Re-write to be build6_stat.
* tree.h (MTAG_P, 

[Bug tree-optimization/38301] vectorization breaks type-based aliasing rules

2009-04-03 Thread rguenth at gcc dot gnu dot org


--- Comment #4 from rguenth at gcc dot gnu dot org  2009-04-03 10:26 ---
Subject: Bug 38301

Author: rguenth
Date: Fri Apr  3 10:24:28 2009
New Revision: 145494

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=145494
Log:
2009-04-03  Richard Guenther  

PR middle-end/13146
PR tree-optimization/23940
PR tree-optimization/33237
PR middle-end/33974
PR middle-end/34093
PR tree-optimization/36201
PR tree-optimization/36230
PR tree-optimization/38049
PR tree-optimization/38207
PR tree-optimization/38230
PR tree-optimization/38301
PR tree-optimization/38585
PR middle-end/38895
PR tree-optimization/38985
PR tree-optimization/39299
* tree-ssa-structalias.h: Remove.
* tree-ssa-operands.h (NULL_USE_OPERAND_P): Make of type use_operand_p.
(NULL_DEF_OPERAND_P): Make of type def_operand_p.
(struct vuse_element_d): Remove.
(struct vuse_vec_d): Likewise.
(VUSE_VECT_NUM_ELEM, VUSE_VECT_ELEMENT_NC, VUSE_ELEMENT_PTR_NC,
VUSE_ELEMENT_VAR_NC, VUSE_VECT_ELEMENT, VUSE_ELEMENT_PTR,
SET_VUSE_VECT_ELEMENT, SET_VUSE_ELEMENT_VAR, SET_VUSE_ELEMENT_PTR,
VUSE_ELEMENT_VAR): Likewise.
(struct voptype_d): Likewise.
(NUM_VOP_FREE_BUCKETS): Likewise.
(struct ssa_operands): Remove vop_free_buckets and mpt_table fields.
(struct stmt_operands_d): Remove.
(VUSE_OP_PTR, VUSE_OP, SET_VUSE_OP, VUSE_NUM, VUSE_VECT,
VDEF_RESULT_PTR, VDEF_RESULT, VDEF_OP_PTR, VDEF_OP, SET_VDEF_OP,
VDEF_NUM, VDEF_VECT): Likewise.
(copy_virtual_operands): Remove.
(operand_build_cmp): Likewise.
(create_ssa_artificial_load_stmt): Likewise.
(enum ssa_op_iter_type): Remove ssa_op_iter_vdef.
(struct ssa_operand_iterator_d): Remove vuses, vdefs, mayusesm
vuse_index and mayuse_index members.  Pack and move done and iter_type
members to the front.
(SSA_OP_VMAYUSE): Remove.
(SSA_OP_VIRTUAL_USES): Adjust.
(FOR_EACH_SSA_VDEF_OPERAND): Remove.
(unlink_stmt_vdef): Declare.
(add_to_addressable_set): Remove.
* tree-vrp.c (stmt_interesting_for_vrp): Adjust.
(vrp_visit_stmt): Likewise.
* doc/tree-ssa.texi (Alias analysis): Update.
* doc/invoke.texi (max-aliased-vops): Remove docs.
(avg-aliased-vops): Likewise.
* tree-into-ssa.c (syms_to_rename): Remove.
(need_to_update_vops_p): Likewise.
(need_to_initialize_update_ssa_p): Rename to ...
(update_ssa_initialized_fn): ... this.  Track function we are
initialized for.
(symbol_marked_for_renaming): Simplify.
(add_new_name_mapping): Do not set need_to_update_vops_p.
(dump_currdefs): Use SYMS_TO_RENAME.
(rewrite_update_stmt): Always walk all uses/defs.
(dump_update_ssa): Adjust.
(init_update_ssa): Take function argument.  Track what we are
initialized for.
(delete_update_ssa): Reset SYMS_TO_RENAME and
update_ssa_initialized_fn.
(create_new_def_for): Initialize for cfun, assert we are initialized
for cfun.
(mark_sym_for_renaming): Simplify.
(mark_set_for_renaming): Do not initialize update-ssa.
(need_ssa_update_p): Simplify.  Take function argument.
(name_mappings_registered_p): Assert we ask for the correct function.
(name_registered_for_update_p): Likewise.
(ssa_names_to_replace): Likewise.
(release_ssa_name_after_update_ssa): Likewise.
(update_ssa): Likewise.  Use SYMS_TO_RENAME.
(dump_decl_set): Do not print a newline.
(debug_decl_set): Do it here.
(dump_update_ssa): And here.
* tree-ssa-loop-im.c (move_computations): Adjust.
(movement_possibility): Likewise.
(determine_max_movement): Likewise.
(gather_mem_refs_stmt): Likewise.
* tree-dump.c (dequeue_and_dump): Do not handle SYMBOL_MEMORY_TAG
or NAME_MEMORY_TAG.
* tree-complex.c (update_all_vops): Remove.
(expand_complex_move): Adjust.
* tree-ssa-loop-niter.c (chain_of_csts_start): Use NULL_TREE.
Simplify test for memory referencing statement.  Exclude
non-invariant ADDR_EXPRs.
* tree-pretty-print.c (dump_generic_node): Do not handle memory tags.
* tree-loop-distribution.c (generate_memset_zero): Adjust.
(rdg_flag_uses): Likewise.
* tree-tailcall.c (suitable_for_tail_opt_p): Remove memory-tag
related code.
(tree_optimize_tail_calls_1): Also split the
edge from the entry block if we have degenerate PHI nodes in
the first basic block.
* tree.c (init_ttree): Remove memory-tag related code.
(tree_code_size): Likewise.
(tree_node_structure): Likewise.
(build7_stat): Re-write to be build6_stat.
* tree.h (MTAG_P, 

[Bug tree-optimization/34093] ICE in ssa_operand_alloc, at tree-ssa-operands.c:484

2009-04-03 Thread rguenth at gcc dot gnu dot org


--- Comment #8 from rguenth at gcc dot gnu dot org  2009-04-03 10:26 ---
Subject: Bug 34093

Author: rguenth
Date: Fri Apr  3 10:24:28 2009
New Revision: 145494

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=145494
Log:
2009-04-03  Richard Guenther  

PR middle-end/13146
PR tree-optimization/23940
PR tree-optimization/33237
PR middle-end/33974
PR middle-end/34093
PR tree-optimization/36201
PR tree-optimization/36230
PR tree-optimization/38049
PR tree-optimization/38207
PR tree-optimization/38230
PR tree-optimization/38301
PR tree-optimization/38585
PR middle-end/38895
PR tree-optimization/38985
PR tree-optimization/39299
* tree-ssa-structalias.h: Remove.
* tree-ssa-operands.h (NULL_USE_OPERAND_P): Make of type use_operand_p.
(NULL_DEF_OPERAND_P): Make of type def_operand_p.
(struct vuse_element_d): Remove.
(struct vuse_vec_d): Likewise.
(VUSE_VECT_NUM_ELEM, VUSE_VECT_ELEMENT_NC, VUSE_ELEMENT_PTR_NC,
VUSE_ELEMENT_VAR_NC, VUSE_VECT_ELEMENT, VUSE_ELEMENT_PTR,
SET_VUSE_VECT_ELEMENT, SET_VUSE_ELEMENT_VAR, SET_VUSE_ELEMENT_PTR,
VUSE_ELEMENT_VAR): Likewise.
(struct voptype_d): Likewise.
(NUM_VOP_FREE_BUCKETS): Likewise.
(struct ssa_operands): Remove vop_free_buckets and mpt_table fields.
(struct stmt_operands_d): Remove.
(VUSE_OP_PTR, VUSE_OP, SET_VUSE_OP, VUSE_NUM, VUSE_VECT,
VDEF_RESULT_PTR, VDEF_RESULT, VDEF_OP_PTR, VDEF_OP, SET_VDEF_OP,
VDEF_NUM, VDEF_VECT): Likewise.
(copy_virtual_operands): Remove.
(operand_build_cmp): Likewise.
(create_ssa_artificial_load_stmt): Likewise.
(enum ssa_op_iter_type): Remove ssa_op_iter_vdef.
(struct ssa_operand_iterator_d): Remove vuses, vdefs, mayusesm
vuse_index and mayuse_index members.  Pack and move done and iter_type
members to the front.
(SSA_OP_VMAYUSE): Remove.
(SSA_OP_VIRTUAL_USES): Adjust.
(FOR_EACH_SSA_VDEF_OPERAND): Remove.
(unlink_stmt_vdef): Declare.
(add_to_addressable_set): Remove.
* tree-vrp.c (stmt_interesting_for_vrp): Adjust.
(vrp_visit_stmt): Likewise.
* doc/tree-ssa.texi (Alias analysis): Update.
* doc/invoke.texi (max-aliased-vops): Remove docs.
(avg-aliased-vops): Likewise.
* tree-into-ssa.c (syms_to_rename): Remove.
(need_to_update_vops_p): Likewise.
(need_to_initialize_update_ssa_p): Rename to ...
(update_ssa_initialized_fn): ... this.  Track function we are
initialized for.
(symbol_marked_for_renaming): Simplify.
(add_new_name_mapping): Do not set need_to_update_vops_p.
(dump_currdefs): Use SYMS_TO_RENAME.
(rewrite_update_stmt): Always walk all uses/defs.
(dump_update_ssa): Adjust.
(init_update_ssa): Take function argument.  Track what we are
initialized for.
(delete_update_ssa): Reset SYMS_TO_RENAME and
update_ssa_initialized_fn.
(create_new_def_for): Initialize for cfun, assert we are initialized
for cfun.
(mark_sym_for_renaming): Simplify.
(mark_set_for_renaming): Do not initialize update-ssa.
(need_ssa_update_p): Simplify.  Take function argument.
(name_mappings_registered_p): Assert we ask for the correct function.
(name_registered_for_update_p): Likewise.
(ssa_names_to_replace): Likewise.
(release_ssa_name_after_update_ssa): Likewise.
(update_ssa): Likewise.  Use SYMS_TO_RENAME.
(dump_decl_set): Do not print a newline.
(debug_decl_set): Do it here.
(dump_update_ssa): And here.
* tree-ssa-loop-im.c (move_computations): Adjust.
(movement_possibility): Likewise.
(determine_max_movement): Likewise.
(gather_mem_refs_stmt): Likewise.
* tree-dump.c (dequeue_and_dump): Do not handle SYMBOL_MEMORY_TAG
or NAME_MEMORY_TAG.
* tree-complex.c (update_all_vops): Remove.
(expand_complex_move): Adjust.
* tree-ssa-loop-niter.c (chain_of_csts_start): Use NULL_TREE.
Simplify test for memory referencing statement.  Exclude
non-invariant ADDR_EXPRs.
* tree-pretty-print.c (dump_generic_node): Do not handle memory tags.
* tree-loop-distribution.c (generate_memset_zero): Adjust.
(rdg_flag_uses): Likewise.
* tree-tailcall.c (suitable_for_tail_opt_p): Remove memory-tag
related code.
(tree_optimize_tail_calls_1): Also split the
edge from the entry block if we have degenerate PHI nodes in
the first basic block.
* tree.c (init_ttree): Remove memory-tag related code.
(tree_code_size): Likewise.
(tree_node_structure): Likewise.
(build7_stat): Re-write to be build6_stat.
* tree.h (MTAG_P, 

[Bug tree-optimization/38207] Union in structs are not well optimized

2009-04-03 Thread rguenth at gcc dot gnu dot org


--- Comment #7 from rguenth at gcc dot gnu dot org  2009-04-03 10:26 ---
Subject: Bug 38207

Author: rguenth
Date: Fri Apr  3 10:24:28 2009
New Revision: 145494

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=145494
Log:
2009-04-03  Richard Guenther  

PR middle-end/13146
PR tree-optimization/23940
PR tree-optimization/33237
PR middle-end/33974
PR middle-end/34093
PR tree-optimization/36201
PR tree-optimization/36230
PR tree-optimization/38049
PR tree-optimization/38207
PR tree-optimization/38230
PR tree-optimization/38301
PR tree-optimization/38585
PR middle-end/38895
PR tree-optimization/38985
PR tree-optimization/39299
* tree-ssa-structalias.h: Remove.
* tree-ssa-operands.h (NULL_USE_OPERAND_P): Make of type use_operand_p.
(NULL_DEF_OPERAND_P): Make of type def_operand_p.
(struct vuse_element_d): Remove.
(struct vuse_vec_d): Likewise.
(VUSE_VECT_NUM_ELEM, VUSE_VECT_ELEMENT_NC, VUSE_ELEMENT_PTR_NC,
VUSE_ELEMENT_VAR_NC, VUSE_VECT_ELEMENT, VUSE_ELEMENT_PTR,
SET_VUSE_VECT_ELEMENT, SET_VUSE_ELEMENT_VAR, SET_VUSE_ELEMENT_PTR,
VUSE_ELEMENT_VAR): Likewise.
(struct voptype_d): Likewise.
(NUM_VOP_FREE_BUCKETS): Likewise.
(struct ssa_operands): Remove vop_free_buckets and mpt_table fields.
(struct stmt_operands_d): Remove.
(VUSE_OP_PTR, VUSE_OP, SET_VUSE_OP, VUSE_NUM, VUSE_VECT,
VDEF_RESULT_PTR, VDEF_RESULT, VDEF_OP_PTR, VDEF_OP, SET_VDEF_OP,
VDEF_NUM, VDEF_VECT): Likewise.
(copy_virtual_operands): Remove.
(operand_build_cmp): Likewise.
(create_ssa_artificial_load_stmt): Likewise.
(enum ssa_op_iter_type): Remove ssa_op_iter_vdef.
(struct ssa_operand_iterator_d): Remove vuses, vdefs, mayusesm
vuse_index and mayuse_index members.  Pack and move done and iter_type
members to the front.
(SSA_OP_VMAYUSE): Remove.
(SSA_OP_VIRTUAL_USES): Adjust.
(FOR_EACH_SSA_VDEF_OPERAND): Remove.
(unlink_stmt_vdef): Declare.
(add_to_addressable_set): Remove.
* tree-vrp.c (stmt_interesting_for_vrp): Adjust.
(vrp_visit_stmt): Likewise.
* doc/tree-ssa.texi (Alias analysis): Update.
* doc/invoke.texi (max-aliased-vops): Remove docs.
(avg-aliased-vops): Likewise.
* tree-into-ssa.c (syms_to_rename): Remove.
(need_to_update_vops_p): Likewise.
(need_to_initialize_update_ssa_p): Rename to ...
(update_ssa_initialized_fn): ... this.  Track function we are
initialized for.
(symbol_marked_for_renaming): Simplify.
(add_new_name_mapping): Do not set need_to_update_vops_p.
(dump_currdefs): Use SYMS_TO_RENAME.
(rewrite_update_stmt): Always walk all uses/defs.
(dump_update_ssa): Adjust.
(init_update_ssa): Take function argument.  Track what we are
initialized for.
(delete_update_ssa): Reset SYMS_TO_RENAME and
update_ssa_initialized_fn.
(create_new_def_for): Initialize for cfun, assert we are initialized
for cfun.
(mark_sym_for_renaming): Simplify.
(mark_set_for_renaming): Do not initialize update-ssa.
(need_ssa_update_p): Simplify.  Take function argument.
(name_mappings_registered_p): Assert we ask for the correct function.
(name_registered_for_update_p): Likewise.
(ssa_names_to_replace): Likewise.
(release_ssa_name_after_update_ssa): Likewise.
(update_ssa): Likewise.  Use SYMS_TO_RENAME.
(dump_decl_set): Do not print a newline.
(debug_decl_set): Do it here.
(dump_update_ssa): And here.
* tree-ssa-loop-im.c (move_computations): Adjust.
(movement_possibility): Likewise.
(determine_max_movement): Likewise.
(gather_mem_refs_stmt): Likewise.
* tree-dump.c (dequeue_and_dump): Do not handle SYMBOL_MEMORY_TAG
or NAME_MEMORY_TAG.
* tree-complex.c (update_all_vops): Remove.
(expand_complex_move): Adjust.
* tree-ssa-loop-niter.c (chain_of_csts_start): Use NULL_TREE.
Simplify test for memory referencing statement.  Exclude
non-invariant ADDR_EXPRs.
* tree-pretty-print.c (dump_generic_node): Do not handle memory tags.
* tree-loop-distribution.c (generate_memset_zero): Adjust.
(rdg_flag_uses): Likewise.
* tree-tailcall.c (suitable_for_tail_opt_p): Remove memory-tag
related code.
(tree_optimize_tail_calls_1): Also split the
edge from the entry block if we have degenerate PHI nodes in
the first basic block.
* tree.c (init_ttree): Remove memory-tag related code.
(tree_code_size): Likewise.
(tree_node_structure): Likewise.
(build7_stat): Re-write to be build6_stat.
* tree.h (MTAG_P, 

[Bug tree-optimization/39299] wrong PTA for structure copies

2009-04-03 Thread rguenth at gcc dot gnu dot org


--- Comment #4 from rguenth at gcc dot gnu dot org  2009-04-03 10:26 ---
Subject: Bug 39299

Author: rguenth
Date: Fri Apr  3 10:24:28 2009
New Revision: 145494

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=145494
Log:
2009-04-03  Richard Guenther  

PR middle-end/13146
PR tree-optimization/23940
PR tree-optimization/33237
PR middle-end/33974
PR middle-end/34093
PR tree-optimization/36201
PR tree-optimization/36230
PR tree-optimization/38049
PR tree-optimization/38207
PR tree-optimization/38230
PR tree-optimization/38301
PR tree-optimization/38585
PR middle-end/38895
PR tree-optimization/38985
PR tree-optimization/39299
* tree-ssa-structalias.h: Remove.
* tree-ssa-operands.h (NULL_USE_OPERAND_P): Make of type use_operand_p.
(NULL_DEF_OPERAND_P): Make of type def_operand_p.
(struct vuse_element_d): Remove.
(struct vuse_vec_d): Likewise.
(VUSE_VECT_NUM_ELEM, VUSE_VECT_ELEMENT_NC, VUSE_ELEMENT_PTR_NC,
VUSE_ELEMENT_VAR_NC, VUSE_VECT_ELEMENT, VUSE_ELEMENT_PTR,
SET_VUSE_VECT_ELEMENT, SET_VUSE_ELEMENT_VAR, SET_VUSE_ELEMENT_PTR,
VUSE_ELEMENT_VAR): Likewise.
(struct voptype_d): Likewise.
(NUM_VOP_FREE_BUCKETS): Likewise.
(struct ssa_operands): Remove vop_free_buckets and mpt_table fields.
(struct stmt_operands_d): Remove.
(VUSE_OP_PTR, VUSE_OP, SET_VUSE_OP, VUSE_NUM, VUSE_VECT,
VDEF_RESULT_PTR, VDEF_RESULT, VDEF_OP_PTR, VDEF_OP, SET_VDEF_OP,
VDEF_NUM, VDEF_VECT): Likewise.
(copy_virtual_operands): Remove.
(operand_build_cmp): Likewise.
(create_ssa_artificial_load_stmt): Likewise.
(enum ssa_op_iter_type): Remove ssa_op_iter_vdef.
(struct ssa_operand_iterator_d): Remove vuses, vdefs, mayusesm
vuse_index and mayuse_index members.  Pack and move done and iter_type
members to the front.
(SSA_OP_VMAYUSE): Remove.
(SSA_OP_VIRTUAL_USES): Adjust.
(FOR_EACH_SSA_VDEF_OPERAND): Remove.
(unlink_stmt_vdef): Declare.
(add_to_addressable_set): Remove.
* tree-vrp.c (stmt_interesting_for_vrp): Adjust.
(vrp_visit_stmt): Likewise.
* doc/tree-ssa.texi (Alias analysis): Update.
* doc/invoke.texi (max-aliased-vops): Remove docs.
(avg-aliased-vops): Likewise.
* tree-into-ssa.c (syms_to_rename): Remove.
(need_to_update_vops_p): Likewise.
(need_to_initialize_update_ssa_p): Rename to ...
(update_ssa_initialized_fn): ... this.  Track function we are
initialized for.
(symbol_marked_for_renaming): Simplify.
(add_new_name_mapping): Do not set need_to_update_vops_p.
(dump_currdefs): Use SYMS_TO_RENAME.
(rewrite_update_stmt): Always walk all uses/defs.
(dump_update_ssa): Adjust.
(init_update_ssa): Take function argument.  Track what we are
initialized for.
(delete_update_ssa): Reset SYMS_TO_RENAME and
update_ssa_initialized_fn.
(create_new_def_for): Initialize for cfun, assert we are initialized
for cfun.
(mark_sym_for_renaming): Simplify.
(mark_set_for_renaming): Do not initialize update-ssa.
(need_ssa_update_p): Simplify.  Take function argument.
(name_mappings_registered_p): Assert we ask for the correct function.
(name_registered_for_update_p): Likewise.
(ssa_names_to_replace): Likewise.
(release_ssa_name_after_update_ssa): Likewise.
(update_ssa): Likewise.  Use SYMS_TO_RENAME.
(dump_decl_set): Do not print a newline.
(debug_decl_set): Do it here.
(dump_update_ssa): And here.
* tree-ssa-loop-im.c (move_computations): Adjust.
(movement_possibility): Likewise.
(determine_max_movement): Likewise.
(gather_mem_refs_stmt): Likewise.
* tree-dump.c (dequeue_and_dump): Do not handle SYMBOL_MEMORY_TAG
or NAME_MEMORY_TAG.
* tree-complex.c (update_all_vops): Remove.
(expand_complex_move): Adjust.
* tree-ssa-loop-niter.c (chain_of_csts_start): Use NULL_TREE.
Simplify test for memory referencing statement.  Exclude
non-invariant ADDR_EXPRs.
* tree-pretty-print.c (dump_generic_node): Do not handle memory tags.
* tree-loop-distribution.c (generate_memset_zero): Adjust.
(rdg_flag_uses): Likewise.
* tree-tailcall.c (suitable_for_tail_opt_p): Remove memory-tag
related code.
(tree_optimize_tail_calls_1): Also split the
edge from the entry block if we have degenerate PHI nodes in
the first basic block.
* tree.c (init_ttree): Remove memory-tag related code.
(tree_code_size): Likewise.
(tree_node_structure): Likewise.
(build7_stat): Re-write to be build6_stat.
* tree.h (MTAG_P, 

[Bug tree-optimization/38895] missed type-based disambiguation

2009-04-03 Thread rguenth at gcc dot gnu dot org


--- Comment #3 from rguenth at gcc dot gnu dot org  2009-04-03 10:26 ---
Subject: Bug 38895

Author: rguenth
Date: Fri Apr  3 10:24:28 2009
New Revision: 145494

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=145494
Log:
2009-04-03  Richard Guenther  

PR middle-end/13146
PR tree-optimization/23940
PR tree-optimization/33237
PR middle-end/33974
PR middle-end/34093
PR tree-optimization/36201
PR tree-optimization/36230
PR tree-optimization/38049
PR tree-optimization/38207
PR tree-optimization/38230
PR tree-optimization/38301
PR tree-optimization/38585
PR middle-end/38895
PR tree-optimization/38985
PR tree-optimization/39299
* tree-ssa-structalias.h: Remove.
* tree-ssa-operands.h (NULL_USE_OPERAND_P): Make of type use_operand_p.
(NULL_DEF_OPERAND_P): Make of type def_operand_p.
(struct vuse_element_d): Remove.
(struct vuse_vec_d): Likewise.
(VUSE_VECT_NUM_ELEM, VUSE_VECT_ELEMENT_NC, VUSE_ELEMENT_PTR_NC,
VUSE_ELEMENT_VAR_NC, VUSE_VECT_ELEMENT, VUSE_ELEMENT_PTR,
SET_VUSE_VECT_ELEMENT, SET_VUSE_ELEMENT_VAR, SET_VUSE_ELEMENT_PTR,
VUSE_ELEMENT_VAR): Likewise.
(struct voptype_d): Likewise.
(NUM_VOP_FREE_BUCKETS): Likewise.
(struct ssa_operands): Remove vop_free_buckets and mpt_table fields.
(struct stmt_operands_d): Remove.
(VUSE_OP_PTR, VUSE_OP, SET_VUSE_OP, VUSE_NUM, VUSE_VECT,
VDEF_RESULT_PTR, VDEF_RESULT, VDEF_OP_PTR, VDEF_OP, SET_VDEF_OP,
VDEF_NUM, VDEF_VECT): Likewise.
(copy_virtual_operands): Remove.
(operand_build_cmp): Likewise.
(create_ssa_artificial_load_stmt): Likewise.
(enum ssa_op_iter_type): Remove ssa_op_iter_vdef.
(struct ssa_operand_iterator_d): Remove vuses, vdefs, mayusesm
vuse_index and mayuse_index members.  Pack and move done and iter_type
members to the front.
(SSA_OP_VMAYUSE): Remove.
(SSA_OP_VIRTUAL_USES): Adjust.
(FOR_EACH_SSA_VDEF_OPERAND): Remove.
(unlink_stmt_vdef): Declare.
(add_to_addressable_set): Remove.
* tree-vrp.c (stmt_interesting_for_vrp): Adjust.
(vrp_visit_stmt): Likewise.
* doc/tree-ssa.texi (Alias analysis): Update.
* doc/invoke.texi (max-aliased-vops): Remove docs.
(avg-aliased-vops): Likewise.
* tree-into-ssa.c (syms_to_rename): Remove.
(need_to_update_vops_p): Likewise.
(need_to_initialize_update_ssa_p): Rename to ...
(update_ssa_initialized_fn): ... this.  Track function we are
initialized for.
(symbol_marked_for_renaming): Simplify.
(add_new_name_mapping): Do not set need_to_update_vops_p.
(dump_currdefs): Use SYMS_TO_RENAME.
(rewrite_update_stmt): Always walk all uses/defs.
(dump_update_ssa): Adjust.
(init_update_ssa): Take function argument.  Track what we are
initialized for.
(delete_update_ssa): Reset SYMS_TO_RENAME and
update_ssa_initialized_fn.
(create_new_def_for): Initialize for cfun, assert we are initialized
for cfun.
(mark_sym_for_renaming): Simplify.
(mark_set_for_renaming): Do not initialize update-ssa.
(need_ssa_update_p): Simplify.  Take function argument.
(name_mappings_registered_p): Assert we ask for the correct function.
(name_registered_for_update_p): Likewise.
(ssa_names_to_replace): Likewise.
(release_ssa_name_after_update_ssa): Likewise.
(update_ssa): Likewise.  Use SYMS_TO_RENAME.
(dump_decl_set): Do not print a newline.
(debug_decl_set): Do it here.
(dump_update_ssa): And here.
* tree-ssa-loop-im.c (move_computations): Adjust.
(movement_possibility): Likewise.
(determine_max_movement): Likewise.
(gather_mem_refs_stmt): Likewise.
* tree-dump.c (dequeue_and_dump): Do not handle SYMBOL_MEMORY_TAG
or NAME_MEMORY_TAG.
* tree-complex.c (update_all_vops): Remove.
(expand_complex_move): Adjust.
* tree-ssa-loop-niter.c (chain_of_csts_start): Use NULL_TREE.
Simplify test for memory referencing statement.  Exclude
non-invariant ADDR_EXPRs.
* tree-pretty-print.c (dump_generic_node): Do not handle memory tags.
* tree-loop-distribution.c (generate_memset_zero): Adjust.
(rdg_flag_uses): Likewise.
* tree-tailcall.c (suitable_for_tail_opt_p): Remove memory-tag
related code.
(tree_optimize_tail_calls_1): Also split the
edge from the entry block if we have degenerate PHI nodes in
the first basic block.
* tree.c (init_ttree): Remove memory-tag related code.
(tree_code_size): Likewise.
(tree_node_structure): Likewise.
(build7_stat): Re-write to be build6_stat.
* tree.h (MTAG_P, 

[Bug tree-optimization/38049] points-to results imprecise

2009-04-03 Thread rguenth at gcc dot gnu dot org


--- Comment #3 from rguenth at gcc dot gnu dot org  2009-04-03 10:26 ---
Subject: Bug 38049

Author: rguenth
Date: Fri Apr  3 10:24:28 2009
New Revision: 145494

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=145494
Log:
2009-04-03  Richard Guenther  

PR middle-end/13146
PR tree-optimization/23940
PR tree-optimization/33237
PR middle-end/33974
PR middle-end/34093
PR tree-optimization/36201
PR tree-optimization/36230
PR tree-optimization/38049
PR tree-optimization/38207
PR tree-optimization/38230
PR tree-optimization/38301
PR tree-optimization/38585
PR middle-end/38895
PR tree-optimization/38985
PR tree-optimization/39299
* tree-ssa-structalias.h: Remove.
* tree-ssa-operands.h (NULL_USE_OPERAND_P): Make of type use_operand_p.
(NULL_DEF_OPERAND_P): Make of type def_operand_p.
(struct vuse_element_d): Remove.
(struct vuse_vec_d): Likewise.
(VUSE_VECT_NUM_ELEM, VUSE_VECT_ELEMENT_NC, VUSE_ELEMENT_PTR_NC,
VUSE_ELEMENT_VAR_NC, VUSE_VECT_ELEMENT, VUSE_ELEMENT_PTR,
SET_VUSE_VECT_ELEMENT, SET_VUSE_ELEMENT_VAR, SET_VUSE_ELEMENT_PTR,
VUSE_ELEMENT_VAR): Likewise.
(struct voptype_d): Likewise.
(NUM_VOP_FREE_BUCKETS): Likewise.
(struct ssa_operands): Remove vop_free_buckets and mpt_table fields.
(struct stmt_operands_d): Remove.
(VUSE_OP_PTR, VUSE_OP, SET_VUSE_OP, VUSE_NUM, VUSE_VECT,
VDEF_RESULT_PTR, VDEF_RESULT, VDEF_OP_PTR, VDEF_OP, SET_VDEF_OP,
VDEF_NUM, VDEF_VECT): Likewise.
(copy_virtual_operands): Remove.
(operand_build_cmp): Likewise.
(create_ssa_artificial_load_stmt): Likewise.
(enum ssa_op_iter_type): Remove ssa_op_iter_vdef.
(struct ssa_operand_iterator_d): Remove vuses, vdefs, mayusesm
vuse_index and mayuse_index members.  Pack and move done and iter_type
members to the front.
(SSA_OP_VMAYUSE): Remove.
(SSA_OP_VIRTUAL_USES): Adjust.
(FOR_EACH_SSA_VDEF_OPERAND): Remove.
(unlink_stmt_vdef): Declare.
(add_to_addressable_set): Remove.
* tree-vrp.c (stmt_interesting_for_vrp): Adjust.
(vrp_visit_stmt): Likewise.
* doc/tree-ssa.texi (Alias analysis): Update.
* doc/invoke.texi (max-aliased-vops): Remove docs.
(avg-aliased-vops): Likewise.
* tree-into-ssa.c (syms_to_rename): Remove.
(need_to_update_vops_p): Likewise.
(need_to_initialize_update_ssa_p): Rename to ...
(update_ssa_initialized_fn): ... this.  Track function we are
initialized for.
(symbol_marked_for_renaming): Simplify.
(add_new_name_mapping): Do not set need_to_update_vops_p.
(dump_currdefs): Use SYMS_TO_RENAME.
(rewrite_update_stmt): Always walk all uses/defs.
(dump_update_ssa): Adjust.
(init_update_ssa): Take function argument.  Track what we are
initialized for.
(delete_update_ssa): Reset SYMS_TO_RENAME and
update_ssa_initialized_fn.
(create_new_def_for): Initialize for cfun, assert we are initialized
for cfun.
(mark_sym_for_renaming): Simplify.
(mark_set_for_renaming): Do not initialize update-ssa.
(need_ssa_update_p): Simplify.  Take function argument.
(name_mappings_registered_p): Assert we ask for the correct function.
(name_registered_for_update_p): Likewise.
(ssa_names_to_replace): Likewise.
(release_ssa_name_after_update_ssa): Likewise.
(update_ssa): Likewise.  Use SYMS_TO_RENAME.
(dump_decl_set): Do not print a newline.
(debug_decl_set): Do it here.
(dump_update_ssa): And here.
* tree-ssa-loop-im.c (move_computations): Adjust.
(movement_possibility): Likewise.
(determine_max_movement): Likewise.
(gather_mem_refs_stmt): Likewise.
* tree-dump.c (dequeue_and_dump): Do not handle SYMBOL_MEMORY_TAG
or NAME_MEMORY_TAG.
* tree-complex.c (update_all_vops): Remove.
(expand_complex_move): Adjust.
* tree-ssa-loop-niter.c (chain_of_csts_start): Use NULL_TREE.
Simplify test for memory referencing statement.  Exclude
non-invariant ADDR_EXPRs.
* tree-pretty-print.c (dump_generic_node): Do not handle memory tags.
* tree-loop-distribution.c (generate_memset_zero): Adjust.
(rdg_flag_uses): Likewise.
* tree-tailcall.c (suitable_for_tail_opt_p): Remove memory-tag
related code.
(tree_optimize_tail_calls_1): Also split the
edge from the entry block if we have degenerate PHI nodes in
the first basic block.
* tree.c (init_ttree): Remove memory-tag related code.
(tree_code_size): Likewise.
(tree_node_structure): Likewise.
(build7_stat): Re-write to be build6_stat.
* tree.h (MTAG_P, 

[Bug tree-optimization/23940] SSA_NAMEs are not released after no longer being used.

2009-04-03 Thread rguenth at gcc dot gnu dot org


--- Comment #17 from rguenth at gcc dot gnu dot org  2009-04-03 10:26 
---
Subject: Bug 23940

Author: rguenth
Date: Fri Apr  3 10:24:28 2009
New Revision: 145494

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=145494
Log:
2009-04-03  Richard Guenther  

PR middle-end/13146
PR tree-optimization/23940
PR tree-optimization/33237
PR middle-end/33974
PR middle-end/34093
PR tree-optimization/36201
PR tree-optimization/36230
PR tree-optimization/38049
PR tree-optimization/38207
PR tree-optimization/38230
PR tree-optimization/38301
PR tree-optimization/38585
PR middle-end/38895
PR tree-optimization/38985
PR tree-optimization/39299
* tree-ssa-structalias.h: Remove.
* tree-ssa-operands.h (NULL_USE_OPERAND_P): Make of type use_operand_p.
(NULL_DEF_OPERAND_P): Make of type def_operand_p.
(struct vuse_element_d): Remove.
(struct vuse_vec_d): Likewise.
(VUSE_VECT_NUM_ELEM, VUSE_VECT_ELEMENT_NC, VUSE_ELEMENT_PTR_NC,
VUSE_ELEMENT_VAR_NC, VUSE_VECT_ELEMENT, VUSE_ELEMENT_PTR,
SET_VUSE_VECT_ELEMENT, SET_VUSE_ELEMENT_VAR, SET_VUSE_ELEMENT_PTR,
VUSE_ELEMENT_VAR): Likewise.
(struct voptype_d): Likewise.
(NUM_VOP_FREE_BUCKETS): Likewise.
(struct ssa_operands): Remove vop_free_buckets and mpt_table fields.
(struct stmt_operands_d): Remove.
(VUSE_OP_PTR, VUSE_OP, SET_VUSE_OP, VUSE_NUM, VUSE_VECT,
VDEF_RESULT_PTR, VDEF_RESULT, VDEF_OP_PTR, VDEF_OP, SET_VDEF_OP,
VDEF_NUM, VDEF_VECT): Likewise.
(copy_virtual_operands): Remove.
(operand_build_cmp): Likewise.
(create_ssa_artificial_load_stmt): Likewise.
(enum ssa_op_iter_type): Remove ssa_op_iter_vdef.
(struct ssa_operand_iterator_d): Remove vuses, vdefs, mayusesm
vuse_index and mayuse_index members.  Pack and move done and iter_type
members to the front.
(SSA_OP_VMAYUSE): Remove.
(SSA_OP_VIRTUAL_USES): Adjust.
(FOR_EACH_SSA_VDEF_OPERAND): Remove.
(unlink_stmt_vdef): Declare.
(add_to_addressable_set): Remove.
* tree-vrp.c (stmt_interesting_for_vrp): Adjust.
(vrp_visit_stmt): Likewise.
* doc/tree-ssa.texi (Alias analysis): Update.
* doc/invoke.texi (max-aliased-vops): Remove docs.
(avg-aliased-vops): Likewise.
* tree-into-ssa.c (syms_to_rename): Remove.
(need_to_update_vops_p): Likewise.
(need_to_initialize_update_ssa_p): Rename to ...
(update_ssa_initialized_fn): ... this.  Track function we are
initialized for.
(symbol_marked_for_renaming): Simplify.
(add_new_name_mapping): Do not set need_to_update_vops_p.
(dump_currdefs): Use SYMS_TO_RENAME.
(rewrite_update_stmt): Always walk all uses/defs.
(dump_update_ssa): Adjust.
(init_update_ssa): Take function argument.  Track what we are
initialized for.
(delete_update_ssa): Reset SYMS_TO_RENAME and
update_ssa_initialized_fn.
(create_new_def_for): Initialize for cfun, assert we are initialized
for cfun.
(mark_sym_for_renaming): Simplify.
(mark_set_for_renaming): Do not initialize update-ssa.
(need_ssa_update_p): Simplify.  Take function argument.
(name_mappings_registered_p): Assert we ask for the correct function.
(name_registered_for_update_p): Likewise.
(ssa_names_to_replace): Likewise.
(release_ssa_name_after_update_ssa): Likewise.
(update_ssa): Likewise.  Use SYMS_TO_RENAME.
(dump_decl_set): Do not print a newline.
(debug_decl_set): Do it here.
(dump_update_ssa): And here.
* tree-ssa-loop-im.c (move_computations): Adjust.
(movement_possibility): Likewise.
(determine_max_movement): Likewise.
(gather_mem_refs_stmt): Likewise.
* tree-dump.c (dequeue_and_dump): Do not handle SYMBOL_MEMORY_TAG
or NAME_MEMORY_TAG.
* tree-complex.c (update_all_vops): Remove.
(expand_complex_move): Adjust.
* tree-ssa-loop-niter.c (chain_of_csts_start): Use NULL_TREE.
Simplify test for memory referencing statement.  Exclude
non-invariant ADDR_EXPRs.
* tree-pretty-print.c (dump_generic_node): Do not handle memory tags.
* tree-loop-distribution.c (generate_memset_zero): Adjust.
(rdg_flag_uses): Likewise.
* tree-tailcall.c (suitable_for_tail_opt_p): Remove memory-tag
related code.
(tree_optimize_tail_calls_1): Also split the
edge from the entry block if we have degenerate PHI nodes in
the first basic block.
* tree.c (init_ttree): Remove memory-tag related code.
(tree_code_size): Likewise.
(tree_node_structure): Likewise.
(build7_stat): Re-write to be build6_stat.
* tree.h (MTAG_P

[Bug middle-end/38585] excessive time in compute_may_aliases

2009-04-03 Thread rguenth at gcc dot gnu dot org


--- Comment #3 from rguenth at gcc dot gnu dot org  2009-04-03 10:26 ---
Subject: Bug 38585

Author: rguenth
Date: Fri Apr  3 10:24:28 2009
New Revision: 145494

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=145494
Log:
2009-04-03  Richard Guenther  

PR middle-end/13146
PR tree-optimization/23940
PR tree-optimization/33237
PR middle-end/33974
PR middle-end/34093
PR tree-optimization/36201
PR tree-optimization/36230
PR tree-optimization/38049
PR tree-optimization/38207
PR tree-optimization/38230
PR tree-optimization/38301
PR tree-optimization/38585
PR middle-end/38895
PR tree-optimization/38985
PR tree-optimization/39299
* tree-ssa-structalias.h: Remove.
* tree-ssa-operands.h (NULL_USE_OPERAND_P): Make of type use_operand_p.
(NULL_DEF_OPERAND_P): Make of type def_operand_p.
(struct vuse_element_d): Remove.
(struct vuse_vec_d): Likewise.
(VUSE_VECT_NUM_ELEM, VUSE_VECT_ELEMENT_NC, VUSE_ELEMENT_PTR_NC,
VUSE_ELEMENT_VAR_NC, VUSE_VECT_ELEMENT, VUSE_ELEMENT_PTR,
SET_VUSE_VECT_ELEMENT, SET_VUSE_ELEMENT_VAR, SET_VUSE_ELEMENT_PTR,
VUSE_ELEMENT_VAR): Likewise.
(struct voptype_d): Likewise.
(NUM_VOP_FREE_BUCKETS): Likewise.
(struct ssa_operands): Remove vop_free_buckets and mpt_table fields.
(struct stmt_operands_d): Remove.
(VUSE_OP_PTR, VUSE_OP, SET_VUSE_OP, VUSE_NUM, VUSE_VECT,
VDEF_RESULT_PTR, VDEF_RESULT, VDEF_OP_PTR, VDEF_OP, SET_VDEF_OP,
VDEF_NUM, VDEF_VECT): Likewise.
(copy_virtual_operands): Remove.
(operand_build_cmp): Likewise.
(create_ssa_artificial_load_stmt): Likewise.
(enum ssa_op_iter_type): Remove ssa_op_iter_vdef.
(struct ssa_operand_iterator_d): Remove vuses, vdefs, mayusesm
vuse_index and mayuse_index members.  Pack and move done and iter_type
members to the front.
(SSA_OP_VMAYUSE): Remove.
(SSA_OP_VIRTUAL_USES): Adjust.
(FOR_EACH_SSA_VDEF_OPERAND): Remove.
(unlink_stmt_vdef): Declare.
(add_to_addressable_set): Remove.
* tree-vrp.c (stmt_interesting_for_vrp): Adjust.
(vrp_visit_stmt): Likewise.
* doc/tree-ssa.texi (Alias analysis): Update.
* doc/invoke.texi (max-aliased-vops): Remove docs.
(avg-aliased-vops): Likewise.
* tree-into-ssa.c (syms_to_rename): Remove.
(need_to_update_vops_p): Likewise.
(need_to_initialize_update_ssa_p): Rename to ...
(update_ssa_initialized_fn): ... this.  Track function we are
initialized for.
(symbol_marked_for_renaming): Simplify.
(add_new_name_mapping): Do not set need_to_update_vops_p.
(dump_currdefs): Use SYMS_TO_RENAME.
(rewrite_update_stmt): Always walk all uses/defs.
(dump_update_ssa): Adjust.
(init_update_ssa): Take function argument.  Track what we are
initialized for.
(delete_update_ssa): Reset SYMS_TO_RENAME and
update_ssa_initialized_fn.
(create_new_def_for): Initialize for cfun, assert we are initialized
for cfun.
(mark_sym_for_renaming): Simplify.
(mark_set_for_renaming): Do not initialize update-ssa.
(need_ssa_update_p): Simplify.  Take function argument.
(name_mappings_registered_p): Assert we ask for the correct function.
(name_registered_for_update_p): Likewise.
(ssa_names_to_replace): Likewise.
(release_ssa_name_after_update_ssa): Likewise.
(update_ssa): Likewise.  Use SYMS_TO_RENAME.
(dump_decl_set): Do not print a newline.
(debug_decl_set): Do it here.
(dump_update_ssa): And here.
* tree-ssa-loop-im.c (move_computations): Adjust.
(movement_possibility): Likewise.
(determine_max_movement): Likewise.
(gather_mem_refs_stmt): Likewise.
* tree-dump.c (dequeue_and_dump): Do not handle SYMBOL_MEMORY_TAG
or NAME_MEMORY_TAG.
* tree-complex.c (update_all_vops): Remove.
(expand_complex_move): Adjust.
* tree-ssa-loop-niter.c (chain_of_csts_start): Use NULL_TREE.
Simplify test for memory referencing statement.  Exclude
non-invariant ADDR_EXPRs.
* tree-pretty-print.c (dump_generic_node): Do not handle memory tags.
* tree-loop-distribution.c (generate_memset_zero): Adjust.
(rdg_flag_uses): Likewise.
* tree-tailcall.c (suitable_for_tail_opt_p): Remove memory-tag
related code.
(tree_optimize_tail_calls_1): Also split the
edge from the entry block if we have degenerate PHI nodes in
the first basic block.
* tree.c (init_ttree): Remove memory-tag related code.
(tree_code_size): Likewise.
(tree_node_structure): Likewise.
(build7_stat): Re-write to be build6_stat.
* tree.h (MTAG_P, 

[Bug middle-end/36201] [4.4/4.5 Regression] NVR in the front-end causes missed optimization later on ( thought to alias arguments)

2009-04-03 Thread rguenth at gcc dot gnu dot org


--- Comment #7 from rguenth at gcc dot gnu dot org  2009-04-03 10:26 ---
Subject: Bug 36201

Author: rguenth
Date: Fri Apr  3 10:24:28 2009
New Revision: 145494

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=145494
Log:
2009-04-03  Richard Guenther  

PR middle-end/13146
PR tree-optimization/23940
PR tree-optimization/33237
PR middle-end/33974
PR middle-end/34093
PR tree-optimization/36201
PR tree-optimization/36230
PR tree-optimization/38049
PR tree-optimization/38207
PR tree-optimization/38230
PR tree-optimization/38301
PR tree-optimization/38585
PR middle-end/38895
PR tree-optimization/38985
PR tree-optimization/39299
* tree-ssa-structalias.h: Remove.
* tree-ssa-operands.h (NULL_USE_OPERAND_P): Make of type use_operand_p.
(NULL_DEF_OPERAND_P): Make of type def_operand_p.
(struct vuse_element_d): Remove.
(struct vuse_vec_d): Likewise.
(VUSE_VECT_NUM_ELEM, VUSE_VECT_ELEMENT_NC, VUSE_ELEMENT_PTR_NC,
VUSE_ELEMENT_VAR_NC, VUSE_VECT_ELEMENT, VUSE_ELEMENT_PTR,
SET_VUSE_VECT_ELEMENT, SET_VUSE_ELEMENT_VAR, SET_VUSE_ELEMENT_PTR,
VUSE_ELEMENT_VAR): Likewise.
(struct voptype_d): Likewise.
(NUM_VOP_FREE_BUCKETS): Likewise.
(struct ssa_operands): Remove vop_free_buckets and mpt_table fields.
(struct stmt_operands_d): Remove.
(VUSE_OP_PTR, VUSE_OP, SET_VUSE_OP, VUSE_NUM, VUSE_VECT,
VDEF_RESULT_PTR, VDEF_RESULT, VDEF_OP_PTR, VDEF_OP, SET_VDEF_OP,
VDEF_NUM, VDEF_VECT): Likewise.
(copy_virtual_operands): Remove.
(operand_build_cmp): Likewise.
(create_ssa_artificial_load_stmt): Likewise.
(enum ssa_op_iter_type): Remove ssa_op_iter_vdef.
(struct ssa_operand_iterator_d): Remove vuses, vdefs, mayusesm
vuse_index and mayuse_index members.  Pack and move done and iter_type
members to the front.
(SSA_OP_VMAYUSE): Remove.
(SSA_OP_VIRTUAL_USES): Adjust.
(FOR_EACH_SSA_VDEF_OPERAND): Remove.
(unlink_stmt_vdef): Declare.
(add_to_addressable_set): Remove.
* tree-vrp.c (stmt_interesting_for_vrp): Adjust.
(vrp_visit_stmt): Likewise.
* doc/tree-ssa.texi (Alias analysis): Update.
* doc/invoke.texi (max-aliased-vops): Remove docs.
(avg-aliased-vops): Likewise.
* tree-into-ssa.c (syms_to_rename): Remove.
(need_to_update_vops_p): Likewise.
(need_to_initialize_update_ssa_p): Rename to ...
(update_ssa_initialized_fn): ... this.  Track function we are
initialized for.
(symbol_marked_for_renaming): Simplify.
(add_new_name_mapping): Do not set need_to_update_vops_p.
(dump_currdefs): Use SYMS_TO_RENAME.
(rewrite_update_stmt): Always walk all uses/defs.
(dump_update_ssa): Adjust.
(init_update_ssa): Take function argument.  Track what we are
initialized for.
(delete_update_ssa): Reset SYMS_TO_RENAME and
update_ssa_initialized_fn.
(create_new_def_for): Initialize for cfun, assert we are initialized
for cfun.
(mark_sym_for_renaming): Simplify.
(mark_set_for_renaming): Do not initialize update-ssa.
(need_ssa_update_p): Simplify.  Take function argument.
(name_mappings_registered_p): Assert we ask for the correct function.
(name_registered_for_update_p): Likewise.
(ssa_names_to_replace): Likewise.
(release_ssa_name_after_update_ssa): Likewise.
(update_ssa): Likewise.  Use SYMS_TO_RENAME.
(dump_decl_set): Do not print a newline.
(debug_decl_set): Do it here.
(dump_update_ssa): And here.
* tree-ssa-loop-im.c (move_computations): Adjust.
(movement_possibility): Likewise.
(determine_max_movement): Likewise.
(gather_mem_refs_stmt): Likewise.
* tree-dump.c (dequeue_and_dump): Do not handle SYMBOL_MEMORY_TAG
or NAME_MEMORY_TAG.
* tree-complex.c (update_all_vops): Remove.
(expand_complex_move): Adjust.
* tree-ssa-loop-niter.c (chain_of_csts_start): Use NULL_TREE.
Simplify test for memory referencing statement.  Exclude
non-invariant ADDR_EXPRs.
* tree-pretty-print.c (dump_generic_node): Do not handle memory tags.
* tree-loop-distribution.c (generate_memset_zero): Adjust.
(rdg_flag_uses): Likewise.
* tree-tailcall.c (suitable_for_tail_opt_p): Remove memory-tag
related code.
(tree_optimize_tail_calls_1): Also split the
edge from the entry block if we have degenerate PHI nodes in
the first basic block.
* tree.c (init_ttree): Remove memory-tag related code.
(tree_code_size): Likewise.
(tree_node_structure): Likewise.
(build7_stat): Re-write to be build6_stat.
* tree.h (MTAG_P, 

[Bug tree-optimization/38230] SCCVN doesn't do expression lookups during stmt walks

2009-04-03 Thread rguenth at gcc dot gnu dot org


--- Comment #2 from rguenth at gcc dot gnu dot org  2009-04-03 10:26 ---
Subject: Bug 38230

Author: rguenth
Date: Fri Apr  3 10:24:28 2009
New Revision: 145494

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=145494
Log:
2009-04-03  Richard Guenther  

PR middle-end/13146
PR tree-optimization/23940
PR tree-optimization/33237
PR middle-end/33974
PR middle-end/34093
PR tree-optimization/36201
PR tree-optimization/36230
PR tree-optimization/38049
PR tree-optimization/38207
PR tree-optimization/38230
PR tree-optimization/38301
PR tree-optimization/38585
PR middle-end/38895
PR tree-optimization/38985
PR tree-optimization/39299
* tree-ssa-structalias.h: Remove.
* tree-ssa-operands.h (NULL_USE_OPERAND_P): Make of type use_operand_p.
(NULL_DEF_OPERAND_P): Make of type def_operand_p.
(struct vuse_element_d): Remove.
(struct vuse_vec_d): Likewise.
(VUSE_VECT_NUM_ELEM, VUSE_VECT_ELEMENT_NC, VUSE_ELEMENT_PTR_NC,
VUSE_ELEMENT_VAR_NC, VUSE_VECT_ELEMENT, VUSE_ELEMENT_PTR,
SET_VUSE_VECT_ELEMENT, SET_VUSE_ELEMENT_VAR, SET_VUSE_ELEMENT_PTR,
VUSE_ELEMENT_VAR): Likewise.
(struct voptype_d): Likewise.
(NUM_VOP_FREE_BUCKETS): Likewise.
(struct ssa_operands): Remove vop_free_buckets and mpt_table fields.
(struct stmt_operands_d): Remove.
(VUSE_OP_PTR, VUSE_OP, SET_VUSE_OP, VUSE_NUM, VUSE_VECT,
VDEF_RESULT_PTR, VDEF_RESULT, VDEF_OP_PTR, VDEF_OP, SET_VDEF_OP,
VDEF_NUM, VDEF_VECT): Likewise.
(copy_virtual_operands): Remove.
(operand_build_cmp): Likewise.
(create_ssa_artificial_load_stmt): Likewise.
(enum ssa_op_iter_type): Remove ssa_op_iter_vdef.
(struct ssa_operand_iterator_d): Remove vuses, vdefs, mayusesm
vuse_index and mayuse_index members.  Pack and move done and iter_type
members to the front.
(SSA_OP_VMAYUSE): Remove.
(SSA_OP_VIRTUAL_USES): Adjust.
(FOR_EACH_SSA_VDEF_OPERAND): Remove.
(unlink_stmt_vdef): Declare.
(add_to_addressable_set): Remove.
* tree-vrp.c (stmt_interesting_for_vrp): Adjust.
(vrp_visit_stmt): Likewise.
* doc/tree-ssa.texi (Alias analysis): Update.
* doc/invoke.texi (max-aliased-vops): Remove docs.
(avg-aliased-vops): Likewise.
* tree-into-ssa.c (syms_to_rename): Remove.
(need_to_update_vops_p): Likewise.
(need_to_initialize_update_ssa_p): Rename to ...
(update_ssa_initialized_fn): ... this.  Track function we are
initialized for.
(symbol_marked_for_renaming): Simplify.
(add_new_name_mapping): Do not set need_to_update_vops_p.
(dump_currdefs): Use SYMS_TO_RENAME.
(rewrite_update_stmt): Always walk all uses/defs.
(dump_update_ssa): Adjust.
(init_update_ssa): Take function argument.  Track what we are
initialized for.
(delete_update_ssa): Reset SYMS_TO_RENAME and
update_ssa_initialized_fn.
(create_new_def_for): Initialize for cfun, assert we are initialized
for cfun.
(mark_sym_for_renaming): Simplify.
(mark_set_for_renaming): Do not initialize update-ssa.
(need_ssa_update_p): Simplify.  Take function argument.
(name_mappings_registered_p): Assert we ask for the correct function.
(name_registered_for_update_p): Likewise.
(ssa_names_to_replace): Likewise.
(release_ssa_name_after_update_ssa): Likewise.
(update_ssa): Likewise.  Use SYMS_TO_RENAME.
(dump_decl_set): Do not print a newline.
(debug_decl_set): Do it here.
(dump_update_ssa): And here.
* tree-ssa-loop-im.c (move_computations): Adjust.
(movement_possibility): Likewise.
(determine_max_movement): Likewise.
(gather_mem_refs_stmt): Likewise.
* tree-dump.c (dequeue_and_dump): Do not handle SYMBOL_MEMORY_TAG
or NAME_MEMORY_TAG.
* tree-complex.c (update_all_vops): Remove.
(expand_complex_move): Adjust.
* tree-ssa-loop-niter.c (chain_of_csts_start): Use NULL_TREE.
Simplify test for memory referencing statement.  Exclude
non-invariant ADDR_EXPRs.
* tree-pretty-print.c (dump_generic_node): Do not handle memory tags.
* tree-loop-distribution.c (generate_memset_zero): Adjust.
(rdg_flag_uses): Likewise.
* tree-tailcall.c (suitable_for_tail_opt_p): Remove memory-tag
related code.
(tree_optimize_tail_calls_1): Also split the
edge from the entry block if we have degenerate PHI nodes in
the first basic block.
* tree.c (init_ttree): Remove memory-tag related code.
(tree_code_size): Likewise.
(tree_node_structure): Likewise.
(build7_stat): Re-write to be build6_stat.
* tree.h (MTAG_P, 

[Bug tree-optimization/38985] [4.3/4.4/4.5 Regression] missing VOPs for pointers accessed directly via their address

2009-04-03 Thread rguenth at gcc dot gnu dot org


--- Comment #16 from rguenth at gcc dot gnu dot org  2009-04-03 10:26 
---
Subject: Bug 38985

Author: rguenth
Date: Fri Apr  3 10:24:28 2009
New Revision: 145494

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=145494
Log:
2009-04-03  Richard Guenther  

PR middle-end/13146
PR tree-optimization/23940
PR tree-optimization/33237
PR middle-end/33974
PR middle-end/34093
PR tree-optimization/36201
PR tree-optimization/36230
PR tree-optimization/38049
PR tree-optimization/38207
PR tree-optimization/38230
PR tree-optimization/38301
PR tree-optimization/38585
PR middle-end/38895
PR tree-optimization/38985
PR tree-optimization/39299
* tree-ssa-structalias.h: Remove.
* tree-ssa-operands.h (NULL_USE_OPERAND_P): Make of type use_operand_p.
(NULL_DEF_OPERAND_P): Make of type def_operand_p.
(struct vuse_element_d): Remove.
(struct vuse_vec_d): Likewise.
(VUSE_VECT_NUM_ELEM, VUSE_VECT_ELEMENT_NC, VUSE_ELEMENT_PTR_NC,
VUSE_ELEMENT_VAR_NC, VUSE_VECT_ELEMENT, VUSE_ELEMENT_PTR,
SET_VUSE_VECT_ELEMENT, SET_VUSE_ELEMENT_VAR, SET_VUSE_ELEMENT_PTR,
VUSE_ELEMENT_VAR): Likewise.
(struct voptype_d): Likewise.
(NUM_VOP_FREE_BUCKETS): Likewise.
(struct ssa_operands): Remove vop_free_buckets and mpt_table fields.
(struct stmt_operands_d): Remove.
(VUSE_OP_PTR, VUSE_OP, SET_VUSE_OP, VUSE_NUM, VUSE_VECT,
VDEF_RESULT_PTR, VDEF_RESULT, VDEF_OP_PTR, VDEF_OP, SET_VDEF_OP,
VDEF_NUM, VDEF_VECT): Likewise.
(copy_virtual_operands): Remove.
(operand_build_cmp): Likewise.
(create_ssa_artificial_load_stmt): Likewise.
(enum ssa_op_iter_type): Remove ssa_op_iter_vdef.
(struct ssa_operand_iterator_d): Remove vuses, vdefs, mayusesm
vuse_index and mayuse_index members.  Pack and move done and iter_type
members to the front.
(SSA_OP_VMAYUSE): Remove.
(SSA_OP_VIRTUAL_USES): Adjust.
(FOR_EACH_SSA_VDEF_OPERAND): Remove.
(unlink_stmt_vdef): Declare.
(add_to_addressable_set): Remove.
* tree-vrp.c (stmt_interesting_for_vrp): Adjust.
(vrp_visit_stmt): Likewise.
* doc/tree-ssa.texi (Alias analysis): Update.
* doc/invoke.texi (max-aliased-vops): Remove docs.
(avg-aliased-vops): Likewise.
* tree-into-ssa.c (syms_to_rename): Remove.
(need_to_update_vops_p): Likewise.
(need_to_initialize_update_ssa_p): Rename to ...
(update_ssa_initialized_fn): ... this.  Track function we are
initialized for.
(symbol_marked_for_renaming): Simplify.
(add_new_name_mapping): Do not set need_to_update_vops_p.
(dump_currdefs): Use SYMS_TO_RENAME.
(rewrite_update_stmt): Always walk all uses/defs.
(dump_update_ssa): Adjust.
(init_update_ssa): Take function argument.  Track what we are
initialized for.
(delete_update_ssa): Reset SYMS_TO_RENAME and
update_ssa_initialized_fn.
(create_new_def_for): Initialize for cfun, assert we are initialized
for cfun.
(mark_sym_for_renaming): Simplify.
(mark_set_for_renaming): Do not initialize update-ssa.
(need_ssa_update_p): Simplify.  Take function argument.
(name_mappings_registered_p): Assert we ask for the correct function.
(name_registered_for_update_p): Likewise.
(ssa_names_to_replace): Likewise.
(release_ssa_name_after_update_ssa): Likewise.
(update_ssa): Likewise.  Use SYMS_TO_RENAME.
(dump_decl_set): Do not print a newline.
(debug_decl_set): Do it here.
(dump_update_ssa): And here.
* tree-ssa-loop-im.c (move_computations): Adjust.
(movement_possibility): Likewise.
(determine_max_movement): Likewise.
(gather_mem_refs_stmt): Likewise.
* tree-dump.c (dequeue_and_dump): Do not handle SYMBOL_MEMORY_TAG
or NAME_MEMORY_TAG.
* tree-complex.c (update_all_vops): Remove.
(expand_complex_move): Adjust.
* tree-ssa-loop-niter.c (chain_of_csts_start): Use NULL_TREE.
Simplify test for memory referencing statement.  Exclude
non-invariant ADDR_EXPRs.
* tree-pretty-print.c (dump_generic_node): Do not handle memory tags.
* tree-loop-distribution.c (generate_memset_zero): Adjust.
(rdg_flag_uses): Likewise.
* tree-tailcall.c (suitable_for_tail_opt_p): Remove memory-tag
related code.
(tree_optimize_tail_calls_1): Also split the
edge from the entry block if we have degenerate PHI nodes in
the first basic block.
* tree.c (init_ttree): Remove memory-tag related code.
(tree_code_size): Likewise.
(tree_node_structure): Likewise.
(build7_stat): Re-write to be build6_stat.
* tree.h (MTAG_P

[Bug tree-optimization/36230] load PRE doesn't deal with more precise alias info on one path

2009-04-03 Thread rguenth at gcc dot gnu dot org


--- Comment #2 from rguenth at gcc dot gnu dot org  2009-04-03 10:26 ---
Subject: Bug 36230

Author: rguenth
Date: Fri Apr  3 10:24:28 2009
New Revision: 145494

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=145494
Log:
2009-04-03  Richard Guenther  

PR middle-end/13146
PR tree-optimization/23940
PR tree-optimization/33237
PR middle-end/33974
PR middle-end/34093
PR tree-optimization/36201
PR tree-optimization/36230
PR tree-optimization/38049
PR tree-optimization/38207
PR tree-optimization/38230
PR tree-optimization/38301
PR tree-optimization/38585
PR middle-end/38895
PR tree-optimization/38985
PR tree-optimization/39299
* tree-ssa-structalias.h: Remove.
* tree-ssa-operands.h (NULL_USE_OPERAND_P): Make of type use_operand_p.
(NULL_DEF_OPERAND_P): Make of type def_operand_p.
(struct vuse_element_d): Remove.
(struct vuse_vec_d): Likewise.
(VUSE_VECT_NUM_ELEM, VUSE_VECT_ELEMENT_NC, VUSE_ELEMENT_PTR_NC,
VUSE_ELEMENT_VAR_NC, VUSE_VECT_ELEMENT, VUSE_ELEMENT_PTR,
SET_VUSE_VECT_ELEMENT, SET_VUSE_ELEMENT_VAR, SET_VUSE_ELEMENT_PTR,
VUSE_ELEMENT_VAR): Likewise.
(struct voptype_d): Likewise.
(NUM_VOP_FREE_BUCKETS): Likewise.
(struct ssa_operands): Remove vop_free_buckets and mpt_table fields.
(struct stmt_operands_d): Remove.
(VUSE_OP_PTR, VUSE_OP, SET_VUSE_OP, VUSE_NUM, VUSE_VECT,
VDEF_RESULT_PTR, VDEF_RESULT, VDEF_OP_PTR, VDEF_OP, SET_VDEF_OP,
VDEF_NUM, VDEF_VECT): Likewise.
(copy_virtual_operands): Remove.
(operand_build_cmp): Likewise.
(create_ssa_artificial_load_stmt): Likewise.
(enum ssa_op_iter_type): Remove ssa_op_iter_vdef.
(struct ssa_operand_iterator_d): Remove vuses, vdefs, mayusesm
vuse_index and mayuse_index members.  Pack and move done and iter_type
members to the front.
(SSA_OP_VMAYUSE): Remove.
(SSA_OP_VIRTUAL_USES): Adjust.
(FOR_EACH_SSA_VDEF_OPERAND): Remove.
(unlink_stmt_vdef): Declare.
(add_to_addressable_set): Remove.
* tree-vrp.c (stmt_interesting_for_vrp): Adjust.
(vrp_visit_stmt): Likewise.
* doc/tree-ssa.texi (Alias analysis): Update.
* doc/invoke.texi (max-aliased-vops): Remove docs.
(avg-aliased-vops): Likewise.
* tree-into-ssa.c (syms_to_rename): Remove.
(need_to_update_vops_p): Likewise.
(need_to_initialize_update_ssa_p): Rename to ...
(update_ssa_initialized_fn): ... this.  Track function we are
initialized for.
(symbol_marked_for_renaming): Simplify.
(add_new_name_mapping): Do not set need_to_update_vops_p.
(dump_currdefs): Use SYMS_TO_RENAME.
(rewrite_update_stmt): Always walk all uses/defs.
(dump_update_ssa): Adjust.
(init_update_ssa): Take function argument.  Track what we are
initialized for.
(delete_update_ssa): Reset SYMS_TO_RENAME and
update_ssa_initialized_fn.
(create_new_def_for): Initialize for cfun, assert we are initialized
for cfun.
(mark_sym_for_renaming): Simplify.
(mark_set_for_renaming): Do not initialize update-ssa.
(need_ssa_update_p): Simplify.  Take function argument.
(name_mappings_registered_p): Assert we ask for the correct function.
(name_registered_for_update_p): Likewise.
(ssa_names_to_replace): Likewise.
(release_ssa_name_after_update_ssa): Likewise.
(update_ssa): Likewise.  Use SYMS_TO_RENAME.
(dump_decl_set): Do not print a newline.
(debug_decl_set): Do it here.
(dump_update_ssa): And here.
* tree-ssa-loop-im.c (move_computations): Adjust.
(movement_possibility): Likewise.
(determine_max_movement): Likewise.
(gather_mem_refs_stmt): Likewise.
* tree-dump.c (dequeue_and_dump): Do not handle SYMBOL_MEMORY_TAG
or NAME_MEMORY_TAG.
* tree-complex.c (update_all_vops): Remove.
(expand_complex_move): Adjust.
* tree-ssa-loop-niter.c (chain_of_csts_start): Use NULL_TREE.
Simplify test for memory referencing statement.  Exclude
non-invariant ADDR_EXPRs.
* tree-pretty-print.c (dump_generic_node): Do not handle memory tags.
* tree-loop-distribution.c (generate_memset_zero): Adjust.
(rdg_flag_uses): Likewise.
* tree-tailcall.c (suitable_for_tail_opt_p): Remove memory-tag
related code.
(tree_optimize_tail_calls_1): Also split the
edge from the entry block if we have degenerate PHI nodes in
the first basic block.
* tree.c (init_ttree): Remove memory-tag related code.
(tree_code_size): Likewise.
(tree_node_structure): Likewise.
(build7_stat): Re-write to be build6_stat.
* tree.h (MTAG_P, 

[Bug middle-end/13146] inheritance for nonoverlapping_component_refs_p

2009-04-03 Thread rguenth at gcc dot gnu dot org


--- Comment #15 from rguenth at gcc dot gnu dot org  2009-04-03 10:27 
---
Fixed.


-- 

rguenth at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution||FIXED
   Target Milestone|--- |4.5.0


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



[Bug tree-optimization/23940] SSA_NAMEs are not released after no longer being used.

2009-04-03 Thread rguenth at gcc dot gnu dot org


--- Comment #18 from rguenth at gcc dot gnu dot org  2009-04-03 10:29 
---
Fixed for 4.5.


-- 

rguenth at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution||FIXED
   Target Milestone|--- |4.5.0


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



[Bug tree-optimization/33237] [4.3/4.4 Regression] Tree memory partitioning is spending 430 seconds of a 490 second compile.

2009-04-03 Thread rguenth at gcc dot gnu dot org


--- Comment #21 from rguenth at gcc dot gnu dot org  2009-04-03 10:29 
---
Fixed for 4.5.0.


-- 

rguenth at gcc dot gnu dot org changed:

   What|Removed |Added

 AssignedTo|rguenth at gcc dot gnu dot  |unassigned at gcc dot gnu
   |org |dot org
 Status|ASSIGNED|NEW
  Known to work|4.2.3   |4.2.3 4.5.0
Summary|[4.3/4.4/4.5 Regression]|[4.3/4.4 Regression] Tree
   |Tree memory partitioning is |memory partitioning is
   |spending 430 seconds of a   |spending 430 seconds of a
   |490 second compile. |490 second compile.


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



[Bug tree-optimization/33974] [meta-bug] memory partitioning sucks

2009-04-03 Thread rguenth at gcc dot gnu dot org


--- Comment #6 from rguenth at gcc dot gnu dot org  2009-04-03 10:30 ---
Fixed for 4.5.0 - it's gone there.


-- 

rguenth at gcc dot gnu dot org changed:

   What|Removed |Added

  Known to work||4.5.0


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



[Bug tree-optimization/34093] ICE in ssa_operand_alloc, at tree-ssa-operands.c:484

2009-04-03 Thread rguenth at gcc dot gnu dot org


--- Comment #9 from rguenth at gcc dot gnu dot org  2009-04-03 10:31 ---
Really fixed for 4.5.0.


-- 

rguenth at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution||FIXED
   Target Milestone|--- |4.5.0


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



[Bug tree-optimization/36230] load PRE doesn't deal with more precise alias info on one path

2009-04-03 Thread rguenth at gcc dot gnu dot org


--- Comment #3 from rguenth at gcc dot gnu dot org  2009-04-03 10:32 ---
Fixed.


-- 

rguenth at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution||FIXED
   Target Milestone|--- |4.5.0


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



[Bug middle-end/36201] [4.4 Regression] NVR in the front-end causes missed optimization later on ( thought to alias arguments)

2009-04-03 Thread rguenth at gcc dot gnu dot org


--- Comment #8 from rguenth at gcc dot gnu dot org  2009-04-03 10:32 ---
Fixed for 4.5.0.


-- 

rguenth at gcc dot gnu dot org changed:

   What|Removed |Added

 AssignedTo|rguenth at gcc dot gnu dot  |unassigned at gcc dot gnu
   |org |dot org
 Status|ASSIGNED|NEW
  Known to work|4.3.0 4.1.2 |4.3.0 4.1.2 4.5.0
Summary|[4.4/4.5 Regression] NVR in |[4.4 Regression] NVR in the
   |the front-end causes missed |front-end causes missed
   |optimization later on   |optimization later on
   |( thought to alias  |( thought to alias
   |arguments)  |arguments)


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



[Bug tree-optimization/38049] points-to results imprecise

2009-04-03 Thread rguenth at gcc dot gnu dot org


--- Comment #4 from rguenth at gcc dot gnu dot org  2009-04-03 10:33 ---
Fixed.


-- 

rguenth at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution||FIXED
   Target Milestone|--- |4.5.0


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



[Bug tree-optimization/38207] Union in structs are not well optimized

2009-04-03 Thread rguenth at gcc dot gnu dot org


--- Comment #8 from rguenth at gcc dot gnu dot org  2009-04-03 10:34 ---
Fixed.


-- 

rguenth at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution||FIXED
   Target Milestone|--- |4.5.0


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



[Bug tree-optimization/38230] SCCVN doesn't do expression lookups during stmt walks

2009-04-03 Thread rguenth at gcc dot gnu dot org


--- Comment #3 from rguenth at gcc dot gnu dot org  2009-04-03 10:34 ---
Fixed.


-- 

rguenth at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution||FIXED
   Target Milestone|--- |4.5.0


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



[Bug tree-optimization/38985] [4.3/4.4 Regression] missing VOPs for pointers accessed directly via their address

2009-04-03 Thread rguenth at gcc dot gnu dot org


--- Comment #17 from rguenth at gcc dot gnu dot org  2009-04-03 10:37 
---
Fixed for 4.5.0.


-- 

rguenth at gcc dot gnu dot org changed:

   What|Removed |Added

 AssignedTo|rguenth at gcc dot gnu dot  |unassigned at gcc dot gnu
   |org |dot org
 Status|ASSIGNED|NEW
Summary|[4.3/4.4/4.5 Regression]|[4.3/4.4 Regression] missing
   |missing VOPs for pointers   |VOPs for pointers accessed
   |accessed directly via their |directly via their address
   |address |


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



[Bug tree-optimization/39299] wrong PTA for structure copies

2009-04-03 Thread rguenth at gcc dot gnu dot org


--- Comment #5 from rguenth at gcc dot gnu dot org  2009-04-03 10:37 ---
Fixed.


-- 

rguenth at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
  Known to fail||4.4.0
  Known to work||4.5.0
 Resolution||FIXED
   Target Milestone|--- |4.5.0


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



[Bug middle-end/37696] [meta-bug] PRs blocking adoption of the alias-improvements branch

2009-04-03 Thread rguenth at gcc dot gnu dot org


--- Comment #2 from rguenth at gcc dot gnu dot org  2009-04-03 10:38 ---
Fixed/merged.


-- 

rguenth at gcc dot gnu dot org changed:

   What|Removed |Added

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


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



[Bug tree-optimization/38301] vectorization breaks type-based aliasing rules

2009-04-03 Thread rguenth at gcc dot gnu dot org


--- Comment #5 from rguenth at gcc dot gnu dot org  2009-04-03 10:35 ---
Fixed.


-- 

rguenth at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution||FIXED
   Target Milestone|--- |4.5.0


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



[Bug tree-optimization/38895] missed type-based disambiguation

2009-04-03 Thread rguenth at gcc dot gnu dot org


--- Comment #4 from rguenth at gcc dot gnu dot org  2009-04-03 10:36 ---
Fixed.


-- 

rguenth at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution||FIXED
   Target Milestone|--- |4.5.0


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



[Bug middle-end/38585] excessive time in compute_may_aliases

2009-04-03 Thread rguenth at gcc dot gnu dot org


--- Comment #4 from rguenth at gcc dot gnu dot org  2009-04-03 10:36 ---
Fixed for 4.5.0.


-- 

rguenth at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution||FIXED
   Target Milestone|--- |4.5.0


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



[Bug middle-end/34743] Testcase gcc.dg/tree-ssa/20070302-1.c is broken (unneeded call clobbering)

2009-04-03 Thread rguenth at gcc dot gnu dot org


--- Comment #6 from rguenth at gcc dot gnu dot org  2009-04-03 11:16 ---
Fixed for 4.5.


-- 

rguenth at gcc dot gnu dot org changed:

   What|Removed |Added

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


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



[Bug middle-end/34743] Testcase gcc.dg/tree-ssa/20070302-1.c is broken (unneeded call clobbering)

2009-04-03 Thread rguenth at gcc dot gnu dot org


--- Comment #5 from rguenth at gcc dot gnu dot org  2009-04-03 11:16 ---
Subject: Bug 34743

Author: rguenth
Date: Fri Apr  3 11:16:29 2009
New Revision: 145497

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=145497
Log:
2009-04-03  Richard Guenther  

PR tree-optimization/34743
* gcc.dg/pr38984.c: Remove XFAIL, adjust.
* gcc.dg/tree-ssa/20070302-1.c: Remove XFAIL.
* gcc.dg/tree-ssa/alias-18.c: Likewise.
* gcc.dg/tree-ssa/sra-3.c: Likewise.
* gcc.dg/vect/no-vfa-vect-49.c: Likewise.
* gcc.dg/vect/no-vfa-vect-53.c: Likewise.
* gcc.dg/vect/no-vfa-vect-57.c: Likewise.
* gcc.dg/vect/no-vfa-vect-61.c: Likewise.

Modified:
trunk/gcc/testsuite/ChangeLog
trunk/gcc/testsuite/gcc.dg/pr38984.c
trunk/gcc/testsuite/gcc.dg/tree-ssa/20070302-1.c
trunk/gcc/testsuite/gcc.dg/tree-ssa/alias-18.c
trunk/gcc/testsuite/gcc.dg/tree-ssa/sra-3.c
trunk/gcc/testsuite/gcc.dg/vect/no-vfa-vect-49.c
trunk/gcc/testsuite/gcc.dg/vect/no-vfa-vect-53.c
trunk/gcc/testsuite/gcc.dg/vect/no-vfa-vect-57.c
trunk/gcc/testsuite/gcc.dg/vect/no-vfa-vect-61.c


-- 


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



[Bug tree-optimization/2480] aliasing problem with global structures

2009-04-03 Thread rguenth at gcc dot gnu dot org


--- Comment #13 from rguenth at gcc dot gnu dot org  2009-04-03 11:27 
---
Fixed at -O2 since 4.4.


-- 

rguenth at gcc dot gnu dot org changed:

   What|Removed |Added

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


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



[Bug fortran/39624] New: short-list explicit interfaces in generic interfaces if no match is found

2009-04-03 Thread dfranke at gcc dot gnu dot org
It would be nice if we could provide a list of possible candidates for generic
in the example below. (Something similar is implemented in C++ if a particular
overload is not found, all possible prototypes are listed.)

$> cat candidates.f90
MODULE amodule
  INTERFACE generic
MODULE PROCEDURE specific_1
MODULE PROCEDURE specific_2
  END INTERFACE

CONTAINS
  SUBROUTINE specific_1(i)
  INTEGER, INTENT(in) :: i
  END SUBROUTINE

  SUBROUTINE specific_2(r)
  REAL, INTENT(in) :: r
  END SUBROUTINE
END MODULE

  USE amodule
  CALL generic("string")
END

$> gfortran-svn candidates.f90
candidates.f90:18.24:

  CALL generic("string")
1
Error: There is no specific subroutine for the generic 'generic' at (1)
[Candidates are:
   subroutine generic(integer)
   subroutine generic(real)]


-- 
   Summary: short-list explicit interfaces in generic interfaces if
no match is found
   Product: gcc
   Version: 4.5.0
Status: UNCONFIRMED
  Severity: enhancement
  Priority: P3
 Component: fortran
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: dfranke at gcc dot gnu dot org


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



[Bug c++/8781] Pessimization of C++ (functional) code

2009-04-03 Thread rguenth at gcc dot gnu dot org


--- Comment #23 from rguenth at gcc dot gnu dot org  2009-04-03 11:37 
---
On trunk we get the following after early optimizations:

:
  predD.2646 = fD.2070;
  predD.2653.predD.2098 = &predD.2646;
  predD.2660.predD.2116 = &predD.2653;
  predD.2667.predD.2134 = &predD.2660;
  predD.2674.predD.2152 = &predD.2667;
  predD.2681.predD.2170 = &predD.2674;
  predD.2688.predD.2188 = &predD.2681;
  predD.2695.predD.2206 = &predD.2688;
  predD.2702.predD.2224 = &predD.2695;
  D.2720_24 = predD.2702.predD.2224;
  D.2728_25 = D.2720_24->predD.2206;
  D.2721_26 = D.2728_25->predD.2188;
  D.2727_27 = D.2721_26->predD.2170;
  D.2722_28 = D.2727_27->predD.2152;
  D.2726_29 = D.2722_28->predD.2134;
  D.2723_30 = D.2726_29->predD.2116;
  D.2725_31 = D.2723_30->predD.2098;
  D.2724_32 = *D.2725_31;
  D.2719_33 = D.2724_32 ();
  return D.2719_33;

now, while SCCVN figures out that predD.2702.predD.2224 loads &predD.2695 it
is not able to cascade here, which is because we do not "simplify" the
vn references after substituting the value-numbers (PR37892).


-- 

rguenth at gcc dot gnu dot org changed:

   What|Removed |Added

  BugsThisDependsOn||37892
   Last reconfirmed|2006-04-05 16:11:16 |2009-04-03 11:37:53
   date||


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



[Bug tree-optimization/33344] if(!z) {a.b = x->b + 1; z = &a; } else if (!x) { a.b = z->b+1; x = &a; } use z->b and x->b; is not optimized

2009-04-03 Thread rguenth at gcc dot gnu dot org


--- Comment #4 from rguenth at gcc dot gnu dot org  2009-04-03 11:40 ---
Fixed with the alias-improvements branch merge.

g (struct f * b, struct f * c)
{
  int prephitmp.20;
  int prephitmp.19;

:
  if (b == 0B)
goto ;
  else
goto ;

:
  prephitmp.19 = c->a;
  prephitmp.20 = prephitmp.19 + 1;
  goto ;

:
  if (c == 0B)
goto ;
  else
goto ;

:
  prephitmp.19 = c->a;
  prephitmp.20 = b->a;
  goto ;

:
  prephitmp.20 = b->a;
  prephitmp.19 = prephitmp.20 + 1;

:
  return prephitmp.20 + prephitmp.19;

}


-- 

rguenth at gcc dot gnu dot org changed:

   What|Removed |Added

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


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



[Bug tree-optimization/17064] -falias-noargument-global doesn't eliminate dead stores/loads

2009-04-03 Thread rguenth at gcc dot gnu dot org


--- Comment #16 from rguenth at gcc dot gnu dot org  2009-04-03 11:57 
---
Re-confirmed with current trunk.  The issue is that PTA computes

Flow-insensitive points-to information for foo

p_1(D), points-to vars: { PARM_NOALIAS.28 } (includes global vars)

foo (int * p)
{
:
  *p_1(D) = 1;
  bar ();
  *p_1(D) = 2;
  return;

note the 'includes global vars' flag.  Note that "fixing" this would
really make _both_ stores to *p dead, as "does-not-point-to-global"
does not mean "does-point-to-local".

A more proper definition of the effect of this flag should be given.


-- 

rguenth at gcc dot gnu dot org changed:

   What|Removed |Added

   Last reconfirmed|2006-01-05 14:24:50 |2009-04-03 11:57:05
   date||


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



[Bug tree-optimization/19347] Invariant load not moved out of loop

2009-04-03 Thread rguenth at gcc dot gnu dot org


--- Comment #4 from rguenth at gcc dot gnu dot org  2009-04-03 12:06 ---
The store to *ptr aliases the load from osmesa->clearpixel - there
is no (easy) way to otherwise prove that it is not (at least with the
testcase).
We do not see where osmesa->buffer points to (it may point to
&osmesa->clearpixel).


-- 


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



[Bug tree-optimization/23086] incomming arguments cannot alias local variables

2009-04-03 Thread rguenth at gcc dot gnu dot org


--- Comment #10 from rguenth at gcc dot gnu dot org  2009-04-03 12:19 
---
  *a = 1;  <--- a cannot point to b here.
  if (b == 2)

b != 2 you mean.

This works for me with 4.0.4 even.  Likely optimized on RTL level?

Adjusted testcase:

extern void link_error (void);
extern void abort (void);

int *t;
int __attribute__((noinline)) g(int *a)
{
  t = a;
  *a = 2;
}

void __attribute__((noinline)) f(int *a)
{
  int b;
  b = 1;
  g(&b);
  b = 2;
  *a = 1;
  if (b != 2)
link_error();
}

int main(void)
{
  int t;
  f(&t);
  if (t != 1)
abort ();
  return 0;
}


On trunk we now have

f (int * a)
{
  int b;

:
  b = 1;
  g (&b);
  *a = 1;
  return;

}


-- 

rguenth at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|NEW |RESOLVED
  Known to fail||4.4.0
 Resolution||FIXED
   Target Milestone|--- |4.5.0


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



[Bug other/39573] linking fails when optimizations are enabled

2009-04-03 Thread fpbeekhof at gmail dot com


--- Comment #1 from fpbeekhof at gmail dot com  2009-04-03 12:01 ---
I've tried compiling the same code on several machines. Outcome: intel machines
are fine, AMD machines exhibit this behaviour.

The second AMD machine has ubuntu 8.04 on it, and a different compiler version:
$ gcc -v
Using built-in specs.
Target: x86_64-linux-gnu
Configured with: ../src/configure -v
--enable-languages=c,c++,fortran,objc,obj-c++,treelang --prefix=/usr
--enable-shared --with-system-zlib --libexecdir=/usr/lib
--without-included-gettext --enable-threads=posix --enable-nls
--with-gxx-include-dir=/usr/include/c++/4.2 --program-suffix=-4.2
--enable-clocale=gnu --enable-libstdcxx-debug --enable-objc-gc --enable-mpfr
--enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu
--target=x86_64-linux-gnu
Thread model: posix
gcc version 4.2.4 (Ubuntu 4.2.4-1ubuntu3)

Still, the result is the same:
$ make CNF=gcc
scons -j 2 CNF=gcc MODE= BACKEND= CVMLCPP_PREFIX=/user/l1/beekhof/
scons: Reading SConscript files ...
scons: done reading SConscript files.
scons: Building targets ...
g++ -o main.o -c -pipe -I. -Wall -O3 -funroll-loops -fopenmp -march=native
-ftree-vectorize -DNDEBUG -I/user/l1/beekhof//include/ main.cpp
g++ -o tinystr.o -c -pipe -I. -Wall -O3 -funroll-loops -fopenmp -march=native
-ftree-vectorize -DNDEBUG -I/user/l1/beekhof//include/ tinystr.cpp
g++ -o tinyxml.o -c -pipe -I. -Wall -O3 -funroll-loops -fopenmp -march=native
-ftree-vectorize -DNDEBUG -I/user/l1/beekhof//include/ tinyxml.cpp
g++ -o tinyxmlerror.o -c -pipe -I. -Wall -O3 -funroll-loops -fopenmp
-march=native -ftree-vectorize -DNDEBUG -I/user/l1/beekhof//include/
tinyxmlerror.cpp
g++ -o tinyxmlparser.o -c -pipe -I. -Wall -O3 -funroll-loops -fopenmp
-march=native -ftree-vectorize -DNDEBUG -I/user/l1/beekhof//include/
tinyxmlparser.cpp
g++ -o shapes -fopenmp -L/user/l1/beekhof//lib/ tinystr.o tinyxml.o
tinyxmlerror.o tinyxmlparser.o main.o -lcvmlcpp -lz -lboost_iostreams
main.o: In function
`_ZN7cvmlcpp25extractSurfaceFromAdapterIN6shapes20ShapeSurfaceAdaptor_IdEEdEEvRKT_RNS_8GeometryIT0_EEd.omp_fn.9':
main.cpp:(.text+0x2af2): undefined reference to
`_ZN7cvmlcpp25extractSurfaceFromAdapterIN6shapes20ShapeSurfaceAdaptor_IdEEdEEvRKT_RNS_8GeometryIT0_EEd.omp_fn.9::C.497'
collect2: ld returned 1 exit status
scons: *** [shapes] Error 1
scons: building terminated because of errors.
make: *** [compile] Error 2

I'll see if I can make a reduced test-case...


-- 


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



[Bug tree-optimization/21855] array bounds checking elimination

2009-04-03 Thread rguenth at gcc dot gnu dot org


--- Comment #4 from rguenth at gcc dot gnu dot org  2009-04-03 12:07 ---
Huh.  C testcase please?  I think this may be fixed now.


-- 


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



[Bug tree-optimization/26608] address of local variables are said to escape even though it is obvious they don't

2009-04-03 Thread rguenth at gcc dot gnu dot org


--- Comment #4 from rguenth at gcc dot gnu dot org  2009-04-03 12:24 ---
Works with 4.3.  Very similar to PR23086.


-- 

rguenth at gcc dot gnu dot org changed:

   What|Removed |Added

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


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



[Bug tree-optimization/34160] Useful loop invariant motion missing

2009-04-03 Thread rguenth at gcc dot gnu dot org


--- Comment #3 from rguenth at gcc dot gnu dot org  2009-04-03 12:27 ---
:
  # i.21_754 = PHI 
  # i.21_484 = PHI 
  D.4090_71 = b[i.21_754];
  x[i.21_754] = D.4090_71;
  D.4345_1088 = (unsigned int) i.21_484;
  D.4346_1089 = D.4345_1088 + 1;
  i.21_1090 = (int) D.4346_1089;
  if (n.17_753 > i.21_1090)
goto ;
  else
goto ;

seems to work with 4.4.


-- 

rguenth at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
  Known to fail||4.3.3
 Resolution||FIXED
   Target Milestone|--- |4.4.0


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



[Bug middle-end/35358] Ansi aliasing info not fully utilized by tree SSA optimizations

2009-04-03 Thread rguenth at gcc dot gnu dot org


--- Comment #5 from rguenth at gcc dot gnu dot org  2009-04-03 12:30 ---
Both testcases are now fixed on trunk.  The first testcase is fixed for 4.4
as well.


-- 

rguenth at gcc dot gnu dot org changed:

   What|Removed |Added

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


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



[Bug middle-end/35360] Static (base/offset/size rule) should be extended to handle array elements

2009-04-03 Thread rguenth at gcc dot gnu dot org


--- Comment #3 from rguenth at gcc dot gnu dot org  2009-04-03 12:32 ---
Re-confirmed.


-- 

rguenth at gcc dot gnu dot org changed:

   What|Removed |Added

   Last reconfirmed|2008-02-25 11:44:45 |2009-04-03 12:32:48
   date||


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



[Bug tree-optimization/37810] Bad store sinking job

2009-04-03 Thread rguenth at gcc dot gnu dot org


--- Comment #5 from rguenth at gcc dot gnu dot org  2009-04-03 12:34 ---
Re-confirmed.


-- 

rguenth at gcc dot gnu dot org changed:

   What|Removed |Added

   Last reconfirmed|2008-10-12 15:20:19 |2009-04-03 12:34:44
   date||


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



[Bug tree-optimization/23086] incoming arguments cannot alias local variables

2009-04-03 Thread rguenth at gcc dot gnu dot org


--- Comment #11 from rguenth at gcc dot gnu dot org  2009-04-03 12:38 
---
Subject: Bug 23086

Author: rguenth
Date: Fri Apr  3 12:38:08 2009
New Revision: 145499

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=145499
Log:
2009-04-03  Richard Guenther  

PR tree-optimization/2480
PR tree-optimization/23086
* gcc.dg/tree-ssa/pr2480.c: New testcase.
* gcc.dg/tree-ssa/pr23086.c: Likewise.

Added:
trunk/gcc/testsuite/gcc.dg/tree-ssa/pr23086.c
trunk/gcc/testsuite/gcc.dg/tree-ssa/pr2480.c
Modified:
trunk/gcc/testsuite/ChangeLog


-- 


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



[Bug tree-optimization/2480] aliasing problem with global structures

2009-04-03 Thread rguenth at gcc dot gnu dot org


--- Comment #14 from rguenth at gcc dot gnu dot org  2009-04-03 12:38 
---
Subject: Bug 2480

Author: rguenth
Date: Fri Apr  3 12:38:08 2009
New Revision: 145499

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=145499
Log:
2009-04-03  Richard Guenther  

PR tree-optimization/2480
PR tree-optimization/23086
* gcc.dg/tree-ssa/pr2480.c: New testcase.
* gcc.dg/tree-ssa/pr23086.c: Likewise.

Added:
trunk/gcc/testsuite/gcc.dg/tree-ssa/pr23086.c
trunk/gcc/testsuite/gcc.dg/tree-ssa/pr2480.c
Modified:
trunk/gcc/testsuite/ChangeLog


-- 


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



[Bug tree-optimization/39604] [4.3/4.4/4.5 Regression] tree-ssa-sink breaks stack layout

2009-04-03 Thread sandra at codesourcery dot com


--- Comment #9 from sandra at codesourcery dot com  2009-04-03 12:54 ---
After the merge of the alias_improvements branch to trunk, the test case no
longer compiles incorrectly at -O1.  Is this coincidence, or a real fix that
addresses the underlying problem?


-- 


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



[Bug tree-optimization/39604] [4.3/4.4/4.5 Regression] tree-ssa-sink breaks stack layout

2009-04-03 Thread rguenther at suse dot de


--- Comment #10 from rguenther at suse dot de  2009-04-03 13:23 ---
Subject: Re:  [4.3/4.4/4.5 Regression] tree-ssa-sink
 breaks stack layout

On Fri, 3 Apr 2009, sandra at codesourcery dot com wrote:

> --- Comment #9 from sandra at codesourcery dot com  2009-04-03 12:54 
> ---
> After the merge of the alias_improvements branch to trunk, the test case no
> longer compiles incorrectly at -O1.  Is this coincidence, or a real fix that
> addresses the underlying problem?

I believe this is a coincidence.  Can you investigate what the difference 
is?

Richard.


-- 


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



[Bug c++/8781] Pessimization of C++ (functional) code

2009-04-03 Thread rguenth at gcc dot gnu dot org


--- Comment #24 from rguenth at gcc dot gnu dot org  2009-04-03 13:44 
---
I have a patch.


-- 

rguenth at gcc dot gnu dot org changed:

   What|Removed |Added

 AssignedTo|unassigned at gcc dot gnu   |rguenth at gcc dot gnu dot
   |dot org |org
 Status|NEW |ASSIGNED
   Last reconfirmed|2009-04-03 11:37:53 |2009-04-03 13:44:16
   date||


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



[Bug bootstrap/39483] [melt] - revision 144904 - Configuring with "--with-gc=zone" fails in ggc-zone.c

2009-04-03 Thread rob1weld at aol dot com


--- Comment #3 from rob1weld at aol dot com  2009-04-03 13:53 ---
(In reply to comment #2)
> Thanks. Patch commited as rev  144905 of MELT branch.
Closing, FIXED.
Rob


-- 

rob1weld at aol dot com changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||FIXED


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



[Bug driver/39439] The Driver hides "undefined reference" messages from shared libs (but not object files) in linker phase

2009-04-03 Thread rob1weld at aol dot com


--- Comment #4 from rob1weld at aol dot com  2009-04-03 13:59 ---
(In reply to comment #3)
> Subject: Re:  The Driver hides "undefined reference" messages from shared
> libs (but not object files) in linker phase
> 
> Sent from my iPhone
> 
> On Mar 13, 2009, at 8:54 PM, "rob1weld at aol dot com"
>   > wrote:
> 
> > ... (lengthy quoted text)
> >
> >
> > The linker, upon 'discovering' the problem, simply prints:
> > ../../interfaces/C/.libs/libppl_c.so: undefined reference to  
> > `typeinfo for int'
> > collect2: ld returned 1 exit status
> 
> The linker is suppressing the undefined reference in the first place  
> when creating the .so. I think this is a bug in ppl's make file and  
> not gcc.
> 
OK. It's not "gcc"'s fault. Closing, INVALID.
Rob


-- 

rob1weld at aol dot com changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||INVALID


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



[Bug c++/25185] deep typedef substitution in error message

2009-04-03 Thread jason at gcc dot gnu dot org


--- Comment #15 from jason at gcc dot gnu dot org  2009-04-03 14:09 ---
Created an attachment (id=17582)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=17582&action=view)
Patch to add -fno-pretty-templates option

Here's a patch for a different approach I tried which just adds a flag to
disable pretty-printing of template functions, in case anyone is interested.


-- 


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



[Bug ada/39625] New: Revision 145488 - Ada - Unable to coalesce ssa_names 96 and 455 which are marked as MUST COALESCE.

2009-04-03 Thread rob1weld at aol dot com
When building gcc I get this during the build of the gnattools:
"Unable to coalesce ssa_names 96 and 455 which are marked as MUST COALESCE.
first_with_96(ab) and  first_with_455(ab)"

I do not know the Ada Language, just trying to build it and email 
the Testsuite results. I Googled and checked the mailing list for 
this Bug without success. Now I'll go check the revisions and see
if I can determine when this failure first occured.


# uname -a
OpenBSD openbsd.localdomain 4.5 GENERIC#19 i386

# prev-gcc/xgcc -v
Using built-in specs.
Target: i386-unknown-openbsd4.5
Configured with: /home/user/gcc_trunk/configure --prefix=/usr/obj/gcc_installed
--enable-languages=c,ada,c++ --with-as=/usr/bin/as --with-ld=/usr/bin/ld
--with-gnu-as --with-gnu-ld --enable-sjlj-exceptions --enable-shared
--sysconfdir=/etc --mandir=/usr/local/man --infodir=/usr/local/man
--enable-multilib --enable-stage1-checking --enable-checking=release
--with-system-zlib --with-gmp=/usr/local --with-mpfr=/usr/local
Thread model: single
gcc version 4.5.0 20090403 (experimental) [trunk revision 145488] (GCC)


../../xgcc -B../../ -c -g -O2   -W -Wall -Wwrite-strings -Wstrict-prototypes
-Wmissing-prototypes  -gnatpg -gnata -I- -I../rts -I.
-I/home/user/gcc_trunk/gcc/ada /home/user/gcc_trunk/gcc/ada/prj-part.adb -o
prj-part.o
/home/user/gcc_trunk/gcc/ada/prj-part.adb: In function
'Prj.Part.Parse_Single_Project':
/home/user/gcc_trunk/gcc/ada/prj-part.adb:159: warning: 'Project' may be used
uninitialized in this function
/home/user/gcc_trunk/gcc/ada/prj-part.adb:159: note: 'Project' was declared
here
/home/user/gcc_trunk/gcc/ada/prj-part.adb:160: warning: 'Extends_All' may be
used uninitialized in this function
/home/user/gcc_trunk/gcc/ada/prj-part.adb:160: note: 'Extends_All' was declared
here
/home/user/gcc_trunk/gcc/ada/prj-part.adb:952: warning: 'Canonical_Path_Name'
may be used uninitialized in this function
/home/user/gcc_trunk/gcc/ada/prj-part.adb:953: warning: 'Project_Directory' may
be used uninitialized in this function
/home/user/gcc_trunk/gcc/ada/prj-part.adb:957: warning: 'Extending' may be used
uninitialized in this function
/home/user/gcc_trunk/gcc/ada/prj-part.adb:959: warning: 'Extended_Project' may
be used uninitialized in this function
/home/user/gcc_trunk/gcc/ada/prj-part.adb:965: warning: 'Name_From_Path' may be
used uninitialized in this function
/home/user/gcc_trunk/gcc/ada/prj-part.adb:966: warning: 'Name_Of_Project' may
be used uninitialized in this function
/home/user/gcc_trunk/gcc/ada/prj-part.adb:968: warning: 'Duplicated' may be
used uninitialized in this function
/home/user/gcc_trunk/gcc/ada/prj-part.adb:970: warning: 'First_With' may be
used uninitialized in this function
/home/user/gcc_trunk/gcc/ada/prj-part.adb:971: warning: 'Imported_Projects' may
be used uninitialized in this function
/home/user/gcc_trunk/gcc/ada/prj-part.adb:977: warning: 'Proj_Qualifier' may be
used uninitialized in this function
/home/user/gcc_trunk/gcc/ada/prj-part.adb:978: warning: 'Qualifier_Location'
may be used uninitialized in this function
/home/user/gcc_trunk/gcc/ada/prj-part.adb:939: warning: '' may be
used uninitialized in this function
/home/user/gcc_trunk/gcc/ada/prj-part.adb:939: warning: '' may be
used uninitialized in this function
/home/user/gcc_trunk/gcc/ada/prj-part.adb:961: warning:
'a_project_name_and_node.node' may be used uninitialized in this function

Unable to coalesce ssa_names 96 and 455 which are marked as MUST COALESCE.
first_with_96(ab) and  first_with_455(ab)
+===GNAT BUG DETECTED==+
| 4.5.0 20090403 (experimental) [trunk revision 145488]
(i386-unknown-openbsd4.5) GCC error:|
| SSA corruption   |
| Error detected around /home/user/gcc_trunk/gcc/ada/prj-part.adb:939  |
| Please submit a bug report; see http://gcc.gnu.org/bugs.html.|
| Use a subject line meaningful to you and us to track the bug.|
| Include the entire contents of this bug box in the report.   |
| Include the exact gcc or gnatmake command that you entered.  |
| Also include sources listed below in gnatchop format |
| (concatenated together with no headers between files).   |
+==+

Please include these source files with error report
Note that list may not be accurate in some cases,
so please double check that the problem can still
be reproduced with the set of files listed.

/home/user/gcc_trunk/gcc/ada/prj-part.adb
/home/user/gcc_trunk/gcc/ada/prj-part.ads
/home/user/gcc_trunk/gcc/ada/prj.ads
/home/user/gcc_trunk/gcc/ada/casing.ads
/home/user/gcc_trunk/gcc/ada/types.ads
/home/user/gc

[Bug fortran/37423] Fortran 2003: DEFERRED bindings not yet implemented

2009-04-03 Thread domob at gcc dot gnu dot org


--- Comment #3 from domob at gcc dot gnu dot org  2009-04-03 14:46 ---
Fixed on trunk (4.5)


-- 

domob at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution||FIXED


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



[Bug fortran/39626] New: Fortran 2008: Implement BLOCK construct

2009-04-03 Thread domob at gcc dot gnu dot org
The upcoming Fortran 2008 standard introduces the BLOCK construct which allows
to declare local variables with a limited scope inside a procedure.

This is not yet implemented by gfortran.  Some ideas and discussion here:
http://gcc.gnu.org/ml/fortran/2009-04/msg3.html


-- 
   Summary: Fortran 2008: Implement BLOCK construct
   Product: gcc
   Version: unknown
Status: UNCONFIRMED
  Severity: enhancement
  Priority: P3
 Component: fortran
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: domob at gcc dot gnu dot org


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



[Bug fortran/39627] New: Fortran 2008 support

2009-04-03 Thread domob at gcc dot gnu dot org
Tracking bug for "implement new Fortran 2008 feature" bugs.


-- 
   Summary: Fortran 2008 support
   Product: gcc
   Version: unknown
Status: UNCONFIRMED
  Keywords: meta-bug
  Severity: normal
  Priority: P3
 Component: fortran
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: domob at gcc dot gnu dot org


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



[Bug target/39628] New: GCC incorrectly optimizes inline assembly, resulting in incorrect code

2009-04-03 Thread dgrnbrg at mit dot edu
In trying to implement a fast rotate with carry on the avr platform, it should
be possible to do a left shift on a register, and then add-with-carry that
register and __zero_reg__. i.e.:

asm volatile("lsl %0; adc %0, __zero_reg__" : "+r"(x) : "0"(x));

however, gcc doesn't seem to understand that the carry bit is set, and thus it
only emits the lsl instruction.  The workaround is to split it into 2
statements:

asm volatile("lsl %0" : "+r"(x) : "0"(x));
asm volatile("adc %0, __zero_reg__" : "+r"(x) : "0"(x));

That generates the expected (correct) output.


-- 
   Summary: GCC incorrectly optimizes inline assembly, resulting in
incorrect code
   Product: gcc
   Version: 4.3.4
Status: UNCONFIRMED
  Severity: critical
  Priority: P3
 Component: target
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: dgrnbrg at mit dot edu
 GCC build triplet: --target=avr --program-prefx=avr --enable-languages=c --
disable-
  GCC host triplet: i688-linux
GCC target triplet: avr


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



[Bug target/39628] GCC incorrectly optimizes inline assembly, resulting in incorrect code

2009-04-03 Thread dgrnbrg at mit dot edu


--- Comment #1 from dgrnbrg at mit dot edu  2009-04-03 15:05 ---
Created an attachment (id=17583)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=17583&action=view)
.i file from incorrectly compiling file

The incorrect code comes from the function bbspi_transmit_buf.


-- 


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



[Bug ada/39138] Fix Copyright Dates Before 4.5.0 Branch (or sooner)

2009-04-03 Thread rob1weld at aol dot com


--- Comment #2 from rob1weld at aol dot com  2009-04-03 15:27 ---
There has been some progress in this Bug Report:

http://gcc.gnu.org/viewcvs/trunk/gcc/ada/?sortby=date
"mlib-tgt-specific-solaris.adb144324   5 weeks   jakub   Update Copyright
years for files modified in 2008 and/or 2009."


If I spot any more that were missed I will post here.


Thanks to the various persons involved, a consistent format for the 
Notice and a Maintainer script that "sed"ed everything would make this 
go much quicker next year. I thought FSF was particular about it's 
Copyrights, I can't speculate why this was lowered to a "minor".

Rob


-- 


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



[Bug target/39628] GCC incorrectly optimizes inline assembly, resulting in incorrect code

2009-04-03 Thread rguenth at gcc dot gnu dot org


--- Comment #2 from rguenth at gcc dot gnu dot org  2009-04-03 15:39 ---
GCC doesn't do anything with the asm stmts itself so it can't "only emit the
lsl
instruction".


-- 


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



[Bug libstdc++/39629] New: [4.5 Regression] Revision 145493 may have caused many failures

2009-04-03 Thread hjl dot tools at gmail dot com
Revision 145493

http://gcc.gnu.org/ml/gcc-cvs/2009-04/msg00114.html

may have caused

FAIL: 26_numerics/random/independent_bits_engine/cons/base_copy.cc (test for
excess errors)
FAIL: 26_numerics/random/independent_bits_engine/cons/base_move.cc (test for
excess errors)
FAIL: 26_numerics/random/independent_bits_engine/cons/default.cc (test for
excess errors)
FAIL: 26_numerics/random/independent_bits_engine/cons/seed1.cc (test for excess
errors)
FAIL: 26_numerics/random/independent_bits_engine/cons/seed2.cc (test for excess
errors)
FAIL: 26_numerics/random/independent_bits_engine/cons/seed_seq.cc (test for
excess errors)
FAIL: 26_numerics/random/independent_bits_engine/operators/equal.cc (test for
excess errors)
FAIL: 26_numerics/random/independent_bits_engine/operators/serialize.cc (test
for excess errors)
FAIL: 26_numerics/random/independent_bits_engine/requirements/typedefs.cc (test
for excess errors)
FAIL: 26_numerics/random/knuth_b.cc execution test
FAIL: 26_numerics/random/mt19937_64.cc (test for excess errors)
FAIL: 26_numerics/random/piecewise_linear_distribution/operators/serialize.cc
execution test
FAIL: 26_numerics/random/ranlux48.cc execution test
FAIL: 26_numerics/random/ranlux48_base.cc execution test

on Fedora 9/ia32 and Fedora 10/x86-64. I got

Executing on host: /export/gnu/import/svn/gcc-test/bld/./gcc/g++ -shared-libgcc
-B/export/gnu/import/svn/gcc-test/bld/./gcc -nostdinc++
-L/export/gnu/import/svn/gcc-test/bld/x86_64-unknown-linux-gnu/32/libstdc++-v3/src
-L/export/gnu/import/svn/gcc-test/bld/x86_64-unknown-linux-gnu/32/libstdc++-v3/src/.libs
-B/usr/local/x86_64-unknown-linux-gnu/bin/
-B/usr/local/x86_64-unknown-linux-gnu/lib/ -isystem
/usr/local/x86_64-unknown-linux-gnu/include -isystem
/usr/local/x86_64-unknown-linux-gnu/sys-include -m32 -g -O2 -D_GLIBCXX_ASSERT
-fmessage-length=0 -ffunction-sections -fdata-sections -g -O2 -D_GNU_SOURCE -g
-O2   -D_GNU_SOURCE   -DLOCALEDIR="." -nostdinc++
-I/export/gnu/import/svn/gcc-test/bld/x86_64-unknown-linux-gnu/32/libstdc++-v3/include/x86_64-unknown-linux-gnu
-I/export/gnu/import/svn/gcc-test/bld/x86_64-unknown-linux-gnu/32/libstdc++-v3/include
-I/export/gnu/import/svn/gcc-test/src-trunk/libstdc++-v3/libsupc++
-I/export/gnu/import/svn/gcc-test/src-trunk/libstdc++-v3/include/backward
-I/export/gnu/import/svn/gcc-test/src-trunk/libstdc++-v3/testsuite/util
-Wl,--gc-sections
/export/gnu/import/svn/gcc-test/src-trunk/libstdc++-v3/testsuite/26_numerics/random/independent_bits_engine/cons/base_copy.cc
  -std=c++0x ./libtestc++.a  -lm   -m32 -o ./base_copy.exe(timeout = 600)
In file included from
/export/gnu/import/svn/gcc-test/bld/x86_64-unknown-linux-gnu/32/libstdc++-v3/include/random:55,^M
 from
/export/gnu/import/svn/gcc-test/src-trunk/libstdc++-v3/testsuite/26_numerics/random/independent_bits_engine/cons/base_copy.cc:26:^M
/export/gnu/import/svn/gcc-test/bld/x86_64-unknown-linux-gnu/32/libstdc++-v3/include/bits/random.h:
In instantiation of
'std::independent_bits_engine, 48u, long unsigned int>':^M
/export/gnu/import/svn/gcc-test/src-trunk/libstdc++-v3/testsuite/26_numerics/random/independent_bits_engine/cons/base_copy.cc:39:
  instantiated from here^M
/export/gnu/import/svn/gcc-test/bld/x86_64-unknown-linux-gnu/32/libstdc++-v3/include/bits/random.h:968:
error: static assertion failed: "template arguments out of bounds in
independent_bits_engine"^M
compiler exited with status 1


-- 
   Summary: [4.5 Regression] Revision 145493 may have caused many
failures
   Product: gcc
   Version: 4.5.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: libstdc++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: hjl dot tools at gmail dot com


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



[Bug libstdc++/39629] [4.5 Regression] Revision 145483 may have caused many failures

2009-04-03 Thread hjl dot tools at gmail dot com


--- Comment #1 from hjl dot tools at gmail dot com  2009-04-03 16:00 ---
Oops. It is revision 145483:

http://gcc.gnu.org/ml/gcc-cvs/2009-04/msg00104.html


-- 

hjl dot tools at gmail dot com changed:

   What|Removed |Added

 CC|paolo dot carlini at oracle |bkoz at redhat dot com
   |dot com |
Summary|[4.5 Regression] Revision   |[4.5 Regression] Revision
   |145493 may have caused many |145483 may have caused many
   |failures|failures


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



[Bug target/39628] GCC incorrectly optimizes inline assembly, resulting in incorrect code

2009-04-03 Thread schwab at linux-m68k dot org


--- Comment #3 from schwab at linux-m68k dot org  2009-04-03 16:15 ---
On avr the semicolon is a comment character for the assembler.  The line
separator character is '$'.


-- 

schwab at linux-m68k dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||INVALID


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



[Bug fortran/39626] Fortran 2008: Implement BLOCK construct

2009-04-03 Thread steven at gcc dot gnu dot org


--- Comment #1 from steven at gcc dot gnu dot org  2009-04-03 16:43 ---
This feature requires a substantial re-work of symbol handling in gfortran
(make it block based).


-- 

steven at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
 Ever Confirmed|0   |1
   Last reconfirmed|-00-00 00:00:00 |2009-04-03 16:43:38
   date||


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



[Bug c++/39608] [4.4/4.5 Regression] 'expr' cannot appear in a constant-expression.

2009-04-03 Thread jason at gcc dot gnu dot org


--- Comment #4 from jason at gcc dot gnu dot org  2009-04-03 17:25 ---
Subject: Bug 39608

Author: jason
Date: Fri Apr  3 17:24:46 2009
New Revision: 145508

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=145508
Log:
PR c++/39608
* semantics.c (finish_id_expression): Don't assume a dependent
member of the current instantiation isn't a valid integral
constant expression.  Check dependent_scope_p.
* pt.c (dependent_scope_p): Check TYPE_P.

Added:
trunk/gcc/testsuite/g++.dg/template/const2.C
Modified:
trunk/gcc/cp/ChangeLog
trunk/gcc/cp/pt.c
trunk/gcc/cp/semantics.c
trunk/gcc/testsuite/ChangeLog


-- 


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



[Bug c++/39608] [4.4/4.5 Regression] 'expr' cannot appear in a constant-expression.

2009-04-03 Thread jason at gcc dot gnu dot org


--- Comment #5 from jason at gcc dot gnu dot org  2009-04-03 17:27 ---
Subject: Bug 39608

Author: jason
Date: Fri Apr  3 17:26:50 2009
New Revision: 145509

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=145509
Log:
PR c++/39608
* semantics.c (finish_id_expression): Don't assume a dependent
member of the current instantiation isn't a valid integral
constant expression.  Check dependent_scope_p.
* pt.c (dependent_scope_p): Check TYPE_P.
(tsubst_copy): If args is null, just return.

Added:
branches/gcc-4_4-branch/gcc/testsuite/g++.dg/template/const2.C
  - copied unchanged from r145508,
trunk/gcc/testsuite/g++.dg/template/const2.C
Modified:
branches/gcc-4_4-branch/gcc/cp/ChangeLog
branches/gcc-4_4-branch/gcc/cp/pt.c
branches/gcc-4_4-branch/gcc/cp/semantics.c
branches/gcc-4_4-branch/gcc/testsuite/ChangeLog


-- 


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



[Bug libstdc++/39629] [4.5 Regression] Revision 145483 may have caused many failures

2009-04-03 Thread paolo dot carlini at oracle dot com


--- Comment #2 from paolo dot carlini at oracle dot com  2009-04-03 17:27 
---
Note, most if not all, those fails seem trivial: we are just instantiating with
a second non-type template argument (__w) which is too big compared to the size
of the type of the third argument, a 32-bit unsigned long. We could either
change the latter to unsigned long long or reduce the value of the second. If
Benjamin doesn't come to this I'll do it, to my taste, just to quickly shut-up
the noise.

Also, I'm noticing the use of types like uint_fast64_t in the testcases, that
at the moment is still not safe (will be when Joseph' work on PR 448 will be
complete for all the OSes), because some targets may lack the stdint.h header
completely. For now, instead of guarding the test with dg-require-cstdint I
think we can safely change the types to some normal C++98 types. Or in fact
maybe we could guard, it's easier to keep the test unchanged and remove the
guards when 448 will be closed. Again, up to Benjamin of course, or I will shut
the noise to my taste.


-- 


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



[Bug c++/29607] [DR 224] [4.2/4.3/4.4 Regression] dependent name with base classes

2009-04-03 Thread jason at gcc dot gnu dot org


--- Comment #20 from jason at gcc dot gnu dot org  2009-04-03 17:32 ---
Subject: Bug 29607

Author: jason
Date: Fri Apr  3 17:31:38 2009
New Revision: 145510

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=145510
Log:
Revert:
PR c++/9634
PR c++/29469
PR c++/29607
Implement DR 224.
* decl.c (make_typename_type): Do look inside currently open classes.
* parser.c (cp_parser_lookup_name): Likewise.
(cp_parser_template_name): Likewise.
* pt.c (dependent_scope_p): New function.
* cp-tree.h: Declare it.
* class.c (currently_open_class): Return fast if T isn't a class.

Removed:
branches/gcc-4_3-branch/gcc/testsuite/g++.dg/template/dependent-name5.C
Modified:
branches/gcc-4_3-branch/gcc/cp/ChangeLog
branches/gcc-4_3-branch/gcc/cp/class.c
branches/gcc-4_3-branch/gcc/cp/cp-tree.h
branches/gcc-4_3-branch/gcc/cp/decl.c
branches/gcc-4_3-branch/gcc/cp/parser.c
branches/gcc-4_3-branch/gcc/cp/pt.c
branches/gcc-4_3-branch/gcc/testsuite/ChangeLog


-- 


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



[Bug c++/29469] [DR 224] [4.2/4.3/4.4 Regression] error: non-template 'pair' used as template

2009-04-03 Thread jason at gcc dot gnu dot org


--- Comment #15 from jason at gcc dot gnu dot org  2009-04-03 17:32 ---
Subject: Bug 29469

Author: jason
Date: Fri Apr  3 17:31:38 2009
New Revision: 145510

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=145510
Log:
Revert:
PR c++/9634
PR c++/29469
PR c++/29607
Implement DR 224.
* decl.c (make_typename_type): Do look inside currently open classes.
* parser.c (cp_parser_lookup_name): Likewise.
(cp_parser_template_name): Likewise.
* pt.c (dependent_scope_p): New function.
* cp-tree.h: Declare it.
* class.c (currently_open_class): Return fast if T isn't a class.

Removed:
branches/gcc-4_3-branch/gcc/testsuite/g++.dg/template/dependent-name5.C
Modified:
branches/gcc-4_3-branch/gcc/cp/ChangeLog
branches/gcc-4_3-branch/gcc/cp/class.c
branches/gcc-4_3-branch/gcc/cp/cp-tree.h
branches/gcc-4_3-branch/gcc/cp/decl.c
branches/gcc-4_3-branch/gcc/cp/parser.c
branches/gcc-4_3-branch/gcc/cp/pt.c
branches/gcc-4_3-branch/gcc/testsuite/ChangeLog


-- 


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



[Bug c++/9634] [DR224] Injected class name as qualifier should not make the name dependent

2009-04-03 Thread jason at gcc dot gnu dot org


--- Comment #23 from jason at gcc dot gnu dot org  2009-04-03 17:32 ---
Subject: Bug 9634

Author: jason
Date: Fri Apr  3 17:31:38 2009
New Revision: 145510

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=145510
Log:
Revert:
PR c++/9634
PR c++/29469
PR c++/29607
Implement DR 224.
* decl.c (make_typename_type): Do look inside currently open classes.
* parser.c (cp_parser_lookup_name): Likewise.
(cp_parser_template_name): Likewise.
* pt.c (dependent_scope_p): New function.
* cp-tree.h: Declare it.
* class.c (currently_open_class): Return fast if T isn't a class.

Removed:
branches/gcc-4_3-branch/gcc/testsuite/g++.dg/template/dependent-name5.C
Modified:
branches/gcc-4_3-branch/gcc/cp/ChangeLog
branches/gcc-4_3-branch/gcc/cp/class.c
branches/gcc-4_3-branch/gcc/cp/cp-tree.h
branches/gcc-4_3-branch/gcc/cp/decl.c
branches/gcc-4_3-branch/gcc/cp/parser.c
branches/gcc-4_3-branch/gcc/cp/pt.c
branches/gcc-4_3-branch/gcc/testsuite/ChangeLog


-- 


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



[Bug tree-optimization/39612] [4.4/4.5 Regression] Incorrect warning issued Re variable *is* used uninitialized in this function

2009-04-03 Thread rakdver at gcc dot gnu dot org


-- 

rakdver at gcc dot gnu dot org changed:

   What|Removed |Added

 AssignedTo|unassigned at gcc dot gnu   |rakdver at gcc dot gnu dot
   |dot org |org
 Status|NEW |ASSIGNED
   Last reconfirmed|2009-04-02 09:43:52 |2009-04-03 17:41:20
   date||


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



[Bug libstdc++/39629] [4.5 Regression] Revision 145483 may have caused many failures

2009-04-03 Thread 3dw4rd at verizon dot net


--- Comment #3 from 3dw4rd at verizon dot net  2009-04-03 17:48 ---
Created an attachment (id=17584)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=17584&action=view)
Fix a mistake in operator precedence in bits/random.h (_ShiftMin1)


-- 


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



[Bug c++/38030] [4.2/4.3 Regression] name-lookup for non-dependent name in template function is wrong

2009-04-03 Thread jason at gcc dot gnu dot org


--- Comment #14 from jason at gcc dot gnu dot org  2009-04-03 18:05 ---
Subject: Bug 38030

Author: jason
Date: Fri Apr  3 18:04:39 2009
New Revision: 145511

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=145511
Log:
PR c++/38030, 38850, 39070
* pt.c (type_dependent_expression_p_push): New fn.
(tsubst_copy_and_build) [CALL_EXPR]: Only do arg-dep lookup when the
substitution makes the call non-dependent.  Preserve koenig_p.
* parser.c (cp_parser_postfix_expression): Only do arg-dep lookup
for non-dependent calls.
* semantics.c (finish_call_expr): Revert earlier changes.
* cp-tree.h: Revert change to finish_call_expr prototype.

Modified:
branches/gcc-4_3-branch/gcc/cp/ChangeLog
branches/gcc-4_3-branch/gcc/cp/cp-tree.h
branches/gcc-4_3-branch/gcc/cp/parser.c
branches/gcc-4_3-branch/gcc/cp/pt.c
branches/gcc-4_3-branch/gcc/cp/semantics.c


-- 


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



[Bug c++/39608] [4.4/4.5 Regression] 'expr' cannot appear in a constant-expression.

2009-04-03 Thread jason at gcc dot gnu dot org


--- Comment #6 from jason at gcc dot gnu dot org  2009-04-03 18:05 ---
Fixed in 4.3, 4.4 and trunk.


-- 

jason at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||FIXED


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



[Bug fortran/39630] New: Fortran 2003: Procedure Pointer Components

2009-04-03 Thread janus at gcc dot gnu dot org
While standard procedure pointers are implemented in gfortran, support for
procedure pointer components is still missing.

Short example:

type(t)
  real :: r
  procedure(),pointer,nopass :: p
end type


-- 
   Summary: Fortran 2003: Procedure Pointer Components
   Product: gcc
   Version: 4.5.0
Status: UNCONFIRMED
  Keywords: rejects-valid
  Severity: normal
  Priority: P3
 Component: fortran
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: janus at gcc dot gnu dot org


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



[Bug fortran/39594] [4.4/4.5 Regression] compiler falls over in gfc_get_symbol_decl

2009-04-03 Thread burnus at gcc dot gnu dot org


--- Comment #13 from burnus at gcc dot gnu dot org  2009-04-03 18:27 ---
Subject: Bug 39594

Author: burnus
Date: Fri Apr  3 18:26:44 2009
New Revision: 145513

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=145513
Log:
2009-04-03  Tobias Burnus  

PR fortran/39594
* resolve.c (resolve_common_vars): Add FL_VARIABLE to symbol
if it is not a procedure pointer.
* primary.c (match_actual_arg): Ditto.

2009-04-03  Tobias Burnus  

PR fortran/39594
* gfortran.dg/common_12.f90: New.


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


-- 


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



[Bug fortran/39630] Fortran 2003: Procedure Pointer Components

2009-04-03 Thread janus at gcc dot gnu dot org


--- Comment #1 from janus at gcc dot gnu dot org  2009-04-03 18:29 ---
Draft patch: http://gcc.gnu.org/ml/fortran/2009-04/msg00013.html.


-- 

janus at gcc dot gnu dot org changed:

   What|Removed |Added

 AssignedTo|unassigned at gcc dot gnu   |janus at gcc dot gnu dot org
   |dot org |
 Status|UNCONFIRMED |ASSIGNED
 Ever Confirmed|0   |1
   Last reconfirmed|-00-00 00:00:00 |2009-04-03 18:29:56
   date||


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



[Bug tree-optimization/21855] array bounds checking elimination

2009-04-03 Thread pinskia at gcc dot gnu dot org


--- Comment #5 from pinskia at gcc dot gnu dot org  2009-04-03 19:18 ---
There are multiple of issues here, first we have an issue that the java
front-end is not telling the middle-end that args.length cannot be changed
after a new has happened (an aliasing issue).  And then we had some branch
issues but those might have been fixed already.


-- 


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



[Bug c++/25185] deep typedef substitution in error message

2009-04-03 Thread dave at boost-consulting dot com


--- Comment #16 from dave at boost-consulting dot com  2009-04-03 19:38 
---
(In reply to comment #13)
> GCC will now say
> 
> ../../../../boost/sequence/make_range.hpp:60:   instantiated from
> ‘boost::sequence::detail::range_maker::type
> boost::sequence::detail::range_maker CalcSize>::operator()(const L&, const B&, const E&, const C&) const [with L =
> boost::sequence::intrinsic::iterator_range_operations,
> boost::range_iterator > >::elements::type, B = char*, 
> E
> = char*, C = boost::sequence::detail::size_difference,
> const boost::array >, Elements =
> boost::sequence::identity_property_map, Begin = char*, End = char*, CalcSize =
> boost::sequence::detail::size_difference,
> boost::array >, typename boost::result_of::type =
> boost::detail::get_result_of 11u>, boost::array >,
> boost::sequence::detail::size_difference,
> boost::array >(), true>::type]’
> 
> note the last piece,
> 
> typename boost::result_of::type =
> boost::detail::get_result_of 11u>, boost::array >,
> boost::sequence::detail::size_difference,
> boost::array >(), true>::type

Hi Jason,

I'm afraid that's not an improvement.  It remains just as opaque as ever. 
Basically, I never want to see a type name ending with

  >::identifier

in error messages, or at least, I want a version where the canonical type name
is spelled out.


-- 

dave at boost-consulting dot com changed:

   What|Removed |Added

 Status|RESOLVED|UNCONFIRMED
 Resolution|FIXED   |


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



[Bug libstdc++/39629] [4.5 Regression] Revision 145483 may have caused many failures

2009-04-03 Thread hjl dot tools at gmail dot com


--- Comment #4 from hjl dot tools at gmail dot com  2009-04-03 19:45 ---
(In reply to comment #3)
> Created an attachment (id=17584)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=17584&action=view) [edit]
> Fix a mistake in operator precedence in bits/random.h (_ShiftMin1)
> 

It still doesn't work for 32bit:

Executing on host: /export/build/gnu/gcc/build-x86_64-linux/./gcc/g++
-shared-libgcc -B/export/build/gnu/gcc/build-x86_64-linux/./gcc -nostdinc++
-L/export/build/gnu/gcc/build-x86_64-linux/x86_64-unknown-linux-gnu/32/libstdc++-v3/src
-L/export/build/gnu/gcc/build-x86_64-linux/x86_64-unknown-linux-gnu/32/libstdc++-v3/src/.libs
-B/usr/local/x86_64-unknown-linux-gnu/bin/
-B/usr/local/x86_64-unknown-linux-gnu/lib/ -isystem
/usr/local/x86_64-unknown-linux-gnu/include -isystem
/usr/local/x86_64-unknown-linux-gnu/sys-include -m32 -g -O2 -D_GLIBCXX_ASSERT
-fmessage-length=0 -ffunction-sections -fdata-sections -g -O2 -D_GNU_SOURCE -g
-O2   -D_GNU_SOURCE   -DLOCALEDIR="." -nostdinc++
-I/export/build/gnu/gcc/build-x86_64-linux/x86_64-unknown-linux-gnu/32/libstdc++-v3/include/x86_64-unknown-linux-gnu
-I/export/build/gnu/gcc/build-x86_64-linux/x86_64-unknown-linux-gnu/32/libstdc++-v3/include
-I/export/gnu/import/gcc/libstdc++-v3/libsupc++
-I/export/gnu/import/gcc/libstdc++-v3/include/backward
-I/export/gnu/import/gcc/libstdc++-v3/testsuite/util -Wl,--gc-sections
/export/gnu/import/gcc/libstdc++-v3/testsuite/20_util/shared_ptr/thread/default_weaktoshared.cc
  -pthread -std=gnu++0x ./libtestc++.a  -lm   -m32 -o
./default_weaktoshared.exe(timeout = 600)
In file included from
/export/build/gnu/gcc/build-x86_64-linux/x86_64-unknown-linux-gnu/32/libstdc++-v3/include/random:55,^M
 from
/export/gnu/import/gcc/libstdc++-v3/testsuite/20_util/shared_ptr/thread/default_weaktoshared.cc:27:^M
/export/build/gnu/gcc/build-x86_64-linux/x86_64-unknown-linux-gnu/32/libstdc++-v3/include/bits/random.h:
In instantiation of 'const long unsigned int std::__detail::_ShiftMin1::__value':^M
/export/build/gnu/gcc/build-x86_64-linux/x86_64-unknown-linux-gnu/32/libstdc++-v3/include/bits/random.h:390:
  instantiated from 'std::mersenne_twister_engine'^M
/export/gnu/import/gcc/libstdc++-v3/testsuite/20_util/shared_ptr/thread/default_weaktoshared.cc:93:
  instantiated from here^M
/export/build/gnu/gcc/build-x86_64-linux/x86_64-unknown-linux-gnu/32/libstdc++-v3/include/bits/random.h:83:
error: 'max' is not a member of '__gnu_cxx::__numeric_traits'^M
/export/build/gnu/gcc/build-x86_64-linux/x86_64-unknown-linux-gnu/32/libstdc++-v3/include/bits/random.h:
In instantiation of 'std::mersenne_twister_engine':^M
/export/gnu/import/gcc/libstdc++-v3/testsuite/20_util/shared_ptr/thread/default_weaktoshared.cc:93:
  instantiated from here^M
/export/build/gnu/gcc/build-x86_64-linux/x86_64-unknown-linux-gnu/32/libstdc++-v3/include/bits/random.h:410:
error: non-constant condition for static assertion^M
/export/build/gnu/gcc/build-x86_64-linux/x86_64-unknown-linux-gnu/32/libstdc++-v3/include/bits/random.h:
In instantiation of 'std::mersenne_twister_engine':^M
/export/gnu/import/gcc/libstdc++-v3/testsuite/20_util/shared_ptr/thread/default_weaktoshared.cc:93:
  instantiated from here^M
/export/build/gnu/gcc/build-x86_64-linux/x86_64-unknown-linux-gnu/32/libstdc++-v3/include/bits/random.h:412:
error: non-constant condition for static assertion^M
/export/build/gnu/gcc/build-x86_64-linux/x86_64-unknown-linux-gnu/32/libstdc++-v3/include/bits/random.h:
In instantiation of 'std::mersenne_twister_engine':^M
/export/gnu/import/gcc/libstdc++-v3/testsuite/20_util/shared_ptr/thread/default_weaktoshared.cc:93:
  instantiated from here^M
/export/build/gnu/gcc/build-x86_64-linux/x86_64-unknown-linux-gnu/32/libstdc++-v3/include/bits/random.h:414:
error: non-constant condition for static assertion^M
compiler exited with status 1


-- 


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



[Bug libstdc++/39629] [4.5 Regression] Revision 145483 may have caused many failures

2009-04-03 Thread dje at gcc dot gnu dot org


--- Comment #5 from dje at gcc dot gnu dot org  2009-04-03 19:48 ---
I see similar failures on AIX.


-- 

dje at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
 Ever Confirmed|0   |1
   Last reconfirmed|-00-00 00:00:00 |2009-04-03 19:48:03
   date||


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



[Bug bootstrap/39631] New: f951 seg faults while building libgfortran

2009-04-03 Thread sje at cup dot hp dot com
f951 generates a seg fault while building on hppa1.1-hp-hpux11.11.  It can be
reproduced by compiling the following fortran code with -O2 optimization:

elemental function gfortran_specific_dim_r16 (p1, p2)
   real (kind=16), intent (in) :: p1, p2
   real (kind=16) :: gfortran_specific_dim_r16
   gfortran_specific_dim_r16 = dim (p1, p2)
end function

The segfault is coming from the ira_assert in ira_reuse_stack_slot at line 2966
of ira-color.c.  allocno is NULL but gets dereferenced in the
ALLOCNO_HARD_REGNO macro.

It started failing sometime before r145385 and after r145268.  During that
period the compiler was not building correctly on PA so I don't yet know
exactly what change broke it.


-- 
   Summary: f951 seg faults while building libgfortran
   Product: gcc
   Version: 4.5.0
Status: UNCONFIRMED
  Keywords: build
  Severity: normal
  Priority: P3
 Component: bootstrap
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: sje at cup dot hp dot com
GCC target triplet: hppa1.1-hp-hpux11.11


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



[Bug c++/25185] deep typedef substitution in error message

2009-04-03 Thread jason at gcc dot gnu dot org


--- Comment #17 from jason at gcc dot gnu dot org  2009-04-03 20:51 ---
Good point, I forgot to strip typedefs in the diagnostic code.  I'm testing a
patch that will make that

typename boost::result_of::type = mpl_::integral_c


-- 

jason at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |ASSIGNED
 Ever Confirmed|0   |1
   Last reconfirmed|-00-00 00:00:00 |2009-04-03 20:51:42
   date||


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



[Bug fortran/39594] [4.4/4.5 Regression] compiler falls over in gfc_get_symbol_decl

2009-04-03 Thread burnus at gcc dot gnu dot org


--- Comment #14 from burnus at gcc dot gnu dot org  2009-04-03 20:57 ---
Subject: Bug 39594

Author: burnus
Date: Fri Apr  3 20:56:54 2009
New Revision: 145519

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=145519
Log:
2009-04-03  Tobias Burnus  

PR fortran/39594
* resolve.c (resolve_common_vars): Add FL_VARIABLE to symbol
if it is not a procedure pointer.
* primary.c (match_actual_arg): Ditto.

2009-04-03  Tobias Burnus  

PR fortran/39594
* gfortran.dg/common_12.f90: New.


Added:
branches/gcc-4_4-branch/gcc/testsuite/gfortran.dg/common_12.f90
Modified:
branches/gcc-4_4-branch/gcc/fortran/ChangeLog
branches/gcc-4_4-branch/gcc/fortran/primary.c
branches/gcc-4_4-branch/gcc/fortran/resolve.c
branches/gcc-4_4-branch/gcc/testsuite/ChangeLog


-- 


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



  1   2   >