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

================
Comment at: lib/Target/X86/AsmParser/X86AsmParser.cpp:722
+  bool ParseIntelExpression(IntelExprStateMachine &SM, SMLoc &End, 
+                            bool &ReplaceEnumIdentifier);
   std::unique_ptr<X86Operand>
----------------
rnk wrote:
> mharoush wrote:
> > rnk wrote:
> > > Please try to eliminate the need for this extra boolean out parameter.
> > This flag is used in case we try to compile something like mov edx, A+6 ( 
> > when A is defined as ConstantEnum ) the original condition (Line:1905) will 
> > skip the rewrite since we have an identifier as the first Token, however if 
> > we try to compile 6+A it will be rewritten as expected.
> > 
> > I tried to solve this in different ways, I got either the exact opposite 
> > (A+6 was replaced and 6+A wasn't) or a collision of rewrites when trying to 
> > preform other forms of replacements and leaving this section intact. 
> > 
> > I can perhaps change the way we handle general expressions to the same way 
> > we handle them under parseIntelBracExpression, meaning use the first 
> > iteration of X86AsmParser to reformat the string (write imm prefixes and 
> > replace identifiers when needed) then refactor the string to its canonical 
> > form on the second pass. 
> > 
> > In short this was the simplest solution that worked without regression, 
> > maybe you have a better idea?
> > 
> > If the issue is the method signature pollution I can move this flag into 
> > the SM class as a member to indicate a rewrite is needed, however since 
> > this flag and method are limited to this context alone, I am not sure if 
> > the overhead is wanted in such case . 
> I suspect there is a way to simplify the code so that this corner case no 
> longer exists. I don't really have time to dig through the test cases to come 
> up with it, but please make an effort.
I believe this should resolve the complex if statement, However I still need 
the boolean value to enforce the rewrite for enum identifiers.


Repository:
  rL LLVM

https://reviews.llvm.org/D33278



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

Reply via email to