public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
From: David Malcolm <dmalcolm@redhat.com>
To: Jeff Law <law@redhat.com>, Bernd Schmidt <bschmidt@redhat.com>,
	       gcc-patches@gcc.gnu.org
Subject: Re: [PATCH] Fix bug in MEM parsing in patches 8a/8b
Date: Mon, 19 Dec 2016 23:02:00 -0000	[thread overview]
Message-ID: <1482187726.12007.39.camel@redhat.com> (raw)
In-Reply-To: <693d0b8f-c8d4-df80-9b09-3a7fe6146250@redhat.com>

On Mon, 2016-12-19 at 15:10 -0700, Jeff Law wrote:
> On 12/08/2016 01:39 PM, David Malcolm wrote:
> > Testing the patch kit on i686 showed numerous failures of this
> > assertion in set_mem_attributes_minus_bitpos in emit-rtl.c:
> > 
> >   1821        gcc_assert (!defattrs->offset_known_p);
> > 
> > when expanding "main" in the rtl.exp test files, after parsing
> > an __RTL-tagged function.
> > 
> > Root cause is various assignments within the RTL parser of the
> > form:
> > 
> > 1222		      MEM_OFFSET (x) = atoi (name.string);
> > 
> > where a MEM_* macro appears on the left-hand side of an assignment.
> > 
> > These macros are defined as a field lookup on the result of a call
> > to get_mem_attrs, e.g.:
> > 
> >   #define MEM_OFFSET(RTX) (get_mem_attrs (RTX)->offset)
> > 
> > get_mem_attrs can return the struct mem_attrs * of an rtx, but if
> > it isn't set, it returns:
> >    mode_mem_attrs[(int) GET_MODE (x)];
> > 
> > which is this field within struct GTY(()) target_rtl:
> >   /* The default memory attributes for each mode.  */
> >   struct mem_attrs *x_mode_mem_attrs[(int) MAX_MACHINE_MODE];
> > 
> > These assignments in the parser were erroneously writing to these
> > default per-mode values, rather than assigning to a unique-per-rtx
> > instance of struct mem_attrs.
> > 
> > The fix is to call the appropriate set_mem_ functions in the
> > parser, e.g. set_mem_offset; the patch below is intended as a tweak
> > to patch 8a of the kit, and would be merged with it before
> > committing.
> > 
> > The patch also adds extra test coverage for MEM parsing.  This
> > extends
> > the target-independent selftests, and so would go into patch 8b.
> > 
> > Tested for targets x86_64-pc-linux-gnu, i686-pc-linux-gnu,
> > and aarch64-linux-gnu, and on powerpc-ibm-aix7.1.3.0.
> > 
> > OK as adjustments to patches 8a and 8b?
> > 
> > For patch 8a:
> >   gcc/ChangeLog:
> > 	* read-rtl-function.c
> > 	(function_reader::handle_any_trailing_information): Replace
> > writes
> > 	through macros MEM_ALIAS_SET, MEM_OFFSET, MEM_SIZE, MEM_ALIGN,
> > 	and MEM_ADDR_SPACE with calls to set_mem_ functions.  Add
> > missing
> > 	call to unread_char when handling "A" for alignment.
> > 
> > For patch 8b:
> >   gcc/ChangeLog:
> > 	* read-rtl-function.c (selftest::test_loading_mem): New
> > function.
> > 	(selftest::read_rtl_function_c_tests): Call it.
> >   gcc/testsuite/ChangeLog:
> > 	* selftests/mem.rtl: New file.
> They seem like reasonable adjustments.
> 
> I know you posted the cc1 patches to add the RTL front-end.  What's
> the 
> status on this kit?
> 
> [ Yes, I keep falling behind... ]

Current status of RTL frontend patch kit:

In summary: patch 8d and patch 9 need review.

In detail:

* patches 1-6 of the kit are committed to trunk

* patch 7 (in extremely minimal form) has been approved, merged into
patch 8a.

* patch 8 (adding function_reader class, and selftests to verify it
works) split into four subpatches, not yet in trunk:
  * patches 8a, 8b, and 8c are approved (the reader itself, selftests
for it that don't depend on any target, and selftests that are aarch64
-specific)
  * patches 8d isn't approved yet; I reposted this today as:
    * "[PATCH] Add x86_64-specific selftests for RTL function reader
(v2)"
      https://gcc.gnu.org/ml/gcc-patches/2016-12/msg01616.html
  * I'm successfully run config-list.mk testing across 191 targets to
verify that these selftests don't break the build for anything (there
was some snafu with our dump syntax for pseudos conflicting with hard
reg names on iq2000, but this is resolved now)
  * my plan is to commit 8a-8d as one combined patch once 8d is
approved (assuming it is)

* patch 9 (wiring it up into cc1) needs review:
  * "[PATCH] Add "__RTL" to cc1 (v7)"
    * https://gcc.gnu.org/ml/gcc-patches/2016-12/msg01662.html


Dave

  reply	other threads:[~2016-12-19 22:48 UTC|newest]

Thread overview: 78+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-11-11 20:44 [PATCH 0/9] RTL frontend v4 David Malcolm
2016-11-11 20:43 ` [PATCH 3/9] Introduce emit_status::ensure_regno_capacity David Malcolm
2016-11-14 14:17   ` Bernd Schmidt
2016-11-14 14:31     ` David Malcolm
2016-11-23 20:12   ` Jeff Law
2016-11-11 20:43 ` [PATCH 2/9] (approved) Introduce rtl_data::init_stack_alignment David Malcolm
2016-11-23 20:09   ` Jeff Law
2016-11-11 20:44 ` [PATCH 4/9] (approved) Add some functions for use by the RTL frontend David Malcolm
2016-11-23 20:11   ` Jeff Law
2016-11-11 20:44 ` [PATCH 1/9] print_rtx: implement support for reuse IDs (v2) David Malcolm
2016-12-01 23:05   ` Jeff Law
2016-12-02  1:37     ` David Malcolm
2016-12-02 15:28       ` Bernd Schmidt
2016-11-11 20:44 ` [PATCH 8/9] Introduce class function_reader (v4) David Malcolm
2016-11-23 20:15   ` Bernd Schmidt
2016-11-23 20:46     ` David Malcolm
2016-12-01 14:40   ` Bernd Schmidt
2016-12-01 21:43     ` David Malcolm
2016-12-02  1:27       ` [PATCH 8a/9] Introduce class function_reader (v6) David Malcolm
2016-12-02  1:27         ` [PATCH 8c/9] Add aarch64-specific selftests for RTL function reader David Malcolm
2016-12-06 17:22           ` James Greenhalgh
2016-12-06 19:38             ` David Malcolm
2016-12-07  9:30               ` James Greenhalgh
2016-12-02  1:27         ` [PATCH 8d/9] Add x86_64-specific " David Malcolm
2016-12-19 16:43           ` [PATCH] Add x86_64-specific selftests for RTL function reader (v2) David Malcolm
2017-01-03 16:47             ` PING " David Malcolm
2017-01-05  9:43               ` Uros Bizjak
2016-12-02  1:27         ` [PATCH 8b/9] Add target-independent selftests of RTL function reader David Malcolm
2016-12-02 15:06           ` Bernd Schmidt
2016-12-05  5:55             ` Jeff Law
2016-12-02  1:28         ` [PATCH 9/9] Add "__RTL" to cc1 (v6) David Malcolm
2016-12-02 14:41         ` [PATCH 8a/9] Introduce class function_reader (v6) Bernd Schmidt
2016-12-02 18:12           ` [PATCH 8a/9] Introduce class function_reader (v7) David Malcolm
2016-12-02 18:58             ` Bernd Schmidt
2016-12-08  2:29               ` [PATCH] Avoid double unread_char (c) in patch 8a of RTL frontend David Malcolm
2016-12-08 15:16                 ` Bernd Schmidt
2016-12-08 20:06             ` [PATCH] Fix bug in MEM parsing in patches 8a/8b David Malcolm
2016-12-08 20:08               ` Bernd Schmidt
2016-12-09  1:29                 ` [PATCH] Prevent use of MEM_* attr accessor macros as lvalues David Malcolm
2016-12-09  1:32                   ` Bernd Schmidt
2016-12-19 22:15               ` [PATCH] Fix bug in MEM parsing in patches 8a/8b Jeff Law
2016-12-19 23:02                 ` David Malcolm [this message]
2016-12-02 15:28       ` [PATCH 8/9] Introduce class function_reader (v4) Bernd Schmidt
2016-12-02 19:51         ` [PATCH] Add ASSERT_RTX_PTR_EQ David Malcolm
2016-12-06 12:09           ` Bernd Schmidt
2016-11-11 20:44 ` [PATCH 5/9] Introduce selftest::locate_file (v4) David Malcolm
2016-12-01 13:29   ` Bernd Schmidt
2016-12-02  1:20     ` David Malcolm
2016-12-08 21:47     ` David Malcolm
2016-12-09  1:48       ` Bernd Schmidt
2016-12-09 19:32         ` PR target/78213 revisited (was Re: [PATCH 5/9] Introduce selftest::locate_file (v4)) David Malcolm
2016-12-14 14:04           ` Bernd Schmidt
2016-12-15  2:14             ` [committed] Introduce selftest::locate_file (v5) David Malcolm
2021-08-17  7:00               ` Thomas Schwinge
2021-08-17  9:00                 ` Richard Biener
2021-08-18 23:56                 ` H.J. Lu
2021-08-19  7:01                   ` Thomas Schwinge
2016-11-11 20:44 ` [PATCH 6/9] Split class rtx_reader into md_reader vs rtx_reader David Malcolm
2016-11-22 21:26   ` Richard Sandiford
2016-11-11 20:44 ` [PATCH 7/9] Add RTL-error-handling to host David Malcolm
2016-11-22 21:29   ` Richard Sandiford
2016-11-28 13:47   ` Bernd Schmidt
2016-11-29 17:20     ` David Malcolm
2016-11-29 17:23       ` Bernd Schmidt
2016-11-29 18:53         ` David Malcolm
2016-11-29 21:13           ` Bernd Schmidt
2016-11-30 16:18             ` Bernd Schmidt
2016-11-30 19:51               ` [PATCH] Minimal reimplementation of errors.c within read-md.c David Malcolm
2016-12-01 12:40                 ` Bernd Schmidt
2016-12-02 22:34                   ` [PATCH] Even more minimal " David Malcolm
2016-12-06 12:11                     ` Bernd Schmidt
2016-11-11 20:44 ` [PATCH 9/9] Add "__RTL" to cc1 (v4) David Malcolm
2016-11-14 15:14   ` Richard Biener
2016-11-15 21:07     ` David Malcolm
2016-11-16 13:24       ` Richard Biener
2016-11-18 21:02         ` [PATCH] Add "__RTL" to cc1 (v5) David Malcolm
2016-11-18 22:14           ` Joseph Myers
2016-11-18 22:46             ` [PATCH] Handle EOF in c_parser_parse_rtl_body David Malcolm

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=1482187726.12007.39.camel@redhat.com \
    --to=dmalcolm@redhat.com \
    --cc=bschmidt@redhat.com \
    --cc=gcc-patches@gcc.gnu.org \
    --cc=law@redhat.com \
    /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).