[LLVMdev] [RFC] New function attributes for errno-setting functions

Hal Finkel hfinkel at anl.gov
Fri Sep 13 14:18:39 PDT 2013


----- Original Message -----
> On 9/13/2013 3:37 PM, Hal Finkel wrote:
> >
> > No, I don't think so. If sqrt is not readnone or readonly, then it
> > should potentially alias whatever the errno macro actually expands
> > to (whether it is a global variable, and thread-local variable, a
> > function call, or whatever).
> 
> I'm not sure about this. How about this:
> 
> extern int BLAH;
> #define errno BLAH
> 
> Then we have
> 
>    int fd = open(...);
>    int saved_errno = BLAH;
>    double s = sqrt(var);
> 
> If "sqrt" is "write-only-errno", how would we know that BLAH should
> be
> aliased with sqrt?  We don't to alias it with every global variable
> (that's what this proposal is trying to address).  We'd need a way to
> associate BLAH with errno, or else we're in the same place as we are
> now.

No, this is exactly what we do. It needs to be pessimistic in this sense. "write-only-errno" only helps to prove things about potential alising with pointers that we *know* can't be errno (like local stack allocations). Any global might be errno, so that can't count.

 -Hal

> 
> -K
> 
> 
> --
> Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
> hosted by The Linux Foundation
> 

-- 
Hal Finkel
Assistant Computational Scientist
Leadership Computing Facility
Argonne National Laboratory



More information about the llvm-dev mailing list