SjoerdMeijer added inline comments.

================
Comment at: include/clang/Basic/TargetInfo.h:66
   bool HasFloat128;
+  bool HasFloat16;
   unsigned char PointerWidth, PointerAlign;
----------------
I think this is the same as `HasLegalHalfType`, and we can (re)use that.  Or, 
at least, don't think we need both `HasLegalHalfType` and `HasFloat16`. For 
context, I needed `HasLegalHalfType` for argument passing, but it looks like it 
can serve another purpose now.

Out of curiousity, I was wondering if specifying:

  KEYWORD(_Float16                    , HALFSUPPORT)

in TokenKids.def is an alternative approach (it is currently set to KEYALL). 
Thus, enable the keyword when `LangOpts.Half` is set. By adding this 
`HasFloat16` property here in clang's targetinfo, we're sort of defining again 
how targets support different types. I.e., if you throw a `half` type at the 
backend, the TypeLegalizer will deal with it in one way or another. Perhaps 
disabling `_Float16` can be achieved by disabling the keyword. But I do see 
that the big advantage of this patch is the much nicer error message (otherwise 
we would get something like  "unknown type name '_Float16'").



================
Comment at: include/clang/Basic/TargetInfo.h:521
+  /// Determine whether the _Float16 type is supported on this target.
+  virtual bool hasFloat16Type() const { return HasFloat16; }
+
----------------
Similar remark: the same as `hasLegalHalfType()`?


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

https://reviews.llvm.org/D57188



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

Reply via email to