HomePhabricator

[MC][Bugfix] Remove redundant parameter for relaxInstruction
Audit Required8bb059ab6379

Authored by skan on Apr 17 2020, 5:26 AM.

Description

[MC][Bugfix] Remove redundant parameter for relaxInstruction

Summary:
Before this patch, relaxInstruction takes three arguments, the first
argument refers to the instruction before relaxation and the third
argument is the output instruction after relaxation. There are two quite
strange things:

  1. The first argument's type is const MCInst &, the third argument's type is MCInst &, but they may be aliased to the same variable
  2. The backends of ARM, AMDGPU, RISC-V, Hexagon assume that the third argument is a fresh uninitialized MCInst even if relaxInstruction may be called like relaxInstruction(Relaxed, STI, Relaxed) in a loop.

In this patch, we drop the thrid argument, and let relaxInstruction
directly modify the given instruction. Also, this patch fixes the bug https://bugs.llvm.org/show_bug.cgi?id=45580, which is introduced by D77851, and
breaks the assumption of ARM, AMDGPU, RISC-V, Hexagon.

Reviewers: Razer6, MaskRay, jyknight, asb, luismarques, enderby, rtaylor, colinl, bcain

Reviewed By: Razer6, MaskRay, bcain

Subscribers: bcain, nickdesaulniers, nathanchance, wuzish, annita.zhang, arsenm, dschuff, jyknight, dylanmckay, sdardis, nemanjai, jvesely, nhaehnle, tpr, sbc100, jgravelle-google, kristof.beyls, hiraditya, aheejin, kbarton, fedor.sergeev, asb, rbar, johnrusso, simoncook, sabuasal, niosHD, jrtc27, MaskRay, zzheng, edward-jones, atanasyan, rogfer01, MartinMosbeck, brucehoult, the_o, PkmX, jocewei, Jim, lenary, s.egerton, pzheng, sameer.abuasal, apazos, luismarques, kerbowa, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D78364

Details

Auditors
grosbach
Committed
skanApr 20 2020, 8:06 PM
Reviewer
Razer6
Differential Revision
D78364: [MC][Bugfix] Remove redundant parameter for relaxInstruction
Parents
rG3cb7e7bf959d: BPF: fix a CORE optimization bug
Branches
Unknown
Tags
Unknown