[PATCH] D37413: [X86][MS-InlineAsm] Extended support for variables / identifiers on memory / immediate expressions

coby via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Tue Sep 12 23:56:30 PDT 2017


coby added inline comments.


================
Comment at: lib/Sema/SemaStmtAsm.cpp:617
+    return;
+  } else if (Res->isRValue()) {
+    bool Enum = isa<clang::EnumType>(T) && Res->EvaluateAsRValue(Eval, Context);
----------------
rnk wrote:
> RKSimon wrote:
> > (style) Split these instead of an if-elseif chain
> LLVM suggests early returns: https://llvm.org/docs/CodingStandards.html#use-early-exits-and-continue-to-simplify-code
> 
> I don't particularly care here, up to you. I personally like to abuse the ability of C++ to return void to write things like this and skip braces, but maybe *I'm* too clever for my own good:
>   if (T->isFunctionType() || T->isDependentType())
>     return Info.setLabel(Res);
>   if (Res->isRValue()) {
>     if (isa<clang::EnumType>(T) && Res->EvaluateAsRValue(Eval, Context))
>       return Info.setEnum(Eval.Val.getInt().getSExtValue());
>     return Info.setLabel(Res);
>   }
brilliant. was holding myself from emitting such **//returns//**, as i had the impression such kind of things are considered taboo. hate redundant bracs. will happily address that.
Anything else?


================
Comment at: lib/Sema/SemaStmtAsm.cpp:620
+    bool Enum = isa<clang::EnumType>(T) && Res->EvaluateAsRValue(Eval, Context);
+    Enum ? Info.setEnum(Eval.Val.getInt().getSExtValue()) : Info.setLabel(Res);
+    return;
----------------
rnk wrote:
> This conditional expression is a bit too cute, I'd rather use a regular if.
ah.. can't blame me for trying :)


Repository:
  rL LLVM

https://reviews.llvm.org/D37413





More information about the cfe-commits mailing list