summary refs log tree commit diff stats
path: root/python/qemu/qtest.py
diff options
context:
space:
mode:
authorPeter Maydell <peter.maydell@linaro.org>2020-10-19 16:12:52 +0100
committerPeter Maydell <peter.maydell@linaro.org>2020-10-20 16:12:01 +0100
commit514101c0b931f0a11a40d29d26af1cc40482f951 (patch)
treeacef62bcd70271affae73af8e862b0e09fcdea83 /python/qemu/qtest.py
parentb3267ff675dd410b4c2a569e209cb7d468cf1873 (diff)
downloadfocaccia-qemu-514101c0b931f0a11a40d29d26af1cc40482f951.tar.gz
focaccia-qemu-514101c0b931f0a11a40d29d26af1cc40482f951.zip
decodetree: Fix codegen for non-overlapping group inside overlapping group
For nested groups like:

  {
    [
      pattern 1
      pattern 2
    ]
    pattern 3
  }

the intended behaviour is that patterns 1 and 2 must not
overlap with each other; if the insn matches neither then
we fall through to pattern 3 as the next thing in the
outer overlapping group.

Currently we generate incorrect code for this situation,
because in the code path for a failed match inside the
inner non-overlapping group we generate a "return" statement,
which causes decode to stop entirely rather than continuing
to the next thing in the outer group.

Generate a "break" instead, so that decode flow behaves
as required for this nested group case.

Suggested-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Message-id: 20201019151301.2046-2-peter.maydell@linaro.org
Diffstat (limited to 'python/qemu/qtest.py')
0 files changed, 0 insertions, 0 deletions