* [PATCH] Fix compile-time hog in MPX boundary checking (PR target/84988). @ 2018-03-20 19:37 Martin Liška 2018-03-20 19:40 ` Jeff Law 0 siblings, 1 reply; 9+ messages in thread From: Martin Liška @ 2018-03-20 19:37 UTC (permalink / raw) To: gcc-patches [-- Attachment #1: Type: text/plain, Size: 529 bytes --] Hi. This is a work-around to not iterate all members of array that can be huge. As MPX will be removed in GCC 9.x, I hope it's acceptable. I don't want to come up with a new param for it. Survives tests&bootstrap on x86_64-linux-gnu. Martin gcc/ChangeLog: 2018-03-20 Martin Liska <mliska@suse.cz> PR target/84988 * tree-chkp.c (CHKP_ARRAY_MAX_CHECK_STEPS): Define a new macro. (chkp_find_bound_slots_1): Limit number of iterations. --- gcc/tree-chkp.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) [-- Attachment #2: 0001-Fix-compile-time-hog-in-MPX-boundary-checking-PR-tar.patch --] [-- Type: text/x-patch, Size: 803 bytes --] diff --git a/gcc/tree-chkp.c b/gcc/tree-chkp.c index 40497ce94e7..d10e6c40423 100644 --- a/gcc/tree-chkp.c +++ b/gcc/tree-chkp.c @@ -1688,6 +1688,10 @@ chkp_find_bounds_for_elem (tree elem, tree *all_bounds, } } +/* Maximum number of elements to check in an array. */ + +#define CHKP_ARRAY_MAX_CHECK_STEPS 4096 + /* Fill HAVE_BOUND output bitmap with information about bounds requred for object of type TYPE. @@ -1733,7 +1737,9 @@ chkp_find_bound_slots_1 (const_tree type, bitmap have_bound, || integer_minus_onep (maxval)) return; - for (cur = 0; cur <= TREE_INT_CST_LOW (maxval); cur++) + for (cur = 0; + cur <= MIN (CHKP_ARRAY_MAX_CHECK_STEPS, TREE_INT_CST_LOW (maxval)); + cur++) chkp_find_bound_slots_1 (etype, have_bound, offs + cur * esize); } } ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] Fix compile-time hog in MPX boundary checking (PR target/84988). 2018-03-20 19:37 [PATCH] Fix compile-time hog in MPX boundary checking (PR target/84988) Martin Liška @ 2018-03-20 19:40 ` Jeff Law 2018-03-20 21:53 ` Richard Sandiford 0 siblings, 1 reply; 9+ messages in thread From: Jeff Law @ 2018-03-20 19:40 UTC (permalink / raw) To: Martin Liška, gcc-patches On 03/20/2018 01:36 PM, Martin LiÅ¡ka wrote: > Hi. > > This is a work-around to not iterate all members of array that can be huge. > As MPX will be removed in GCC 9.x, I hope it's acceptable. I don't want > to come > up with a new param for it. > > Survives tests&bootstrap on x86_64-linux-gnu. > > Martin > > gcc/ChangeLog: > > 2018-03-20 Martin Liska <mliska@suse.cz> > >     PR target/84988 >     * tree-chkp.c (CHKP_ARRAY_MAX_CHECK_STEPS): Define a new macro. >     (chkp_find_bound_slots_1): Limit number of iterations. Or just CLOSE/WONTFIX :-) I've got no objections here -- we want to minimize the effort put into CHKP given its going to be deprecated. jeff ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] Fix compile-time hog in MPX boundary checking (PR target/84988). 2018-03-20 19:40 ` Jeff Law @ 2018-03-20 21:53 ` Richard Sandiford 2018-03-21 9:40 ` Richard Biener 0 siblings, 1 reply; 9+ messages in thread From: Richard Sandiford @ 2018-03-20 21:53 UTC (permalink / raw) To: Jeff Law; +Cc: Martin Liška, gcc-patches Jeff Law <law@redhat.com> writes: > On 03/20/2018 01:36 PM, Martin Liška wrote: >> Hi. >> >> This is a work-around to not iterate all members of array that can be huge. >> As MPX will be removed in GCC 9.x, I hope it's acceptable. I don't want >> to come >> up with a new param for it. >> >> Survives tests&bootstrap on x86_64-linux-gnu. >> >> Martin >> >> gcc/ChangeLog: >> >> 2018-03-20 Martin Liska <mliska@suse.cz> >> >> PR target/84988 >> * tree-chkp.c (CHKP_ARRAY_MAX_CHECK_STEPS): Define a new macro. >> (chkp_find_bound_slots_1): Limit number of iterations. > Or just CLOSE/WONTFIX :-) > > I've got no objections here -- we want to minimize the effort put into > CHKP given its going to be deprecated. The problem is that this affects normal configs, not just ones with MPX enabled. Thanks, Richard ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] Fix compile-time hog in MPX boundary checking (PR target/84988). 2018-03-20 21:53 ` Richard Sandiford @ 2018-03-21 9:40 ` Richard Biener 2018-03-21 9:47 ` Martin Liška 0 siblings, 1 reply; 9+ messages in thread From: Richard Biener @ 2018-03-21 9:40 UTC (permalink / raw) To: Jeff Law, Martin Liška, GCC Patches, Richard Sandiford, Ilya Enkovich On Tue, Mar 20, 2018 at 10:44 PM, Richard Sandiford <richard.sandiford@linaro.org> wrote: > Jeff Law <law@redhat.com> writes: >> On 03/20/2018 01:36 PM, Martin Liška wrote: >>> Hi. >>> >>> This is a work-around to not iterate all members of array that can be huge. >>> As MPX will be removed in GCC 9.x, I hope it's acceptable. I don't want >>> to come >>> up with a new param for it. >>> >>> Survives tests&bootstrap on x86_64-linux-gnu. >>> >>> Martin >>> >>> gcc/ChangeLog: >>> >>> 2018-03-20 Martin Liska <mliska@suse.cz> >>> >>> PR target/84988 >>> * tree-chkp.c (CHKP_ARRAY_MAX_CHECK_STEPS): Define a new macro. >>> (chkp_find_bound_slots_1): Limit number of iterations. >> Or just CLOSE/WONTFIX :-) >> >> I've got no objections here -- we want to minimize the effort put into >> CHKP given its going to be deprecated. > > The problem is that this affects normal configs, not just ones with > MPX enabled. Indeed. It get's called via #0 chkp_find_bound_slots_1 (type=0x7ffff69ee9d8, have_bound=0x2ed3868, offs=0) at /space/rguenther/src/svn/early-lto-debug/gcc/tree-chkp.c:1708 #1 0x0000000001379a13 in chkp_find_bound_slots (type=0x7ffff69ee9d8, res=0x2ed3868) at /space/rguenther/src/svn/early-lto-debug/gcc/tree-chkp.c:1754 #2 0x0000000001377054 in chkp_type_bounds_count (type=0x7ffff69ee9d8) at /space/rguenther/src/svn/early-lto-debug/gcc/tree-chkp.c:1009 #3 0x00000000016c664f in ix86_function_arg_advance (cum_v=..., mode=E_BLKmode, type=0x7ffff69ee9d8, named=true) at /space/rguenther/src/svn/early-lto-debug/gcc/config/i386/i386.c:8621 8616 { 8617 /* Track if there are outgoing arguments on stack. */ 8618 if (cum->caller) 8619 cfun->machine->outgoing_args_on_stack = true; 8620 8621 cum->bnds_in_bt = chkp_type_bounds_count (type); 8622 } 8623 } 8624 8625 /* Define where to put the arguments to a function. but I think we know POINTER_BOUNDS_TYPE_P etc. never return true if -fcheck-pointer-* or -mmpx is not enabled, right? So we can guard the above call appropriately and save some compile-time for all of us? Richard. > Thanks, > Richard ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] Fix compile-time hog in MPX boundary checking (PR target/84988). 2018-03-21 9:40 ` Richard Biener @ 2018-03-21 9:47 ` Martin Liška 2018-03-21 12:45 ` Martin Liška 0 siblings, 1 reply; 9+ messages in thread From: Martin Liška @ 2018-03-21 9:47 UTC (permalink / raw) To: Richard Biener, Jeff Law, GCC Patches, Richard Sandiford, Ilya Enkovich On 03/21/2018 10:36 AM, Richard Biener wrote: > On Tue, Mar 20, 2018 at 10:44 PM, Richard Sandiford > <richard.sandiford@linaro.org> wrote: >> Jeff Law <law@redhat.com> writes: >>> On 03/20/2018 01:36 PM, Martin LiÅ¡ka wrote: >>>> Hi. >>>> >>>> This is a work-around to not iterate all members of array that can be huge. >>>> As MPX will be removed in GCC 9.x, I hope it's acceptable. I don't want >>>> to come >>>> up with a new param for it. >>>> >>>> Survives tests&bootstrap on x86_64-linux-gnu. >>>> >>>> Martin >>>> >>>> gcc/ChangeLog: >>>> >>>> 2018-03-20 Martin Liska <mliska@suse.cz> >>>> >>>> PR target/84988 >>>> * tree-chkp.c (CHKP_ARRAY_MAX_CHECK_STEPS): Define a new macro. >>>> (chkp_find_bound_slots_1): Limit number of iterations. >>> Or just CLOSE/WONTFIX :-) >>> >>> I've got no objections here -- we want to minimize the effort put into >>> CHKP given its going to be deprecated. >> >> The problem is that this affects normal configs, not just ones with >> MPX enabled. > > Indeed. It get's called via > > #0 chkp_find_bound_slots_1 (type=0x7ffff69ee9d8, have_bound=0x2ed3868, offs=0) > at /space/rguenther/src/svn/early-lto-debug/gcc/tree-chkp.c:1708 > #1 0x0000000001379a13 in chkp_find_bound_slots (type=0x7ffff69ee9d8, > res=0x2ed3868) > at /space/rguenther/src/svn/early-lto-debug/gcc/tree-chkp.c:1754 > #2 0x0000000001377054 in chkp_type_bounds_count (type=0x7ffff69ee9d8) > at /space/rguenther/src/svn/early-lto-debug/gcc/tree-chkp.c:1009 > #3 0x00000000016c664f in ix86_function_arg_advance (cum_v=..., > mode=E_BLKmode, type=0x7ffff69ee9d8, named=true) > at /space/rguenther/src/svn/early-lto-debug/gcc/config/i386/i386.c:8621 > 8616 { > 8617 /* Track if there are outgoing arguments on stack. */ > 8618 if (cum->caller) > 8619 cfun->machine->outgoing_args_on_stack = true; > 8620 > 8621 cum->bnds_in_bt = chkp_type_bounds_count (type); > 8622 } > 8623 } > 8624 > 8625 /* Define where to put the arguments to a function. > > but I think we know POINTER_BOUNDS_TYPE_P etc. never return > true if -fcheck-pointer-* or -mmpx is not enabled, right? So we can > guard the above call appropriately and save some compile-time > for all of us? Good observation, let me enhance the patch for the PR. Martin > > Richard. > >> Thanks, >> Richard ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] Fix compile-time hog in MPX boundary checking (PR target/84988). 2018-03-21 9:47 ` Martin Liška @ 2018-03-21 12:45 ` Martin Liška 2018-03-21 13:26 ` Jakub Jelinek 0 siblings, 1 reply; 9+ messages in thread From: Martin Liška @ 2018-03-21 12:45 UTC (permalink / raw) To: Richard Biener, Jeff Law, GCC Patches, Richard Sandiford, Ilya Enkovich [-- Attachment #1: Type: text/plain, Size: 2935 bytes --] On 03/21/2018 10:39 AM, Martin LiÅ¡ka wrote: > On 03/21/2018 10:36 AM, Richard Biener wrote: >> On Tue, Mar 20, 2018 at 10:44 PM, Richard Sandiford >> <richard.sandiford@linaro.org> wrote: >>> Jeff Law <law@redhat.com> writes: >>>> On 03/20/2018 01:36 PM, Martin LiÅ¡ka wrote: >>>>> Hi. >>>>> >>>>> This is a work-around to not iterate all members of array that can be huge. >>>>> As MPX will be removed in GCC 9.x, I hope it's acceptable. I don't want >>>>> to come >>>>> up with a new param for it. >>>>> >>>>> Survives tests&bootstrap on x86_64-linux-gnu. >>>>> >>>>> Martin >>>>> >>>>> gcc/ChangeLog: >>>>> >>>>> 2018-03-20 Martin Liska <mliska@suse.cz> >>>>> >>>>>     PR target/84988 >>>>>     * tree-chkp.c (CHKP_ARRAY_MAX_CHECK_STEPS): Define a new macro. >>>>>     (chkp_find_bound_slots_1): Limit number of iterations. >>>> Or just CLOSE/WONTFIX :-) >>>> >>>> I've got no objections here -- we want to minimize the effort put into >>>> CHKP given its going to be deprecated. >>> >>> The problem is that this affects normal configs, not just ones with >>> MPX enabled. >> >> Indeed. It get's called via >> >> #0 chkp_find_bound_slots_1 (type=0x7ffff69ee9d8, have_bound=0x2ed3868, offs=0) >>     at /space/rguenther/src/svn/early-lto-debug/gcc/tree-chkp.c:1708 >> #1 0x0000000001379a13 in chkp_find_bound_slots (type=0x7ffff69ee9d8, >>     res=0x2ed3868) >>     at /space/rguenther/src/svn/early-lto-debug/gcc/tree-chkp.c:1754 >> #2 0x0000000001377054 in chkp_type_bounds_count (type=0x7ffff69ee9d8) >>     at /space/rguenther/src/svn/early-lto-debug/gcc/tree-chkp.c:1009 >> #3 0x00000000016c664f in ix86_function_arg_advance (cum_v=..., >>     mode=E_BLKmode, type=0x7ffff69ee9d8, named=true) >>     at /space/rguenther/src/svn/early-lto-debug/gcc/config/i386/i386.c:8621 >> 8616       { >> 8617         /* Track if there are outgoing arguments on stack. */ >> 8618         if (cum->caller) >> 8619           cfun->machine->outgoing_args_on_stack = true; >> 8620 >> 8621         cum->bnds_in_bt = chkp_type_bounds_count (type); >> 8622       } >> 8623   } >> 8624 >> 8625   /* Define where to put the arguments to a function. >> >> but I think we know POINTER_BOUNDS_TYPE_P etc. never return >> true if -fcheck-pointer-* or -mmpx is not enabled, right? So we can >> guard the above call appropriately and save some compile-time >> for all of us? > > Good observation, let me enhance the patch for the PR. > > Martin > >> >> Richard. >> >>> Thanks, >>> Richard > Hi. I've got this, that survives bootstrap®ression tests on x86_64-linux-gnu. May I install it? Thanks, Martin [-- Attachment #2: 0001-Do-not-call-chkp_type_bounds_count-if-MPX-is-not-ena.patch --] [-- Type: text/x-patch, Size: 1010 bytes --] From 15f95ac5117d9e2bab96c725716e5cb2832d3589 Mon Sep 17 00:00:00 2001 From: marxin <mliska@suse.cz> Date: Wed, 21 Mar 2018 10:51:32 +0100 Subject: [PATCH] Do not call chkp_type_bounds_count if MPX is not enabled (PR target/84988). gcc/ChangeLog: 2018-03-21 Martin Liska <mliska@suse.cz> PR target/84988 * config/i386/i386.c (ix86_function_arg_advance): Do not call chkp_type_bounds_count if MPX is not enabled. --- gcc/config/i386/i386.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 5b1e962dedb..0693f8fc451 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -8618,7 +8618,8 @@ ix86_function_arg_advance (cumulative_args_t cum_v, machine_mode mode, if (cum->caller) cfun->machine->outgoing_args_on_stack = true; - cum->bnds_in_bt = chkp_type_bounds_count (type); + if (type && POINTER_BOUNDS_TYPE_P (type)) + cum->bnds_in_bt = chkp_type_bounds_count (type); } } -- 2.16.2 ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] Fix compile-time hog in MPX boundary checking (PR target/84988). 2018-03-21 12:45 ` Martin Liška @ 2018-03-21 13:26 ` Jakub Jelinek 2018-03-28 6:51 ` Martin Liška 0 siblings, 1 reply; 9+ messages in thread From: Jakub Jelinek @ 2018-03-21 13:26 UTC (permalink / raw) To: Martin Liška Cc: Richard Biener, Jeff Law, GCC Patches, Richard Sandiford, Ilya Enkovich On Wed, Mar 21, 2018 at 01:40:08PM +0100, Martin LiÅ¡ka wrote: > 2018-03-21 Martin Liska <mliska@suse.cz> > > PR target/84988 > * config/i386/i386.c (ix86_function_arg_advance): Do not call > chkp_type_bounds_count if MPX is not enabled. > --- > gcc/config/i386/i386.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c > index 5b1e962dedb..0693f8fc451 100644 > --- a/gcc/config/i386/i386.c > +++ b/gcc/config/i386/i386.c > @@ -8618,7 +8618,8 @@ ix86_function_arg_advance (cumulative_args_t cum_v, machine_mode mode, > if (cum->caller) > cfun->machine->outgoing_args_on_stack = true; > > - cum->bnds_in_bt = chkp_type_bounds_count (type); > + if (type && POINTER_BOUNDS_TYPE_P (type)) > + cum->bnds_in_bt = chkp_type_bounds_count (type); This is weird. POINTER_BOUNDS_TYPE_P (type) is TREE_CODE (type) == POINTER_BOUNDS_TYPE, and for POINTER_BOUNDS_TYPE chkp_type_bounds_count will just unconditionally return 0. Jakub ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] Fix compile-time hog in MPX boundary checking (PR target/84988). 2018-03-21 13:26 ` Jakub Jelinek @ 2018-03-28 6:51 ` Martin Liška 2018-03-28 11:53 ` Jakub Jelinek 0 siblings, 1 reply; 9+ messages in thread From: Martin Liška @ 2018-03-28 6:51 UTC (permalink / raw) To: Jakub Jelinek Cc: Richard Biener, Jeff Law, GCC Patches, Richard Sandiford, Ilya Enkovich [-- Attachment #1: Type: text/plain, Size: 1283 bytes --] On 03/21/2018 01:44 PM, Jakub Jelinek wrote: > On Wed, Mar 21, 2018 at 01:40:08PM +0100, Martin LiÅ¡ka wrote: >> 2018-03-21 Martin Liska <mliska@suse.cz> >> >> PR target/84988 >> * config/i386/i386.c (ix86_function_arg_advance): Do not call >> chkp_type_bounds_count if MPX is not enabled. >> --- >> gcc/config/i386/i386.c | 3 ++- >> 1 file changed, 2 insertions(+), 1 deletion(-) >> >> diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c >> index 5b1e962dedb..0693f8fc451 100644 >> --- a/gcc/config/i386/i386.c >> +++ b/gcc/config/i386/i386.c >> @@ -8618,7 +8618,8 @@ ix86_function_arg_advance (cumulative_args_t cum_v, machine_mode mode, >> if (cum->caller) >> cfun->machine->outgoing_args_on_stack = true; >> >> - cum->bnds_in_bt = chkp_type_bounds_count (type); >> + if (type && POINTER_BOUNDS_TYPE_P (type)) >> + cum->bnds_in_bt = chkp_type_bounds_count (type); > > This is weird. POINTER_BOUNDS_TYPE_P (type) > is TREE_CODE (type) == POINTER_BOUNDS_TYPE, > and for POINTER_BOUNDS_TYPE chkp_type_bounds_count will just unconditionally > return 0. > > Jakub > Ok, so should we make the set of cum->bnds_in_bt based on flag_check_pointer_bounds flag? If so, I've got patch that I've tested on my x86_64-linux-gnu machin. Martin [-- Attachment #2: 0001-Do-not-call-chkp_type_bounds_count-if-MPX-is-not-ena.patch --] [-- Type: text/x-patch, Size: 999 bytes --] From 7b5978e61305c5098a084c2352fcbacb4c347158 Mon Sep 17 00:00:00 2001 From: marxin <mliska@suse.cz> Date: Wed, 21 Mar 2018 10:51:32 +0100 Subject: [PATCH] Do not call chkp_type_bounds_count if MPX is not enabled (PR target/84988). gcc/ChangeLog: 2018-03-21 Martin Liska <mliska@suse.cz> PR target/84988 * config/i386/i386.c (ix86_function_arg_advance): Do not call chkp_type_bounds_count if MPX is not enabled. --- gcc/config/i386/i386.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index b4f6aec1434..2b2896f7ac6 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -8618,7 +8618,8 @@ ix86_function_arg_advance (cumulative_args_t cum_v, machine_mode mode, if (cum->caller) cfun->machine->outgoing_args_on_stack = true; - cum->bnds_in_bt = chkp_type_bounds_count (type); + if (flag_check_pointer_bounds) + cum->bnds_in_bt = chkp_type_bounds_count (type); } } -- 2.16.2 ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] Fix compile-time hog in MPX boundary checking (PR target/84988). 2018-03-28 6:51 ` Martin Liška @ 2018-03-28 11:53 ` Jakub Jelinek 0 siblings, 0 replies; 9+ messages in thread From: Jakub Jelinek @ 2018-03-28 11:53 UTC (permalink / raw) To: Martin Liška Cc: Richard Biener, Jeff Law, GCC Patches, Richard Sandiford, Ilya Enkovich On Wed, Mar 28, 2018 at 08:31:38AM +0200, Martin LiÅ¡ka wrote: > Ok, so should we make the set of cum->bnds_in_bt based on flag_check_pointer_bounds flag? > > If so, I've got patch that I've tested on my x86_64-linux-gnu machin. > > Martin > >From 7b5978e61305c5098a084c2352fcbacb4c347158 Mon Sep 17 00:00:00 2001 > From: marxin <mliska@suse.cz> > Date: Wed, 21 Mar 2018 10:51:32 +0100 > Subject: [PATCH] Do not call chkp_type_bounds_count if MPX is not enabled (PR > target/84988). > > gcc/ChangeLog: > > 2018-03-21 Martin Liska <mliska@suse.cz> > > PR target/84988 > * config/i386/i386.c (ix86_function_arg_advance): Do not call > chkp_type_bounds_count if MPX is not enabled. LGTM. > --- a/gcc/config/i386/i386.c > +++ b/gcc/config/i386/i386.c > @@ -8618,7 +8618,8 @@ ix86_function_arg_advance (cumulative_args_t cum_v, machine_mode mode, > if (cum->caller) > cfun->machine->outgoing_args_on_stack = true; > > - cum->bnds_in_bt = chkp_type_bounds_count (type); > + if (flag_check_pointer_bounds) > + cum->bnds_in_bt = chkp_type_bounds_count (type); > } > } > > -- > 2.16.2 > Jakub ^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2018-03-28 11:52 UTC | newest] Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2018-03-20 19:37 [PATCH] Fix compile-time hog in MPX boundary checking (PR target/84988) Martin Liška 2018-03-20 19:40 ` Jeff Law 2018-03-20 21:53 ` Richard Sandiford 2018-03-21 9:40 ` Richard Biener 2018-03-21 9:47 ` Martin Liška 2018-03-21 12:45 ` Martin Liška 2018-03-21 13:26 ` Jakub Jelinek 2018-03-28 6:51 ` Martin Liška 2018-03-28 11:53 ` Jakub Jelinek
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).