--- Comment #7 from 3dw4rd at verizon dot net 2010-01-02 20:38 ---
Created an attachment (id=19450)
--> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=19450&action=view)
Grep for '^CXX' in the libstdc++ testsuite directory.
Multiple attachments would be nice.
--
http://gcc.gnu.org
--- Comment #8 from fxcoudert at gcc dot gnu dot org 2010-01-02 20:48
---
And the command-line in config.log?
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42566
--- Comment #2 from fxcoudert at gcc dot gnu dot org 2010-01-02 20:52
---
Still present as of rev. 155544.
--
fxcoudert at gcc dot gnu dot org changed:
What|Removed |Added
---
--
fxcoudert at gcc dot gnu dot org changed:
What|Removed |Added
GCC build triplet|*-apple-darwin9 |
GCC host triplet|*-apple-darwin9 |
GCC target tripl
--
pinskia at gcc dot gnu dot org changed:
What|Removed |Added
Status|UNCONFIRMED |WAITING
Component|c |middle-end
--- Comment #9 from 3dw4rd at verizon dot net 2010-01-02 21:10 ---
Command line from config.log:
It was created by package-unused configure version-unused, which was
generated by GNU Autoconf 2.64. Invocation command line was
$ /Users/ed/gcc/libstdc++-v3/configure --cache-file=./con
--- Comment #7 from jb at gcc dot gnu dot org 2010-01-02 21:39 ---
Patch: http://gcc.gnu.org/ml/gcc-patches/2010-01/msg00083.html
--
jb at gcc dot gnu dot org changed:
What|Removed |Added
--- Comment #3 from rguenth at gcc dot gnu dot org 2010-01-02 21:54 ---
int foo (int i, int j, int b)
{
int res = 0;
if (b)
res = i/j;
res += i/j;
return res;
}
is a testcase that regressed. I am testing a patch.
--
rguenth at gcc dot gnu dot org changed:
Wh
--- Comment #4 from rguenth at gcc dot gnu dot org 2010-01-02 22:08 ---
With the patch we'll still not optimize
extern void bar (void);
int foo (int i, int j, int b)
{
int res = 0;
if (b)
res = i/j;
res += i/j;
bar ();
return res;
}
That's not so easy to avoid. We'd ne
Executing on host: /test/gnu/gcc/objdir/gcc/testsuite/gfortran/../../gfortran
-B
/test/gnu/gcc/objdir/gcc/testsuite/gfortran/../../
/test/gnu/gcc/gcc/gcc/testsui
te/gfortran.dg/gomp/recursion1.f90 -O0 -fopenmp -fcheck=recursion
-B/test/gn
u/gcc/objdir/hppa64-hp-hpux11.11/./libgfortran/.libs
-L/
--- Comment #7 from ebotcazou at gcc dot gnu dot org 2010-01-02 22:26
---
Created an attachment (id=19451)
--> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=19451&action=view)
Reduced testcase.
Requires TLS support.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42564
--- Comment #5 from rguenth at gcc dot gnu dot org 2010-01-02 22:44 ---
Fixed.
--
rguenth at gcc dot gnu dot org changed:
What|Removed |Added
Status|ASSIGNED
--- Comment #12 from kargl at gcc dot gnu dot org 2010-01-02 22:51 ---
*** Bug 42583 has been marked as a duplicate of this bug. ***
--
kargl at gcc dot gnu dot org changed:
What|Removed |Added
--
--- Comment #1 from kargl at gcc dot gnu dot org 2010-01-02 22:51 ---
*** This bug has been marked as a duplicate of 41605 ***
--
kargl at gcc dot gnu dot org changed:
What|Removed |Added
--
--- Comment #8 from ebotcazou at gcc dot gnu dot org 2010-01-02 23:00
---
The root of the problem is plus_constant wrapping up a TLS symbol in a CONST:
(const:DI (plus:DI (symbol_ref:DI ("m") [flags 0x1a] )
(const_int 4 [0x4])))
what the SPARC back-end doesn't like. So someth
--- Comment #2 from rguenth at gcc dot gnu dot org 2010-01-02 23:10 ---
Huh?
The testcase is in the wrong directory, runtime tests have to be in the
libgomp testsuite.
--
rguenth at gcc dot gnu dot org changed:
What|Removed |Added
--- Comment #3 from rguenth at gcc dot gnu dot org 2010-01-02 23:14 ---
Is broken everywhere.
--
rguenth at gcc dot gnu dot org changed:
What|Removed |Added
--- Comment #4 from jason at gcc dot gnu dot org 2010-01-02 23:23 ---
I can't reproduce this with the current 4.5 sources.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42555
--- Comment #4 from kargl at gcc dot gnu dot org 2010-01-02 23:23 ---
(In reply to comment #2)
> Huh?
>
> The testcase is in the wrong directory, runtime tests have to be in the
> libgomp testsuite.
>
See the last comment in the PR that I listed as a duplicate.
--
http://gcc.gnu.
--- Comment #5 from rguenth at gcc dot gnu dot org 2010-01-02 23:45 ---
Your duplicate bug is about sth completely different (even if later comments
talk about an unrelated thing to that bug).
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42583
--- Comment #5 from hjl dot tools at gmail dot com 2010-01-02 23:48 ---
(In reply to comment #4)
> I can't reproduce this with the current 4.5 sources.
>
I still saw it with today's gcc 4.5. You need -O3 -msse2 on
Linux/x86 to see it.
--
hjl dot tools at gmail dot com changed:
According to the GCC 4.5 Release Criteria at
http://gcc.gnu.org/gcc-4.5/criteria.html , MinGW is a secondary platform and
should be able to bootstrap successfully. Currently, GCC 4.5 does not even
build on MinGW/MSYS with --disable-bootstrap , which worked for me with 4.3.x.
(The full bootstrap has
>From one of the examples from
http://embed.cs.utah.edu/embarrassing/dec_09/harvest/gcc-head_llvm-gcc-head/
struct _fat_ptr
{
unsigned char *curr;
unsigned char *base;
unsigned char *last_plus_one;
};
int Cyc_string_ungetc (int ignore, struct _fat_ptr *sptr);
int
Cyc_string_ungetc (int ignor
Continuation from 42585
>From one of the examples of
http://embed.cs.utah.edu/embarrassing/dec_09/harvest/gcc-head_llvm-gcc-head/
struct _fat_ptr
{
unsigned char *curr;
unsigned char *base;
unsigned char *last_plus_one;
};
int Cyc_string_ungetc (int ignore, struct _fat_ptr *sptr);
int
Cyc_s
From
http://embed.cs.utah.edu/embarrassing/dec_09/harvest/gcc-head_llvm-gcc-head/
typedef unsigned char u8;
typedef unsigned int u32;
#pragma pack(1)
#pragma pack()
#pragma pack(1)
#pragma pack()
#pragma pack(1)
#pragma pack()
#pragma pack(4)
#pragma pack()
union __anonunion_out_195
{
u32 value;
from
http://embed.cs.utah.edu/embarrassing/dec_09/harvest/gcc-head_llvm-gcc-head/
union __anonunion___u_19
{
double __d;
int __i[2];
};
extern __attribute__ ((__nothrow__))
int __signbit (double __x) __attribute__ ((__const__));
extern __attribute__ ((__nothrow__))
int __signbit
--- Comment #1 from pinskia at gcc dot gnu dot org 2010-01-03 06:27 ---
Well one thing is SRA does not do its job which is why there is useless stack
frame changes.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42586
--- Comment #2 from pinskia at gcc dot gnu dot org 2010-01-03 06:27 ---
Oh and -Os is very bad looking :).
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42586
--- Comment #3 from pinskia at gcc dot gnu dot org 2010-01-03 06:30 ---
Oh in fact I think the reason is the SRA issue. In that:
int
Cyc_string_ungetc (int ignore, struct _fat_ptr *sptr)
{
sptr->curr += 4294967295U;
}
Works.
--
pinskia at gcc dot gnu dot org changed:
W
--- Comment #4 from pinskia at gcc dot gnu dot org 2010-01-03 06:33 ---
Hmm, 4.5 is worse off than 4.4 with respect of the stack space usage.
--
pinskia at gcc dot gnu dot org changed:
What|Removed |Added
---
--- Comment #5 from pinskia at gcc dot gnu dot org 2010-01-03 06:35 ---
4.5 has:
_T2 = *sptr_1(D);
_T2$curr_14 = sptr_1(D)->curr;
_ans = _T2;
D.2697_7 = _T2$curr_14 + -1;
*sptr_1(D) = _ans;
sptr_1(D)->curr = D.2697_7;
While 4.4 does:
_T2$base = sptr->base;
D.1587 = sptr-
--- Comment #6 from pinskia at gcc dot gnu dot org 2010-01-03 06:38 ---
I think if we get the old SRA behavior back for this code, we will get this
optimization in 4.5 since we remove the sptr->base and the other unnecessary
store during PRE.
--
http://gcc.gnu.org/bugzilla/show_bug.
--- Comment #1 from pinskia at gcc dot gnu dot org 2010-01-03 06:41 ---
I think fixing this will also fix the PR 42586 on the trunk.
Confirmed, a regression from 4.4. SRA is worse off on the trunk for this case
than with 4.4.
--
pinskia at gcc dot gnu dot org changed:
W
--- Comment #1 from pinskia at gcc dot gnu dot org 2010-01-03 06:46 ---
;; __u.__d = __x_1(D);
(insn 6 5 0 t.c:15 (set (subreg:DF (reg/v:DI 60 [ __u ]) 0)
(reg/v:DF 62 [ __x ])) -1 (nil))
That causes a reload to happen:
Reload 0: reload_out (DF) = (subreg:DF (reg/v:DI 60 [ __u
>From one of the test cases from
http://embed.cs.utah.edu/embarrassing/dec_09/harvest/gcc-head_llvm-gcc-head/
typedef unsigned int size_t;
typedef unsigned char apr_byte_t;
typedef unsigned long long apr_uint64_t;
struct _SHA512_CTX
{
apr_uint64_t state[8];
apr_uint64_t bitcount[2];
apr_byt
--- Comment #2 from pinskia at gcc dot gnu dot org 2010-01-03 06:49 ---
Here is an example which shows the issue on PPC also:
union __anonunion___u_19
{
double __d;
int __i[2];
};
extern int __signbit (double *__x)
{
union __anonunion___u_19 __u;
{
__u.__d = *__x;
re
--- Comment #3 from pinskia at gcc dot gnu dot org 2010-01-03 06:51 ---
This is related to PR 33989.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42588
--- Comment #7 from andi-gcc at firstfloor dot org 2010-01-03 06:55 ---
This bug was not about the unnecessary stack frame, but about unnecessary
read-modify-write
(it seems you didn't read my description completely)
For stack frame probably another bug should be opened. I can do that.
--- Comment #8 from pinskia at gcc dot gnu dot org 2010-01-03 06:57 ---
(In reply to comment #7)
> I reverted the summary to the original one.
Well it is all interrelated :). Which is what my point was about that. Did
you notice comment #3 which shows that load-modify-store actually d
Continuation from 42586 and 42585 who handle other missed optimizations
for this test case.
>From one of the examples of
http://embed.cs.utah.edu/embarrassing/dec_09/harvest/gcc-head_llvm-gcc-head/
struct _fat_ptr
{
unsigned char *curr;
unsigned char *base;
unsigned char *last_plus_one;
};
--- Comment #9 from andi-gcc at firstfloor dot org 2010-01-03 07:00 ---
SRA issue handled in #42590
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42586
--- Comment #10 from pinskia at gcc dot gnu dot org 2010-01-03 07:02
---
(In reply to comment #9)
> SRA issue handled in #42590
And that is the same as the -Os issue really ...
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42586
--- Comment #11 from andi-gcc at firstfloor dot org 2010-01-03 07:03
---
My naive assumption was that the read-modify-write pattern is handled late by
the RTL backend when generating instructions while SRA is somewhere early in
the tree oriented middle end.
--
http://gcc.gnu.org/bu
--- Comment #12 from pinskia at gcc dot gnu dot org 2010-01-03 07:07
---
(In reply to comment #11)
> My naive assumption was that the read-modify-write pattern is handled late by
> the RTL backend when generating instructions while SRA is somewhere early in
> the tree oriented middle en
--- Comment #13 from pinskia at gcc dot gnu dot org 2010-01-03 07:09
---
(In reply to comment #12)
> Well the other issue is that only post-reload-cse deletes the load/stores
> without SRA doing what needs to be done.
This was PR 38513 which we still should be done at the RTL level b
--- Comment #14 from pinskia at gcc dot gnu dot org 2010-01-03 07:10
---
If we manually do the SRA like SRA would do it in 4.4:
unsigned char *a, *b, *c;
a = sptr->curr;
b = sptr->base;
c = sptr->last_plus_one;
a +=4294967295U;
sptr->curr = a;
sptr->base = b;
sptr->last_
typedef unsigned long long u64;
union ktime
{
s64 tv64;
};
typedef union ktime ktime_t;
ktime_t ns_to_ktime (u64 ns);
union ktime const ktime_zero = { 0LL };
ktime_t
ns_to_ktime (u64 ns)
{
ktime_t __constr_expr_0;
{
__constr_expr_0.tv64 = (s64) ((u64) ktime_zero.tv64 + ns);
return (
--- Comment #1 from pinskia at gcc dot gnu dot org 2010-01-03 07:22 ---
fold_const_aggregate_ref should handle it but maybe the CONSTRUCTOR does not
the field set.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42591
--- Comment #15 from andi-gcc at firstfloor dot org 2010-01-03 07:47
---
As an addendum the unnecessary stack frame seems to be a very common problem,
it's in a lot of the examples near the end of
http://embed.cs.utah.edu/embarrassing/dec_09/harvest/gcc-head_suncc-5.10/
typically combi
--- Comment #16 from pinskia at gcc dot gnu dot org 2010-01-03 07:49
---
(In reply to comment #15)
> As an addendum the unnecessary stack frame seems to be a very common problem,
> it's in a lot of the examples near the end of
> http://embed.cs.utah.edu/embarrassing/dec_09/harvest/gcc-
101 - 150 of 150 matches
Mail list logo