[Bug c++/23372] [4.0/4.1 Regression] Temporary aggregate copy not elided when passing parameters by value

2005-08-13 Thread guillaume dot melquiond at ens-lyon dot fr

--- Additional Comments From guillaume dot melquiond at ens-lyon dot fr  
2005-08-14 06:45 ---
Looking at it again, I found an even worse regression with respect to g++ 3.4.
Consider this testcase:

struct A { int a[1000]; }
A f();
void g(A);
void h() { g(f()); }

Ideally, h will allocate a stack frame for g and ask f to directly dump its
result in it. No temporary nor memcpy will be used at all. g++ 3.4 behaves this 
way.

g++ 4.0 however will first allocate some space for the result of f, then call f
and copy its result in another temporary, and finally it will allocate the stack
frame for g and copy the temporary in it. Two temporaries and two memcpys are
needed for g++ 4.0.

So the same issue arises when returning a result by value.

-- 


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


[Bug tree-optimization/23320] [4.1 Regression] ICE in in base_addr_differ_p, at tree-data-ref.c:430

2005-08-13 Thread cvs-commit at gcc dot gnu dot org

--- Additional Comments From cvs-commit at gcc dot gnu dot org  2005-08-14 
06:28 ---
Subject: Bug 23320

CVSROOT:/cvs/gcc
Module name:gcc
Changes by: [EMAIL PROTECTED]   2005-08-14 06:28:03

Modified files:
gcc: ChangeLog tree-data-ref.c 

Log message:
PR tree-optimization/23320
* tree-data-ref.c (base_addr_differ_p): Add comment. Check
data-refs' types instead of base object nullness. Add check for
pointer type data-refs before first location comparison. Remove
assert.

Patches:
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/ChangeLog.diff?cvsroot=gcc&r1=2.9725&r2=2.9726
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree-data-ref.c.diff?cvsroot=gcc&r1=2.36&r2=2.37



-- 


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


[Bug tree-optimization/23119] gcc.dg/vect/vect-105.c scan-tree-dump-times vectorized 1 loops 1 fails

2005-08-13 Thread pinskia at gcc dot gnu dot org

--- Additional Comments From pinskia at gcc dot gnu dot org  2005-08-14 
06:17 ---
Fixed.

-- 
   What|Removed |Added

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


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


[Bug tree-optimization/23384] New: Clobber list should be flow sensitive

2005-08-13 Thread pinskia at gcc dot gnu dot org
Take the following code:
struct f
{
  int i;
  int j;
};
void g(void);
void i(struct f*);

int kk(void)
{
  struct f a;
  int j;
  a.i = 1;
  a.j =2 ;
  g();
  j = a.i;
  i(&a);
  return j;
}

---
j should be changed to 1 as the address of a is not escape until after the call 
to i so g should not get a 
call clobbered for the SFT's of a.

-- 
   Summary: Clobber list should be flow sensitive
   Product: gcc
   Version: 4.1.0
Status: UNCONFIRMED
  Keywords: missed-optimization
  Severity: enhancement
  Priority: P2
 Component: tree-optimization
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: pinskia at gcc dot gnu dot org
CC: gcc-bugs at gcc dot gnu dot org


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


[Bug tree-optimization/23119] gcc.dg/vect/vect-105.c scan-tree-dump-times vectorized 1 loops 1 fails

2005-08-13 Thread cvs-commit at gcc dot gnu dot org

--- Additional Comments From cvs-commit at gcc dot gnu dot org  2005-08-14 
06:13 ---
Subject: Bug 23119

CVSROOT:/cvs/gcc
Module name:gcc
Changes by: [EMAIL PROTECTED]   2005-08-14 06:13:30

Modified files:
gcc/testsuite  : ChangeLog 
gcc/testsuite/gcc.dg/vect: vect-105.c 

Log message:
PR tree-optimization/23119
* gcc.dg/vect/vect-105.c: Add xfail for no_align targets.

Patches:
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/ChangeLog.diff?cvsroot=gcc&r1=1.5919&r2=1.5920
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gcc.dg/vect/vect-105.c.diff?cvsroot=gcc&r1=1.2&r2=1.3



-- 


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


[Bug c++/23383] New: builtin array operator new is not marked with malloc attribute

2005-08-13 Thread pinskia at gcc dot gnu dot org
Testcase:
int f(void)
{
  int t;
  int *a = new int[1024];
  int *b = new int[1024];
  *a = 1;
  *b = 2;
  t = *a;
  delete a;
  delete b;
  return t;
}

the return is not turned into 1 but still have "return t" in the final_cleanup.

-- 
   Summary: builtin array operator new is not marked with malloc
attribute
   Product: gcc
   Version: 4.1.0
Status: UNCONFIRMED
  Keywords: missed-optimization
  Severity: enhancement
  Priority: P2
 Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: pinskia at gcc dot gnu dot org
CC: gcc-bugs at gcc dot gnu dot org


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


[Bug tree-optimization/23382] [4.1 Regression] Does not remove the old HEAP virtual variables in clobbered

2005-08-13 Thread pinskia at gcc dot gnu dot org


-- 
   What|Removed |Added

Summary|[4.1 Regression] Don't  |[4.1 Regression] Does not
   |remove the old HEAP virtual |remove the old HEAP virtual
   |variables in clobbered  |variables in clobbered


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


[Bug tree-optimization/23382] [4.1 Regression] Don't remove the old HEAP virtual variables in clobbered

2005-08-13 Thread pinskia at gcc dot gnu dot org


-- 
   What|Removed |Added

Summary|[4.1 Regression] tree-ssa-  |[4.1 Regression] Don't
   |alias creates a new virtual |remove the old HEAP virtual
   |variable for malloc each|variables in clobbered
   |time may_alias is run (HEAP)|


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


[Bug tree-optimization/23382] [4.1 Regression] tree-ssa-alias creates a new virtual variable for malloc each time may_alias is run (HEAP)

2005-08-13 Thread dberlin at dberlin dot org

--- Additional Comments From dberlin at gcc dot gnu dot org  2005-08-14 
04:04 ---
Subject: Re:  [4.1 Regression] tree-ssa-alias
creates a new virtual variable for malloc each time may_alias is run 
(HEAP)

On Sun, 2005-08-14 at 03:48 +, pinskia at physics dot uc dot edu
wrote:
> --- Additional Comments From pinskia at physics dot uc dot edu  
> 2005-08-14 03:48 ---
> Subject: Re:  [4.1 Regression] tree-ssa-alias creates a new virtual variable 
> for malloc each time may_alias is run (HEAP)
> 
> 
> On Aug 13, 2005, at 11:40 PM, dberlin at dberlin dot org wrote:
> 
> > Uh, so?
> We keep the virtual variable around even in the clobbered variables.
I thought the call clobbered list was recomputed at the same time, which
should alleviate this problem.

If not, *that* is buggy.

Recreating the heap variables is *not* a bug.  Redoing alias information
is sometihng we may not want to do, but the fact that it requires us to
recreate heap variables is a fact of life.




-- 


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


[Bug tree-optimization/23382] [4.1 Regression] tree-ssa-alias creates a new virtual variable for malloc each time may_alias is run (HEAP)

2005-08-13 Thread dberlin at dberlin dot org

--- Additional Comments From dberlin at gcc dot gnu dot org  2005-08-14 
03:48 ---
Subject: Re:  [4.1 Regression] tree-ssa-alias
creates a new virtual variable for malloc each time may_alias is run 
(HEAP)

On Sun, 2005-08-14 at 03:38 +, pinskia at gcc dot gnu dot org wrote:
> --- Additional Comments From pinskia at gcc dot gnu dot org  2005-08-14 
> 03:38 ---
> I think this is the issue I am hitting for PR 15855.

Do you have *anything* to back this up?
There are still no timings, dumps, or anything attached to 15855
> 



-- 


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


[Bug tree-optimization/23382] [4.1 Regression] tree-ssa-alias creates a new virtual variable for malloc each time may_alias is run (HEAP)

2005-08-13 Thread pinskia at physics dot uc dot edu

--- Additional Comments From pinskia at physics dot uc dot edu  2005-08-14 
03:48 ---
Subject: Re:  [4.1 Regression] tree-ssa-alias creates a new virtual variable 
for malloc each time may_alias is run (HEAP)


On Aug 13, 2005, at 11:40 PM, dberlin at dberlin dot org wrote:

> Uh, so?
We keep the virtual variable around even in the clobbered variables.
Add a function call to an different function like say f so it does
not get GC'd and we keep on adding more and more V_MAY_DEFs:

   #   HEAP.6_36 = V_MAY_DEF ;
   #   HEAP.7_37 = V_MAY_DEF ;
   #   HEAP.8_38 = V_MAY_DEF ;
   #   HEAP.18_78 = V_MAY_DEF ;
   #   HEAP.19_79 = V_MAY_DEF ;
   #   HEAP.20_80 = V_MAY_DEF ;
   g ();


-- Pinski



-- 


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


Re: [Bug tree-optimization/23382] [4.1 Regression] tree-ssa-alias creates a new virtual variable for malloc each time may_alias is run (HEAP)

2005-08-13 Thread Andrew Pinski


On Aug 13, 2005, at 11:40 PM, dberlin at dberlin dot org wrote:


Uh, so?

We keep the virtual variable around even in the clobbered variables.
Add a function call to an different function like say f so it does
not get GC'd and we keep on adding more and more V_MAY_DEFs:

  #   HEAP.6_36 = V_MAY_DEF ;
  #   HEAP.7_37 = V_MAY_DEF ;
  #   HEAP.8_38 = V_MAY_DEF ;
  #   HEAP.18_78 = V_MAY_DEF ;
  #   HEAP.19_79 = V_MAY_DEF ;
  #   HEAP.20_80 = V_MAY_DEF ;
  g ();


-- Pinski



[Bug tree-optimization/23382] [4.1 Regression] tree-ssa-alias creates a new virtual variable for malloc each time may_alias is run (HEAP)

2005-08-13 Thread dberlin at dberlin dot org

--- Additional Comments From dberlin at gcc dot gnu dot org  2005-08-14 
03:40 ---
Subject: Re:  New: [4.1 Regression]
tree-ssa-alias creates a new virtual variable for malloc each time
may_alias is run (HEAP)

On Sun, 2005-08-14 at 03:36 +, pinskia at gcc dot gnu dot org wrote:
> 
> In .alias1:
>   i.0_18 = i_1;
>   #   HEAP.7_46 = V_MAY_DEF ;
>   b_6->a1[i.0_18] = i_1;
>   i.0_19 = i_1;
>   #   HEAP.8_47 = V_MAY_DEF ;
>   c_8->a1[i.0_19] = i_1;
>   i_20 = i_1 + 1;
> 
> In .alias2:
>   #   HEAP.19_14 = V_MAY_DEF ;
>   b_5->a1[i_65] = i_65;
>   #   HEAP.20_73 = V_MAY_DEF ;
>   c_7->a1[i_65] = i_65;
>   i_20 = i_65 + 1;

Uh, so?

This is because we recompute all the alias info, which means we really
recompute the alias info.

> 
> ---
> I don't know how much harm in compile time does this hurt in normal code but 
> we then keep on adding 
> them to clobbered variables:
>   #   HEAP.6_27 = V_MAY_DEF ;
>   #   HEAP.7_28 = V_MAY_DEF ;
>   #   HEAP.8_29 = V_MAY_DEF ;
>   #   HEAP.18_6 = V_MAY_DEF ;
>   #   HEAP.19_8 = V_MAY_DEF ;
>   #   HEAP.20_1 = V_MAY_DEF ;
>   a_3 = malloc1 (1028);

This is wrong.   malloc functions don't *clobber* anything, AFAIK.
--Dan




-- 


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


[Bug tree-optimization/23382] [4.1 Regression] tree-ssa-alias creates a new virtual variable for malloc each time may_alias is run (HEAP)

2005-08-13 Thread pinskia at gcc dot gnu dot org

--- Additional Comments From pinskia at gcc dot gnu dot org  2005-08-14 
03:38 ---
I think this is the issue I am hitting for PR 15855.

-- 
   What|Removed |Added

OtherBugsDependingO||15855
  nThis||
   Target Milestone|--- |4.1.0


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


[Bug tree-optimization/23382] New: [4.1 Regression] tree-ssa-alias creates a new virtual variable for malloc each time may_alias is run (HEAP)

2005-08-13 Thread pinskia at gcc dot gnu dot org
Take the following example from PR 21591:

struct a
{
  int length;
  int a1[256];
};

struct a *malloc1(__SIZE_TYPE__) __attribute__((malloc));
void free(void*);

void f(void)
{
   struct a *a = malloc1(sizeof(struct a));
   struct a *b = malloc1(sizeof(struct a));
   struct a *c = malloc1(sizeof(struct a));
   int i;
for (i = 0; i < 256; i++) {
  b->a1[i] = i;
  c->a1[i] = i;
}
for (i = 0; i < 256; i++) {
  a->a1[i] = b->a1[i] + c->a1[i];
}
free(a);
free(b);
free(c);
}


In .alias1:
  i.0_18 = i_1;
  #   HEAP.7_46 = V_MAY_DEF ;
  b_6->a1[i.0_18] = i_1;
  i.0_19 = i_1;
  #   HEAP.8_47 = V_MAY_DEF ;
  c_8->a1[i.0_19] = i_1;
  i_20 = i_1 + 1;

In .alias2:
  #   HEAP.19_14 = V_MAY_DEF ;
  b_5->a1[i_65] = i_65;
  #   HEAP.20_73 = V_MAY_DEF ;
  c_7->a1[i_65] = i_65;
  i_20 = i_65 + 1;

---
I don't know how much harm in compile time does this hurt in normal code but we 
then keep on adding 
them to clobbered variables:
  #   HEAP.6_27 = V_MAY_DEF ;
  #   HEAP.7_28 = V_MAY_DEF ;
  #   HEAP.8_29 = V_MAY_DEF ;
  #   HEAP.18_6 = V_MAY_DEF ;
  #   HEAP.19_8 = V_MAY_DEF ;
  #   HEAP.20_1 = V_MAY_DEF ;
  a_3 = malloc1 (1028);

-- 
   Summary: [4.1 Regression] tree-ssa-alias creates a new virtual
variable for malloc each time may_alias is run (HEAP)
   Product: gcc
   Version: 4.1.0
Status: UNCONFIRMED
  Keywords: memory-hog, compile-time-hog
  Severity: normal
  Priority: P2
 Component: tree-optimization
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: pinskia at gcc dot gnu dot org
CC: dberlin at gcc dot gnu dot org,dnovillo at gcc dot gnu
dot org,gcc-bugs at gcc dot gnu dot org


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


[Bug tree-optimization/21591] not vectorizing a loop with access to structs

2005-08-13 Thread pinskia at gcc dot gnu dot org

--- Additional Comments From pinskia at gcc dot gnu dot org  2005-08-14 
03:20 ---
Hmm, the aliasing info is good:
  #   VUSE ;
  D.1618_13 = b_5->a1[i_66]; 
  #   VUSE ;
  D.1619_15 = c_7->a1[i_66]; 
  D.1620_16 = D.1618_13 + D.1619_15;
  #   HEAP.45_143 = V_MAY_DEF ;
  a_3->a1[i_66] = D.1620_16;

So someone is not looking at that.

-- 


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


[Bug libobjc/23108] alignment bug in libobjc/archive.c

2005-08-13 Thread pinskia at gcc dot gnu dot org

--- Additional Comments From pinskia at gcc dot gnu dot org  2005-08-14 
03:16 ---
Hmm on powerpc-darwin we get:
a = 1, b = 3


Which is still wrong.

-- 
   What|Removed |Added

  GCC build triplet|i686-pc-linux-gnu   |
   GCC host triplet|i686-pc-linux-gnu   |
 GCC target triplet|i686-pc-linux-gnu   |
   Last reconfirmed|-00-00 00:00:00 |2005-08-14 03:16:31
   date||
Version|unknown |3.3.6


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


[Bug testsuite/23348] objc testsuite should run over both GNU and NeXT runtimes if supported

2005-08-13 Thread pinskia at gcc dot gnu dot org

--- Additional Comments From pinskia at gcc dot gnu dot org  2005-08-14 
02:42 ---
This is basically fixed.  Some of the tests in objc.dg/ can be moved over to 
objc/compile / objc/
execute.  I already moved over some of them, just the exceptions one and one 
other one.

Closing as fixed.

-- 
   What|Removed |Added

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


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


[Bug middle-end/21076] [4.1 Regression] ACATs ICE cxh1001 at tree-vrp.c:124 (fold bug)

2005-08-13 Thread pinskia at gcc dot gnu dot org

--- Additional Comments From pinskia at gcc dot gnu dot org  2005-08-14 
02:20 ---
No longer working on this.

-- 
   What|Removed |Added

 AssignedTo|pinskia at gcc dot gnu dot  |unassigned at gcc dot gnu
   |org |dot org
 Status|ASSIGNED|NEW


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


[Bug objc/23381] [4.1 Regression] Next runtime objc exceptions are broken

2005-08-13 Thread pinskia at gcc dot gnu dot org

--- Additional Comments From pinskia at gcc dot gnu dot org  2005-08-14 
02:04 ---
The failures are:
FAIL: objc/execute/exceptions/finally-1.m execution,  -O0  -fnext-runtime
FAIL: objc/execute/exceptions/finally-1.m execution,  -O1  -fnext-runtime
FAIL: objc/execute/exceptions/finally-1.m execution,  -O2  -fnext-runtime
FAIL: objc/execute/exceptions/finally-1.m execution,  -O3 -fomit-frame-pointer  
-fnext-runtime
FAIL: objc/execute/exceptions/finally-1.m execution,  -O3 -g  -fnext-runtime
FAIL: objc/execute/exceptions/finally-1.m execution,  -Os  -fnext-runtime

-- 


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


[Bug libobjc/22492] [PATCH] Abort after @finally: libobjc passing exception value instead of exception.

2005-08-13 Thread pinskia at gcc dot gnu dot org

--- Additional Comments From pinskia at gcc dot gnu dot org  2005-08-14 
02:03 ---
I commited your fix with slight changes, two style changes and the change of 
the type of return_object 
to void* to aviod a warning.

-- 
   What|Removed |Added

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


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


[Bug libobjc/22492] [PATCH] Abort after @finally: libobjc passing exception value instead of exception.

2005-08-13 Thread cvs-commit at gcc dot gnu dot org

--- Additional Comments From cvs-commit at gcc dot gnu dot org  2005-08-14 
02:02 ---
Subject: Bug 22492

CVSROOT:/cvs/gcc
Module name:gcc
Changes by: [EMAIL PROTECTED]   2005-08-14 02:01:52

Modified files:
libobjc: ChangeLog exception.c 
gcc/testsuite  : ChangeLog 
Added files:
gcc/testsuite/objc/execute/exceptions: finally-1.m 

Log message:
libobjc/ChangeLog:

2005-08-13  Marcin Koziej  <[EMAIL PROTECTED]>
Andrew Pinski  <[EMAIL PROTECTED]>

PR libobjc/22492
* exception.c (PERSONALITY_FUNCTION): Fix the PC with finally.

testsuite/ChangeLog:
2005-08-13  Marcin Koziej  <[EMAIL PROTECTED]>
Andrew Pinski  <[EMAIL PROTECTED]>

PR libobjc/22492
* execute/exceptions/finally-1.m: New test.

Patches:
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libobjc/ChangeLog.diff?cvsroot=gcc&r1=1.170&r2=1.171
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libobjc/exception.c.diff?cvsroot=gcc&r1=1.4&r2=1.5
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/ChangeLog.diff?cvsroot=gcc&r1=1.5918&r2=1.5919
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/objc/execute/exceptions/finally-1.m.diff?cvsroot=gcc&r1=NONE&r2=1.1



-- 


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


[Bug libfortran/23380] [mingw32] cpu_time intrinsic malfunction

2005-08-13 Thread kargl at gcc dot gnu dot org

--- Additional Comments From kargl at gcc dot gnu dot org  2005-08-14 01:33 
---
(In reply to comment #1)
> This is a mingw32 specific issue.
> 
> The implemention for mingw32 is not complete.
> intrinsics/cpu_time.c is where it is implemented,
> we only check for HAVE_GETRUSAGE and HAVE_TIMES.

This isn't exactly correct.  If neither HAVE_GETRUSAGE nor HAVE_TIMES
is defined, cpu_time can and does return -1. It appears that MingW
claims to have a HAVE_TIMES, when in fact it is broken.  This is not
a gfortran problem.  Please contact the MingW developers.


-- 


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


[Bug objc/23306] [4.1 Regression] [unit-at-a-time] objc exceptions (GNU runtime) don't work with unit-at-a-time

2005-08-13 Thread pinskia at gcc dot gnu dot org

--- Additional Comments From pinskia at gcc dot gnu dot org  2005-08-14 
01:05 ---
The failures which this covers has changed since objc.dg/try-catch-8.m was 
moved.
The failures now are:
FAIL: objc/execute/exceptions/local-variables-1.m compilation,  -O1  
-fgnu-runtime
FAIL: objc/execute/exceptions/local-variables-1.m compilation,  -O2  
-fgnu-runtime
FAIL: objc/execute/exceptions/local-variables-1.m compilation,  -O3 
-fomit-frame-pointer  -fgnu-
runtime
FAIL: objc/execute/exceptions/local-variables-1.m compilation,  -O3 -g  
-fgnu-runtime
FAIL: objc/execute/exceptions/local-variables-1.m compilation,  -Os  
-fgnu-runtime


Though the -O1 is a regression because unit-at-a-time was not on at -O1 for 
4.0.0 so I am going to 
mark this as a regression.  The way to fix this is generate the strings at the 
end of compilation and not 
at the end of file.

-- 
   What|Removed |Added

Summary|[unit-at-a-time]|[4.1 Regression] [unit-at-a-
   |objc.dg/try-catch-8.m fails |time] objc exceptions (GNU
   |to link/compile with the gnu|runtime) don't work with
   |runtime |unit-at-a-time
   Target Milestone|--- |4.1.0


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


[Bug objc/23381] [4.1 Regression] Next runtime objc exceptions are broken

2005-08-13 Thread pinskia at gcc dot gnu dot org

--- Additional Comments From pinskia at gcc dot gnu dot org  2005-08-13 
23:37 ---
I think this is the same reason for the "objc.dg/try-catch-11.m execution test" 
failure.


-- 


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


[Bug target/21833] simd tests fail

2005-08-13 Thread pinskia at gcc dot gnu dot org

--- Additional Comments From pinskia at gcc dot gnu dot org  2005-08-13 
23:29 ---
This works in 3.4.0 on i686-pc-linux-gnu and binutils version 2.15.90.0.3 
20040415 so I still think 
this is not a GCC bug.

-- 


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


[Bug target/21833] simd tests fail

2005-08-13 Thread tg42 at gmx dot de

--- Additional Comments From tg42 at gmx dot de  2005-08-13 23:28 ---
Again: this is NOT an alignment problem, as the structures ARE properly 16-byte
aligned (cf. addresses from gdb output).

What exactly cannot be reproduced: The code generated (movdqa?) or how the code
acts?  On which processor did you try to reproduce it?  The failure occurs on
various P3.

Why was the code generation changed between 3.3 to 3.4?  

-- 
   What|Removed |Added

 Status|RESOLVED|UNCONFIRMED
 Resolution|INVALID |


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


[Bug objc/23381] [4.1 Regression] Next runtime objc exceptions are broken

2005-08-13 Thread pinskia at gcc dot gnu dot org

--- Additional Comments From pinskia at gcc dot gnu dot org  2005-08-13 
22:46 ---
This looks like a gimplifier bug.
In .orginal:
if (objc_exception_try_enter (&D.2385);
_setjmp ((void *) &D.2385.buf) != 0;)
  {
{
  struct objc_object * D.2383;

  D.2383 = objc_exception_extract (&D.2385);
  if (objc_exception_try_enter (&D.2385);
  _setjmp ((void *) &D.2385.buf) != 0;)
{
  D.2386 = objc_exception_extract (&D.2385);
}
  else
{
  {
struct objc_object * exc;

exc = D.2383;
made_catch++ ;
OBJ_TYPE_REF(objc_msgSend;SAVE_EXPR ->0) (SAVE_EXPR 
, 
_OBJC_SELECTOR_REFERENCES_1);
  }
}
}
  }
else
  {
thrower ();


in .gimple:
objc_exception_try_enter (&D.2385);
D.2387 = _setjmp (&D.2385.buf);
if (D.2387 == 0)
  {
thrower ();

Someone should test 4.0.x also.

-- 
   What|Removed |Added

  Known to fail||4.1.0
   Target Milestone|--- |4.1.0


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


[Bug objc/23381] New: [4.1 Regression] Next runtime objc exceptions are broken

2005-08-13 Thread pinskia at gcc dot gnu dot org
Take the following test (which I am about to commit to the testsuite, it is 
from PR 22492), we should 
not abort:
#include 
#include 
#include 

static int made_try = 0;

int
thrower_try_body()
{
made_try++;
return (0);
}

static int made_finally = 0;

int
finally_body()
{
made_finally++;
return (0);
}

int
thrower()
{
@try
{
thrower_try_body();
@throw [Object new];
}
@finally
{
finally_body();
} 
return 0;
}

static int made_catch = 0;

int 
main(int ac, char *av[])
{
@try
{
thrower();
}
@catch (id exc)
{
made_catch++;
[exc free];
}
if (made_try != 1)
  abort ();
if (made_finally != 1)
  abort ();
if (made_catch != 1)
  abort ();
}



It worked in 4.0.0 20050113 so this is a regression.

-- 
   Summary: [4.1 Regression] Next runtime objc exceptions are broken
   Product: gcc
   Version: 4.1.0
Status: UNCONFIRMED
  Keywords: wrong-code
  Severity: normal
  Priority: P2
 Component: objc
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: pinskia at gcc dot gnu dot org
CC: gcc-bugs at gcc dot gnu dot org


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


[Bug middle-end/23369] [4.0/4.1 regression] build_range_check generates wrong code for funcptr comparison

2005-08-13 Thread pinskia at gcc dot gnu dot org

--- Additional Comments From pinskia at gcc dot gnu dot org  2005-08-13 
22:14 ---
(In reply to comment #11)
> build_range_test?

woops, I mean build_range_check.

-- 
   What|Removed |Added

Summary|[4.0/4.1 regression]|[4.0/4.1 regression]
   |build_range_test generates  |build_range_check generates
   |wrong code for funcptr  |wrong code for funcptr
   |comparison  |comparison


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


[Bug middle-end/23369] [4.0/4.1 regression] build_range_test generates wrong code for funcptr comparison

2005-08-13 Thread dave at hiauly1 dot hia dot nrc dot ca

--- Additional Comments From dave at hiauly1 dot hia dot nrc dot ca  
2005-08-13 22:12 ---
Subject: Re:  [4.0/4.1 regression] build_range_test generates wrong code for 
funcptr comparison

>|wrong code for funcptr  |build_range_test generates
>|comparison  |wrong code for funcptr
>||comparison

build_range_test?

Dave


-- 


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


[Bug libobjc/22492] [PATCH] Abort after @finally: libobjc passing exception value instead of exception.

2005-08-13 Thread pinskia at gcc dot gnu dot org

--- Additional Comments From pinskia at gcc dot gnu dot org  2005-08-13 
22:05 ---
Woops I forgot to look at this that weekend, will look into it tomorrow.

-- 
   What|Removed |Added

  GCC build triplet|4.1.0 20050709  |
   GCC host triplet|i386-portbld-freebsd5.4 |
 GCC target triplet||i386-portbld-freebsd5.4


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


[Bug libfortran/23380] [mingw32] cpu_time intrinsic malfunction

2005-08-13 Thread pinskia at gcc dot gnu dot org

--- Additional Comments From pinskia at gcc dot gnu dot org  2005-08-13 
21:55 ---
This is a mingw32 specific issue.

The implemention for mingw32 is not complete.
intrinsics/cpu_time.c is where it is implemented,
we only check for HAVE_GETRUSAGE and HAVE_TIMES.

-- 
   What|Removed |Added

 Status|UNCONFIRMED |NEW
  Component|fortran |libfortran
 Ever Confirmed||1
   Last reconfirmed|-00-00 00:00:00 |2005-08-13 21:55:29
   date||
Summary|cpu_time intrinsic  |[mingw32] cpu_time intrinsic
   |malfunction |malfunction


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


Re: bug in "pure virtual" templates ?

2005-08-13 Thread James E Wilson

Dennis Lubert wrote:

37 template T get( void ) = 0;


This looks like a legitimate bug.  However, bugs should be reported into 
our bugzilla bug database.  We don't track bugs mailed to the gcc-bugs 
address.  See

http://gcc.gnu.org/bugs.html
--
Jim Wilson, GNU Tools Support, http://www.specifix.com


[Bug middle-end/23369] [4.0/4.1 regression] build_range_test generates wrong code for funcptr comparison

2005-08-13 Thread pinskia at gcc dot gnu dot org

--- Additional Comments From pinskia at gcc dot gnu dot org  2005-08-13 
21:52 ---
Confirmed,
A small testcase:
typedef void(*func_type) (void);

void g(void);

void f(func_type a)
{
  if (a == (func_type) 1 || a == (func_type)0 || a == (func_type) -1)
   g();
}


-- 
   What|Removed |Added

 Status|UNCONFIRMED |NEW
 Ever Confirmed||1
  Known to fail|4.0.1   |4.0.1 4.1.0
   Last reconfirmed|-00-00 00:00:00 |2005-08-13 21:52:19
   date||
Summary|[4.0.x regression] Generates|[4.0/4.1 regression]
   |wrong code for funcptr  |build_range_test generates
   |comparison  |wrong code for funcptr
   ||comparison
   Target Milestone|--- |4.0.2


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


[Bug fortran/23380] New: cpu_time intrinsic malfunction

2005-08-13 Thread edunlop at utvinternet dot ie
The gfortran intrinsic function cpu_time(x) does not measure cpu time - it 
always produces 0.0 (zero) as the result.

I am using "Native Windows build: download the latest installer (2005-08-06)" 
from http://gcc.gnu.org/wiki/GFortranBinaries, and am running under Windows XP 
Professional.

-- 
   Summary: cpu_time intrinsic malfunction
   Product: gcc
   Version: 4.1.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P2
 Component: fortran
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: edunlop at utvinternet dot ie
CC: gcc-bugs at gcc dot gnu dot org


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


[Bug middle-end/23369] [4.0.x regression] Generates wrong code for funcptr comparison

2005-08-13 Thread dave at hiauly1 dot hia dot nrc dot ca

--- Additional Comments From dave at hiauly1 dot hia dot nrc dot ca  
2005-08-13 21:46 ---
Subject: Re:  [4.0.x regression] Generates wrong code for funcptr comparison

> Bah, while this is probably going to happen for hppa-linux, it'snever going 
> to happen for hppa-hpux.  GCC's treatment of functionpointers here is just 
> WRONG.There are a couple of issues.  The most serious is the following:We 
> have the following code from __pthread_sigaction in the .i file:   if (old == 
> ((__sighandler_t) 1) || old == ((__sighandler_t) 0) || old == 
> ((__sighandler_t) -1)) __sighandler[sig].old = (arch_sighandler_t) 
> act->__sigaction_handler.sa_handler;This is what the above turns into in the 
> tree dump filebug321785.c.t02.original:  if ((void (*) (int)) 
> old - 2B > -4B){  __sighandler[sig].old = (void 
> (*) (int, struct sigcontext *)) act->__sigaction_handler.sa_handler;
> }I don't believe that the transformation is valid.  Also, it not 
> validC to do relational comparisons where one of the operands is a 
> functionpointer.  See 6.5.8 (2).do_compare_and_jump doesn't check code before 
> canonicalizing functionpointer!
 s.!
>I think we need an assert in do_compare_and_jump to catchinvalid function 
> pointer comparisons.

Yuck.  I used Konqueror to add this comment and it totally botched up
the white space ;(

Dave


-- 


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


[Bug middle-end/23369] [4.0.x regression] Generates wrong code for funcptr comparison

2005-08-13 Thread pinskia at physics dot uc dot edu

--- Additional Comments From pinskia at physics dot uc dot edu  2005-08-13 
21:44 ---
Subject: Re:  [4.0.x regression] Generates wrong code for funcptr comparison


On Aug 13, 2005, at 5:42 PM, danglin at gcc dot gnu dot org wrote:

>
> --- Additional Comments From danglin at gcc dot gnu dot org  
> 2005-08-13 21:42 ---
> Bah, while this is probably going to happen for hppa-linux, it'snever 
> going to happen for hppa-hpux.  GCC's treatment of functionpointers 
> here is just WRONG.There are a couple of issues.  The most serious is 
> the following:We have the following code from __pthread_sigaction in 
> the .i file:   if (old == ((__sighandler_t) 1) || old == 
> ((__sighandler_t) 0) || old == ((__sighandler_t) -1)) 
> __sighandler[sig].old = (arch_sighandler_t) 
> act->__sigaction_handler.sa_handler;This is what the above turns into 
> in the tree dump filebug321785.c.t02.original:  if ((void 
> (*) (int)) old - 2B > -4B){  
> __sighandler[sig].old = (void (*) (int, struct sigcontext *)) 
> act->__sigaction_handler.sa_handler;}I don't believe that 
> the transformation is valid.


hmm, looks like another build_range_test bug.

-- Pinski



-- 


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


Re: [Bug middle-end/23369] [4.0.x regression] Generates wrong code for funcptr comparison

2005-08-13 Thread Andrew Pinski


On Aug 13, 2005, at 5:42 PM, danglin at gcc dot gnu dot org wrote:



--- Additional Comments From danglin at gcc dot gnu dot org  
2005-08-13 21:42 ---
Bah, while this is probably going to happen for hppa-linux, it'snever 
going to happen for hppa-hpux.  GCC's treatment of functionpointers 
here is just WRONG.There are a couple of issues.  The most serious is 
the following:We have the following code from __pthread_sigaction in 
the .i file:   if (old == ((__sighandler_t) 1) || old == 
((__sighandler_t) 0) || old == ((__sighandler_t) -1)) 
__sighandler[sig].old = (arch_sighandler_t) 
act->__sigaction_handler.sa_handler;This is what the above turns into 
in the tree dump filebug321785.c.t02.original:  if ((void 
(*) (int)) old - 2B > -4B){  
__sighandler[sig].old = (void (*) (int, struct sigcontext *)) 
act->__sigaction_handler.sa_handler;}I don't believe that 
the transformation is valid.



hmm, looks like another build_range_test bug.

-- Pinski



[Bug middle-end/23369] [4.0.x regression] Generates wrong code for funcptr comparison

2005-08-13 Thread danglin at gcc dot gnu dot org

--- Additional Comments From danglin at gcc dot gnu dot org  2005-08-13 
21:42 ---
Bah, while this is probably going to happen for hppa-linux, it'snever going to 
happen for hppa-hpux.  GCC's treatment of functionpointers here is just 
WRONG.There are a couple of issues.  The most serious is the following:We have 
the following code from __pthread_sigaction in the .i file:   if (old == 
((__sighandler_t) 1) || old == ((__sighandler_t) 0) || old == ((__sighandler_t) 
-1)) __sighandler[sig].old = (arch_sighandler_t) 
act->__sigaction_handler.sa_handler;This is what the above turns into in the 
tree dump filebug321785.c.t02.original:  if ((void (*) (int)) old 
- 2B > -4B){  __sighandler[sig].old = (void (*) 
(int, struct sigcontext *)) act->__sigaction_handler.sa_handler;}I 
don't believe that the transformation is valid.  Also, it not validC to do 
relational comparisons where one of the operands is a functionpointer.  See 
6.5.8 (2).do_compare_and_jump doesn't check code before canonicalizing 
functionpointers.  I think we need an assert in do_compare_and_jump to 
catchinvalid function pointer comparisons.

-- 


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


[Bug fortran/23379] compiler segfault with internal write

2005-08-13 Thread pinskia at gcc dot gnu dot org

--- Additional Comments From pinskia at gcc dot gnu dot org  2005-08-13 
21:26 ---
Confirmed.

-- 
   What|Removed |Added

 Status|UNCONFIRMED |NEW
 Ever Confirmed||1
   Last reconfirmed|-00-00 00:00:00 |2005-08-13 21:26:40
   date||


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


[Bug fortran/23379] compiler segfault with internal write

2005-08-13 Thread tkoenig at gcc dot gnu dot org

--- Additional Comments From tkoenig at gcc dot gnu dot org  2005-08-13 
21:25 ---
Sorry, wrong bug number.

-- 
   What|Removed |Added

OtherBugsDependingO|19274   |19276
  nThis||


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


[Bug target/19274] temporary not eliminated in composite _mm_set_ps1

2005-08-13 Thread tkoenig at gcc dot gnu dot org


-- 
   What|Removed |Added

  BugsThisDependsOn||23379


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


[Bug fortran/23379] New: compiler segfault with internal write

2005-08-13 Thread tkoenig at gcc dot gnu dot org
$ cat internal-write.f90
  character(len=20), dimension(2) ::  line(2)
  write (unit=line(1:2),fmt='(A/A)') '1', '2'
end
$ gdb ~/libexec/gcc/i686-pc-linux-gnu/4.1.0/f951
GNU gdb 6.3-debian
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "i386-linux"...Using host libthread_db library
"/lib/tls/libthread_db.so.1".

(gdb) r internal-write.f90
Starting program: /home/ig25/libexec/gcc/i686-pc-linux-gnu/4.1.0/f951
internal-write.f90
 MAIN__
Program received signal SIGSEGV, Segmentation fault.
0x0809c830 in gfc_conv_scalarized_array_ref (se=0xb334, ar=0x8689fe4)
at ../../gcc-4.1/gcc/fortran/trans-array.c:1618
1618n = se->loop->order[0];
(gdb) p se->loop
$1 = (struct gfc_loopinfo *) 0x0
(gdb) bt
#0  0x0809c830 in gfc_conv_scalarized_array_ref (se=0xb334, ar=0x8689fe4)
at ../../gcc-4.1/gcc/fortran/trans-array.c:1618
#1  0x0809d16d in gfc_conv_array_ref (se=0xb334, ar=0x8689fe4)
at ../../gcc-4.1/gcc/fortran/trans-array.c:1662
#2  0x080a9578 in gfc_conv_expr (se=0xb334, expr=0x8689f88)
at ../../gcc-4.1/gcc/fortran/trans-expr.c:420
#3  0x080b3bf8 in set_string (block=0xb394, postblock=0xb38c,
var=Variable "var" is not available.
)
at ../../gcc-4.1/gcc/fortran/trans-io.c:400
#4  0x080b4aed in build_dt (function=0x85d1f18, code=0x868a328)
at ../../gcc-4.1/gcc/fortran/trans-io.c:1155
#5  0x080981ba in gfc_trans_code (code=0x868a328)
at ../../gcc-4.1/gcc/fortran/trans.c:593
#6  0x080a751e in gfc_generate_function_code (ns=0x86894a8)
at ../../gcc-4.1/gcc/fortran/trans-decl.c:2397
#7  0x08097834 in gfc_generate_code (ns=0x86894a8)
at ../../gcc-4.1/gcc/fortran/trans.c:683
#8  0x0807da01 in gfc_parse_file () at ../../gcc-4.1/gcc/fortran/parse.c:2639
#9  0x080971e5 in gfc_be_parse_file (set_yydebug=0)
at ../../gcc-4.1/gcc/fortran/f95-lang.c:256
#10 0x0836d250 in toplev_main (argc=2, argv=0xb5f4)
at ../../gcc-4.1/gcc/toplev.c:971
#11 0x40076974 in __libc_start_main () from /lib/tls/libc.so.6
#12 0x0804adb1 in _start () at ../sysdeps/i386/elf/start.S:102
$ gfortran -v
Using built-in specs.
Target: i686-pc-linux-gnu
Configured with: ../gcc-4.1/configure --prefix=/home/ig25 
--enable-languages=c,f95
Thread model: posix
gcc version 4.1.0 20050811 (experimental)

-- 
   Summary: compiler segfault with internal write
   Product: gcc
   Version: 4.1.0
Status: UNCONFIRMED
  Keywords: wrong-code
  Severity: normal
  Priority: P2
 Component: fortran
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: tkoenig at gcc dot gnu dot org
CC: gcc-bugs at gcc dot gnu dot org
 BugsThisDependsOn: 23364
OtherBugsDependingO 19274
 nThis:


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


[Bug libfortran/23364] missing format reversion for internal write

2005-08-13 Thread tkoenig at gcc dot gnu dot org


-- 
   What|Removed |Added

OtherBugsDependingO||23379
  nThis||


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


[Bug c++/23372] [4.0/4.1 Regression] Temporary aggregate copy not elided when passing parameters by value

2005-08-13 Thread rguenth at gcc dot gnu dot org

--- Additional Comments From rguenth at gcc dot gnu dot org  2005-08-13 
21:21 ---
The best place to fix this is probably still the expander or TER.  Or
out-of-ssa, where the necessary information is best present.  Or fix gimple and
gimplification.

-- 


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


[Bug testsuite/23348] objc testsuite should run over both GNU and NeXT runtimes if supported

2005-08-13 Thread pinskia at gcc dot gnu dot org

--- Additional Comments From pinskia at gcc dot gnu dot org  2005-08-13 
21:21 ---
for the exceptions testcase, we need to add a new directory which would be 
useful anyways as it shows 
tests which fail at higher optimizations and such.

-- 


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


[Bug testsuite/23348] objc testsuite should run over both GNU and NeXT runtimes if supported

2005-08-13 Thread pinskia at gcc dot gnu dot org

--- Additional Comments From pinskia at gcc dot gnu dot org  2005-08-13 
21:18 ---
objc/ turture is done but objc.dg needs to be done but it is much harder.

many of the tests in objc.dg can be moved over to objc so they can be tested on 
both runtimes.

-- 


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


[Bug testsuite/23348] objc testsuite should run over both GNU and NeXT runtimes if supported

2005-08-13 Thread cvs-commit at gcc dot gnu dot org

--- Additional Comments From cvs-commit at gcc dot gnu dot org  2005-08-13 
21:16 ---
Subject: Bug 23348

CVSROOT:/cvs/gcc
Module name:gcc
Changes by: [EMAIL PROTECTED]   2005-08-13 21:16:04

Modified files:
gcc/testsuite  : ChangeLog 
gcc/testsuite/lib: objc-torture.exp 
Added files:
gcc/testsuite/objc/compile: trivial.m 

Log message:
2005-08-13  Andrew Pinski  <[EMAIL PROTECTED]>

part of PR testsuite/23348
* lib/objc-torture.exp: Add -fgnu-runtime and/or -fnext-runtime to each
of the torture options.
* objc/compile/trivial.m: New test.

Patches:
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/ChangeLog.diff?cvsroot=gcc&r1=1.5914&r2=1.5915
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/lib/objc-torture.exp.diff?cvsroot=gcc&r1=1.9&r2=1.10
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/objc/compile/trivial.m.diff?cvsroot=gcc&r1=NONE&r2=1.1



-- 


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


[Bug libstdc++/23358] _Destroy doesn't optimize for scalar types

2005-08-13 Thread chris at bubblescope dot net


-- 
   What|Removed |Added

 CC||chris at bubblescope dot net


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


[Bug rtl-optimization/23376] ICE on GCC 4.x with -O1 -funroll-loops -fvariable-expansion-in-unroller

2005-08-13 Thread pinskia at gcc dot gnu dot org

--- Additional Comments From pinskia at gcc dot gnu dot org  2005-08-13 
19:18 ---
Confirmed, reduced testcase:
typedef int __m64 __attribute__ ((__vector_size__ (8)));
typedef int __v2si __attribute__ ((__vector_size__ (8)));
static __inline __m64 __attribute__((__always_inline__)) _mm_add_pi32 (__m64 
__m1, __m64 __m2) {
  return (__m64) __builtin_ia32_paddd ((__v2si)__m1, (__v2si)__m2);
};
__m64 simple_block_diff_up_mmx_4(  const int width ,__m64 ref1 ) {
  __m64 sum;
  int count = width >>1;
  while (count--)
sum = _mm_add_pi32 (sum, ref1);
  return sum;
}

-- 
   What|Removed |Added

 Status|UNCONFIRMED |NEW
 Ever Confirmed||1
   Last reconfirmed|-00-00 00:00:00 |2005-08-13 19:18:05
   date||


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


[Bug fortran/23373] Functions returning pointers with pointer argument

2005-08-13 Thread tobi at gcc dot gnu dot org

--- Additional Comments From tobi at gcc dot gnu dot org  2005-08-13 18:51 
---
Interestingly, for characters we do the correct copying:
[EMAIL PROTECTED]:~/src/tests> cat test2.f90
program ac
  character*10 a
  a = "abc"
  a = f(a)

contains

  function f(b) result(x)
character*10 b, x
 x = "falsch"
 b = b//"richtig"

  end function
end program
[EMAIL PROTECTED]:~/src/tests> ../gcc/build/gcc/f951 test2.f90
-fdump-tree-original -quiet
[EMAIL PROTECTED]:~/src/tests> tail -15 test2.f90.t02.original
MAIN__ ()
{
  char a[1:10];
  static void f (char[1:10] &, int4, char[1:10] &, int4);

  _gfortran_copy_string (10, &a, 3, "abc");
  {
char str.1[10];

f ((char[1:10] *) &str.1, 10, &a, 10);
_gfortran_copy_string (10, &a, 10, (char[1:10] *) &str.1);
  }
}


-- 


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


[Bug fortran/23373] Functions returning pointers with pointer argument

2005-08-13 Thread tobi at gcc dot gnu dot org

--- Additional Comments From tobi at gcc dot gnu dot org  2005-08-13 18:43 
---
Looks like dependency checking is not strict enough.

-- 
   What|Removed |Added

 CC||tobi at gcc dot gnu dot org


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


[Bug target/23355] size optimizer did not eliminateing useless Push and pop instructions at ARM/Thumb machine

2005-08-13 Thread th dot r dot klein at web dot de

--- Additional Comments From th dot r dot klein at web dot de  2005-08-13 
18:27 ---
I've reduced the function to a useless, but bug still remains.

(sorry: I've forgotten to tar the files so I'm attaching those manualy.)

###

~/work/bugreport$ arm-elf-gcc-3.4.4 -v -save-temps -g -Os -fPIC -mthumb
-mlittle-endian -mapcs -march=armv4t-mcallee-super-interworking -c
example_3_4_4.c -o 3_4_4_thumb.o
Reading specs from /usr/local/lib/gcc/arm-elf/3.4.4/specs
Configured with: ../../gcc-3.4.4/configure --target=arm-elf --disable-threads
--disable-nls --without-headers --without-libs --enable-languages=c
Thread model: single
gcc version 3.4.4
 /usr/local/libexec/gcc/arm-elf/3.4.4/cc1 -E -quiet -v -D__ARM_ARCH_4T__
-D__USES_INITFINI__ example_3_4_4.c -mthumb -mlittle-endian -mapcs -march=armv4t
-mcallee-super-interworking -fPIC -fworking-directory -Os -o example_3_4_4.i
ignoring nonexistent directory
"/usr/local/lib/gcc/arm-elf/3.4.4/../../../../arm-elf/sys-include"
#include "..." search starts here:
#include <...> search starts here:
 /usr/local/lib/gcc/arm-elf/3.4.4/include
 /usr/local/lib/gcc/arm-elf/3.4.4/../../../../arm-elf/include
End of search list.
 /usr/local/libexec/gcc/arm-elf/3.4.4/cc1 -fpreprocessed example_3_4_4.i -quiet
-dumpbase example_3_4_4.c -mthumb-mlittle-endian -mapcs -march=armv4t
-mcallee-super-interworking -auxbase-strip 3_4_4_thumb.o -g -Os -version -fPIC
-o example_3_4_4.s
GNU C version 3.4.4 (arm-elf)
compiled by GNU C version 3.4.2 [FreeBSD] 20040728.
GGC heuristics: --param ggc-min-expand=65 --param ggc-min-heapsize=65536
 /usr/local/lib/gcc/arm-elf/3.4.4/../../../../arm-elf/bin/as -EL -march=armv4t
-o 3_4_4_thumb.o example_3_4_4.s

###
file example_3_4_4.i
###
# 1 "example_3_4_4.c"
# 1 "/home/thomas/work/bugreport//"
# 1 ""
# 1 ""
# 1 "example_3_4_4.c"



typedef char int8_t;
typedef short int16_t;
typedef int int32_t;

typedef unsigned char uint8_t;
typedef unsigned short uint16_t;
typedef unsigned long uint32_t;


typedef int __attribute__((__mode__(__DI__))) int64_t;
typedef unsigned int __attribute__((__mode__(__DI__))) uint64_t;
# 34 "example_3_4_4.c"
int progWord(uint32_t base_address,uint32_t address,uint32_t data)
{
 volatile uint32_t *dataPtr;
 uint32_t rd_data;


 *((volatile uint32_t *)(base_address + (0x555uL<<2))) = 0x;

 dataPtr = (uint32_t *)address;
 *dataPtr = data;

 return 0;
}
###
file example_3_4_4.s
###
.code   16
.file   "example_3_4_4.c"
.section.debug_abbrev,"",%progbits
.Ldebug_abbrev0:
.section.debug_info,"",%progbits
.Ldebug_info0:
.section.debug_line,"",%progbits
.Ldebug_line0:
.text
.Ltext0:
.align  2
.global progWord
.code 32
.type   progWord, %function
progWord:
.LFB2:
.file 1 "example_3_4_4.c"
.loc 1 35 0
orr ip, pc, #1
bx  ip
.code   16
.globl .real_start_ofprogWord
.thumb_func
.real_start_ofprogWord:
.loc 1 40 0
ldr r3, .L2
add r0, r0, r3
ldr r3, .L2+4
str r3, [r0]
.loc 1 46 0
mov r0, #0
.loc 1 43 0
str r2, [r1]
.loc 1 46 0
@ sp needed for prologue
bx  lr
.L3:
.align  2
.L2:
.word   5460
.word   -1431655766
.LFE2:
.size   progWord, .-progWord
.section.debug_frame,"",%progbits
.Lframe0:
.4byte  .LECIE0-.LSCIE0
.LSCIE0:
.4byte  0x
.byte   0x1
.ascii  "\000"
.uleb128 0x1
.sleb128 -4
.byte   0xe
.byte   0xc
.uleb128 0xd
.uleb128 0x0
.align  2
.LECIE0:
.LSFDE0:
.4byte  .LEFDE0-.LASFDE0
.LASFDE0:
.4byte  .Lframe0
.4byte  .LFB2
.4byte  .LFE2-.LFB2
.align  2
.LEFDE0:
.text
.Letext0:
.section.debug_info
.4byte  0xc9
.2byte  0x2
.4byte  .Ldebug_abbrev0
.byte   0x4
.uleb128 0x1
.4byte  .Ldebug_line0
.4byte  .Letext0
.4byte  .Ltext0
.4byte  .LASF12
.byte   0x1
.4byte  .LASF13
.4byte  .LASF14
.uleb128 0x2
.4byte  .LASF0
.byte   0x1
.byte   0x8
.uleb128 0x2
.4byte  .LASF1
.byte   0x2
.byte   0x5
.uleb128 0x3
.ascii  "int\000"
.byte   0x4
.byte   0x5
.uleb128 0x2
.4byte  .LASF2
.byte   0x1
.byte   0x8
.uleb128 0x2
.4byte  .LASF3
.byte   0x2
.byte

[Bug c++/23372] [4.0/4.1 Regression] Temporary aggregate copy not elided when passing parameters by value

2005-08-13 Thread rguenth at tat dot physik dot uni-tuebingen dot de

--- Additional Comments From rguenth at tat dot physik dot uni-tuebingen 
dot de  2005-08-13 18:16 ---
Indeed - adding a destructor (or anything else that makes it a non-POD) "fixes"
the problem, too.

-- 


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


[Bug c++/23372] [4.0/4.1 Regression] Temporary aggregate copy not elided when passing parameters by value

2005-08-13 Thread pinskia at gcc dot gnu dot org

--- Additional Comments From pinskia at gcc dot gnu dot org  2005-08-13 
18:12 ---
(In reply to comment #4)
> which confuses me a bit, because here the prototype of f looks like
> effectively
> 
> void f(A*);

No that is correct as it turns the class into a non pod and non pods are always 
passed via reference and 
not via value.

-- 


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


[Bug c++/23372] [4.0/4.1 Regression] Temporary aggregate copy not elided when passing parameters by value

2005-08-13 Thread rguenth at tat dot physik dot uni-tuebingen dot de

--- Additional Comments From rguenth at tat dot physik dot uni-tuebingen 
dot de  2005-08-13 18:11 ---
With the copy ctor we end up with

void g(A*) (a)
{
  struct A D.1603;

:
  __comp_ctor  (&D.1603, a);
  f (&D.1603);
  return;

}

which confuses me a bit, because here the prototype of f looks like
effectively

void f(A*);

do we use ABI information here, but not in the other case?  The C++
frontend in this case presents us with

{
  <
  D.1603 >>>
>) >>>
>>;
}

where in the case w/o the copy ctor we have

  <>) >>>
>>;

is there some different wording about by-value parameter passing
with or without explicit copy ctor in the C++ standard?!  I.e., why
isn't the above

  <>) >>>
>>;

?

-- 


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


[Bug target/23378] [4.1 Regression] code quality regression for complicated loop

2005-08-13 Thread pinskia at gcc dot gnu dot org


-- 
   What|Removed |Added

 CC||hubicka at gcc dot gnu dot
   ||org
  Component|pending |target
Summary|code quality regression for |[4.1 Regression] code
   |complicated loop|quality regression for
   ||complicated loop
   Target Milestone|--- |4.1.0


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


[Bug pending/23378] code quality regression for complicated loop

2005-08-13 Thread martin at mpa-garching dot mpg dot de

--- Additional Comments From martin at mpa-garching dot mpg dot de  
2005-08-13 18:05 ---
Created an attachment (id=9494)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=9494&action=view)
A testcase for the problem


-- 


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


[Bug rtl-optimization/23376] ICE on GCC 4.x with -O1 -funroll-loops -fvariable-expansion-in-unroller

2005-08-13 Thread pinskia at gcc dot gnu dot org

--- Additional Comments From pinskia at gcc dot gnu dot org  2005-08-13 
18:04 ---
Reducing, this is not a regression as variable-expansion-in-unroller is new in 
4.0.0.  This is also a rtl 
issue and not a tree issue.

-- 
   What|Removed |Added

  Component|tree-optimization   |rtl-optimization
   Keywords||ice-on-valid-code
  Known to fail||4.0.0 4.1.0


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


[Bug pending/23378] New: code quality regression for complicated loop

2005-08-13 Thread martin at mpa-garching dot mpg dot de
A code quality regression was introduced into CVS between the timestamps
"-D 20050729 22:00:00 UT" and "-D 20050729 23:00:00 UT". It appears that
it iss caused by Jan Hubicka's patch from
http://gcc.gnu.org/ml/gcc-patches/2005-07/msg02021.html

If the attached testcase is compiled with the newer compiler, the runtime
of the generated executable is more than 50 per cent higher:

old compiler:

~/tmp/tmp2>g++ -O3 -march=pentium4 -mfpmath=sse testcase.cc
~/tmp/tmp2>time ./a.out
14.250u 0.020s 0:14.27 100.0%   0+0k 0+0io 205pf+0w


new compiler:

~/tmp/tmp2>g++ -O3 -march=pentium4 -mfpmath=sse testcase.cc
~/tmp/tmp2>time ./a.out
22.430u 0.030s 0:22.46 100.0%   0+0k 0+0io 205pf+0w


Both compilers have the same "g++ -v" output:

~/tmp/tmp2>g++ -v
Using built-in specs.
Target: i686-pc-linux-gnu
Configured with: /scratch/gcc/configure --quiet
--prefix=/afs/mpa/data/martin/ugcc --enable-languages=c++
--enable-mapped-location --disable-checking
Thread model: posix
gcc version 4.1.0 20050729 (experimental)


The hot spot of the code is the strange "loop" in lines 134-139
of alm_map_tools_orig.cc.

-- 
   Summary: code quality regression for complicated loop
   Product: gcc
   Version: 4.1.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P2
 Component: pending
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: martin at mpa-garching dot mpg dot de
CC: gcc-bugs at gcc dot gnu dot org,martin at mpa-garching
dot mpg dot de
 GCC build triplet: i686-pc-linux-gnu
  GCC host triplet: i686-pc-linux-gnu
GCC target triplet: i686-pc-linux-gnu


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


[Bug tree-optimization/23376] ICE on GCC 4.x with -O1 -funroll-loops -fvariable-expansion-in-unroller

2005-08-13 Thread pinskia at gcc dot gnu dot org


-- 
   What|Removed |Added

   GCC host triplet|i686-pc-linux-gnu   |
 GCC target triplet||i686-pc-linux-gnu


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


[Bug c++/23372] [4.0/4.1 Regression] Temporary aggregate copy not elided when passing parameters by value

2005-08-13 Thread giovannibajo at libero dot it

--- Additional Comments From giovannibajo at libero dot it  2005-08-13 
18:00 ---
Why doesn't this happen with the copy constructor, then? there we should be 
calling the copyctor with *a, which would have the same problem.

-- 


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


[Bug c++/23372] [4.0/4.1 Regression] Temporary aggregate copy not elided when passing parameters by value

2005-08-13 Thread pinskia at gcc dot gnu dot org

--- Additional Comments From pinskia at gcc dot gnu dot org  2005-08-13 
17:56 ---
Confirmed.

(In reply to comment #1)
> after the tree optimizers.  f (*a) would not be gimple, so we create
> the temporary in the first place.  TER does not remove this wart,
> neither does expand - so we start with two memcpys after RTL expansion.
TER only works on scalars so it cannot work.

-- 
   What|Removed |Added

 Status|UNCONFIRMED |NEW
 Ever Confirmed||1
   Keywords||missed-optimization
  Known to fail||4.0.0 4.1.0
  Known to work||3.4.0 3.3.3 3.2.3 3.0.4
   ||2.95.3
   Last reconfirmed|-00-00 00:00:00 |2005-08-13 17:56:39
   date||
Summary|Temporary aggregate copy not|[4.0/4.1 Regression]
   |elided when passing |Temporary aggregate copy not
   |parameters by value |elided when passing
   ||parameters by value
   Target Milestone|--- |4.0.2


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


[Bug fortran/23375] show location for runtime errors

2005-08-13 Thread pinskia at gcc dot gnu dot org

--- Additional Comments From pinskia at gcc dot gnu dot org  2005-08-13 
17:50 ---
Confirmed.  Though sometimes I wonder if this is an over use of printf style 
debugging.

-- 
   What|Removed |Added

 Status|UNCONFIRMED |NEW
 Ever Confirmed||1
   Last reconfirmed|-00-00 00:00:00 |2005-08-13 17:50:31
   date||


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


[Bug fortran/21253] Bounds Check

2005-08-13 Thread pinskia at gcc dot gnu dot org

--- Additional Comments From pinskia at gcc dot gnu dot org  2005-08-13 
17:49 ---
(In reply to comment #2)
> Subject: Re:  Bounds Check
> 
> Sorry, I do not have a simple test case, but might be able to construct 
> one if  part 1 is solved.

A debugger can help.  Anyways PR 23375 was filed for this.

-- 


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


[Bug tree-optimization/22236] [4.1 Regression] wrong code for casts and scev

2005-08-13 Thread cvs-commit at gcc dot gnu dot org

--- Additional Comments From cvs-commit at gcc dot gnu dot org  2005-08-13 
17:28 ---
Subject: Bug 22236

CVSROOT:/cvs/gcc
Module name:gcc
Changes by: [EMAIL PROTECTED]   2005-08-13 17:28:43

Modified files:
gcc: ChangeLog tree-cfg.c tree-chrec.c 
 tree-data-ref.c tree-data-ref.h 
 tree-flow-inline.h tree-flow.h 
 tree-scalar-evolution.c tree-ssa-loop-ivcanon.c 
 tree-ssa-loop-ivopts.c tree-ssa-loop-niter.c 
 tree-vect-analyze.c tree-vrp.c 
Added files:
gcc/testsuite/gcc.dg/tree-ssa: pr22236.c 

Log message:
PR tree-optimization/22236
* tree-cfg.c (print_pred_bbs, print_succ_bbs): Correctly print
successors and predecessors.
* tree-chrec.c (chrec_convert): Before converting, check that
sequences don't wrap.
* tree-data-ref.c (compute_estimated_nb_iterations): Moved ...
(analyze_array): Extern.
(find_data_references_in_loop): Remove call to
compute_estimated_nb_iterations.
* tree-data-ref.h (analyze_array): Declared.
* tree-flow-inline.h (single_ssa_tree_operand, single_ssa_use_operand,
single_ssa_def_operand, zero_ssa_operands): Fix documentation.
* tree-flow.h (scev_probably_wraps_p): Declare with an extra parameter.
* tree-scalar-evolution.c (instantiate_parameters_1): Factor entry
condition.
* tree-ssa-loop-ivcanon.c: Fix documentation.
* tree-ssa-loop-ivopts.c (idx_find_step): Add a fixme note.
* tree-ssa-loop-niter.c (compute_estimated_nb_iterations): ... here.
(infer_loop_bounds_from_undefined): New.
(estimate_numbers_of_iterations_loop): Use
infer_loop_bounds_from_undefined.
(used_in_pointer_arithmetic_p): New.
(scev_probably_wraps_p): Pass an extra parameter.  Call
used_in_pointer_arithmetic_p.  Check that AT_STMT is not null.
(convert_step): Fix documentation.
* tree-vrp.c (adjust_range_with_scev): Call instantiate_parameters.
Use initial_condition_in_loop_num and evolution_part_in_loop_num
instead of CHREC_LEFT and CHREC_RIGHT.  Adjust the call to
scev_probably_wraps_p.

Patches:
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/ChangeLog.diff?cvsroot=gcc&r1=2.9720&r2=2.9721
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree-cfg.c.diff?cvsroot=gcc&r1=2.215&r2=2.216
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree-chrec.c.diff?cvsroot=gcc&r1=2.22&r2=2.23
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree-data-ref.c.diff?cvsroot=gcc&r1=2.35&r2=2.36
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree-data-ref.h.diff?cvsroot=gcc&r1=2.10&r2=2.11
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree-flow-inline.h.diff?cvsroot=gcc&r1=2.55&r2=2.56
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree-flow.h.diff?cvsroot=gcc&r1=2.131&r2=2.132
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree-scalar-evolution.c.diff?cvsroot=gcc&r1=2.34&r2=2.35
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree-ssa-loop-ivcanon.c.diff?cvsroot=gcc&r1=2.19&r2=2.20
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree-ssa-loop-ivopts.c.diff?cvsroot=gcc&r1=2.86&r2=2.87
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree-ssa-loop-niter.c.diff?cvsroot=gcc&r1=2.35&r2=2.36
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree-vect-analyze.c.diff?cvsroot=gcc&r1=2.34&r2=2.35
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree-vrp.c.diff?cvsroot=gcc&r1=2.51&r2=2.52
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gcc.dg/tree-ssa/pr22236.c.diff?cvsroot=gcc&r1=NONE&r2=1.1



-- 


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


[Bug c++/23372] Temporary aggregate copy not elided when passing parameters by value

2005-08-13 Thread fang at csl dot cornell dot edu


-- 
   What|Removed |Added

 CC||fang at csl dot cornell dot
   ||edu


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


[Bug treelang/23072] multiple runs of treelang testsuite does not work...

2005-08-13 Thread phython at gcc dot gnu dot org

--- Additional Comments From phython at gcc dot gnu dot org  2005-08-13 
16:32 ---
 Don't bother with treelang on the 3.4 branch.

-- 


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


[Bug tree-optimization/23376] ICE on GCC 4.x with -O1 -funroll-loops -fvariable-expansion-in-unroller

2005-08-13 Thread drab at kepler dot fjfi dot cvut dot cz

--- Additional Comments From drab at kepler dot fjfi dot cvut dot cz  
2005-08-13 14:51 ---
Created an attachment (id=9492)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=9492&action=view)
Patch to the original example to compile (and also trigger the bug) for x86_64


-- 


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


[Bug tree-optimization/23376] ICE on GCC 4.x with -O1 -funroll-loops -fvariable-expansion-in-unroller

2005-08-13 Thread drab at kepler dot fjfi dot cvut dot cz

--- Additional Comments From drab at kepler dot fjfi dot cvut dot cz  
2005-08-13 14:49 ---
Created an attachment (id=9491)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=9491&action=view)
Triggers the bug


-- 


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


[Bug tree-optimization/23376] New: ICE on GCC 4.x with -O1 -funroll-loops -fvariable-expansion-in-unroller

2005-08-13 Thread drab at kepler dot fjfi dot cvut dot cz
The example (attached below), when compiled by following gcc

---
$ gcc -v
Using built-in specs.
Target: i686-pc-linux-gnu
Configured with: ../../../gcc-CVS-20050812/gcc-CVS-20050812/configure
--host=i686-pc-linux-gnu --prefix=/usr/local/opt/gcc-4.1
--exec-prefix=/usr/local/opt/gcc-4.1 --sysconfdir=/etc
--libdir=/usr/local/opt/gcc-4.1/lib --libexecdir=/usr/local/opt/gcc-4.1/libexec
--sharedstatedir=/var --localstatedir=/var --program-suffix=-4.1
--with-x-includes=/usr/X11R6/include --with-x-libraries=/usr/X11R6/lib
--enable-shared --enable-static --with-gnu-as --with-gnu-ld --with-stabs
--enable-threads=posix --enable-version-specific-runtime-libs --disable-coverage
--disable-libgcj --disable-checking --enable-multilib --with-x --enable-cmath
--enable-libstdcxx-debug --enable-fast-character --enable-hash-synchronization
--with-system-zlib --with-libbanshee --with-demangler-in-ld
--with-arch=athlon-xp --enable-libada --enable-languages=c,c++,f95,objc,ada
Thread model: posix
gcc version 4.1.0 20050812 (experimental)
-

with

-
g++ -O1 -funroll-loops -fvariable-expansion-in-unroller -c me_utils_mmx.cpp -o
me_utils_mmx.o
-

results in this:

-
me_utils_mmx.cpp: In function ‘dirac::CalcValueType
dirac::simple_block_diff_up_mmx_4(const dirac::PicArray&, const
dirac::PicArray&, const dirac::ImageCoords&, const dirac::ImageCoords&, const
dirac::ImageCoords&, const dirac::ValueType*)’:
me_utils_mmx.cpp:23841: internal compiler error: Segmentation fault
Please submit a full bug report,
with preprocessed source if appropriate.
See http://gcc.gnu.org/bugs.html> for instructions.
-

Tested on i686-pc-linux-gnu.

gcc version 4.0.2 20050804 (prerelease) fails the same way.
gcc version 3.4.3 (Mandrakelinux 10.2 3.4.3-7mdk) doesn't compile this at all
because of errors (should be because the included headers are from 4.1), perhaps
after reduction it might.

For x86_64 it fails as well, though it requires a patch (also attached) to
compile, again due to the includes from i686 GCC this time.

-- 
   Summary: ICE on GCC 4.x with -O1 -funroll-loops -fvariable-
expansion-in-unroller
   Product: gcc
   Version: 4.1.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P2
 Component: tree-optimization
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: drab at kepler dot fjfi dot cvut dot cz
CC: gcc-bugs at gcc dot gnu dot org
  GCC host triplet: i686-pc-linux-gnu


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


[Bug c++/23372] Temporary aggregate copy not elided when passing parameters by value

2005-08-13 Thread rguenth at tat dot physik dot uni-tuebingen dot de

--- Additional Comments From rguenth at tat dot physik dot uni-tuebingen 
dot de  2005-08-13 14:17 ---
The problem is, we end up with

void g(A*) (a)
{
  struct A D.1608;

:
  D.1608 = *a;
  f (D.1608) [tail call];
  return;

}

after the tree optimizers.  f (*a) would not be gimple, so we create
the temporary in the first place.  TER does not remove this wart,
neither does expand - so we start with two memcpys after RTL expansion.

This is definitively different from PR16405.

-- 
   What|Removed |Added

 CC||rguenth at gcc dot gnu dot
   ||org


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


[Bug fortran/23368] internal compiler error with NAG routines

2005-08-13 Thread haefele at mpi-magdeburg dot mpg dot de

--- Additional Comments From haefele at mpi-magdeburg dot mpg dot de  
2005-08-13 13:18 ---
(In reply to comment #4)
> How old is your version of gfortran?  I can compile your example with 

lion:[~]> gfortran --version
GNU Fortran 95 (GCC 4.0.1 (Debian 4.0.1-2))
Copyright (C) 2005 Free Software Foundation, Inc.

It's the version in Debian-Testing. So maybe upgrading helps, I'll try it.

> troutmask:sgk[220] gfc41 --version
> GNU Fortran 95 (GCC 4.1.0 20050811 (experimental))
> 
> troutmask:sgk[221] gfc --version
> GNU Fortran 95 (GCC 4.0.2 20050719 (prerelease))
> 
> But it fails with a segfault with
> 
> GNU Fortran 95 (GCC 4.0.1 20050527 (prerelease))
> Copyright (C) 2005 Free Software Foundation, Inc



-- 


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


[Bug fortran/23375] New: show location for runtime errors

2005-08-13 Thread tkoenig at gcc dot gnu dot org
For runtime errors like bounds checking violations, we display

Fortran runtime error: Array reference out of bounds

without an indication of where the error occurs. There is some
support in runtime/error.c (with the GFC_SHOW_LOCUS environment
variable), but it is unsupported by the front end at the moment.

-- 
   Summary: show location for runtime errors
   Product: gcc
   Version: 4.1.0
Status: UNCONFIRMED
  Severity: enhancement
  Priority: P2
 Component: fortran
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: tkoenig at gcc dot gnu dot org
CC: gcc-bugs at gcc dot gnu dot org


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


[Bug fortran/20663] Generic function is not resolved

2005-08-13 Thread tkoenig at gcc dot gnu dot org

--- Additional Comments From tkoenig at gcc dot gnu dot org  2005-08-13 
11:54 ---
This has been fixed with Paul T's patch for generic name resolution.


-- 
   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution||FIXED


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


[Bug fortran/23373] Functions returning pointers with pointer argument

2005-08-13 Thread tkoenig at gcc dot gnu dot org


-- 
   What|Removed |Added

 Status|UNCONFIRMED |NEW
 Ever Confirmed||1
   Last reconfirmed|-00-00 00:00:00 |2005-08-13 11:47:53
   date||


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


[Bug fortran/23373] Functions returning pointers with pointer argument

2005-08-13 Thread tkoenig at gcc dot gnu dot org

--- Additional Comments From tkoenig at gcc dot gnu dot org  2005-08-13 
11:47 ---
*** Bug 23374 has been marked as a duplicate of this bug. ***

-- 
   What|Removed |Added

 CC||edunlop at utvinternet dot
   ||ie


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


[Bug fortran/23374] Reallocate problem (Numerical Recipes fortran source)

2005-08-13 Thread tkoenig at gcc dot gnu dot org

--- Additional Comments From tkoenig at gcc dot gnu dot org  2005-08-13 
11:47 ---


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

-- 
   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||DUPLICATE


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


[Bug fortran/23374] New: Reallocate problem (Numerical Recipes fortran source)

2005-08-13 Thread edunlop at utvinternet dot ie
I have downloaded "Native Windows build: download the latest installer 
(2005-08-06)" from http://gcc.gnu.org/wiki/GFortranBinaries.

I have a problem with the attached code from Numerical Recipes; ifort 
(Intel) and LF95 Ver. 5.7 (Lahey) produce executables which work fine, but 
the gfortran compiled code fails at run time. I am using Windows XP 
professional.

My compile command is:

gfortran test_reallocate.f90 -O2 -malign-double -march=pentium3 -ffast-math -
funroll-loops -o test_reallocate.exe

Source code that demos the problem is as follows:-

! NRTYPE.F90
MODULE nrtype
INTEGER, PARAMETER :: I4B = SELECTED_INT_KIND(9)
INTEGER, PARAMETER :: I2B = SELECTED_INT_KIND(4)
INTEGER, PARAMETER :: I1B = SELECTED_INT_KIND(2)
INTEGER, PARAMETER :: SP = KIND(1.0)
INTEGER, PARAMETER :: DP = KIND(1.0D0)
INTEGER, PARAMETER :: SPC = KIND((1.0,1.0))
INTEGER, PARAMETER :: DPC = KIND((1.0D0,1.0D0))
INTEGER, PARAMETER :: LGT = KIND(.true.)
REAL(SP), PARAMETER :: PI=3.141592653589793238462643383279502884197_sp
REAL(SP), PARAMETER :: 
PIO2=1.57079632679489661923132169163975144209858_sp
REAL(SP), PARAMETER :: 
TWOPI=6.283185307179586476925286766559005768394_sp
REAL(SP), PARAMETER :: 
SQRT2=1.41421356237309504880168872420969807856967_sp
REAL(SP), PARAMETER :: 
EULER=0.5772156649015328606065120900824024310422_sp
REAL(DP), PARAMETER :: 
PI_D=3.141592653589793238462643383279502884197_dp
REAL(DP), PARAMETER :: 
PIO2_D=1.57079632679489661923132169163975144209858_dp
REAL(DP), PARAMETER :: 
TWOPI_D=6.283185307179586476925286766559005768394_dp
TYPE sprs2_sp
INTEGER(I4B) :: n,len
REAL(SP), DIMENSION(:), POINTER :: val
INTEGER(I4B), DIMENSION(:), POINTER :: irow
INTEGER(I4B), DIMENSION(:), POINTER :: jcol
END TYPE sprs2_sp

TYPE sprs2_dp
INTEGER(I4B) :: n,len
REAL(DP), DIMENSION(:), POINTER :: val
INTEGER(I4B), DIMENSION(:), POINTER :: irow
INTEGER(I4B), DIMENSION(:), POINTER :: jcol
END TYPE sprs2_dp
END MODULE nrtype
! NRUTIL.F90
MODULE nrutil
USE nrtype
IMPLICIT NONE
INTERFACE reallocate

MODULE PROCEDURE reallocate_rv,reallocate_rm,&
reallocate_iv,reallocate_im,reallocate_hv
END INTERFACE
CONTAINS
!BL
SUBROUTINE nrerror(string)

CHARACTER(LEN=*), INTENT(IN) :: string
write (*,*) 'nrerror: ',string
STOP 'program terminated by nrerror'
END SUBROUTINE nrerror
!BL
FUNCTION reallocate_rv(p,n)
REAL(SP), DIMENSION(:), POINTER :: p, reallocate_rv
INTEGER(I4B), INTENT(IN) :: n
INTEGER(I4B) :: nold,ierr
allocate(reallocate_rv(n),stat=ierr)
if (ierr /= 0) call &
nrerror('reallocate_rv: problem in attempt to allocate memory')
if (.not. associated(p)) RETURN
nold=size(p)
reallocate_rv(1:min(nold,n))=p(1:min(nold,n))
deallocate(p)
END FUNCTION reallocate_rv
!BL
FUNCTION reallocate_iv(p,n)
INTEGER(I4B), DIMENSION(:), POINTER :: p, reallocate_iv
INTEGER(I4B), INTENT(IN) :: n
INTEGER(I4B) :: nold,ierr
allocate(reallocate_iv(n),stat=ierr)
if (ierr /= 0) call &
nrerror('reallocate_iv: problem in attempt to allocate memory')

if (.not. associated(p)) RETURN
nold=size(p)
reallocate_iv(1:min(nold,n))=p(1:min(nold,n))
deallocate(p)
END FUNCTION reallocate_iv
!BL
FUNCTION reallocate_hv(p,n)
CHARACTER(1), DIMENSION(:), POINTER :: p, reallocate_hv
INTEGER(I4B), INTENT(IN) :: n
INTEGER(I4B) :: nold,ierr
allocate(reallocate_hv(n),stat=ierr)
if (ierr /= 0) call &
nrerror('reallocate_hv: problem in attempt to allocate memory')
if (.not. associated(p)) RETURN
nold=size(p)
reallocate_hv(1:min(nold,n))=p(1:min(nold,n))
deallocate(p)
END FUNCTION reallocate_hv
!BL
FUNCTION reallocate_rm(p,n,m)
REAL(SP), DIMENSION(:,:), POINTER :: p, reallocate_rm
INTEGER(I4B), INTENT(IN) :: n,m
INTEGER(I4B) :: nold,mold,ierr
allocate(reallocate_rm(n,m),stat=ierr)
if (ierr /= 0) call &
nrerror('reallocate_rm: problem in attempt to allocate memory')
if (.not. associated(p)) RETURN
nold=size(p,1)
mold=size(p,2)
reallocate_rm(1:min(nold,n),1:min(mold,m))=&
p(1:min(nold,n),1:min(mold,m))
deallocate(p)

END FUNCTION reallocate_rm
!BL
FUNCTION reallocate_im(p,n,m)
INTEGER(I4B), DIMENSION(:,:), POINTER :: p, reallocate_im
INTEGER(I4B), INTENT(IN) :: n,m
INTEGER(I4B) :: nold,mold,ierr
allocate(reallocate_im(n,m),stat=ierr)
  

[Bug tree-optimization/23094] store ccp misses an optimization

2005-08-13 Thread steven at gcc dot gnu dot org

--- Additional Comments From steven at gcc dot gnu dot org  2005-08-13 
10:30 ---
Hmm, can someone explain where in store_ccp we stuff constants 
into the mem_ref field of lattice values?  There are a few places 
where simple_cst_equal is used to compare a constant to mem_ref 
but AFAICT mem_ref is always the lhs of an expression?? 
 
 

-- 


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


[Bug tree-optimization/21574] store_ccp doesn't see through a store.

2005-08-13 Thread steven at gcc dot gnu dot org

--- Additional Comments From steven at gcc dot gnu dot org  2005-08-13 
10:12 ---
Whoops, didn't want to close it!!  Wanted to say that the patch 
from Bug 23094 fixes this for me. 

-- 
   What|Removed |Added

 Status|RESOLVED|REOPENED
 Resolution|FIXED   |


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


[Bug tree-optimization/21574] store_ccp doesn't see through a store.

2005-08-13 Thread steven at gcc dot gnu dot org

--- Additional Comments From steven at gcc dot gnu dot org  2005-08-13 
10:09 ---
My .vars dump: 
foo (p) 
{ 
: 
  *p = 0; 
  return 0; 
 
} 
 

-- 
   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution||FIXED


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


[Bug tree-optimization/23361] Can't eliminate empty loops with power of two step and variable bounds

2005-08-13 Thread giovannibajo at libero dot it

--- Additional Comments From giovannibajo at libero dot it  2005-08-13 
10:01 ---
One thing is that if 'a' and 'b' are originally pointers of the same type, it 
should be clear the the loop can be removed. When they are lowered to integers, 
instead, we lose the precious alignment information. Can't the empty loop be 
removed before the pointers are lowered?
Or am I missing something?

-- 


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


[Bug fortran/23373] Functions returning pointers with pointer argument

2005-08-13 Thread pault at gcc dot gnu dot org

--- Additional Comments From pault at gcc dot gnu dot org  2005-08-13 09:31 
---
(In reply to comment #0)
Edmund,

>
> professional. Is there a workaround or is this a bug which must be fixed?
>
>

Thomas beat you to it!

In the mean time, the following  works:

   program Realloc
   USE nrtype; USE nrutil
   IMPLICIT NONE
   REAL(SP), DIMENSION(:), POINTER :: x, y
   INTEGER(I4B) :: i
   allocate(x(10))
   forall(i=1:ubound(x,1)) x(i)=i
   write(*,"(10F6.2)") x
   y => reallocate(x,20) ! Use y...
   x => y! ...and then point x to y
   forall(i=1:ubound(x,1)) x(i)=2*i
   write(*,"(20F6.2)") x
   end program Realloc

For some reason, the compiler is not detecting the dependency and putting the
result of reallocate in a temporary.  What happens is that reallocate does all
the right things, up until the deallocate. which it does to the lhs, being
the same as the result, ie to x!  An alternative fix is to comment out the
deallocate.

I'll take a look see over the next few days.  It's a bit of code that I need to
revisit for another reason.

Best regards

Paul T

>   FUNCTION myallocate(p)
> REAL, DIMENSION(:), POINTER :: p, myallocate
> INTEGER :: nold,ierr
> if (associated(p)) then
>print *,"p is associated"
> else
>print *,"p is not associated"
> end if
> allocate(myallocate(20))
> if (associated(p)) then
>print *,"p is associated"
> else
>print *,"p is not associated"
> end if
>   END FUNCTION myallocate
> end program Realloc
> $ gfortran -fdump-tree-original pointer_function.f90
> $ ./a.out
>  p is not associated
>  p is associated
> $ tail -10 pointer_function.f90.t02.original
> {
>   struct array1_real4 x;
>   static void myallocate (struct array1_real4 &, struct array1_real4 &);
> 
>   x.data = 0B;
>   x.data = 0B;
>   myallocate (&x, &x);
> }
> 
> The two arguments to myallocate are bogus - they alias each other,
> and they shouldn't.  A tempoaray array descriptor is needed here.

-- 


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


[Bug fortran/23373] New: Functions returning pointers with pointer argument

2005-08-13 Thread tkoenig at gcc dot gnu dot org
There is a bad case of aliasing here:

$ cat pointer_function.f90
program Realloc
  IMPLICIT NONE
  REAL, DIMENSION(:), POINTER :: x
  INTEGER :: i
  x => NULL()
  x => myallocate(x)
contains
  FUNCTION myallocate(p)
REAL, DIMENSION(:), POINTER :: p, myallocate
INTEGER :: nold,ierr
if (associated(p)) then
   print *,"p is associated"
else
   print *,"p is not associated"
end if
allocate(myallocate(20))
if (associated(p)) then
   print *,"p is associated"
else
   print *,"p is not associated"
end if
  END FUNCTION myallocate
end program Realloc
$ gfortran -fdump-tree-original pointer_function.f90
$ ./a.out
 p is not associated
 p is associated
$ tail -10 pointer_function.f90.t02.original
{
  struct array1_real4 x;
  static void myallocate (struct array1_real4 &, struct array1_real4 &);

  x.data = 0B;
  x.data = 0B;
  myallocate (&x, &x);
}

The two arguments to myallocate are bogus - they alias each other,
and they shouldn't.  A tempoaray array descriptor is needed here.

-- 
   Summary: Functions returning pointers with pointer argument
   Product: gcc
   Version: 4.1.0
Status: UNCONFIRMED
  Keywords: wrong-code
  Severity: normal
  Priority: P2
 Component: fortran
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: tkoenig at gcc dot gnu dot org
CC: gcc-bugs at gcc dot gnu dot org


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


[Bug tree-optimization/23048] [4.1 Regression] ICE in get_loop_body with -O1 -ftree-vectorize on 4.1.x

2005-08-13 Thread drab at kepler dot fjfi dot cvut dot cz

--- Additional Comments From drab at kepler dot fjfi dot cvut dot cz  
2005-08-13 08:09 ---
(In reply to comment #12)
> Patch:
> http://gcc.gnu.org/ml/gcc-patches/2005-08/msg00612.html

Works for me. Tested on both i686-pc-linux-gnu and x86_64-pc-linux-gnu.

-- 


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


[Bug c++/23372] New: Temporary aggregate copy not elided when passing parameters by value

2005-08-13 Thread guillaume dot melquiond at ens-lyon dot fr
This bug is similar to bug 16405, but although 16405 was fixed in 4.0, this one
is still present and is a regression from GCC 3.4 (not from 3.3 as was the
previous one). So I prefer opening a new bug-report.

The testcase simply calls a function f by passing the parameter by value:

struct A {
  int a[1000];
  //A(A const &);
};
void f(A);
void g(A *a) { f(*a); }

When compiled with gcc 3.3 and 3.4, the generated code for g is optimal: the
value *a is directly copied in the stack frame that will be used by f. With gcc
4.0, there is first a temporary copy in the stack frame of g, before copying the
value in the stack frame of f (two memcpys instead of one).

When putting a dummy copy constructor, both memcpys disappear: the code is
optimal. So the problem seems to be with the default trivial copy constructor.

The testcase is compiled with "g++-4.0 -O3", Debian package:

Using built-in specs.
Target: i486-linux-gnu
Configured with: ../src/configure -v
--enable-languages=c,c++,java,f95,objc,ada,treelang --prefix=/usr
--enable-shared --with-system-zlib --libexecdir=/usr/lib --enable-nls
--without-included-gettext --enable-threads=posix --program-suffix=-4.0
--enable-__cxa_atexit --enable-libstdcxx-allocator=mt --enable-clocale=gnu
--enable-libstdcxx-debug --enable-java-gc=boehm --enable-java-awt=gtk
--enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.4.2-gcj-4.0-1.4.2.0/jre
--enable-mpfr --disable-werror --enable-checking=release i486-linux-gnu
Thread model: posix
gcc version 4.0.2 20050806 (prerelease) (Debian 4.0.1-4)

-- 
   Summary: Temporary aggregate copy not elided when passing
parameters by value
   Product: gcc
   Version: 4.0.2
Status: UNCONFIRMED
  Severity: normal
  Priority: P2
 Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: guillaume dot melquiond at ens-lyon dot fr
CC: gcc-bugs at gcc dot gnu dot org
  GCC host triplet: i486-linux-gnu


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


[Bug treelang/23072] multiple runs of treelang testsuite does not work...

2005-08-13 Thread christian dot joensson at gmail dot com

--- Additional Comments From christian dot joensson at gmail dot com  
2005-08-13 07:41 ---
So, this is what it looks like now:

Test Run By chj on Sat Aug 13 09:36:47 2005
Native configuration is sparc64-unknown-linux-gnu

=== treelang tests ===

Schedule of variations:
unix/-m64
unix

Running target unix/-m64
Using /usr/share/dejagnu/baseboards/unix.exp as board description file for 
target.
Using /usr/share/dejagnu/config/unix.exp as generic interface file for target.
Using /usr/local/src/branch/gcc/gcc/testsuite/config/default.exp as
tool-and-target-specific interface file.
Running /usr/local/src/branch/gcc/gcc/testsuite/treelang/compile/compile.exp ...
Running /usr/local/src/branch/gcc/gcc/testsuite/treelang/execute/execute.exp ...
Running /usr/local/src/branch/gcc/gcc/testsuite/treelang/output/output.exp ...

=== treelang Summary for unix/-m64 ===

# of expected passes48
Running target unix
Using /usr/share/dejagnu/baseboards/unix.exp as board description file for 
target.
Using /usr/share/dejagnu/config/unix.exp as generic interface file for target.
Using /usr/local/src/branch/gcc/gcc/testsuite/config/default.exp as
tool-and-target-specific interface file.
Running /usr/local/src/branch/gcc/gcc/testsuite/treelang/compile/compile.exp ...
Running /usr/local/src/branch/gcc/gcc/testsuite/treelang/execute/execute.exp ...
Running /usr/local/src/branch/gcc/gcc/testsuite/treelang/output/output.exp ...

=== treelang Summary for unix ===

# of expected passes48

=== treelang Summary ===

# of expected passes96

This is with http://gcc.gnu.org/ml/gcc-patches/2005-08/msg00661.html (and the
rest of removal and addition of files from your mainline patch here:
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23072#c7)

-- 


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