[PATCH] D56571: [RFC prototype] Implementation of asm-goto support in LLVM

Jennifer Yu via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Fri Jan 11 14:01:16 PST 2019


jyu2 marked an inline comment as done.
jyu2 added inline comments.


================
Comment at: lib/Sema/SemaStmtAsm.cpp:470
+    if (NS->isGCCAsmGoto() &&
+        Exprs[ConstraintIdx]->getStmtClass() == Stmt::AddrLabelExprClass)
+      break;
----------------
efriedma wrote:
> jyu2 wrote:
> > efriedma wrote:
> > > This looks suspicious; an AddrLabelExpr could be an input or output, e.g. `"r"(&&foo)`.
> > Syntax for asm goto:
> >  Syntax:
> >    asm [volatile] goto ( AssemblerTemplate
> >                        :
> >                        : InputOperands
> >                        : Clobbers
> >                        : GotoLabels)
> > 
> >  Only input is allowed.  Output is not allowed
> > 
> That doesn't really address my point here... ignore the "or output" part of the comment.
Sorry did not realize that.  Thank you so much for catching that.  Need to add other condition "ConstraintIdx > NS->getNumInputs() - 1", change to :

if (NS->isGCCAsmGoto() && ConstraintIdx > NS->getNumInputs() - 1 &&
        Exprs[ConstraintIdx]->getStmtClass() == Stmt::AddrLabelExprClass)
      break;

Is this ok with you?  Thanks


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

https://reviews.llvm.org/D56571





More information about the cfe-commits mailing list