public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
From: "trippels at gcc dot gnu.org" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug middle-end/68117] [6 Regression] error: invalid PHI argument <<< Unknown tree: <invalid tree code> >>>
Date: Thu, 29 Oct 2015 08:44:00 -0000	[thread overview]
Message-ID: <bug-68117-4-Fqa3rXLMS2@http.gcc.gnu.org/bugzilla/> (raw)
In-Reply-To: <bug-68117-4@http.gcc.gnu.org/bugzilla/>

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68117

--- Comment #6 from Markus Trippelsdorf <trippels at gcc dot gnu.org> ---
Hmm, it looks like r229437 may be innocent after all.
This morning I've hit another ICE that goes away if I add --save-temps 
to the command line:

trippels@gcc2-power8 tools % ~/gcc_6/usr/local/bin/g++ -ftemplate-depth-128 -O3
-finline-functions -Wno-inline -Wall -m64 -Winvalid-pch -DBOOST_ALL_NO_LIB=1
-DBOOST_BUILD_PCH_ENABLED -DBOOST_CHRONO_STATIC_LINK=1
-DBOOST_CHRONO_THREAD_DISABLED -DBOOST_HAS_ICU=1 -DBOOST_SYSTEM_NO_DEPRECATED
-DBOOST_SYSTEM_STATIC_LINK=1 -DBOOST_TEST_NO_AUTO_LINK=1
-DBOOST_TIMER_STATIC_LINK=1 -DBOOST_UBLAS_UNSUPPORTED_COMPILER=0 -DNDEBUG
-I"/home/trippels/boost_testing/results/boost/bin.v2/libs/math/test/gcc-6.0.0/release/link-static"
-I".." -I"../libs/math/include_private" -I"../libs/math/test" -c -o
"/home/trippels/boost_testing/results/boost/bin.v2/libs/math/test/test_bessel_y_prime.test/gcc-6.0.0/release/link-static/test_bessel_y_prime.o"
"../libs/math/test/test_bessel_y_prime.cpp"                                     
In file included from
/home/trippels/gcc_6/usr/local/include/c++/6.0.0/vector:65:0,
                 from
/home/trippels/gcc_6/usr/local/include/c++/6.0.0/bits/random.h:34,
                 from
/home/trippels/gcc_6/usr/local/include/c++/6.0.0/random:49,
                 from
/home/trippels/gcc_6/usr/local/include/c++/6.0.0/bits/stl_algo.h:66,
                 from
/home/trippels/gcc_6/usr/local/include/c++/6.0.0/algorithm:62,
                 from ../boost/math/tools/config.hpp:17,
                 from ../boost/math/tools/promotion.hpp:26,
                 from ../boost/math/special_functions/detail/round_fwd.hpp:12,
                 from ../boost/math/special_functions/math_fwd.hpp:26,
                 from ../libs/math/test/pch_light.hpp:9,
                 from ../libs/math/test/test_bessel_y_prime.cpp:6:
/home/trippels/gcc_6/usr/local/include/c++/6.0.0/bits/stl_bvector.h: In
function ‘void std::fill(std::_Bit_iterator, std::_Bit_iterator, const bool&)’:
/home/trippels/gcc_6/usr/local/include/c++/6.0.0/bits/stl_bvector.h:398:3:
internal compiler error: in fold_convert_loc, at fold-const.c:2201
   fill(_Bit_iterator __first, _Bit_iterator __last, const bool& __x)
   ^
Please submit a full bug report,
with preprocessed source if appropriate.
See <http://gcc.gnu.org/bugs.html> for instructions.
trippels@gcc2-power8 tools % ~/gcc_6/usr/local/bin/g++ --save-temps
-ftemplate-depth-128 -O3 -finline-functions -Wno-inline -Wall -m64
-Winvalid-pch -DBOOST_ALL_NO_LIB=1 -DBOOST_BUILD_PCH_ENABLED
-DBOOST_CHRONO_STATIC_LINK=1 -DBOOST_CHRONO_THREAD_DISABLED -DBOOST_HAS_ICU=1
-DBOOST_SYSTEM_NO_DEPRECATED -DBOOST_SYSTEM_STATIC_LINK=1
-DBOOST_TEST_NO_AUTO_LINK=1 -DBOOST_TIMER_STATIC_LINK=1
-DBOOST_UBLAS_UNSUPPORTED_COMPILER=0 -DNDEBUG
-I"/home/trippels/boost_testing/results/boost/bin.v2/libs/math/test/gcc-6.0.0/release/link-static"
-I".." -I"../libs/math/include_private" -I"../libs/math/test" -c -o
"/home/trippels/boost_testing/results/boost/bin.v2/libs/math/test/test_bessel_y_prime.test/gcc-6.0.0/release/link-static/test_bessel_y_prime.o"
"../libs/math/test/test_bessel_y_prime.cpp"
trippels@gcc2-power8 tools %  

Any hints on how to debug this further?
Looks like memory is corrupted somehow.
>From gcc-bugs-return-500879-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org Thu Oct 29 09:08:45 2015
Return-Path: <gcc-bugs-return-500879-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org>
Delivered-To: listarch-gcc-bugs@gcc.gnu.org
Received: (qmail 75944 invoked by alias); 29 Oct 2015 09:08:45 -0000
Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm
Precedence: bulk
List-Id: <gcc-bugs.gcc.gnu.org>
List-Archive: <http://gcc.gnu.org/ml/gcc-bugs/>
List-Post: <mailto:gcc-bugs@gcc.gnu.org>
List-Help: <mailto:gcc-bugs-help@gcc.gnu.org>
Sender: gcc-bugs-owner@gcc.gnu.org
Delivered-To: mailing list gcc-bugs@gcc.gnu.org
Received: (qmail 75902 invoked by uid 48); 29 Oct 2015 09:08:40 -0000
From: "trippels at gcc dot gnu.org" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug middle-end/68117] [6 Regression] error: invalid PHI argument <<< Unknown tree: <invalid tree code> >>>
Date: Thu, 29 Oct 2015 09:08:00 -0000
X-Bugzilla-Reason: CC
X-Bugzilla-Type: changed
X-Bugzilla-Watch-Reason: None
X-Bugzilla-Product: gcc
X-Bugzilla-Component: middle-end
X-Bugzilla-Version: 6.0
X-Bugzilla-Keywords:
X-Bugzilla-Severity: normal
X-Bugzilla-Who: trippels at gcc dot gnu.org
X-Bugzilla-Status: UNCONFIRMED
X-Bugzilla-Resolution:
X-Bugzilla-Priority: P3
X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org
X-Bugzilla-Target-Milestone: 6.0
X-Bugzilla-Flags:
X-Bugzilla-Changed-Fields:
Message-ID: <bug-68117-4-OCyMpriu9t@http.gcc.gnu.org/bugzilla/>
In-Reply-To: <bug-68117-4@http.gcc.gnu.org/bugzilla/>
References: <bug-68117-4@http.gcc.gnu.org/bugzilla/>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/
Auto-Submitted: auto-generated
MIME-Version: 1.0
X-SW-Source: 2015-10/txt/msg02434.txt.bz2
Content-length: 9308

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68117

--- Comment #7 from Markus Trippelsdorf <trippels at gcc dot gnu.org> ---
...
==123276== Conditional jump or move depends on uninitialised value(s)
==123276==    at 0x10B3FFB8: extract_range_from_binary_expr_1(value_range*,
tree_code, tree_node*, value_range*, value_range*) [clone .lto_priv.6782] (in
/home/trippels/gcc_6/usr/local/libexec/gcc/powerpc64le-unknown-linux-gnu/6.0.0/cc1plus)
==123276==    by 0x10AE79FF: extract_range_from_unary_expr_1(value_range*,
tree_code, tree_node*, value_range*, tree_node*) [clone .lto_priv.6507] (in
/home/trippels/gcc_6/usr/local/libexec/gcc/powerpc64le-unknown-linux-gnu/6.0.0/cc1plus)
==123276==    by 0x10A58D57: vrp_visit_stmt(gimple*, edge_def**, tree_node**)
(in
/home/trippels/gcc_6/usr/local/libexec/gcc/powerpc64le-unknown-linux-gnu/6.0.0/cc1plus)
==123276==    by 0x108BE377: ssa_propagate(ssa_prop_result (*)(gimple*,
edge_def**, tree_node**), ssa_prop_result (*)(gphi*)) (in
/home/trippels/gcc_6/usr/local/libexec/gcc/powerpc64le-unknown-linux-gnu/6.0.0/cc1plus)
==123276==    by 0x10A45E97: (anonymous
namespace)::pass_vrp::execute(function*) [clone .lto_priv.2433] (in
/home/trippels/gcc_6/usr/local/libexec/gcc/powerpc64le-unknown-linux-gnu/6.0.0/cc1plus)
==123276==    by 0x10633147: execute_one_pass(opt_pass*) (in
/home/trippels/gcc_6/usr/local/libexec/gcc/powerpc64le-unknown-linux-gnu/6.0.0/cc1plus)
==123276==    by 0x10736D8F: execute_pass_list(function*, opt_pass*) (in
/home/trippels/gcc_6/usr/local/libexec/gcc/powerpc64le-unknown-linux-gnu/6.0.0/cc1plus)
==123276==    by 0x10661947: cgraph_node::expand() (in
/home/trippels/gcc_6/usr/local/libexec/gcc/powerpc64le-unknown-linux-gnu/6.0.0/cc1plus)
==123276==    by 0x10630303: symbol_table::compile() (in
/home/trippels/gcc_6/usr/local/libexec/gcc/powerpc64le-unknown-linux-gnu/6.0.0/cc1plus)
==123276==    by 0x1064A783: symbol_table::finalize_compilation_unit() (in
/home/trippels/gcc_6/usr/local/libexec/gcc/powerpc64le-unknown-linux-gnu/6.0.0/cc1plus)
==123276==    by 0x105E7B4B: compile_file() [clone .lto_priv.3048] (in
/home/trippels/gcc_6/usr/local/libexec/gcc/powerpc64le-unknown-linux-gnu/6.0.0/cc1plus)
==123276==    by 0x10538363: toplev::main(int, char**) (in
/home/trippels/gcc_6/usr/local/libexec/gcc/powerpc64le-unknown-linux-gnu/6.0.0/cc1plus)
==123276==  Uninitialised value was created by a stack allocation
==123276==    at 0x10B3D598: extract_range_from_binary_expr_1(value_range*,
tree_code, tree_node*, value_range*, value_range*) [clone .lto_priv.6782] (in
/home/trippels/gcc_6/usr/local/libexec/gcc/powerpc64le-unknown-linux-gnu/6.0.0/cc1plus)
==123276==
==123276== Conditional jump or move depends on uninitialised value(s)
==123276==    at 0x10B3FFB8: extract_range_from_binary_expr_1(value_range*,
tree_code, tree_node*, value_range*, value_range*) [clone .lto_priv.6782] (in
/home/trippels/gcc_6/usr/local/libexec/gcc/powerpc64le-unknown-linux-gnu/6.0.0/cc1plus)
==123276==    by 0x10AE79FF: extract_range_from_unary_expr_1(value_range*,
tree_code, tree_node*, value_range*, tree_node*) [clone .lto_priv.6507] (in
/home/trippels/gcc_6/usr/local/libexec/gcc/powerpc64le-unknown-linux-gnu/6.0.0/cc1plus)
==123276==    by 0x10BF8217: simplify_stmt_for_jump_threading(gimple*, gimple*,
avail_exprs_stack*) [clone .lto_priv.6342] (in
/home/trippels/gcc_6/usr/local/libexec/gcc/powerpc64le-unknown-linux-gnu/6.0.0/cc1plus)
==123276==    by 0x10BF5DF3:
record_temporary_equivalences_from_stmts_at_dest(edge_def*, const_and_copies*,
avail_exprs_stack*, tree_node* (*)(gimple*, gimple*, avail_exprs_stack*), bool)
[clone .isra.44] (in
/home/trippels/gcc_6/usr/local/libexec/gcc/powerpc64le-unknown-linux-gnu/6.0.0/cc1plus)
==123276==    by 0x10BE8C6B: thread_across_edge(gcond*, edge_def*, bool,
const_and_copies*, avail_exprs_stack*, tree_node* (*)(gimple*, gimple*,
avail_exprs_stack*)) (in
/home/trippels/gcc_6/usr/local/libexec/gcc/powerpc64le-unknown-linux-gnu/6.0.0/cc1plus)
==123276==    by 0x10A46B7F: (anonymous
namespace)::pass_vrp::execute(function*) [clone .lto_priv.2433] (in
/home/trippels/gcc_6/usr/local/libexec/gcc/powerpc64le-unknown-linux-gnu/6.0.0/cc1plus)
==123276==    by 0x10633147: execute_one_pass(opt_pass*) (in
/home/trippels/gcc_6/usr/local/libexec/gcc/powerpc64le-unknown-linux-gnu/6.0.0/cc1plus)
==123276==    by 0x10736D8F: execute_pass_list(function*, opt_pass*) (in
/home/trippels/gcc_6/usr/local/libexec/gcc/powerpc64le-unknown-linux-gnu/6.0.0/cc1plus)
==123276==    by 0x10661947: cgraph_node::expand() (in
/home/trippels/gcc_6/usr/local/libexec/gcc/powerpc64le-unknown-linux-gnu/6.0.0/cc1plus)
==123276==    by 0x10630303: symbol_table::compile() (in
/home/trippels/gcc_6/usr/local/libexec/gcc/powerpc64le-unknown-linux-gnu/6.0.0/cc1plus)
==123276==    by 0x1064A783: symbol_table::finalize_compilation_unit() (in
/home/trippels/gcc_6/usr/local/libexec/gcc/powerpc64le-unknown-linux-gnu/6.0.0/cc1plus)
==123276==    by 0x105E7B4B: compile_file() [clone .lto_priv.3048] (in
/home/trippels/gcc_6/usr/local/libexec/gcc/powerpc64le-unknown-linux-gnu/6.0.0/cc1plus)
==123276==  Uninitialised value was created by a stack allocation
==123276==    at 0x10B3D598: extract_range_from_binary_expr_1(value_range*,
tree_code, tree_node*, value_range*, value_range*) [clone .lto_priv.6782] (in
/home/trippels/gcc_6/usr/local/libexec/gcc/powerpc64le-unknown-linux-gnu/6.0.0/cc1plus)
==123276==
==123276== Conditional jump or move depends on uninitialised value(s)
==123276==    at 0x109F79FC: estimate_numbers_of_iterations_loop(loop*) [clone
.lto_priv.6542] (in
/home/trippels/gcc_6/usr/local/libexec/gcc/powerpc64le-unknown-linux-gnu/6.0.0/cc1plus)
==123276==    by 0x109F6993: estimate_numbers_of_iterations() (in
/home/trippels/gcc_6/usr/local/libexec/gcc/powerpc64le-unknown-linux-gnu/6.0.0/cc1plus)
==123276==    by 0x109F1723: tree_unroll_loops_completely(bool, bool) (in
/home/trippels/gcc_6/usr/local/libexec/gcc/powerpc64le-unknown-linux-gnu/6.0.0/cc1plus)
==123276==    by 0x1090259B: (anonymous
namespace)::pass_complete_unrolli::execute(function*) [clone .lto_priv.2414]
(in
/home/trippels/gcc_6/usr/local/libexec/gcc/powerpc64le-unknown-linux-gnu/6.0.0/cc1plus)
==123276==    by 0x10633147: execute_one_pass(opt_pass*) (in
/home/trippels/gcc_6/usr/local/libexec/gcc/powerpc64le-unknown-linux-gnu/6.0.0/cc1plus)
==123276==    by 0x10736D8F: execute_pass_list(function*, opt_pass*) (in
/home/trippels/gcc_6/usr/local/libexec/gcc/powerpc64le-unknown-linux-gnu/6.0.0/cc1plus)
==123276==    by 0x10661947: cgraph_node::expand() (in
/home/trippels/gcc_6/usr/local/libexec/gcc/powerpc64le-unknown-linux-gnu/6.0.0/cc1plus)
==123276==    by 0x10630303: symbol_table::compile() (in
/home/trippels/gcc_6/usr/local/libexec/gcc/powerpc64le-unknown-linux-gnu/6.0.0/cc1plus)
==123276==    by 0x1064A783: symbol_table::finalize_compilation_unit() (in
/home/trippels/gcc_6/usr/local/libexec/gcc/powerpc64le-unknown-linux-gnu/6.0.0/cc1plus)
==123276==    by 0x105E7B4B: compile_file() [clone .lto_priv.3048] (in
/home/trippels/gcc_6/usr/local/libexec/gcc/powerpc64le-unknown-linux-gnu/6.0.0/cc1plus)
==123276==    by 0x10538363: toplev::main(int, char**) (in
/home/trippels/gcc_6/usr/local/libexec/gcc/powerpc64le-unknown-linux-gnu/6.0.0/cc1plus)
==123276==    by 0x10536DEF: main (in
/home/trippels/gcc_6/usr/local/libexec/gcc/powerpc64le-unknown-linux-gnu/6.0.0/cc1plus)
==123276==  Uninitialised value was created by a stack allocation
==123276==    at 0x109F6FD4: estimate_numbers_of_iterations_loop(loop*) [clone
.lto_priv.6542] (in
/home/trippels/gcc_6/usr/local/libexec/gcc/powerpc64le-unknown-linux-gnu/6.0.0/cc1plus)
==123276==
In file included from
/home/trippels/gcc_6/usr/local/include/c++/6.0.0/vector:65:0,
                 from
/home/trippels/gcc_6/usr/local/include/c++/6.0.0/bits/random.h:34,
                 from
/home/trippels/gcc_6/usr/local/include/c++/6.0.0/random:49,
                 from
/home/trippels/gcc_6/usr/local/include/c++/6.0.0/bits/stl_algo.h:66,
                 from
/home/trippels/gcc_6/usr/local/include/c++/6.0.0/algorithm:62,
                 from ../boost/math/tools/config.hpp:17,
                 from ../boost/math/tools/promotion.hpp:26,
                 from ../boost/math/special_functions/detail/round_fwd.hpp:12,
                 from ../boost/math/special_functions/math_fwd.hpp:26,
                 from ../libs/math/test/pch_light.hpp:9,
                 from ../libs/math/test/test_bessel_y_prime.cpp:6:
/home/trippels/gcc_6/usr/local/include/c++/6.0.0/bits/stl_bvector.h: In
function ‘void std::fill(std::_Bit_iterator, std::_Bit_iterator, const bool&)’:
/home/trippels/gcc_6/usr/local/include/c++/6.0.0/bits/stl_bvector.h:398:3:
internal compiler error: in fold_convert_loc, at fold-const.c:2201
>From gcc-bugs-return-500880-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org Thu Oct 29 09:14:45 2015
Return-Path: <gcc-bugs-return-500880-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org>
Delivered-To: listarch-gcc-bugs@gcc.gnu.org
Received: (qmail 86718 invoked by alias); 29 Oct 2015 09:14:45 -0000
Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm
Precedence: bulk
List-Id: <gcc-bugs.gcc.gnu.org>
List-Archive: <http://gcc.gnu.org/ml/gcc-bugs/>
List-Post: <mailto:gcc-bugs@gcc.gnu.org>
List-Help: <mailto:gcc-bugs-help@gcc.gnu.org>
Sender: gcc-bugs-owner@gcc.gnu.org
Delivered-To: mailing list gcc-bugs@gcc.gnu.org
Received: (qmail 86691 invoked by uid 48); 29 Oct 2015 09:14:41 -0000
From: "rguenth at gcc dot gnu.org" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug middle-end/68142] New: unsafe association of multiplication
Date: Thu, 29 Oct 2015 09:14:00 -0000
X-Bugzilla-Reason: CC
X-Bugzilla-Type: new
X-Bugzilla-Watch-Reason: None
X-Bugzilla-Product: gcc
X-Bugzilla-Component: middle-end
X-Bugzilla-Version: 6.0
X-Bugzilla-Keywords: wrong-code
X-Bugzilla-Severity: normal
X-Bugzilla-Who: rguenth at gcc dot gnu.org
X-Bugzilla-Status: UNCONFIRMED
X-Bugzilla-Resolution:
X-Bugzilla-Priority: P3
X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org
X-Bugzilla-Target-Milestone: ---
X-Bugzilla-Flags:
X-Bugzilla-Changed-Fields: bug_id short_desc product version bug_status keywords bug_severity priority component assigned_to reporter target_milestone
Message-ID: <bug-68142-4@http.gcc.gnu.org/bugzilla/>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/
Auto-Submitted: auto-generated
MIME-Version: 1.0
X-SW-Source: 2015-10/txt/msg02435.txt.bz2
Content-length: 840

https://gcc.gnu.org/bugzilla/show_bug.cgi?idh142

            Bug ID: 68142
           Summary: unsafe association of multiplication
           Product: gcc
           Version: 6.0
            Status: UNCONFIRMED
          Keywords: wrong-code
          Severity: normal
          Priority: P3
         Component: middle-end
          Assignee: unassigned at gcc dot gnu.org
          Reporter: rguenth at gcc dot gnu.org
  Target Milestone: ---

While working on PR66313 I noticed we fail for the following with
-fsanitize=undefined

int __attribute__((noinline,noclone))
i(int a)
{
  return (2 * a) * (__INT_MAX__/2 + 1);
}
int main()
{
  volatile tem = i(-1);
  return 0;
}

this is because we simplify the above to

;; Function i (null)
;; enabled by -tree-original


{
  return a * -2147483648(OVF);
}

which is of course invalid.


  parent reply	other threads:[~2015-10-29  8:44 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-10-27 18:42 [Bug middle-end/68117] New: [6 Regression] ICE: Segmentation fault building Firefox on ppc64le trippels at gcc dot gnu.org
2015-10-28 12:12 ` [Bug middle-end/68117] " rguenth at gcc dot gnu.org
2015-10-28 12:18 ` rguenth at gcc dot gnu.org
2015-10-28 12:27 ` trippels at gcc dot gnu.org
2015-10-28 13:38 ` trippels at gcc dot gnu.org
2015-10-29  8:44 ` trippels at gcc dot gnu.org [this message]
2015-10-29 10:19 ` [Bug middle-end/68117] [6 Regression] error: invalid PHI argument <<< Unknown tree: <invalid tree code> >>> rguenth at gcc dot gnu.org
2015-10-29 12:29 ` trippels at gcc dot gnu.org
2015-10-29 13:08 ` rguenther at suse dot de
2015-10-29 13:51 ` trippels at gcc dot gnu.org

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=bug-68117-4-Fqa3rXLMS2@http.gcc.gnu.org/bugzilla/ \
    --to=gcc-bugzilla@gcc.gnu.org \
    --cc=gcc-bugs@gcc.gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).