jyknight added inline comments.

================
Comment at: clang/lib/AST/Stmt.cpp:646-648
+      // Labels are placed after "InOut" operands. Adjust accordingly.
+      if (IsLabel)
+        N += getNumPlusOperands();
----------------
void wrote:
> jyknight wrote:
> > I'm confused about this part. Why isn't the "N" specified in the assembly 
> > string already the correct value for the labels? Is the ordering we use 
> > internally and that users use externally not the same? I'm assuming your 
> > code here is correct, just I'm not understanding, so probably an improved 
> > comment would be nice.
> The LLVM-specific ordering that I saw was something like:
> 
>   `<output constraints>,<input constraints>,<plus constraints>,<optional 
> X>,<other constraints>`
> 
> The `<plus constraints>` is empty when there are no output constraints. This 
> just makes up for this. It's probably better to reverse the `<optional X>` 
> and `<plus constraints>` parts, but I didn't know how pervasive the order's 
> assumption is in the code.
Oh, right -- in llvm IR, the "plus" constraints don't exist -- we specify those 
as separate-but-linked output and input constraints.

But thinking about this more...I think this code is actually incorrect. It 
should be translating the numbers based on where it finds the matching 
argument-number, not on the 'l' character being present. (And it should do so 
for named-arguments too).

So, yes, I think it'd be better to just swap the order, and move the 
plus-operand tied-inputs to the end of the arglist, where they don't affect 
numbering. I don't _think_ reversing the order will cause other issues.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D69876/new/

https://reviews.llvm.org/D69876



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to