Hi Dale,

>    // Check for 'readnone' function attribute.
> -  if (flags & ECF_CONST)
> +  // Both PURE and CONST will be set if the user applied
> +  // __attribute__((const)) to a function the compiler
> +  // knows to be pure, such as log.  A user or (more
> +  // likely) libm implementor might know their local log
> +  // is in fact const, so this should be valid (and gcc
> +  // accepts it).  But llvm IR does not allow both, so
> +  // set only ReadNone.
> +  if (flags & ECF_CONST && !(flags & ECF_PURE))
>      // Since they write the return value through a pointer,
>      // 'sret' functions cannot be 'readnone'.
>      if (!ABIConverter.isStructReturn())

if it is marked both pure and const, this logic seems to
mark it pure in LLVM (i.e. readonly).  It would be better
to mark it readnone since that's stronger.

Ciao,

D.
_______________________________________________
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits

Reply via email to