aaron.ballman added inline comments.

================
Comment at: include/clang/Basic/Attr.td:268
 def TargetMips : TargetArch<["mips", "mipsel"]>;
+def TargetAnyMips : TargetArch<["mips", "mipsel", "mips64", "mips64el"]>;
 def TargetMSP430 : TargetArch<["msp430"]>;
----------------
Can you also rename `TargetMips` to something that distinguishes it from 
`TargetAnyMips`, like we have with `TargetX86` vs `TargetAnyX86`? I'd be 
hard-pressed to notice the difference between these two target names when 
reviewing an attribute, but I'm not familiar enough with the MIPS architecture 
to have a particularly good suggestion for improvement.


================
Comment at: lib/Sema/SemaDeclAttr.cpp:5979-5981
+    if (S.Context.getTargetInfo().getABI() != "o32")
+      S.Diag(Attr.getLoc(), diag::err_attribute_supported_by_o32)
+          << Attr.getName() << D->getLocation();
----------------
atanasyan wrote:
> aaron.ballman wrote:
> > Please do not put logic into the switch statement, but instead sink it into 
> > a helper function. We hope to remove the boilerplate switch someday, so 
> > keeping with the `handleFooAttr()` pattern is preferred. Same below.
> > 
> > Further, why is this not handled by a TargetSpecificAttr in Attr.td? See 
> > `TargetMicrosoftCXXABI` and `MSNoVTable` for an example.
> > Further, why is this not handled by a TargetSpecificAttr in Attr.td? See 
> > TargetMicrosoftCXXABI and MSNoVTable for an example.
> 
> I thought about this, but in that case compiler will show "unknown attribute 
> 'mips16' ignored" warning in case of using `mips16` on MIPS64 targets. As to 
> me this warning is not quite correct in that case because `mips16`, 
> `micromips`, `interrupt` all are known MIPS-specific attributes, but not 
> applicable on MIPS64 by various reasons.
> As to me this warning is not quite correct in that case because mips16, 
> micromips, interrupt all are known MIPS-specific attributes, but not 
> applicable on MIPS64 by various reasons.

The same is true of all target-specific attributes -- they're known to the 
compiler, but their usage is not known on that specific target architecture. I 
would not be opposed to a patch that distinguished between the two situations, 
however (completely unknown attribute/and attribute that's known to be 
prohibited).


Repository:
  rL LLVM

https://reviews.llvm.org/D36208



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

Reply via email to