[llvm] [WebAssembly] MC support for acquire-release atomics (PR #183656)
Derek Schuff via llvm-commits
llvm-commits at lists.llvm.org
Mon Mar 2 13:55:06 PST 2026
================
@@ -1167,11 +1199,21 @@ class WebAssemblyAsmParser final : public MCTargetAsmParser {
case Match_Success: {
ensureLocals(Out);
// Fix unknown p2align operands.
+ const MCInstrDesc &Desc = MII.get(Inst.getOpcode());
auto Align = WebAssembly::GetDefaultP2AlignAny(Inst.getOpcode());
if (Align != -1U) {
- auto &Op0 = Inst.getOperand(0);
- if (Op0.getImm() == -1)
- Op0.setImm(Align);
+ unsigned I = 0;
+ // It's operand 0 for regular memory ops and 1 for atomics.
+ for (unsigned E = Desc.getNumOperands(); I < E; ++I) {
+ if (Desc.operands()[I].OperandType == WebAssembly::OPERAND_P2ALIGN) {
+ auto &Op = Inst.getOperand(I);
+ if (Op.getImm() == -1) {
+ Op.setImm(Align);
+ }
+ break;
+ }
+ }
+ assert(I < 2 && "Default p2align set but operand not found");
----------------
dschuff wrote:
I was trying to avoid having a variable that was completely unused in a non-asserts build, to avoid unused variable warnings. Do you think it would be cleaner to do that anyway, but wrap in a `DEBUG()`?
https://github.com/llvm/llvm-project/pull/183656
More information about the llvm-commits
mailing list