[PATCH] D17146: [libcxx] locale portability refactor

Ben Craig via cfe-commits cfe-commits at lists.llvm.org
Thu Feb 11 15:02:00 PST 2016


bcraig added a comment.

In http://reviews.llvm.org/D17146#350382, @mclow.lists wrote:

> > I'm open to recommendations on ways to test this that are better than "Submit, watch build bots, revert as necessary".
>
>
> My suggestion is to do this incrementally.
>  Implement the infrastructure bits, then move (say) Linux over to use the new bits.
>  Then (say) Mac OS X. Then FreeBSD. Then IBM. Then Windows.
>  Repeat until everyone's moved over; watching the testbots (and getting the people who committed support for each of these systems involved).
>  Then, when they're all moved, delete the old stuff.


I can see some places where I can improve the reviewability of the code by doing things incrementally.  Basically, I can shuffle code around in a few batches of changes first without substantially modifying the code in a few sets of changes.  Then I can do the big _CXX_ transformation after that.  I will see about opening different reviews for those smaller renames / shuffles, and link back to this review as justification.

I am hesitant to take the approach that you've described (port one platform at a time).  I think that would make locale.cpp and <locale> have lots of code that looks like the following...

  #if _USE_THE_NEW_STUFF
      return _CXX_btowc_l(c, __l);
  #elif _LIBCPP_LOCALE__L_EXTENSIONS
      return btowc_l(c, __l);
  #else
      return __btowc_l(c, __l);
  #endif

With this approach, I'd still be doing a lot of blind submissions, and in the short term, the code would get worse.  If, for whatever reason, I'm unable to complete the port and delete all the old stuff, then the refactor turns into a net negative.


http://reviews.llvm.org/D17146





More information about the cfe-commits mailing list