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

================
Comment at: include/clang/Basic/Builtins.def:983
 // POSIX string.h
+LIBBUILTIN(memccpy, "v*v*vC*iz",  "f",     "string.h", ALL_GNU_LANGUAGES)
 LIBBUILTIN(stpcpy, "c*c*cC*",     "f",     "string.h", ALL_GNU_LANGUAGES)
----------------
aaron.ballman wrote:
> xbolva00 wrote:
> > aaron.ballman wrote:
> > > xbolva00 wrote:
> > > > aaron.ballman wrote:
> > > > > xbolva00 wrote:
> > > > > > aaron.ballman wrote:
> > > > > > > Isn't `memccpy` supported by Visual Studio? What should happen 
> > > > > > > there?
> > > > > > ”This POSIX function is deprecated. Use the ISO C++ conformant 
> > > > > > _memccpy instead.“
> > > > > Thanks for verifying it's still supported (deprecated != 
> > > > > unsupported). We do support other Microsoft builtins, so should this 
> > > > > one be added?
> > > > Ok, I will add it.
> > > > 
> > > > One last question, should I somehow represent that memccpy is in C 20 
> > > > (if so, how) ?
> > > You should probably start a new section for C2x library functions and add 
> > > `memccpy`, `strdup`, and `strndup` to it.
> > > 
> > > Also, just to double-check: we don't encode `restrict` into builtin 
> > > signatures, do we? (Should we?)
> > >> You should probably start a new section for C2x library functions and 
> > >> add memccpy, strdup, and strndup to it.
> > Okay, thanks - probably not needed for now (should be separate patch to 
> > handle new functions in C 2X anyway; maybe more functions to be added?)
> > 
> > >> Also, just to double-check: we don't encode restrict into builtin 
> > >> signatures, do we? (Should we?)
> > Maybe catch very simple overlap issues? I dont think this is worth it (we 
> > have sanitizers). LLVM annotates libc functions with noalias anyway.
> > Okay, thanks - probably not needed for now (should be separate patch to 
> > handle new functions in C 2X anyway; maybe more functions to be added?)
> 
> Yeah, can totally be done in a separate patch.
> 
> > Maybe catch very simple overlap issues? I dont think this is worth it (we 
> > have sanitizers). LLVM annotates libc functions with noalias anyway.
> 
> Sanitizers don't run everywhere, but more importantly, I was wondering about 
> the possible optimization opportunities by noting which arguments cannot 
> overlap with one another (perhaps noalias covers that; I'm less familiar with 
> the llvm side of things).
> 
> However, I looked at the file and see we don't have any encodings for it, so 
> nothing to be done here.
>> I was wondering about the possible optimization opportunities by noting 
>> which arguments cannot overlap with one another

This is implemented in LLVM. 

For example: https://godbolt.org/z/E8x2Ev (see line 10).

>> Sanitizers don't run everywhere

GCC emits a lot of warnings from middle-end. While I dont like some 
implementations which are part of regular pass, but extra warning pass just to 
check specific thing is nice idea I think (that pass is enabled only with 
-Wxxxx flag).


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

https://reviews.llvm.org/D68377



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

Reply via email to