public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug tree-optimization/34448] [4.3 Regression] ICE in declare_inline_vars, at tree-inline.c:3243
  2007-12-12 22:33 [Bug tree-optimization/34448] New: [4.3 Regression] ICE in declare_inline_vars, at tree-inline.c:3243 tbm at cyrius dot com
@ 2007-12-12 22:33 ` tbm at cyrius dot com
  2007-12-12 23:03 ` rguenth at gcc dot gnu dot org
                   ` (13 subsequent siblings)
  14 siblings, 0 replies; 16+ messages in thread
From: tbm at cyrius dot com @ 2007-12-12 22:33 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #1 from tbm at cyrius dot com  2007-12-12 22:33 -------
/* Testcase by Martin Michlmayr <tbm@cyrius.com> */

typedef struct chunk_t chunk_t;
struct chunk_t
{
  unsigned char *ptr;
  long unsigned int len;
};
extern chunk_t asn1_wrap (chunk_t c, ...);
typedef struct linked_list_t linked_list_t;
chunk_t ietfAttr_list_encode (linked_list_t * list);
extern linked_list_t *groups;
static unsigned char ASN1_group_oid_str[] = {
  0x06
};
static const chunk_t ASN1_group_oid = {
  ASN1_group_oid_str, sizeof (ASN1_group_oid_str)
};
static chunk_t
build_attribute_type (const chunk_t type, chunk_t content)
{
  return type;
}
static chunk_t
build_attributes (void)
{
  return asn1_wrap (build_attribute_type (ASN1_group_oid,
                                          ietfAttr_list_encode (groups)));
}
void build_attr_cert (void)
{
  asn1_wrap (build_attributes ());
}


-- 


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


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

* [Bug tree-optimization/34448]  New: [4.3 Regression] ICE in declare_inline_vars, at tree-inline.c:3243
@ 2007-12-12 22:33 tbm at cyrius dot com
  2007-12-12 22:33 ` [Bug tree-optimization/34448] " tbm at cyrius dot com
                   ` (14 more replies)
  0 siblings, 15 replies; 16+ messages in thread
From: tbm at cyrius dot com @ 2007-12-12 22:33 UTC (permalink / raw)
  To: gcc-bugs

With current trunk:

(sid)3201:tbm@em64t: ~] /usr/lib/gcc-snapshot/bin/gcc -c -O -Wall
strongswan-build.c
strongswan-build.c: In function 'build_attr_cert':
strongswan-build.c:27: internal compiler error: in declare_inline_vars, at
tree-inline.c:3243
Please submit a full bug report,
with preprocessed source if appropriate.

This happens with
gcc version 4.3.0 20071212 (experimental) [trunk revision 127646] (Debian
20071212-1)
but didn't happen with
gcc version 4.3.0 20071207 (experimental) [trunk revision 127646] (Debian
20071206-1)


-- 
           Summary: [4.3 Regression] ICE in declare_inline_vars, at tree-
                    inline.c:3243
           Product: gcc
           Version: 4.3.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: tree-optimization
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: tbm at cyrius dot com


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


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

* [Bug tree-optimization/34448] [4.3 Regression] ICE in declare_inline_vars, at tree-inline.c:3243
  2007-12-12 22:33 [Bug tree-optimization/34448] New: [4.3 Regression] ICE in declare_inline_vars, at tree-inline.c:3243 tbm at cyrius dot com
  2007-12-12 22:33 ` [Bug tree-optimization/34448] " tbm at cyrius dot com
@ 2007-12-12 23:03 ` rguenth at gcc dot gnu dot org
  2007-12-12 23:08 ` rguenth at gcc dot gnu dot org
                   ` (12 subsequent siblings)
  14 siblings, 0 replies; 16+ messages in thread
From: rguenth at gcc dot gnu dot org @ 2007-12-12 23:03 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #2 from rguenth at gcc dot gnu dot org  2007-12-12 23:03 -------
(your trunk revision reporting is broken)

On which architecture?  This works for me on i686 with r130793.


-- 


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


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

* [Bug tree-optimization/34448] [4.3 Regression] ICE in declare_inline_vars, at tree-inline.c:3243
  2007-12-12 22:33 [Bug tree-optimization/34448] New: [4.3 Regression] ICE in declare_inline_vars, at tree-inline.c:3243 tbm at cyrius dot com
  2007-12-12 22:33 ` [Bug tree-optimization/34448] " tbm at cyrius dot com
  2007-12-12 23:03 ` rguenth at gcc dot gnu dot org
@ 2007-12-12 23:08 ` rguenth at gcc dot gnu dot org
  2007-12-12 23:27 ` pinskia at gcc dot gnu dot org
                   ` (11 subsequent siblings)
  14 siblings, 0 replies; 16+ messages in thread
From: rguenth at gcc dot gnu dot org @ 2007-12-12 23:08 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #3 from rguenth at gcc dot gnu dot org  2007-12-12 23:08 -------
Ok, I see it on x86_64 with r130795 and it didn't reproduce before SVN update
so it identified

2007-12-12  Aldy Hernandez  <aldyh@redhat.com>

        PR tree-optimization/32901
        * gimplify.c (gimplify_modify_expr_rhs): Handle the case when we
        are assigning from a constant constructor.
        Fix wrapping in function comment.

Aldy, please have a look.


-- 

rguenth at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |aldyh at gcc dot gnu dot org
             Status|UNCONFIRMED                 |NEW
     Ever Confirmed|0                           |1
   Last reconfirmed|0000-00-00 00:00:00         |2007-12-12 23:08:33
               date|                            |
   Target Milestone|---                         |4.3.0


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


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

* [Bug tree-optimization/34448] [4.3 Regression] ICE in declare_inline_vars, at tree-inline.c:3243
  2007-12-12 22:33 [Bug tree-optimization/34448] New: [4.3 Regression] ICE in declare_inline_vars, at tree-inline.c:3243 tbm at cyrius dot com
                   ` (2 preceding siblings ...)
  2007-12-12 23:08 ` rguenth at gcc dot gnu dot org
@ 2007-12-12 23:27 ` pinskia at gcc dot gnu dot org
  2007-12-12 23:33 ` aldyh at gcc dot gnu dot org
                   ` (10 subsequent siblings)
  14 siblings, 0 replies; 16+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2007-12-12 23:27 UTC (permalink / raw)
  To: gcc-bugs



-- 

pinskia at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Severity|normal                      |blocker
           Keywords|                            |ice-on-valid-code


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


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

* [Bug tree-optimization/34448] [4.3 Regression] ICE in declare_inline_vars, at tree-inline.c:3243
  2007-12-12 22:33 [Bug tree-optimization/34448] New: [4.3 Regression] ICE in declare_inline_vars, at tree-inline.c:3243 tbm at cyrius dot com
                   ` (3 preceding siblings ...)
  2007-12-12 23:27 ` pinskia at gcc dot gnu dot org
@ 2007-12-12 23:33 ` aldyh at gcc dot gnu dot org
  2007-12-13  0:08 ` jakub at gcc dot gnu dot org
                   ` (9 subsequent siblings)
  14 siblings, 0 replies; 16+ messages in thread
From: aldyh at gcc dot gnu dot org @ 2007-12-12 23:33 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #4 from aldyh at gcc dot gnu dot org  2007-12-12 23:33 -------
I'll take care of this.


-- 

aldyh at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
         AssignedTo|unassigned at gcc dot gnu   |aldyh at gcc dot gnu dot org
                   |dot org                     |
             Status|NEW                         |ASSIGNED


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


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

* [Bug tree-optimization/34448] [4.3 Regression] ICE in declare_inline_vars, at tree-inline.c:3243
  2007-12-12 22:33 [Bug tree-optimization/34448] New: [4.3 Regression] ICE in declare_inline_vars, at tree-inline.c:3243 tbm at cyrius dot com
                   ` (4 preceding siblings ...)
  2007-12-12 23:33 ` aldyh at gcc dot gnu dot org
@ 2007-12-13  0:08 ` jakub at gcc dot gnu dot org
  2007-12-13 21:00 ` aldyh at gcc dot gnu dot org
                   ` (8 subsequent siblings)
  14 siblings, 0 replies; 16+ messages in thread
From: jakub at gcc dot gnu dot org @ 2007-12-13  0:08 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #5 from jakub at gcc dot gnu dot org  2007-12-13 00:08 -------
ret = GS_OK; } ret = GS_UNHANDLED; looks suspicious, but
@@ -3492,6 +3492,7 @@ gimplify_modify_expr_rhs (tree *expr_p, 
          {
            *from_p = DECL_INITIAL (*from_p);
            ret = GS_OK;
+           break;
          }
        ret = GS_UNHANDLED;
        break;
doesn't cure this.  But if you prevent this optimization whenever
gimplify_init_constructor would:
        if (valid_const_initializer
            && num_nonzero_elements > 1
            && TREE_READONLY (object)
            && TREE_CODE (object) == VAR_DECL)
or
if (size > 0 && !can_move_by_pieces (size, align))
then this bug will go away.

BTW, in addition to the volatile check suggested by Mark, shouldn't it test
also
!TREE_SIDE_EFFECTS (DECL_INITIAL (...)))?  Otherwise:
struct A { int i, j; };
static struct A a, b;
int foo (int x, int y)
{
  const struct A i = { x++, y++ };
  a = i;
  b = i;
  return x + y;
}
could evaluate multiple times.  Actually this is a wrong example, because i
here
was already gimplified and while for constant initializer
gimplify_init_constructor puts DECL_INITIAL back (valid_const_initializer &&
&& num_nonzero_elements > 1 && TREE_READONLY (object) && TREE_CODE (object) ==
VAR_DECL case), for non-constant DECL_INITIAL will be NULL.


-- 


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


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

* [Bug tree-optimization/34448] [4.3 Regression] ICE in declare_inline_vars, at tree-inline.c:3243
  2007-12-12 22:33 [Bug tree-optimization/34448] New: [4.3 Regression] ICE in declare_inline_vars, at tree-inline.c:3243 tbm at cyrius dot com
                   ` (5 preceding siblings ...)
  2007-12-13  0:08 ` jakub at gcc dot gnu dot org
@ 2007-12-13 21:00 ` aldyh at gcc dot gnu dot org
  2007-12-13 23:10 ` jakub at gcc dot gnu dot org
                   ` (7 subsequent siblings)
  14 siblings, 0 replies; 16+ messages in thread
From: aldyh at gcc dot gnu dot org @ 2007-12-13 21:00 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #6 from aldyh at gcc dot gnu dot org  2007-12-13 21:00 -------
Shouldn't that be:

        if (valid_const_initializer
            && num_nonzero_elements > 1
            && TREE_READONLY (object)
            && TREE_CODE (object) == VAR_DECL

            && !DECL_NAME(object) <---- here

since we won't create the "C" temporary unless !DECL_NAME(object)??

Even with this change (with the DECL_NAME check), the inline problem doesn't go
away.  I'll look into it.


-- 


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


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

* [Bug tree-optimization/34448] [4.3 Regression] ICE in declare_inline_vars, at tree-inline.c:3243
  2007-12-12 22:33 [Bug tree-optimization/34448] New: [4.3 Regression] ICE in declare_inline_vars, at tree-inline.c:3243 tbm at cyrius dot com
                   ` (6 preceding siblings ...)
  2007-12-13 21:00 ` aldyh at gcc dot gnu dot org
@ 2007-12-13 23:10 ` jakub at gcc dot gnu dot org
  2007-12-14  0:12 ` aldyh at gcc dot gnu dot org
                   ` (6 subsequent siblings)
  14 siblings, 0 replies; 16+ messages in thread
From: jakub at gcc dot gnu dot org @ 2007-12-13 23:10 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #7 from jakub at gcc dot gnu dot org  2007-12-13 23:10 -------
Created an attachment (id=14748)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=14748&action=view)
hack

What I meant is roughly this.  Except that this has horrible code duplication
with gimplify_init_ctor and so wouldn't be really maintanable, so take it just
as a proof of concept.  For aggregates this optimization wouldn't be done if
gimplify_init_ctor later loads it from memory anyway, or if it would try to
change *to_p into TREE_STATIC (the latter is what breaks the inliner), for
vectors/complex it would accept it always.


-- 


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


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

* [Bug tree-optimization/34448] [4.3 Regression] ICE in declare_inline_vars, at tree-inline.c:3243
  2007-12-12 22:33 [Bug tree-optimization/34448] New: [4.3 Regression] ICE in declare_inline_vars, at tree-inline.c:3243 tbm at cyrius dot com
                   ` (7 preceding siblings ...)
  2007-12-13 23:10 ` jakub at gcc dot gnu dot org
@ 2007-12-14  0:12 ` aldyh at gcc dot gnu dot org
  2007-12-14  7:46 ` jakub at gcc dot gnu dot org
                   ` (5 subsequent siblings)
  14 siblings, 0 replies; 16+ messages in thread
From: aldyh at gcc dot gnu dot org @ 2007-12-14  0:12 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #8 from aldyh at gcc dot gnu dot org  2007-12-14 00:12 -------
Gosh, I was going through a similar path, and was horribly depressed at the
code duplication.  I'll come up with some abstraction which we can use in both
gimplify_init_ctor and gimplify_modify_expr_rhs.  Thanks.


-- 


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


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

* [Bug tree-optimization/34448] [4.3 Regression] ICE in declare_inline_vars, at tree-inline.c:3243
  2007-12-12 22:33 [Bug tree-optimization/34448] New: [4.3 Regression] ICE in declare_inline_vars, at tree-inline.c:3243 tbm at cyrius dot com
                   ` (8 preceding siblings ...)
  2007-12-14  0:12 ` aldyh at gcc dot gnu dot org
@ 2007-12-14  7:46 ` jakub at gcc dot gnu dot org
  2007-12-14 16:10 ` aldyh at gcc dot gnu dot org
                   ` (4 subsequent siblings)
  14 siblings, 0 replies; 16+ messages in thread
From: jakub at gcc dot gnu dot org @ 2007-12-14  7:46 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #9 from jakub at gcc dot gnu dot org  2007-12-14 07:46 -------
Perhaps adding a bool argument to gimplify_init_constructor would solve it,
the current callers would pass false, your new code would call it too and pass
true.  If this flag would be true, gimplify_init_ctor wouldn't create the new
vars or make stuff static, but instead just signalize a failure to the caller.


-- 


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


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

* [Bug tree-optimization/34448] [4.3 Regression] ICE in declare_inline_vars, at tree-inline.c:3243
  2007-12-12 22:33 [Bug tree-optimization/34448] New: [4.3 Regression] ICE in declare_inline_vars, at tree-inline.c:3243 tbm at cyrius dot com
                   ` (9 preceding siblings ...)
  2007-12-14  7:46 ` jakub at gcc dot gnu dot org
@ 2007-12-14 16:10 ` aldyh at gcc dot gnu dot org
  2007-12-20 20:02 ` jakub at gcc dot gnu dot org
                   ` (3 subsequent siblings)
  14 siblings, 0 replies; 16+ messages in thread
From: aldyh at gcc dot gnu dot org @ 2007-12-14 16:10 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #10 from aldyh at gcc dot gnu dot org  2007-12-14 16:10 -------
Testing a patch.


-- 


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


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

* [Bug tree-optimization/34448] [4.3 Regression] ICE in declare_inline_vars, at tree-inline.c:3243
  2007-12-12 22:33 [Bug tree-optimization/34448] New: [4.3 Regression] ICE in declare_inline_vars, at tree-inline.c:3243 tbm at cyrius dot com
                   ` (10 preceding siblings ...)
  2007-12-14 16:10 ` aldyh at gcc dot gnu dot org
@ 2007-12-20 20:02 ` jakub at gcc dot gnu dot org
  2008-01-02 18:59 ` mmitchel at gcc dot gnu dot org
                   ` (2 subsequent siblings)
  14 siblings, 0 replies; 16+ messages in thread
From: jakub at gcc dot gnu dot org @ 2007-12-20 20:02 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #11 from jakub at gcc dot gnu dot org  2007-12-20 20:01 -------
*** Bug 34467 has been marked as a duplicate of this bug. ***


-- 


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


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

* [Bug tree-optimization/34448] [4.3 Regression] ICE in declare_inline_vars, at tree-inline.c:3243
  2007-12-12 22:33 [Bug tree-optimization/34448] New: [4.3 Regression] ICE in declare_inline_vars, at tree-inline.c:3243 tbm at cyrius dot com
                   ` (11 preceding siblings ...)
  2007-12-20 20:02 ` jakub at gcc dot gnu dot org
@ 2008-01-02 18:59 ` mmitchel at gcc dot gnu dot org
  2008-01-04 15:07 ` aldyh at gcc dot gnu dot org
  2008-01-04 15:18 ` jakub at gcc dot gnu dot org
  14 siblings, 0 replies; 16+ messages in thread
From: mmitchel at gcc dot gnu dot org @ 2008-01-02 18:59 UTC (permalink / raw)
  To: gcc-bugs



-- 

mmitchel at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Priority|P3                          |P1


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


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

* [Bug tree-optimization/34448] [4.3 Regression] ICE in declare_inline_vars, at tree-inline.c:3243
  2007-12-12 22:33 [Bug tree-optimization/34448] New: [4.3 Regression] ICE in declare_inline_vars, at tree-inline.c:3243 tbm at cyrius dot com
                   ` (12 preceding siblings ...)
  2008-01-02 18:59 ` mmitchel at gcc dot gnu dot org
@ 2008-01-04 15:07 ` aldyh at gcc dot gnu dot org
  2008-01-04 15:18 ` jakub at gcc dot gnu dot org
  14 siblings, 0 replies; 16+ messages in thread
From: aldyh at gcc dot gnu dot org @ 2008-01-04 15:07 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #12 from aldyh at gcc dot gnu dot org  2008-01-04 14:50 -------
Subject: Bug 34448

Author: aldyh
Date: Fri Jan  4 14:49:28 2008
New Revision: 131323

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=131323
Log:
        PR tree-optimization/34448
        PR tree-optimization/34465
        * gimplify.c (gimplify_init_constructor): Add new parameter
        notify_temp_creation.  Use it.
        (gimplify_modify_expr_rhs): Take volatiles into account when
        optimizing constructors.
        Do not optimize constructors if gimplify_init_constructor will dump to
        memory.
        * gcc.dg/tree-ssa/pr32901.c: Tests const volatiles.
        * gcc.c-torture/compile/pr34448.c: New.

Added:
    trunk/gcc/testsuite/gcc.c-torture/compile/pr34448.c
Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/gimplify.c
    trunk/gcc/testsuite/gcc.dg/tree-ssa/pr32901.c


-- 


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


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

* [Bug tree-optimization/34448] [4.3 Regression] ICE in declare_inline_vars, at tree-inline.c:3243
  2007-12-12 22:33 [Bug tree-optimization/34448] New: [4.3 Regression] ICE in declare_inline_vars, at tree-inline.c:3243 tbm at cyrius dot com
                   ` (13 preceding siblings ...)
  2008-01-04 15:07 ` aldyh at gcc dot gnu dot org
@ 2008-01-04 15:18 ` jakub at gcc dot gnu dot org
  14 siblings, 0 replies; 16+ messages in thread
From: jakub at gcc dot gnu dot org @ 2008-01-04 15:18 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #13 from jakub at gcc dot gnu dot org  2008-01-04 15:05 -------
Fixed.


-- 

jakub at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|ASSIGNED                    |RESOLVED
         Resolution|                            |FIXED


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


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

end of thread, other threads:[~2008-01-04 15:06 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2007-12-12 22:33 [Bug tree-optimization/34448] New: [4.3 Regression] ICE in declare_inline_vars, at tree-inline.c:3243 tbm at cyrius dot com
2007-12-12 22:33 ` [Bug tree-optimization/34448] " tbm at cyrius dot com
2007-12-12 23:03 ` rguenth at gcc dot gnu dot org
2007-12-12 23:08 ` rguenth at gcc dot gnu dot org
2007-12-12 23:27 ` pinskia at gcc dot gnu dot org
2007-12-12 23:33 ` aldyh at gcc dot gnu dot org
2007-12-13  0:08 ` jakub at gcc dot gnu dot org
2007-12-13 21:00 ` aldyh at gcc dot gnu dot org
2007-12-13 23:10 ` jakub at gcc dot gnu dot org
2007-12-14  0:12 ` aldyh at gcc dot gnu dot org
2007-12-14  7:46 ` jakub at gcc dot gnu dot org
2007-12-14 16:10 ` aldyh at gcc dot gnu dot org
2007-12-20 20:02 ` jakub at gcc dot gnu dot org
2008-01-02 18:59 ` mmitchel at gcc dot gnu dot org
2008-01-04 15:07 ` aldyh at gcc dot gnu dot org
2008-01-04 15:18 ` jakub at gcc dot gnu dot org

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).