compnerd commandeered this revision.
compnerd edited reviewers, added: smeenai; removed: compnerd.
compnerd added inline comments.


================
Comment at: include/typeinfo:100
+
+  static const char *__name(const struct type_info::__data *__data);
+  static size_t __hash(const struct type_info::__data *__data);
----------------
EricWF wrote:
> These should probably have `_LIBCPP_FUNC_VIS` visibility declarations 
> attached to them.
Wont bother due to out-of-line definition


================
Comment at: include/typeinfo:101
+  static const char *__name(const struct type_info::__data *__data);
+  static size_t __hash(const struct type_info::__data *__data);
+  static int __compare(const struct type_info::__data* __lls,
----------------
EricWF wrote:
> Is there a reason why `__name` and `__hash` need wrappers? Can't we just 
> provide out-of-line definitions for `name()` and `hash_code()` directly?
I don't remember why ... we can address that when we hit it.  Going to 
out-of-line them.


================
Comment at: include/typeinfo:200
 #endif
+#endif
 
----------------
EricWF wrote:
> Comment on `#endif` please.
Sure!


================
Comment at: include/typeinfo:109
 protected:
+#if defined(_LIBCPP_HAS_MS_ABI_TYPEINFO)
+#else
----------------
smeenai wrote:
> compnerd wrote:
> > EricWF wrote:
> > > Don't we need a constructor here?
> > No, we do not need a constructor since the emitted object is already a well 
> > formed object instance.
> I believe @EricWF was referring to the internal constructors that take a 
> `const char *`. Do we need one of those for the Microsoft typeinfo?
No, no such constructor is needed with MS ABI AFAIK.  Construction of the type 
does not invoke a constructor and libc++ does not create instances of this.


================
Comment at: src/typeinfo.cpp:28-32
+  static constexpr const size_t fnv_offset_basis = 14695981039346656037;
+  static constexpr const size_t fnv_prime = 10995116282110;
+#else
+  static constexpr const size_t fnv_offset_basis = 2166136261;
+  static constexpr const size_t fnv_prime = 16777619;
----------------
EricWF wrote:
> compnerd wrote:
> > rnk wrote:
> > > compnerd wrote:
> > > > majnemer wrote:
> > > > > majnemer wrote:
> > > > > > Why make these static? Seems strange to use that storage duration.
> > > > > These literals are ill-formed, I think you need a ULL suffix here.
> > > > Oh, just to ensure that they are handled as literal constants.  I can 
> > > > drop the static if you like, since the compiler should do the right 
> > > > thing anyways.
> > > Isn't `constexpr const` redundant?
> > Yeah, intentional.  I should be using `_LIBCPP_CONSTEXPR` just incase the 
> > compiler doesn't support constexpr.
> All supported compiler provide `constexpr` when building the dylib, so you 
> can assume we have it.
> 
> I have no strong objection to the redundancy, but I'm not opposed to removing 
> either `const` or `constexpr`.
Removed `static` and `const`.


https://reviews.llvm.org/D28212



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

Reply via email to