public inbox for gcc@gcc.gnu.org
 help / color / mirror / Atom feed
* Re: ICE in change_address at emit_rtl.c
@ 2001-11-15 16:24 Richard Kenner
  2001-11-15 17:08 ` Per Bothner
  2001-11-25 13:44 ` Richard Kenner
  0 siblings, 2 replies; 112+ messages in thread
From: Richard Kenner @ 2001-11-15 16:24 UTC (permalink / raw)
  To: per; +Cc: gcc

    This is one reason why fold causes problems as it sometimes
    creates SAVE_EXPR.  Using  a scoped temporary:
       let tmp := expr in BODY
    would be preferable for us.

But is it realistic for fold to make one?  fold has no idea where the
expression being folded is going.

    Another problem with fold is that it does not obey Java rules for
    expression evaluation order.  We would probably want to add a flag to
    force it to do that.

This is very much a separate issue, of course.

^ permalink raw reply	[flat|nested] 112+ messages in thread
* Re: ICE in change_address at emit_rtl.c
@ 2001-11-17 17:09 mike stump
  2001-11-17 20:34 ` Per Bothner
  2001-11-26 14:51 ` mike stump
  0 siblings, 2 replies; 112+ messages in thread
From: mike stump @ 2001-11-17 17:09 UTC (permalink / raw)
  To: kenner, per; +Cc: gcc

> Date: Sun, 25 Nov 2001 16:12:36 -0800
> From: Per Bothner <per@bothner.com>

> Using a LET_EXPR makes the scope explicit.  It is clear that the
> scope of the tmp lasts during the evaluation of the let-body, which
> is during the evaluation of the PLUS_EXPR.  Using a SAVE_EXPR, the
> scope of the temporary is "from the first time the SAVE_EXPR is
> evaluated until the last time the SAVE_EXPR is evaluated".  We
> cannot know what this is without analyzing the entire body of the
> function.

This wrong.  The scope for the storage ends, like it or not, at the
end of the block in which it was expanded in, which is defined by a
call to push_temp_slots_for_block.

^ permalink raw reply	[flat|nested] 112+ messages in thread
* Re: ICE in change_address at emit_rtl.c
@ 2001-11-17 11:46 Richard Kenner
  2001-11-26 13:36 ` Richard Kenner
  0 siblings, 1 reply; 112+ messages in thread
From: Richard Kenner @ 2001-11-17 11:46 UTC (permalink / raw)
  To: mrs; +Cc: gcc

    If you increase the likely hood that the compiler will just work in
    the face of changing code, and random maintenance and decrease the
    maintenance code, and make the code easier to read and understand,
    then you gained more, than just renaming it, you've improved it.

Of course, but I'm not convinced this will happen.

    It is reasonable to find a way to `improve' SAVE_EXPR.  Check out
    UNSAVE_EXPR, and the `grossness' of it.  It is truely worth
    eliminating by design.  Unfortunately to get rid of it, you need to
    revamp SAVE_EXPR.

But those things are there because there's a semantic need for that
processing.  If you eliminate SAVE_EXPR, you have to replace it with
something that's similarly 'gross'.

^ permalink raw reply	[flat|nested] 112+ messages in thread
* Re: ICE in change_address at emit_rtl.c
@ 2001-11-17 11:23 mike stump
  2001-11-26 13:29 ` mike stump
  0 siblings, 1 reply; 112+ messages in thread
From: mike stump @ 2001-11-17 11:23 UTC (permalink / raw)
  To: kenner, neil; +Cc: gcc

> Date: Sun, 25 Nov 01 09:23:28 EST
> From: kenner@vlsi1.ultra.nyu.edu (Richard Kenner)
> To: neil@daikokuya.demon.co.uk
> Cc: gcc@gcc.gnu.org

>     And why can't you look inside a temporary the same way you look inside
>     a SAVE_EXPR?

> Right now we have no mechanism for doing so.

> However, my question is what do we gain by removing SAVE_EXPR if we add
> temporaries that have exactly the same semantics?  If you do everything
> that SAVE_EXPR can do, all you've done is renamed it!

If you increase the likely hood that the compiler will just work in
the face of changing code, and random maintenance and decrease the
maintenance code, and make the code easier to read and understand,
then you gained more, than just renaming it, you've improved it.

It is reasonable to find a way to `improve' SAVE_EXPR.  Check out
UNSAVE_EXPR, and the `grossness' of it.  It is truely worth
eliminating by design.  Unfortunately to get rid of it, you need to
revamp SAVE_EXPR.

^ permalink raw reply	[flat|nested] 112+ messages in thread
* Re: ICE in change_address at emit_rtl.c
@ 2001-11-17 11:19 mike stump
  2001-11-26 12:54 ` mike stump
  0 siblings, 1 reply; 112+ messages in thread
From: mike stump @ 2001-11-17 11:19 UTC (permalink / raw)
  To: zack; +Cc: gcc, gdr, mark, neil

> Date: Sat, 24 Nov 2001 23:05:30 -0800
> From: Zack Weinberg <zack@codesourcery.com>
> To: mike stump <mrs@windriver.com>

> int main(argc, argv)
>    int argc;
>    string argv[];
> {
>    int i;
>    for(i=1; i<argc; i++)
>     puts(argv[i]);
>    return 0;
> }

> $ gcc -S test.c
> test.c: In function `main':
> test.c:3: parse error before `string'
> test.c:7: subscripted value is neither array nor pointer

> Here, we have no clue what the type of an element of argv is, but we
> ought to be able to call it "array of <unknown type>" instead of
> just "<unknown type>".

unknown type is fine, this is a trivial little bug that should be able
to be fixed with 2 lines of change.  It might be marginally better
with EMN[], but, the cost is once EMN is inside of `things' (such as
[]), the code that has to check stuff as you rip apart stuff
increases.  And without the checks in place before you begin, you
increase the faulting before you improve the diagnostics, which, isn't
an improvement.

^ permalink raw reply	[flat|nested] 112+ messages in thread
* Re: ICE in change_address at emit_rtl.c
@ 2001-11-16  9:26 Richard Kenner
  2001-11-26  3:15 ` Richard Kenner
  0 siblings, 1 reply; 112+ messages in thread
From: Richard Kenner @ 2001-11-16  9:26 UTC (permalink / raw)
  To: rth; +Cc: gcc

    Being able to optimize at the tree level.  I disbelieve we'll
    be able to do that properly given the less than precise
    semantics of SAVE_EXPR.

I don't follow.  For most purposes of tree-level optimization they are
nops, except that they aren't invalidated by stores to things that are in
the expression in their operand.

^ permalink raw reply	[flat|nested] 112+ messages in thread
* Re: ICE in change_address at emit_rtl.c
@ 2001-11-15 23:55 Richard Kenner
  2001-11-25 17:22 ` Richard Kenner
  0 siblings, 1 reply; 112+ messages in thread
From: Richard Kenner @ 2001-11-15 23:55 UTC (permalink / raw)
  To: per; +Cc: gcc

    Perhaps to you.  But not for C, nor to my knowledge C++
    or Java.  (I weasel a bit about Java, because it is possible
    to model Java arrays as variable-sized types.  I don't think
    we do that, though.)

I don't know about Java, but you certainly can have variable-sized objects
in C.  That's what the variable_size routine is for.  It is the major
creator of SAVE_EXPRs.  The few in fold are, by far, the least common.

^ permalink raw reply	[flat|nested] 112+ messages in thread
* Re: ICE in change_address at emit_rtl.c
@ 2001-11-15 20:12 Richard Kenner
  2001-11-15 20:19 ` Per Bothner
  2001-11-25 16:24 ` Richard Kenner
  0 siblings, 2 replies; 112+ messages in thread
From: Richard Kenner @ 2001-11-15 20:12 UTC (permalink / raw)
  To: per; +Cc: gcc

    Using a LET_EXPR makes the scope explicit.  It is clear that the scope
    of the tmp lasts during the evaluation of the let-body, which is
    during the evaluation of the PLUS_EXPR.  Using a SAVE_EXPR, the scope
    of the temporary is "from the first time the SAVE_EXPR is evaluated
    until the last time the SAVE_EXPR is evaluated".  We cannot know what
    this is without analyzing the entire body of the function.

OK, I see what you mean.  But this is very much the exceptional case of
SAVE_EXPR.  The most common case is when you are putting it in the size
of offset inside a type.  You have the same scoping issues no matter what you
call it.

^ permalink raw reply	[flat|nested] 112+ messages in thread
* Re: ICE in change_address at emit_rtl.c
@ 2001-11-15 17:44 Richard Kenner
  2001-11-15 19:52 ` Per Bothner
  2001-11-25 15:01 ` Richard Kenner
  0 siblings, 2 replies; 112+ messages in thread
From: Richard Kenner @ 2001-11-15 17:44 UTC (permalink / raw)
  To: per; +Cc: gcc

    The big difference is that the temporary used by LET_EXPR (actually
    LET_EXPR can be used to encode user-level declarations too) has a
    well-defined scope.  It is clear when the temporary register needs to
    be allocated (on entrance to the BODY expression) to be allocated, and
    it is clear when it can be freed (on exit from the BODY expression).
    Neither are true for SAVE_EXPR, which is much less well defined.

I disagree.  The scopes of both need to be exactly the same: the scope of
the underlying expression.  It's not possible for fold to know that so it
would have to do the same thing with the new LET_EXPR as for the present
SAVE_EXPR.  I don't see how this changes things at all.

In both cases we are allocating a temporary and we are guessing as to its
scope.

^ permalink raw reply	[flat|nested] 112+ messages in thread
* Re: ICE in change_address at emit_rtl.c
@ 2001-11-15 17:25 Richard Kenner
  2001-11-15 17:39 ` Per Bothner
  2001-11-25 14:37 ` Richard Kenner
  0 siblings, 2 replies; 112+ messages in thread
From: Richard Kenner @ 2001-11-15 17:25 UTC (permalink / raw)
  To: per; +Cc: gcc

    I'm not sure what the problem is.  My proposal is to use some kind of
    LET_EXPR, which takes a declaration and two expressions.  It seems
    plausible to me that any place that creates a SAVE_EXPR could use a
    LET_EXPR instead. 

So how are you changing things?  You're replacing SAVE_EXPR with LET_EXPR
with similar semantics.

^ permalink raw reply	[flat|nested] 112+ messages in thread
* Re: ICE in change_address at emit_rtl.c
@ 2001-11-15 14:19 Richard Kenner
  2001-11-25  6:42 ` Richard Kenner
  0 siblings, 1 reply; 112+ messages in thread
From: Richard Kenner @ 2001-11-15 14:19 UTC (permalink / raw)
  To: neil; +Cc: gcc

    No, I think you'd remove a lot of the special-casing that SAVE_EXPR
    causes (and weirdness).  Also, the tree->RTL layer wouldn't have to
    special case it either.

Try it and I think you'll find that all the complexity is semantically
required: if you don't put it in one way, it'll have to go in some
other way.

^ permalink raw reply	[flat|nested] 112+ messages in thread
* Re: ICE in change_address at emit_rtl.c
@ 2001-11-15 13:20 Richard Kenner
  2001-11-15 13:20 ` Neil Booth
                   ` (2 more replies)
  0 siblings, 3 replies; 112+ messages in thread
From: Richard Kenner @ 2001-11-15 13:20 UTC (permalink / raw)
  To: neil; +Cc: gcc

    And why can't you look inside a temporary the same way you look inside
    a SAVE_EXPR?

Right now we have no mechanism for doing so.

However, my question is what do we gain by removing SAVE_EXPR if we add
temporaries that have exactly the same semantics?  If you do everything
that SAVE_EXPR can do, all you've done is renamed it!

^ permalink raw reply	[flat|nested] 112+ messages in thread
* Re: ICE in change_address at emit_rtl.c
@ 2001-11-15 12:28 Richard Kenner
  2001-11-15 12:44 ` Neil Booth
  2001-11-25  5:25 ` Richard Kenner
  0 siblings, 2 replies; 112+ messages in thread
From: Richard Kenner @ 2001-11-15 12:28 UTC (permalink / raw)
  To: neil; +Cc: gcc

    > Right, but note I said *performance*.  Even if we do that, we'd lose
    > optimization potential in knowing the form of the values.

    Why?  Can you give a simple example?

No.  I said *complex* objects.

Basically if you can look inside a SAVE_EXPR you may be able to deduce that
the value is always a multiple of some power-of-two.  Or you may be
able to simplify the expression by merging some divides and multiplies.
It's this sort of thing I'm talking about.

^ permalink raw reply	[flat|nested] 112+ messages in thread
* Re: ICE in change_address at emit_rtl.c
@ 2001-11-15 11:05 Richard Kenner
  2001-11-15 12:07 ` Neil Booth
                   ` (2 more replies)
  0 siblings, 3 replies; 112+ messages in thread
From: Richard Kenner @ 2001-11-15 11:05 UTC (permalink / raw)
  To: neil; +Cc: gcc

    Can't we create temporaries, and then refer to those?  I know there is
    no framework in place for doing this at present.

Right, but note I said *performance*.  Even if we do that, we'd lose
optimization potential in knowing the form of the values.  It's quite common
for there to be multiple nestings of SAVE_EXPRs in position and size
computations in complex variable-sized objects.

^ permalink raw reply	[flat|nested] 112+ messages in thread
* Re: ICE in change_address at emit_rtl.c
@ 2001-11-15 10:14 Richard Kenner
  2001-11-15 10:36 ` Neil Booth
  2001-11-25  4:23 ` Richard Kenner
  0 siblings, 2 replies; 112+ messages in thread
From: Richard Kenner @ 2001-11-15 10:14 UTC (permalink / raw)
  To: neil; +Cc: gcc

    I'd also like to see us go down the road that rth mentioned,
    i.e. losing all trees with side effects

You mean like MODIFY_EXPR and CALL_EXPR?  :-)

    That would get rid of {UN,}SAVE_EXPR 

I don't see how to get rid of SAVE_EXPR without taking some preformance hits
on complex types.

^ permalink raw reply	[flat|nested] 112+ messages in thread
* Re: ICE in change_address at emit_rtl.c
@ 2001-11-15  8:15 mike stump
  2001-11-15  8:43 ` Zack Weinberg
  0 siblings, 1 reply; 112+ messages in thread
From: mike stump @ 2001-11-15  8:15 UTC (permalink / raw)
  To: gdr, zack; +Cc: gcc, mark, neil

> Date: Sat, 24 Nov 2001 16:41:55 -0800
> From: Zack Weinberg <zack@codesourcery.com>
> To: Gabriel Dos Reis <gdr@codesourcery.com>

> 2. As few spurious errors reported to the user as possible.  This is
> one place where ERROR_MARK_NODE really falls down.  Consider these
> ill-formed declarations:

> double int number;
> typedef struct foo foo_t[;

> These will both provoke error cascades in the current compiler,

?

double int number;

int maif() {
   number = 1;
   number1 = 1;
}

seems to do the right thing?

> mainly because 'number' and 'foo_t' don't get entered into the
> symbol table, so we issue errors every time they are used, even if
> the use would have been valid given a valid declaration.

> For instance,

> inline int foo(void) { syntax error; }

> should become "extern int foo(void);" for purpose of further processing.

It already does:

double int number;

void maif() {
   number = 1;
   number1 = 1;
}

void sdf() {
  syntax error
}

void mae() {
  int a = sdf();
}

terr.c:1: two or more data types in declaration of `number'
terr.c: In function `maif':
terr.c:5: `number1' undeclared (first use in this function)
terr.c:5: (Each undeclared identifier is reported only once
terr.c:5: for each function it appears in.)
terr.c: In function `sdf':
terr.c:9: `syntax' undeclared (first use in this function)
terr.c:9: parse error before "error"
terr.c: In function `mae':
terr.c:13: void value not ignored as it ought to be

Did I construct a testcase that was too simple?

^ permalink raw reply	[flat|nested] 112+ messages in thread
* Re: ICE in change_address at emit_rtl.c
@ 2001-11-15  8:02 mike stump
  2001-11-15  9:51 ` Neil Booth
  0 siblings, 1 reply; 112+ messages in thread
From: mike stump @ 2001-11-15  8:02 UTC (permalink / raw)
  To: neil; +Cc: gcc, gdr, pfeifer, rodrigc, zack

> Date: Sat, 24 Nov 2001 11:30:47 +0000
> From: Neil Booth <neil@daikokuya.demon.co.uk>

> Do other compilers written in C have something equivalent?

You can tell if they do, even if you don't have source code, by
compiling something like:

struct A {
  char int j;
} a;

const int * ip;

main() {
  *ip = 1;
  a = a;
  a.i = 1;
  a.j = a.j;
}

and get messages like:

terr.c:2: two or more data types in declaration of `j'
terr.c: In function `main':
terr.c:8: warning: assignment of read-only location
terr.c:10: structure has no member named `i'

If you fail to get at least all of these, or if you get extra ones,
then the compiler is inferior and doesn't have anything like
error_mark_node (in this context).  If you get roughly exactly these
messages, then the compiler must.

This is a fundemental feature of the compilers.

^ permalink raw reply	[flat|nested] 112+ messages in thread
* Re: ICE in change_address at emit_rtl.c
@ 2001-11-14 12:01 mike stump
  2001-11-14 14:57 ` Neil Booth
  0 siblings, 1 reply; 112+ messages in thread
From: mike stump @ 2001-11-14 12:01 UTC (permalink / raw)
  To: gdr, neil; +Cc: gcc, pfeifer, rodrigc, zack

> Date: Fri, 23 Nov 2001 19:14:38 +0000
> From: Neil Booth <neil@daikokuya.demon.co.uk>
> To: Gabriel Dos Reis <gdr@codesourcery.com>

> > | I've not been able to find a satisfactory fix; since I'm not a fan of
> > | error_mark_node-s I don't want to introduce yet more checks for them.
> > | I hate the error_mark_node stuff; it would be nice if it could go
> > | away.
> > 
> > What should be the alternative?

> Generate something that is valid, even if it's not what the user
> specified.

Then you generate a spew of bad messages making gcc substantially
worse from the users perspective, or you in the end rediscover why
error_mark_node exists.  In the end, you can merely replace
error_mark_node with something equivalent, but in the end I can't help
but wonder that you'll have exactly what you started with, just with
all the code shaken up, or something substantially worse.

The theoretics are simple and trivial, for all X, for all OP, nil OP X
--> nil, and X OP nil --> nil.  In our case, nil == error_mark_node.

We hand optimize the checks for nil, opps, I mean, error_mark_node, to
just a few places where they can be (assuming that they don't happen
in other places), which is icky and unmaintainable and what I feel you
are reeling against.  Instead, imagine a language where this check for
nil was part of the language and the user didn't have to write any
code for it, and you will `see' the beauty in the code.  Kinda like
reading the callbacks in C as virtual functions and abstract object
factories and the like, and not being phased by the spelling.
Callbacks in C are ugly to the untrained eye, to a C++ person, a few
specific styles of callbacks are less than gross, even, dare say,
beautiful.

You want it to be better, well, a language upgrade that manages the
code for you (proves where checks for nil need not go, and puts them
everywhere else) would be the best way and then port the code of the
compiler to that system.  By language upgrade, I also would include a
pure library solution to manage the complexity.

> I can only see one good thing they help with: suppression of
> cascading errors.  I can't believe it's too hard to find another way
> of solving that.

It isn't.  error_mark_node does that.  :-) If you can offer a
refinement on the system that appeals to the eye and doesn't kill
compiler performance and preserves the non-cascading nature of
error_mark_node, we are all ears.

^ permalink raw reply	[flat|nested] 112+ messages in thread
* Re: ICE in change_address at emit_rtl.c
@ 2001-11-13 16:47 dewar
  0 siblings, 0 replies; 112+ messages in thread
From: dewar @ 2001-11-13 16:47 UTC (permalink / raw)
  To: pfeifer, zack; +Cc: gcc, rodrigc

<<Careful! "confused by earlier errors, bailing out" means that there
_was_ an ICE but we pretended it didn't happen because there was an
earlier error.  In this case, the undeclared strcmp and exit are
unlikely to have corrupted data structures down the line and provoked
the ICE, which means there's still a real bug here.  Put declarations
of strcmp and exit just above main() in that test file, and I bet you
the bug comes back.

This is why ICE suppression is a Bad Thing.
>>

What we do in the equivalent case in Ada is to suppress by default, but have
a switch to unsuppress, and that has proved a useful compromise.

^ permalink raw reply	[flat|nested] 112+ messages in thread
* ICE in change_address at emit_rtl.c
@ 2001-11-13  6:18 Craig Rodrigues
  2001-11-13  8:25 ` Gerald Pfeifer
  0 siblings, 1 reply; 112+ messages in thread
From: Craig Rodrigues @ 2001-11-13  6:18 UTC (permalink / raw)
  To: gcc

Hi,

Can someone with access to Solaris look at PR 4821
in GNATS and tell me if it is still a problem:

http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view&pr=4821&database=gcc

I've found 19 reports in GNATS with the same ICE under Solaris:
Internal compiler error in change_address, at emit-rtl.c:1635

Thanks.
-- 
Craig Rodrigues        
http://www.gis.net/~craigr    
rodrigc@mediaone.net          

^ permalink raw reply	[flat|nested] 112+ messages in thread

end of thread, other threads:[~2001-11-27  0:45 UTC | newest]

Thread overview: 112+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2001-11-15 16:24 ICE in change_address at emit_rtl.c Richard Kenner
2001-11-15 17:08 ` Per Bothner
2001-11-25 14:33   ` Per Bothner
2001-11-25 13:44 ` Richard Kenner
  -- strict thread matches above, loose matches on Subject: below --
2001-11-17 17:09 mike stump
2001-11-17 20:34 ` Per Bothner
2001-11-26 14:58   ` Per Bothner
2001-11-26 14:51 ` mike stump
2001-11-17 11:46 Richard Kenner
2001-11-26 13:36 ` Richard Kenner
2001-11-17 11:23 mike stump
2001-11-26 13:29 ` mike stump
2001-11-17 11:19 mike stump
2001-11-26 12:54 ` mike stump
2001-11-16  9:26 Richard Kenner
2001-11-26  3:15 ` Richard Kenner
2001-11-15 23:55 Richard Kenner
2001-11-25 17:22 ` Richard Kenner
2001-11-15 20:12 Richard Kenner
2001-11-15 20:19 ` Per Bothner
2001-11-25 16:48   ` Per Bothner
2001-11-25 16:24 ` Richard Kenner
2001-11-15 17:44 Richard Kenner
2001-11-15 19:52 ` Per Bothner
2001-11-25 16:13   ` Per Bothner
2001-11-25 15:01 ` Richard Kenner
2001-11-15 17:25 Richard Kenner
2001-11-15 17:39 ` Per Bothner
2001-11-25 14:50   ` Per Bothner
2001-11-25 14:37 ` Richard Kenner
2001-11-15 14:19 Richard Kenner
2001-11-25  6:42 ` Richard Kenner
2001-11-15 13:20 Richard Kenner
2001-11-15 13:20 ` Neil Booth
2001-11-25  6:34   ` Neil Booth
2001-11-16  8:52 ` Richard Henderson
2001-11-25 23:22   ` Richard Henderson
2001-11-25  6:29 ` Richard Kenner
2001-11-15 12:28 Richard Kenner
2001-11-15 12:44 ` Neil Booth
2001-11-25  5:33   ` Neil Booth
2001-11-25  5:25 ` Richard Kenner
2001-11-15 11:05 Richard Kenner
2001-11-15 12:07 ` Neil Booth
2001-11-25  5:23   ` Neil Booth
2001-11-15 14:55 ` Per Bothner
2001-11-25 10:27   ` Per Bothner
2001-11-25  5:13 ` Richard Kenner
2001-11-15 10:14 Richard Kenner
2001-11-15 10:36 ` Neil Booth
2001-11-25  5:06   ` Neil Booth
2001-11-25  4:23 ` Richard Kenner
2001-11-15  8:15 mike stump
2001-11-15  8:43 ` Zack Weinberg
2001-11-24 23:06   ` Zack Weinberg
2001-11-15  8:02 mike stump
2001-11-15  9:51 ` Neil Booth
2001-11-25  4:02   ` Neil Booth
2001-11-14 12:01 mike stump
2001-11-14 14:57 ` Neil Booth
2001-11-14 16:35   ` Gabriel Dos Reis
2001-11-15  9:00   ` Mark Mitchell
2001-11-25  0:41     ` Mark Mitchell
2001-11-13 16:47 dewar
2001-11-13  6:18 Craig Rodrigues
2001-11-13  8:25 ` Gerald Pfeifer
2001-11-13  8:39   ` Craig Rodrigues
2001-11-13  8:40     ` Gerald Pfeifer
2001-11-13 14:52       ` Gerald Pfeifer
2001-11-13 16:41       ` Zack Weinberg
2001-11-13 16:55         ` Neil Booth
2001-11-13 18:07           ` Gabriel Dos Reis
2001-11-13 18:09             ` Neil Booth
2001-11-14  9:46               ` Zack Weinberg
2001-11-14 10:02                 ` Neil Booth
2001-11-14 10:06                   ` Joseph S. Myers
2001-11-14 10:10                     ` Neil Booth
2001-11-14 10:19                       ` Joseph S. Myers
2001-11-14 14:16                       ` Gabriel Dos Reis
2001-11-14 17:34                       ` Michal Moskal
2001-11-14 13:55                   ` Gabriel Dos Reis
2001-11-14 15:00                     ` Neil Booth
2001-11-14 16:50                       ` Gabriel Dos Reis
2001-11-14 12:43                 ` Phil Edwards
2001-11-15  0:55               ` Mark Mitchell
2001-11-15  1:22                 ` Gabriel Dos Reis
2001-11-15  1:44                   ` Neil Booth
2001-11-15  4:55                     ` Zack Weinberg
2001-11-15  5:19                       ` Joseph S. Myers
2001-11-15  6:58                         ` Zack Weinberg
2001-11-15  9:07                       ` Mark Mitchell
2001-11-17  9:40                         ` Zack Weinberg
2001-11-17  9:56                           ` Mark Mitchell
2001-11-18  4:44                             ` Zack Weinberg
2001-11-26 16:45                               ` Zack Weinberg
2001-11-26 11:55                             ` Mark Mitchell
2001-11-26 11:46                           ` Zack Weinberg
2001-11-25  0:42                         ` Mark Mitchell
2001-11-15  9:23                       ` Neil Booth
2001-11-17 10:37                         ` Zack Weinberg
2001-11-17 10:54                           ` Neil Booth
2001-11-26 12:25                             ` Neil Booth
2001-11-26 12:07                           ` Zack Weinberg
2001-11-25  3:50                         ` Neil Booth
2001-11-15  5:14                     ` Mark Mitchell
2001-11-16  6:27                     ` Fergus Henderson
2001-11-16  8:32                       ` Daniel Berlin
2001-11-25 22:49                         ` Daniel Berlin
2001-11-25 22:06                       ` Fergus Henderson
2001-11-15  3:02                   ` Zack Weinberg
2001-11-16  4:04               ` Fergus Henderson
2001-11-25 21:58                 ` Fergus Henderson

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).