Re: [rfc] mainline slush

2005-05-21 Thread Eric Botcazou
> On Sat, May 21, 2005 at 12:16:27AM +0200, Eric Botcazou wrote:
> > http://gcc.gnu.org/ml/gcc-testresults/2005-05/msg01339.html
>
> The vectorization failures still need to be fixed.

Are these specific to SPARC?  If so, I don't think development should be held 
off for them at this point.  If not, platforms with real SIMD units are 
probably better testbeds.

The struct-layout-1 failures in 64-bit mode are IMHO more annoying, but these 
tests are easy to break so I'm not really worried either.

-- 
Eric Botcazou


A constant pool and addressing mode question

2005-05-21 Thread Ling-hua Tseng

I'm porting GCC 4.0.1 to a new architecture.
Its load/store instructions are similar to ARM's.

The RTL is always generating a symbol_ref RTX to access a global variable,
and the symbol_ref is an immediate which will be determined at the 
assembling/linking time.
The addressing modes of my architecture didn't support the "direct addressing 
mode",
that is, the syntax "load, " isn't allowed.
I can only use the the two forms:
   "load, [#]" and
   "load, []".

I cannot generate the following instructions if I have limited length of 
immediate field:
   mov, 
   load, [#0]

I noticed that the ARM's porting used the hook "TARGET_MACHINE_DEPENDENT_REORG" 
to solve it.
It generated a "mini constant pool" in the proper location by computing the 
insn length attributes,
and replaced the "ldr, " to "ldr, ".
The mini constant pool looks like:
.L3:
   .word
.L4:
   .word
...

And I has found the comment which is just before the implementation of the hook 
for a long time:
/* Gcc puts the pool in the wrong place for ARM, since we can only
  load addresses a limited distance around the pc.  We do some 
  special munging to move the constant pool values to the correct

  point in the code.  */

In my porting, I have no idea to let GCC to generate the constant pool with 
symbol names if I don't use
the TARGET_MACHINE_DEPENDENT_REORG hook.
(Currently, there are only string literal constant pools appeared in my 
porting.)
So I cannot understand what the comment "Gcc puts the pool in the wrong place for 
ARM" means.

I have three questions:
   1. Could GCC generate the kind of constant pools which are contained symbol 
names by setting some
   target machine macros? (even if it was broken)
   2. Are there any general soultions by telling GCC how far the load/store 
instruction could access?
   3. In order to reduce the memory accessing operations, I want to use some 
special assmebly code syntax:
   movimr1, /highpart@ move MSB 16-bit of 
the symbol address to r1 [31..16]
   movil  r1, /lowpart @ move LSB 16-bit 
of the symbol address to r1 [15..0]
   instead of the ARM's solution:
   ldr  r1,  .L3
   ...
   .L3:
   .word 
   Of course it should to modify the assembler/linker and loader.
   Is it a good idea?

Thanks a lot.


Re: [rfc] mainline slush

2005-05-21 Thread Richard Henderson
On Sat, May 21, 2005 at 09:08:45AM +0200, Eric Botcazou wrote:
> Are these specific to SPARC?

No.


r~


Re: [rfc] mainline slush

2005-05-21 Thread Andreas Jaeger
Eric Botcazou <[EMAIL PROTECTED]> writes:

>> On Sat, May 21, 2005 at 12:16:27AM +0200, Eric Botcazou wrote:
>> > http://gcc.gnu.org/ml/gcc-testresults/2005-05/msg01339.html
>>
>> The vectorization failures still need to be fixed.
>
> Are these specific to SPARC?  If so, I don't think development should be held 
> off for them at this point.  If not, platforms with real SIMD units are 
> probably better testbeds.

Happen also on x86_64-linux-gnu, e.g.:

http://gcc.gnu.org/ml/gcc-testresults/2005-05/msg01336.html

=== gcc tests ===


Running target unix
FAIL: gcc.c-torture/execute/simd-1.c compilation,  -O1 
UNRESOLVED: gcc.c-torture/execute/simd-1.c execution,  -O1 
XPASS: gcc.dg/cpp/cmdlne-dI-M.c scan-file 
(^|n)cmdlne-dI-M.*:[^n]*cmdlne-dI-M.c
XPASS: gcc.dg/cpp/cmdlne-dM-M.c scan-file 
(^|n)cmdlne-dM-M[^n]*:[^n]*cmdlne-dM-M.c
XPASS: gcc.dg/uninit-9.c uninitialized variable warning (test for bogus 
messages, line 26)
FAIL: gcc.dg/tree-ssa/gen-vect-11.c (test for excess errors)
WARNING: gcc.dg/tree-ssa/gen-vect-11.c compilation failed to produce executable
FAIL: gcc.dg/tree-ssa/gen-vect-11b.c (test for excess errors)
WARNING: gcc.dg/tree-ssa/gen-vect-11b.c compilation failed to produce executable
FAIL: gcc.dg/tree-ssa/gen-vect-11b.c scan-tree-dump-times vectorized 0 loops 1
FAIL: gcc.dg/tree-ssa/gen-vect-11c.c scan-tree-dump-times vectorized 0 loops 1
FAIL: gcc.dg/vect/pr18400.c (test for excess errors)
WARNING: gcc.dg/vect/pr18400.c compilation failed to produce executable
FAIL: gcc.dg/vect/vect-11a.c (test for excess errors)
WARNING: gcc.dg/vect/vect-11a.c compilation failed to produce executable
FAIL: gcc.dg/vect/vect-11a.c scan-tree-dump-times vectorized 1 loops 2
FAIL: gcc.dg/vect/vect-2.c (test for excess errors)
WARNING: gcc.dg/vect/vect-2.c compilation failed to produce executable
XPASS: gcc.dg/vect/vect-22.c scan-tree-dump-times vectorized 3 loops 1
FAIL: gcc.dg/vect/vect-34.c (test for excess errors)
WARNING: gcc.dg/vect/vect-34.c compilation failed to produce executable
FAIL: gcc.dg/vect/vect-66.c (test for excess errors)
WARNING: gcc.dg/vect/vect-66.c compilation failed to produce executable
XPASS: gcc.dg/vect/vect-67.c scan-tree-dump-times vectorized 1 loops 1
FAIL: gcc.dg/vect/vect-93.c (test for excess errors)
WARNING: gcc.dg/vect/vect-93.c compilation failed to produce executable
FAIL: gcc.dg/vect/vect-all.c (test for excess errors)
WARNING: gcc.dg/vect/vect-all.c compilation failed to produce executable
FAIL: gcc.dg/vect/vect-none.c scan-tree-dump-times vectorized 1 loops 1

And also powerpc64-linux-gnu
http://gcc.gnu.org/ml/gcc-testresults/2005-05/msg01352.html:

Running target unix/-m32
XPASS: gcc.c-torture/execute/20020720-1.c compilation,  -O1 
UNRESOLVED: gcc.c-torture/execute/20020720-1.c execution,  -O2 
UNRESOLVED: gcc.c-torture/execute/20020720-1.c execution,  -O3 
-fomit-frame-pointer 
UNRESOLVED: gcc.c-torture/execute/20020720-1.c execution,  -O3 -g 
UNRESOLVED: gcc.c-torture/execute/20020720-1.c execution,  -Os 
FAIL: gcc.dg/altivec-types-1.c  (test for errors, line 87)
FAIL: gcc.dg/altivec-types-1.c (test for excess errors)
FAIL: gcc.dg/ppc-vec-merge.c (test for excess errors)
WARNING: gcc.dg/ppc-vec-merge.c compilation failed to produce executable
XPASS: gcc.dg/uninit-9.c uninitialized variable warning (test for bogus 
messages, line 26)
FAIL: gcc.dg/pch/inline-4.c -O0 -g (test for excess errors)
FAIL: gcc.dg/pch/inline-4.c  -O0  (test for excess errors)
FAIL: gcc.dg/vect/pr18400.c (test for excess errors)
FAIL: gcc.dg/vect/vect-11a.c (test for excess errors)
FAIL: gcc.dg/vect/vect-11a.c scan-tree-dump-times vectorized 1 loops 2
FAIL: gcc.dg/vect/vect-2.c (test for excess errors)
FAIL: gcc.dg/vect/vect-34.c (test for excess errors)
FAIL: gcc.dg/vect/vect-66.c (test for excess errors)
XPASS: gcc.dg/vect/vect-67.c scan-tree-dump-times vectorized 1 loops 1
FAIL: gcc.dg/vect/vect-93.c (test for excess errors)
FAIL: gcc.dg/vect/vect-all.c (test for excess errors)
FAIL: gcc.dg/vect/vect-shift-1.c (test for excess errors)


The errors I'm seeing are:
FAIL: gcc.dg/vect/pr18400.c (test for excess errors)
Excess errors:
/cvs/gcc/gcc/testsuite/gcc.dg/vect/pr18400.c:9: internal compiler error: tree ch
eck: expected ssa_name, have var_decl in verify_ssa, at tree-ssa.c:750

WARNING: gcc.dg/vect/pr18400.c compilation failed to produce executable

Andreas
-- 
 Andreas Jaeger, [EMAIL PROTECTED], http://www.suse.de/~aj
  SUSE Linux Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
   GPG fingerprint = 93A3 365E CE47 B889 DF7F  FED1 389A 563C C272 A126


pgpWXxcCHl39R.pgp
Description: PGP signature


Re: [rfc] mainline slush

2005-05-21 Thread Eric Botcazou
> The struct-layout-1 failures in 64-bit mode are IMHO more annoying, but
> these tests are easy to break so I'm not really worried either.

Huh, I was wrong, they are quite problematic.  Testcase attached.

We have as initial RTL:

(insn 35 34 36 1 (set (mem/i:TF (plus:DI (reg/f:DI 103 virtual-stack-vars)
(const_int -5120 [0xec00])) [0 S16 A128])
(reg:TF 110 [ D.1221 ])) -1 (nil)
(nil))

and instantiate_virtual_regs_in_insn invokes extract_insn on it.  Previously 
the instantiate_virtual_regs machinery (instantiate_virtual_regs_1) would 
have detected that the insn is not valid.

-- 
Eric Botcazou
struct S1132 {
  struct{
unsigned long int b;
struct{void * d[7];}c[30];
  }a[3];
  char e:8) - 1) & 7) + 1);
  struct{}f;
};

extern int fails;

void check1132va (int z, ...)
{
  struct S1132 arg;
  long double ld;
   __builtin_va_list ap;

  __builtin_va_start (ap, z);
  if (__builtin_va_arg (ap, long double) != 2.0L)
++fails;
  __builtin_va_end (ap);
}


Re: [rfc] mainline slush

2005-05-21 Thread Jan Hubicka
> On Sat, May 21, 2005 at 09:08:45AM +0200, Eric Botcazou wrote:
> > Are these specific to SPARC?
> 
> No.

I believe Andrew mentioned that there is a patch for this?  (it is lack
of sync in between operands and stmt itself)

Honza
> 
> 
> r~


[PR21029] [4.1 Regression] vrp miscompiles Ada front-end, ping...

2005-05-21 Thread Christian Joensson
Is there any progress in http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21029 ?

-- 
Cheers,

/ChJ


RE: libgcc_s.so.1 exception handling behaviour depending on glibc version

2005-05-21 Thread Mike Hearn
On Fri, 20 May 2005 19:24:07 +0100, Dave Korn wrote:
> Absolutely so, no problem

Absolutely not, there will be lots of problems. This whole thread is about
how you *can't* just do that. Your app still won't run on older systems
(reliably) even if you target old APIs and use dlopen for the rest. That's
the bit which is unintuitive, unexpected and should be (IMHO) fixed :)

thanks -mike



RE: C99 implies -Wimplicit-function-declaration?

2005-05-21 Thread Joseph S. Myers
On Fri, 20 May 2005, Gary Funck wrote:

> OK, thanks. I (now) understand that the reference to a warning about a 
> missing protoype
> does not apply.  However, I don't see anything in section 6.5.2.2
> (rev. 1999-12-01) that says that a function declaration or prototype
> declaration must (or should) precede a call to the function. And GCC isn't 
> treating it

That's because it's 6.5.1 paragraph 2: only declared identifiers are valid 
in expressions.

> as an error, but rather is enabling the warning by default.

Because C90 permitted this, we guess what you meant.  However, by choosing 
C99 mode you're giving a strong indication that you should not be using 
any feature removed in C99, so we warn, or give an error with 
-pedantic-errors.

-- 
Joseph S. Myers   http://www.srcf.ucam.org/~jsm28/gcc/
[EMAIL PROTECTED] (personal mail)
[EMAIL PROTECTED] (CodeSourcery mail)
[EMAIL PROTECTED] (Bugzilla assignments and CCs)


Re: GCC 4.1: Buildable on GHz machines only?

2005-05-21 Thread Kai Henningsen
[EMAIL PROTECTED] (Peter Barada)  wrote on 17.05.05 in <[EMAIL PROTECTED]>:

> Its a 266Mhz ColdFire v4e machine, about 263 BogoMips, 1/20 the
> BogoMips of my workstation, and with an NFS rootfs, it gets network

BogoMips are called BogoMips because they are not comparable among  
different CPUs. All they measure is how often the CPU needs to run a  
particular near-empty loop to delay a certain time.

There usually is a small factor which can convert between BogoMips and CPU  
MHz for every CPU model. It would seem to be 1 for your ColdFire; it  
happens to be 1/2 for my Athlon (bogomips: 2287.20, cpu MHz: 1145.142).

Comparisions like yours are worse than meaningless.

MfG Kai


Re: GCC 4.1: Buildable on GHz machines only?

2005-05-21 Thread Peter Barada

>> Its a 266Mhz ColdFire v4e machine, about 263 BogoMips, 1/20 the
>> BogoMips of my workstation, and with an NFS rootfs, it gets network
>
>BogoMips are called BogoMips because they are not comparable among  
>different CPUs. All they measure is how often the CPU needs to run a  
>particular near-empty loop to delay a certain time.

I know exactly what a BogoMips is.

>There usually is a small factor which can convert between BogoMips and CPU  
>MHz for every CPU model. It would seem to be 1 for your ColdFire; it  
>happens to be 1/2 for my Athlon (bogomips: 2287.20, cpu MHz: 1145.142).
>
>Comparisions like yours are worse than meaningless.

I wouldn't call it meaningless.  I don't have other benchmark numbers
for the chip, and it was menat to show that it isn't a blazingly fast
processor (as compared to desktop machines).

-- 
Peter Barada
[EMAIL PROTECTED]


basic-block and tree statement iterator enums

2005-05-21 Thread Gabriel Dos Reis

Hi,

  I've been pushing, locally, the compilation of GCC sources with g++.
So far, I've gotten past libiberty, fixincludes, libcpp, the C
front-end specific files, RTL files with no much pain.  However, the
files tree-* and associated headers seem to be the most resolutely C++
unfriendly (I guess I would have to change that judgment when I come
to some files in cp/ ;-)).

  My first attempt this morning met:

/home/gdr/redhat/libcpp.gcc/gcc/tree-cfg.c: In function 'void
bsi_insert_before(block_stmt_iterator*, tree_node*, bsi_iterator_update)':
/home/gdr/redhat/libcpp.gcc/gcc/tree-cfg.c:2935: error: cannot convert
'bsi_iterator_update' to 'tsi_iterator_update' for argument '3' to
'void tsi_link_before(tree_stmt_iterator*, tree_node*, tsi_iterator_update)'

The fragment in question is:

void
bsi_insert_before (block_stmt_iterator *i, tree t, enum bsi_iterator_update m)
{
  set_bb_for_stmt (t, i->bb);
  update_modified_stmts (t);
  tsi_link_before (&i->tsi, t, m);  // <=== HERE
}

Now, tsi_link_before() is declared to take "enum tsi_iterator_update" as
its third argument, so this is really a type violation or at least
looks very suspicious.  Chasing the definitions of both enums, I found

/* (from tree-flow.h)  */
enum bsi_iterator_update
{
  /* Note that these are intentionally in the same order as TSI_FOO. They
 mean exactly the same as their TSI_* counterparts.  */
  BSI_NEW_STMT,
  BSI_SAME_STMT,
  BSI_CHAIN_START,
  BSI_CHAIN_END,
  BSI_CONTINUE_LINKING
};

/* from tree-iterator.h */
enum tsi_iterator_update
{
  TSI_NEW_STMT, /* Leave the iterator at the same statement. */
  TSI_SAME_STMT,/* Only valid when single statement is added, move
   iterator to it.  */
  TSI_CHAIN_START,  /* Only valid when chain of statements is added, move
   iterator to the first statement in the chain.  */
  TSI_CHAIN_END,/* Only valid when chain of statements is added, move
   iterator to the last statement in the chain.  */
  TSI_CONTINUE_LINKING  /* Move iterator to whatever position is suitable for
   linking other statements/chains of statements in
   the same direction.  */
};


So, both enums are pretty similar, except for the names (of the type
and constants).  

Is there any particular reason why we cannot have just *one*
"iterator_update" enum, instead of two, and we have to cheat?
This duplication does not look to me like good thing we want to
have.  What am I overlooking?

-- Gaby


tree ssa and type issues

2005-05-21 Thread Gabriel Dos Reis

Hi again,

I just hit this one from tree-ssa-into.c:rewrite_into_ssa()

  /* Initialize dominance frontier.  */
  dfs = (bitmap *) xmalloc (last_basic_block * sizeof (bitmap *));
   

If the sizeof operand really supposed to be "bitmap*" and not "bitmap"?

-- Gaby



Re: tree ssa and type issues

2005-05-21 Thread Andreas Jaeger
Gabriel Dos Reis <[EMAIL PROTECTED]> writes:

> Hi again,
>
> I just hit this one from tree-ssa-into.c:rewrite_into_ssa()
>
>   /* Initialize dominance frontier.  */
>   dfs = (bitmap *) xmalloc (last_basic_block * sizeof (bitmap *));
>
> 
> If the sizeof operand really supposed to be "bitmap*" and not "bitmap"?

This indeed looks wrong - and could lead to real memory corruption
:-(.  If this is wrong, he should be changed on the 4.0 branch as
well,

Seems your C++ project is indeed usefull ;-)

Andreas
-- 
 Andreas Jaeger, [EMAIL PROTECTED], http://www.suse.de/~aj
  SUSE Linux Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
   GPG fingerprint = 93A3 365E CE47 B889 DF7F  FED1 389A 563C C272 A126


pgp9Gv6U7xhUr.pgp
Description: PGP signature


Re: tree ssa and type issues

2005-05-21 Thread Gabriel Dos Reis
Andreas Jaeger <[EMAIL PROTECTED]> writes:

| Gabriel Dos Reis <[EMAIL PROTECTED]> writes:
| 
| > Hi again,
| >
| > I just hit this one from tree-ssa-into.c:rewrite_into_ssa()
| >
| >   /* Initialize dominance frontier.  */
| >   dfs = (bitmap *) xmalloc (last_basic_block * sizeof (bitmap *));
| >
| > 
| > If the sizeof operand really supposed to be "bitmap*" and not "bitmap"?
| 
| This indeed looks wrong - and could lead to real memory corruption
| :-(.  If this is wrong, he should be changed on the 4.0 branch as
| well,

And if it is wrong, it would be interesting to know wheter we already
have PRs related to that memory corruption -- but I guess it would be
hard to know :-)

Parenthetically, I was wondering who is freeing those extensive
regions of storage xmalloc/xcalloc()ed here and there?

-- Gaby


Re: tree ssa and type issues

2005-05-21 Thread Andreas Jaeger
Gabriel Dos Reis <[EMAIL PROTECTED]> writes:

> Andreas Jaeger <[EMAIL PROTECTED]> writes:
>
> | Gabriel Dos Reis <[EMAIL PROTECTED]> writes:
> | 
> | > Hi again,
> | >
> | > I just hit this one from tree-ssa-into.c:rewrite_into_ssa()

Note update_ssa has the same problem.

> | >
> | >   /* Initialize dominance frontier.  */
> | >   dfs = (bitmap *) xmalloc (last_basic_block * sizeof (bitmap *));
> | >
> | > 
> | > If the sizeof operand really supposed to be "bitmap*" and not "bitmap"?
> | 
> | This indeed looks wrong - and could lead to real memory corruption
> | :-(.  If this is wrong, he should be changed on the 4.0 branch as
> | well,
>
> And if it is wrong, it would be interesting to know wheter we already
> have PRs related to that memory corruption -- but I guess it would be
> hard to know :-)

Yeah.


> Parenthetically, I was wondering who is freeing those extensive
> regions of storage xmalloc/xcalloc()ed here and there?

I went through the file (btw. it's named tree-into-ssa.c) and it does
not look that bad.  I could not find a place which is obviously
wrong.  Looking at rewrite_into_ssa I see:

  interesting_blocks = sbitmap_alloc (last_basic_block);
  dfs = (bitmap *) xmalloc (last_basic_block * sizeof (bitmap *));
  FOR_EACH_BB (bb)
dfs[bb->index] = BITMAP_ALLOC (NULL);
[...]
  /* Free allocated memory.  */
  FOR_EACH_BB (bb)
BITMAP_FREE (dfs[bb->index]);
  free (dfs);
  sbitmap_free (interesting_blocks);

So, this does look fine,
Andreas
-- 
 Andreas Jaeger, [EMAIL PROTECTED], http://www.suse.de/~aj
  SUSE Linux Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
   GPG fingerprint = 93A3 365E CE47 B889 DF7F  FED1 389A 563C C272 A126


pgp8bWMWVmwy1.pgp
Description: PGP signature


Re: [rfc] mainline slush

2005-05-21 Thread Richard Henderson
On Sat, May 21, 2005 at 10:59:44AM +0200, Jan Hubicka wrote:
> I believe Andrew mentioned that there is a patch for this?  (it is lack
> of sync in between operands and stmt itself)

The last state I saw is that the patch needed some minor updates.
I was hoping that one of the original authors would take care of
that, but ...


r~


Problem in assembly and linking(gcc-4.0)

2005-05-21 Thread Virender Kashyap

Hi
   I am working on gcc-4.0. I have edited some files in code and the 
remaking of gcc works well, and even files compile with it. But when i try 
to run a compiled program it gives segmentaion fault. I checked 
that assembly code produced is fine and i just compiled file to file.s and 
then assembled and linked it using standard commands in unix, as :


gcc -S file.c
as -o file.o file.s
ld -o exefile  file.o /usr/lib/crt1.o /usr/lib/crti.o -lc /usr/lib/crtn.o
-dynamic /lib/ld-linux.so.2

The executable produced above works fine.

 This would mean that there is some problem occuring while assembling or 
linking in regualr commands used by gcc. is there a solution for this ?



Regards.
Virender



Re: tree ssa and type issues

2005-05-21 Thread Tom Tromey
> "Gabriel" == Gabriel Dos Reis <[EMAIL PROTECTED]> writes:

Gabriel> I just hit this one from tree-ssa-into.c:rewrite_into_ssa()
Gabriel>   /* Initialize dominance frontier.  */
Gabriel>   dfs = (bitmap *) xmalloc (last_basic_block * sizeof (bitmap *));
Gabriel>

Maybe we should be using the XNEWVEC macro (libiberty.h) everywhere.
That would avoid this problem.

How did you catch this btw?  (If gcc or g++ warns about this, it is
cool news... and if it doesn't, wouldn't that be nice?)

Tom


Re: tree ssa and type issues

2005-05-21 Thread Daniel Berlin
On Sat, 2005-05-21 at 18:55 +0200, Andreas Jaeger wrote:
> Gabriel Dos Reis <[EMAIL PROTECTED]> writes:
> 
> > Hi again,
> >
> > I just hit this one from tree-ssa-into.c:rewrite_into_ssa()
> >
> >   /* Initialize dominance frontier.  */
> >   dfs = (bitmap *) xmalloc (last_basic_block * sizeof (bitmap *));
> >
> > 
> > If the sizeof operand really supposed to be "bitmap*" and not "bitmap"?
> 
> This indeed looks wrong - and could lead to real memory corruption
> :-(.  If this is wrong, he should be changed on the 4.0 branch as
> well,

It's wrong, but it couldn't lead to actual memory corruption, since
sizeof (bitmap) == sizeof (bitmap *), since both are pointers.





Re: tree ssa and type issues

2005-05-21 Thread Daniel Berlin
On Sat, 2005-05-21 at 20:33 +0200, Gabriel Dos Reis wrote:
> Andreas Jaeger <[EMAIL PROTECTED]> writes:
> 
> | Gabriel Dos Reis <[EMAIL PROTECTED]> writes:
> | 
> | > Hi again,
> | >
> | > I just hit this one from tree-ssa-into.c:rewrite_into_ssa()
> | >
> | >   /* Initialize dominance frontier.  */
> | >   dfs = (bitmap *) xmalloc (last_basic_block * sizeof (bitmap *));
> | >
> | > 
> | > If the sizeof operand really supposed to be "bitmap*" and not "bitmap"?
> | 
> | This indeed looks wrong - and could lead to real memory corruption
> | :-(.  If this is wrong, he should be changed on the 4.0 branch as
> | well,
> 
> And if it is wrong, it would be interesting to know wheter we already
> have PRs related to that memory corruption -- but I guess it would be
> hard to know :-)

Again, it won't corrupt memory, because sizeof (bitmap *) == sizeof
(bitmap), though it is still wrong.


> 
> Parenthetically, I was wondering who is freeing those extensive
> regions of storage xmalloc/xcalloc()ed here and there?

1. The people who write the code to do the xmalloc'ing.
2. Every couple of months, people run gcc through valgrind with leak
checking on to make sure we arne't leaking the xmalloc'd memory.






Re: tree ssa and type issues

2005-05-21 Thread Gabriel Dos Reis
Tom Tromey <[EMAIL PROTECTED]> writes:

| > "Gabriel" == Gabriel Dos Reis <[EMAIL PROTECTED]> writes:
| 
| Gabriel> I just hit this one from tree-ssa-into.c:rewrite_into_ssa()
| Gabriel>   /* Initialize dominance frontier.  */
| Gabriel>   dfs = (bitmap *) xmalloc (last_basic_block * sizeof (bitmap *));
| Gabriel>
| 
| Maybe we should be using the XNEWVEC macro (libiberty.h) everywhere.
| That would avoid this problem.

Absolutely.

| 
| How did you catch this btw?  (If gcc or g++ warns about this, it is
| cool news... and if it doesn't, wouldn't that be nice?)

The way I got it was simple:  I just grepped for xmalloc/xcalloc in
tree-* (most of them rely on implicit void * -> T* which C++ does not
like) and was going to replace them with XNEWVEC/XCNEWVEC and my eyes
could not parse that line :-)

No, gcc/g++ -- unfortunately -- cannot catch such things.  
Yes, it would be nice (e.g. useful), if it could warn about them.  I
think it is a common mistake.  Of source if works only for syntactic
construct like

(T) allocate (sizeof (U))

or

   (T) allocate (n * sizeof (U))

where T are not equivalent.  But, I guess that would already be an
improvement. 

-- Gaby


Re: tree ssa and type issues

2005-05-21 Thread Gabriel Dos Reis
Daniel Berlin <[EMAIL PROTECTED]> writes:

| On Sat, 2005-05-21 at 18:55 +0200, Andreas Jaeger wrote:
| > Gabriel Dos Reis <[EMAIL PROTECTED]> writes:
| > 
| > > Hi again,
| > >
| > > I just hit this one from tree-ssa-into.c:rewrite_into_ssa()
| > >
| > >   /* Initialize dominance frontier.  */
| > >   dfs = (bitmap *) xmalloc (last_basic_block * sizeof (bitmap *));
| > >
| > > 
| > > If the sizeof operand really supposed to be "bitmap*" and not "bitmap"?
| > 
| > This indeed looks wrong - and could lead to real memory corruption
| > :-(.  If this is wrong, he should be changed on the 4.0 branch as
| > well,
| 
| It's wrong, but it couldn't lead to actual memory corruption, since
| sizeof (bitmap) == sizeof (bitmap *), since both are pointers.

Aha.  This the second time, I'm hitting something like this.  The
first one was with libiberty/argv.c:dupargv() a month ago.

-- Gaby


Re: tree ssa and type issues

2005-05-21 Thread Gabriel Dos Reis
Daniel Berlin <[EMAIL PROTECTED]> writes:

[...]

| > Parenthetically, I was wondering who is freeing those extensive
| > regions of storage xmalloc/xcalloc()ed here and there?
| 
| 1. The people who write the code to do the xmalloc'ing.
| 2. Every couple of months, people run gcc through valgrind with leak
| checking on to make sure we arne't leaking the xmalloc'd memory.

If all memory is realized at the end of program, then obviously there
is no leak, but that is not what I was looking for.

But, it is nice to know that people run GCC through valgrind every
couple of months.  Do you know whether the have the resulst publically
available somewhere?

-- Gaby


Re: [rfc] mainline slush

2005-05-21 Thread Richard Henderson
On Sat, May 21, 2005 at 10:46:19AM +0200, Eric Botcazou wrote:
> We have as initial RTL:
> 
> (insn 35 34 36 1 (set (mem/i:TF (plus:DI (reg/f:DI 103 virtual-stack-vars)
> (const_int -5120 [0xec00])) [0 S16 A128])
> (reg:TF 110 [ D.1221 ])) -1 (nil)
> (nil))
> 
> and instantiate_virtual_regs_in_insn invokes extract_insn on it.  Previously 
> the instantiate_virtual_regs machinery (instantiate_virtual_regs_1) would 
> have detected that the insn is not valid.

The new implementation of instantiate_virtual_regs requires that the 
insn be valid *before* instantiation.  When you see something like 
this it means there's a bug in the rtl expanders.

The bug is in sparc_emit_float_lib_cmp,

5807  slot0 = assign_stack_temp (TFmode, GET_MODE_SIZE(TFmode), 0);
5808  emit_insn (gen_rtx_SET (VOIDmode, slot0, x));

You have to call validize_mem there.


r~


Re: tree ssa and type issues

2005-05-21 Thread Daniel Berlin
On Sat, 2005-05-21 at 22:00 +0200, Gabriel Dos Reis wrote:
> Daniel Berlin <[EMAIL PROTECTED]> writes:
> 
> [...]
> 
> | > Parenthetically, I was wondering who is freeing those extensive
> | > regions of storage xmalloc/xcalloc()ed here and there?
> | 
> | 1. The people who write the code to do the xmalloc'ing.
> | 2. Every couple of months, people run gcc through valgrind with leak
> | checking on to make sure we arne't leaking the xmalloc'd memory.
> 
> If all memory is realized at the end of program, then obviously there
> is no leak, but that is not what I was looking for.

Then what are you looking for?

Some of the xmalloc's are hidden behind things like pool_alloc and
pool_free, which internally use xmalloc/free, etc.

> 
> But, it is nice to know that people run GCC through valgrind every
> couple of months.

You can even use valgrind during bootstrap to verify even the gc'd
memory is being used properly.

--enable-checking=valgrind

It should work for both the zone and page collectors (I know Daniel J.
was using it with zone to verify the zone collector was working
properly)


>   Do you know whether the have the resulst publically
> available somewhere?
No, i don't think anyone takes the extra effort to try to set up a web
page.


> 
> -- Gaby



Re: [rfc] mainline slush

2005-05-21 Thread Eric Botcazou
> The new implementation of instantiate_virtual_regs requires that the
> insn be valid *before* instantiation.

I see.  I didn't find it written anywhere so I thought I should ask.

> The bug is in sparc_emit_float_lib_cmp,
>
> 5807  slot0 = assign_stack_temp (TFmode, GET_MODE_SIZE(TFmode),
> 0); 5808  emit_insn (gen_rtx_SET (VOIDmode, slot0, x));
>
> You have to call validize_mem there.

emit_move_insn should work fine too.  Thanks for the tip.

Btw, is it me or the individual RTL dump options are broken?
[EMAIL PROTECTED]:~/build/gcc/sparc64-sun-solaris2.9> gcc/xgcc -Bgcc -S 
t007_y.c -dr
cc1: warning: unrecognized gcc debugging option: r
[EMAIL PROTECTED]:~/build/gcc/sparc64-sun-solaris2.9> gcc/xgcc -Bgcc -S 
t007_y.c 
-fdump-rtl-expand
cc1: error: unrecognized command line option "-fdump-rtl-expand"

-- 
Eric Botcazou


Re: tree ssa and type issues

2005-05-21 Thread Gabriel Dos Reis
Daniel Berlin <[EMAIL PROTECTED]> writes:

| On Sat, 2005-05-21 at 22:00 +0200, Gabriel Dos Reis wrote:
| > Daniel Berlin <[EMAIL PROTECTED]> writes:
| > 
| > [...]
| > 
| > | > Parenthetically, I was wondering who is freeing those extensive
| > | > regions of storage xmalloc/xcalloc()ed here and there?
| > | 
| > | 1. The people who write the code to do the xmalloc'ing.
| > | 2. Every couple of months, people run gcc through valgrind with leak
| > | checking on to make sure we arne't leaking the xmalloc'd memory.
| > 
| > If all memory is realized at the end of program, then obviously there
| > is no leak, but that is not what I was looking for.
| 
| Then what are you looking for?

[ A useful answer ;-) ]

where the storage is returned/reused as soon as done, as opposed to
waiting for the end of the compilation.

[...]

| >   Do you know whether the have the resulst publically
| > available somewhere?
| No, i don't think anyone takes the extra effort to try to set up a web
| page.

Thanks,

-- Gaby


Re: tree ssa and type issues

2005-05-21 Thread Daniel Berlin
On Sat, 2005-05-21 at 22:59 +0200, Gabriel Dos Reis wrote:
> Daniel Berlin <[EMAIL PROTECTED]> writes:
> 
> | On Sat, 2005-05-21 at 22:00 +0200, Gabriel Dos Reis wrote:
> | > Daniel Berlin <[EMAIL PROTECTED]> writes:
> | > 
> | > [...]
> | > 
> | > | > Parenthetically, I was wondering who is freeing those extensive
> | > | > regions of storage xmalloc/xcalloc()ed here and there?
> | > | 
> | > | 1. The people who write the code to do the xmalloc'ing.
> | > | 2. Every couple of months, people run gcc through valgrind with leak
> | > | checking on to make sure we arne't leaking the xmalloc'd memory.
> | > 
> | > If all memory is realized at the end of program, then obviously there
> | > is no leak, but that is not what I was looking for.
> | 
> | Then what are you looking for?
> 
> [ A useful answer ;-) ]
> 
> where the storage is returned/reused as soon as done, as opposed to
> waiting for the end of the compilation.

Uh, nobody waits for the end of compilation to free their xmalloc'd
things.

> 
> [...]
> 
> | >   Do you know whether the have the resulst publically
> | > available somewhere?
> | No, i don't think anyone takes the extra effort to try to set up a web
> | page.
> 
> Thanks,
> 
> -- Gaby



Re: [rfc] mainline slush

2005-05-21 Thread Richard Henderson
On Sat, May 21, 2005 at 09:45:38PM +0200, Eric Botcazou wrote:
> Btw, is it me or the individual RTL dump options are broken?

The initial rtl dump is broken.  The rest work.

I think one of Jan's IPA pass manager changes broke it.


r~


Re: tree ssa and type issues

2005-05-21 Thread Steven Bosscher
On Saturday 21 May 2005 22:15, Daniel Berlin wrote:
> > where the storage is returned/reused as soon as done, as opposed to
> > waiting for the end of the compilation.
>
> Uh, nobody waits for the end of compilation to free their xmalloc'd
> things.

Except the alloc pools of et-forest :-)

Gr.
Steven



Spread snapshot building more evenly throughout the week

2005-05-21 Thread Gerald Pfeifer
I just applied the following patch and will update the gccadmin account
on gcc.gnu.org after tomorrow's snapshot of GCC 4.1 has been made. (The
new schedule is more in line what we originally had.)

Gerald

2005-05-21  Gerald Pfeifer  <[EMAIL PROTECTED]>

* crontab: Spread snapshot building more evenly throughout the
week.

Index: crontab
===
RCS file: /cvs/gcc/gcc/maintainer-scripts/crontab,v
retrieving revision 1.14
diff -u -3 -p -r1.14 crontab
--- crontab 19 May 2005 00:33:47 -  1.14
+++ crontab 21 May 2005 21:55:14 -
@@ -1,6 +1,6 @@
 16  0 * * * sh /home/gccadmin/scripts/update_version
 50  0 * * * sh /home/gccadmin/scripts/update_web_docs
 55  0 * * * sh /home/gccadmin/scripts/update_web_docs_libstdcxx
-32 22 * * 5 sh /home/gccadmin/scripts/gcc_release -s 3.4:gcc-3_4-branch -l -d 
/sourceware/snapshot-tmp/gcc all
-32 22 * * 6 sh /home/gccadmin/scripts/gcc_release -s 4.0:gcc-4_0-branch -l -d 
/sourceware/snapshot-tmp/gcc all
-43 17 * * 7 sh /home/gccadmin/scripts/gcc_release -s 4.1:HEAD   -l -d 
/sourceware/snapshot-tmp/gcc all
+32 22 * * 2 sh /home/gccadmin/scripts/gcc_release -s 3.4:gcc-3_4-branch -l -d 
/sourceware/snapshot-tmp/gcc all
+32 22 * * 4 sh /home/gccadmin/scripts/gcc_release -s 4.0:gcc-4_0-branch -l -d 
/sourceware/snapshot-tmp/gcc all
+43 17 * * 6 sh /home/gccadmin/scripts/gcc_release -s 4.1:HEAD   -l -d 
/sourceware/snapshot-tmp/gcc all


gcc.gnu.org/releases.html

2005-05-21 Thread Paolo Carlini
Hi,

the GCC Timeline doesn't seem ok: a wide 'internal version' field and
4.0.0 completely missing. Is this a known issue?

Thanks,
Paolo.


Re: [rfc] mainline slush

2005-05-21 Thread Jan Hubicka
> On Sat, May 21, 2005 at 09:45:38PM +0200, Eric Botcazou wrote:
> > Btw, is it me or the individual RTL dump options are broken?
> 
> The initial rtl dump is broken.  The rest work.
> 
> I think one of Jan's IPA pass manager changes broke it.

What are the symptoms?  -fdump-tree-expand seems to work fine for me as
does -d (not sure of -fdump-rtl-expand ever worked, but I
might try to restore it if it did).

Honza
> 
> 
> r~


Re: gcc.gnu.org/releases.html

2005-05-21 Thread Gerald Pfeifer
On Sun, 22 May 2005, Paolo Carlini wrote:
> the GCC Timeline doesn't seem ok: a wide 'internal version' field and
> 4.0.0 completely missing. Is this a known issue?

I'll see what I can do about the formatting, but the missing release
is a feature (so that our release managers do not have to perform that
many manual steps during the process).

That's why the page states:

  Please refer to our development plan for releases past 4.0.0 and future 
  releases.

Gerald


Some questions about FIELD_DECL

2005-05-21 Thread Daniel Berlin
While moving FIELD_DECL to it's own substruct, the following questions
have come up.  I figured one of you might know:

1. Do we need DECL_ASSEMBLER_NAME on FIELD_DECL?  I can't think of a
place where we would actually try to *output* a FIELD_DECL directly, but
maybe i've missed something.  I ask because the C frontend tests
decl_assembler_name on field decl, but never sets it on them.

Related to this:

2. Do we allow setting the section of a FIELD_DECL, so that
DECL_SECTION_NAME on FIELD_DECL is necessary?




Re: gcc.gnu.org/releases.html

2005-05-21 Thread Paolo Carlini
Gerald Pfeifer wrote:

>I'll see what I can do about the formatting,
>
Thanks!

> but the missing release
>is a feature (so that our release managers do not have to perform that
>many manual steps during the process).
>
>That's why the page states:
>
>  Please refer to our development plan for releases past 4.0.0 and future 
>  releases.
>  
>
Yes ;) noticed in the meanwhile...

Maybe you may want to have a look to web/21679 too, anyway, I think Dave
Abrahams has a point.

Paolo.


Re: gcc.gnu.org/releases.html

2005-05-21 Thread Gerald Pfeifer
On Sun, 22 May 2005, Paolo Carlini wrote:
>> I'll see what I can do about the formatting,
> Thanks!

I installed the following patch.

Gerald

Streamline the reference to our binaries page.  Remove references to egcs
internal version numbers.

Index: releases.html
===
RCS file: /cvs/gcc/wwwdocs/htdocs/releases.html,v
retrieving revision 1.56
retrieving revision 1.58
diff -u -3 -p -r1.56 -r1.58
--- releases.html   20 May 2005 20:48:54 -  1.56
+++ releases.html   21 May 2005 22:57:44 -  1.58
@@ -14,11 +14,9 @@
 Important: because these are source releases, they will be
 of little use to you if you do not already have a C compiler on your
 machine.  If you don't already have a compiler, you need pre-compiled
-binaries.
-
-To find pre-compiled binaries for various platforms, please
-refer to our http://gcc.gnu.org/install/binaries.html";>binaries
-page.
+binaries.
+Our http://gcc.gnu.org/install/binaries.html";>binaries page
+has references to pre-compiled binaries for various platforms.
 
 You can also retrieve the current development sources
 using CVS.
@@ -29,14 +27,8 @@ page.
 for releases past 4.0.0 and future releases.
 
 
-Releaseinternal versionRelease date
-GCC 3.4.4
-
-The egcs project maintained two kinds of version numbers. One was of the
-form 2.9x.yy and indicated the relationship between the GCC sources and
-the egcs sources; the other version number identified egcs releases (as
-opposed to development snapshots).
-May 18, 2005
+ReleaseRelease date
+GCC 3.4.4   May 18, 2005
 GCC 3.4.3   November 4, 2004
 GCC 3.4.2   September 6, 2004
 GCC 3.4.1   July 1, 2004
@@ -64,18 +56,18 @@ opposed to development snapshots).
 GCC 2.95.1 August 19, 1999
 GCC 2.95   July 31, 1999
 
-EGCS 1.1.22.91.66March 15, 
1999
-EGCS 1.1.12.91.60December 1, 
1998
-EGCS 1.12.91.57September 3, 
1998
+EGCS 1.1.2 March 15, 1999
+EGCS 1.1.1 December 1, 1998
+EGCS 1.1   September 3, 1998
 
-EGCS 
1.0.32.90.29May 15, 1998
-EGCS 
1.0.22.90.27March 16, 1998
+EGCS 1.0.3May 15, 
1998
+EGCS 1.0.2March 16, 
1998
 
-gcc 2.8.1  March 2, 1998
-gcc 2.8.0  January 7, 1998
+gcc 2.8.1  March 2, 1998
+gcc 2.8.0  January 7, 1998
 
-EGCS 
1.0.12.90.23January 6, 1998
-EGCS 
1.02.90.21December 3, 1997
+EGCS 1.0.1January 6, 
1998
+EGCS 1.0December 3, 
1997
 
 
 


Re: Some questions about FIELD_DECL

2005-05-21 Thread Gabriel Dos Reis
Daniel Berlin <[EMAIL PROTECTED]> writes:

| While moving FIELD_DECL to it's own substruct, the following questions
| have come up.  I figured one of you might know:
| 
| 1. Do we need DECL_ASSEMBLER_NAME on FIELD_DECL?  I can't think of a
| place where we would actually try to *output* a FIELD_DECL directly, but
| maybe i've missed something.  I ask because the C frontend tests
| decl_assembler_name on field decl, but never sets it on them.


What happens when you have this (in C++)

   namespace foo {
  union {
int baz;
 double foobar;
  } bar;
   };

?

-- Gaby


Re: [rfc] mainline slush

2005-05-21 Thread Steven Bosscher
On Sunday 22 May 2005 00:16, Jan Hubicka wrote:
> (not sure of -fdump-rtl-expand ever worked, but I
> might try to restore it if it did).

It very definitely did work, and quite nicely too.
Try -fdump-rtl-expand-details.

Gr.
Steven



[wwwdocs] make release download more prominent (was: gcc.gnu.org/releases.html)

2005-05-21 Thread Gerald Pfeifer
On Sun, 22 May 2005, Paolo Carlini wrote:
> Maybe you may want to have a look to web/21679 too, anyway, I think Dave
> Abrahams has a point.

I installed the patch below.  If this is not sufficient, we could
consider creating a download page of its own, though this would add
yet another level of indirection in many cases.

Having a selectable list of releases which lead to a download site for 
that *particular* release seems beyond what we can do with acceptable 
effort.

Gerald

Make "Download" a section of its own on the releases.html page.

Index: releases.html
===
RCS file: /cvs/gcc/wwwdocs/htdocs/releases.html,v
retrieving revision 1.58
diff -u -3 -p -r1.58 releases.html
--- releases.html   21 May 2005 22:57:44 -  1.58
+++ releases.html   21 May 2005 23:16:39 -
@@ -8,6 +8,8 @@
 
 GCC Releases
 
+Download
+
 Source code for GCC releases may be downloaded from our
 mirror sites.
 
@@ -21,6 +23,7 @@ has references to pre-compiled binaries 
 You can also retrieve the current development sources
 using CVS.
 
+
 GCC Timeline
 
 Please refer to our development plan
Index: style.mhtml
===
RCS file: /cvs/gcc/wwwdocs/htdocs/style.mhtml,v
retrieving revision 1.78
diff -u -3 -p -r1.78 style.mhtml
--- style.mhtml 16 May 2005 22:23:44 -  1.78
+++ style.mhtml 21 May 2005 23:16:42 -
@@ -206,7 +206,7 @@
   
>
   
-  Releases
+  Releases
   Snapshots
   Mirror sites
   http://gcc.gnu.org/install/binaries.html";>Binaries


Re: Some questions about FIELD_DECL

2005-05-21 Thread Daniel Berlin
On Sun, 2005-05-22 at 02:14 +0200, Gabriel Dos Reis wrote:
> Daniel Berlin <[EMAIL PROTECTED]> writes:
> 
> | While moving FIELD_DECL to it's own substruct, the following questions
> | have come up.  I figured one of you might know:
> | 
> | 1. Do we need DECL_ASSEMBLER_NAME on FIELD_DECL?  I can't think of a
> | place where we would actually try to *output* a FIELD_DECL directly, but
> | maybe i've missed something.  I ask because the C frontend tests
> | decl_assembler_name on field decl, but never sets it on them.
> 
> 
> What happens when you have this (in C++)
> 
>namespace foo {
>   union {
> int baz;
>  double foobar;
>   } bar;
>};
> 

I tried this, and it still doesn't access DECL_ASSEMBLER_NAME of
FIELD_DECL.



> ?
> 
> -- Gaby



Re: [rfc] mainline slush

2005-05-21 Thread Daniel Berlin
On Sun, 2005-05-22 at 00:16 +0200, Jan Hubicka wrote:
> > On Sat, May 21, 2005 at 09:45:38PM +0200, Eric Botcazou wrote:
> > > Btw, is it me or the individual RTL dump options are broken?
> > 
> > The initial rtl dump is broken.  The rest work.
> > 
> > I think one of Jan's IPA pass manager changes broke it.
> 
> What are the symptoms?  -fdump-tree-expand seems to work fine for me as
> does -d (not sure of -fdump-rtl-expand ever worked, but I
> might try to restore it if it did).
> 
> Honza

You should definitely try to restore it.

:)

Let me know when you are done, because i'm about to do some surgery on
register_dump_files to remove the fact that it likes to reset properties
on passes.

> > 
> > 
> > r~



Re: GCC-4.0 vs GCC-3.3.6 ia32 -Os: code size increase from 261 to5339 bytes

2005-05-21 Thread Giovanni Bajo
Daniel Berlin <[EMAIL PROTECTED]> wrote:

>> $ ./xgcc -c -Os -B. btst.c && size btst.o
>>textdata bss dec hex filename
>>5339   0   0533914db btst.o
>> $ ./xgcc -c -Os -fno-tree-sra -B. btst.c && size btst.o
>>textdata bss dec hex filename
>> 224   0   0 224  e0 btst.o
>> 
>> So we're actually better than 3.3, after we disable -ftree-sra. I
>> guess SRA should be tuned (disabled?) for -Os.
> 
> Structure aliasing should be able to make up for turning off SRA, i'm
> guessing, at least as far as propagating constants and DCE is
> concerned. 
> 
> You could test this by seeing if -fno-tree-sra -fno-tree-salias
> produces 
> an increased code size over the above.

Not really: with -fno-tree-salias I get exactly the same result (224 bytes).

Giovanni Bajo



gcc-4.0-20050521 is now available

2005-05-21 Thread gccadmin
Snapshot gcc-4.0-20050521 is now available on
  ftp://gcc.gnu.org/pub/gcc/snapshots/4.0-20050521/
and on various mirrors, see http://gcc.gnu.org/mirrors.html for details.

This snapshot has been generated from the GCC 4.0 CVS branch
with the following options: -rgcc-ss-4_0-20050521 

You'll find:

gcc-4.0-20050521.tar.bz2  Complete GCC (includes all of below)

gcc-core-4.0-20050521.tar.bz2 C front end and core compiler

gcc-ada-4.0-20050521.tar.bz2  Ada front end and runtime

gcc-fortran-4.0-20050521.tar.bz2  Fortran front end and runtime

gcc-g++-4.0-20050521.tar.bz2  C++ front end and runtime

gcc-java-4.0-20050521.tar.bz2 Java front end and runtime

gcc-objc-4.0-20050521.tar.bz2 Objective-C front end and runtime

gcc-testsuite-4.0-20050521.tar.bz2The GCC testsuite

Diffs from 4.0-20050514 are available in the diffs/ subdirectory.

When a particular snapshot is ready for public consumption the LATEST-4.0
link is updated and a message is sent to the gcc list.  Please do not use
a snapshot before it has been announced that way.


Re: tree ssa and type issues

2005-05-21 Thread Andreas Schwab
Andreas Jaeger <[EMAIL PROTECTED]> writes:

> Gabriel Dos Reis <[EMAIL PROTECTED]> writes:
>
>> Hi again,
>>
>> I just hit this one from tree-ssa-into.c:rewrite_into_ssa()
>>
>>   /* Initialize dominance frontier.  */
>>   dfs = (bitmap *) xmalloc (last_basic_block * sizeof (bitmap *));
>>
>> 
>> If the sizeof operand really supposed to be "bitmap*" and not "bitmap"?
>
> This indeed looks wrong - and could lead to real memory corruption
> :-(.

Since bitmap is also a pointer, sizeof (bitmap) == sizeof (bitmap *).

> If this is wrong, he should be changed on the 4.0 branch as well,

While it's wrong, it's harmless.

Andreas.

-- 
Andreas Schwab, SuSE Labs, [EMAIL PROTECTED]
SuSE Linux Products GmbH, Maxfeldstraße 5, 90409 Nürnberg, Germany
Key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
"And now for something completely different."


Re: Some questions about FIELD_DECL

2005-05-21 Thread Gabriel Dos Reis
Daniel Berlin <[EMAIL PROTECTED]> writes:

| On Sun, 2005-05-22 at 02:14 +0200, Gabriel Dos Reis wrote:
| > Daniel Berlin <[EMAIL PROTECTED]> writes:
| > 
| > | While moving FIELD_DECL to it's own substruct, the following questions
| > | have come up.  I figured one of you might know:
| > | 
| > | 1. Do we need DECL_ASSEMBLER_NAME on FIELD_DECL?  I can't think of a
| > | place where we would actually try to *output* a FIELD_DECL directly, but
| > | maybe i've missed something.  I ask because the C frontend tests
| > | decl_assembler_name on field decl, but never sets it on them.
| > 
| > 
| > What happens when you have this (in C++)
| > 
| >namespace foo {
| >   union {
| > int baz;
| >  double foobar;
| >   } bar;
| >};
| > 
| 
| I tried this, and it still doesn't access DECL_ASSEMBLER_NAME of
| FIELD_DECL.

OK, that is the corner case that comes to my mind where C++ directly
specifies linkage for FIELD_DECL.  Maybe Jason or Mark might further
comments. 

-- Gaby


Re: Some questions about FIELD_DECL

2005-05-21 Thread Daniel Berlin
On Sun, 2005-05-22 at 03:13 +0200, Gabriel Dos Reis wrote:
> Daniel Berlin <[EMAIL PROTECTED]> writes:
> 
> | On Sun, 2005-05-22 at 02:14 +0200, Gabriel Dos Reis wrote:
> | > Daniel Berlin <[EMAIL PROTECTED]> writes:
> | > 
> | > | While moving FIELD_DECL to it's own substruct, the following questions
> | > | have come up.  I figured one of you might know:
> | > | 
> | > | 1. Do we need DECL_ASSEMBLER_NAME on FIELD_DECL?  I can't think of a
> | > | place where we would actually try to *output* a FIELD_DECL directly, but
> | > | maybe i've missed something.  I ask because the C frontend tests
> | > | decl_assembler_name on field decl, but never sets it on them.
> | > 
> | > 
> | > What happens when you have this (in C++)
> | > 
> | >namespace foo {
> | >   union {
> | > int baz;
> | >  double foobar;
> | >   } bar;
> | >};
> | > 
> | 
> | I tried this, and it still doesn't access DECL_ASSEMBLER_NAME of
> | FIELD_DECL.
> 
> OK, that is the corner case that comes to my mind where C++ directly
> specifies linkage for FIELD_DECL.  Maybe Jason or Mark might further
> comments. 

I've actually discovered that we set the assembler name on a field that
is the vtable, but never actually use it again, at least for DWARF2 and
STABS (it's set to a constant called VFIELD_NAME).
I grepped .s file from all of libjava and the stl testcases compared
with -gstabs and -gdwarf-2, and none of them contain VFIELD_NAME with or
without my change.



> 
> -- Gaby



Re: Some questions about FIELD_DECL

2005-05-21 Thread Zack Weinberg
Daniel Berlin <[EMAIL PROTECTED]> writes:

> I've actually discovered that we set the assembler name on a field that
> is the vtable, but never actually use it again, at least for DWARF2 and
> STABS (it's set to a constant called VFIELD_NAME).
> I grepped .s file from all of libjava and the stl testcases compared
> with -gstabs and -gdwarf-2, and none of them contain VFIELD_NAME with or
> without my change.

This appears to be mostly vestigial old ABI stuff.  VFIELD_NAME_P is
used to special-case the vtable pointer in the default copy
constructor and assignment operator (see cp/method.c:
do_build_copy_constructor, do_build_assign_ref respectively) but that
can and probably should be changed.  Even if it's kept, it would
suffice to use the DECL_NAME, not the DECL_ASSEMBLER_NAME, for that.

zw


Reduction rule for Kleene's Closure in replacement of Thompson's algorithm

2005-05-21 Thread Erik Poupaert
Hi 

I guess there must be people watching this list, interested in this.

I hope I now finally found the way I was looking for, to formulate a
reduction rule for Kleene's Closure which can be used in replacement
of Thompson's algorithm, or so I hope. I could be wrong about it,
however.

http://erik-poupaert.com/12001.html

If anybody feels like veryfying the reduction rule and the resulting
algorithm used to derive a regex DFA directly, feel free to let me
know what your results are.

The reduction rule is:

T{a(xy)*b} = T{ab} + T {axyb} + T{axyxyb} 

With T{e} the collection of transitions derived from any regex e.

By applying the rule recursively, one obtains all DFA transitions for
any regex, or so I hope it is true. In such case, if proven to be
true, it is truly a replacement for Thompson's algorithm.

Greetings
Erik Poupaert