[Bug target/94584] New: memw is missing before u8/u16 volatile loads

jcmvbkbc at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Mon Apr 13 20:24:51 GMT 2020


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

            Bug ID: 94584
           Summary: memw is missing before u8/u16 volatile loads
           Product: gcc
           Version: 10.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: jcmvbkbc at gcc dot gnu.org
  Target Milestone: ---

Created attachment 48262
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=48262&action=edit
minimal reproducer

xtensa-elf-gcc -O2 -S volatile.c results in the following code:

        .file   "volatile.c"
        .text
        .align  4
        .global load32
        .type   load32, @function
load32:
        entry   sp, 32
        memw
        l32i.n  a2, a2, 0
        retw.n
        .size   load32, .-load32
        .align  4
        .global load16s
        .type   load16s, @function
load16s:
        entry   sp, 32
        l16ui   a2, a2, 0
        sext    a2, a2, 15
        retw.n
        .size   load16s, .-load16s
        .align  4
        .global load16u
        .type   load16u, @function
load16u:
        entry   sp, 32
        l16ui   a2, a2, 0
        retw.n
        .size   load16u, .-load16u
        .align  4
        .global load8
        .type   load8, @function
load8:
        entry   sp, 32
        l8ui    a2, a2, 0
        retw.n
        .size   load8, .-load8
        .ident  "GCC: (GNU) 9.2.0"

There must be memw before l16ui and l8ui.


More information about the Gcc-bugs mailing list