llvm-project/llvm/test/Transforms/InferFunctionAttrs
Juneyoung Lee 36c8621638 [BuildLibCalls] Add more noundef to library functions
This patch follows D85345 and adds more noundef attributes to return values/arguments of library functions
that are mostly about accessing the file system or processes.

A few functions like `chmod` or `times` use typedef `mode_t` and `clock_t`.
They are neither struct nor union, so they cannot contain undef even if they're lowered to iN in IR. So, it is fine to add noundef to them.

- clock_t's actual type is size_t (C17, 7.27.1.3), so it isn't struct or union.

- For mode_t, either int or long is used in practice because programmers use bit manipulation. So, I think it is okay that it's never aggregate in practice.

After this patch, the remaining library functions are those that eagerly participate in optimizations: they can be removed, reordered, or
introduced by a transformation from primitive IR operations.
For them, a few testings is needed, since it may not be valid to add noundef anymore even if C standard says it's okay.

Reviewed By: jdoerfert

Differential Revision: https://reviews.llvm.org/D85894
2020-09-09 20:33:35 +09:00
..
annotate.ll [BuildLibCalls] Add more noundef to library functions 2020-09-09 20:33:35 +09:00
dereferenceable.ll [Attributor] Copy or port test cases related to Attributor to` Attributor` test folder 2019-12-02 15:36:29 +00:00
no-proto.ll
norecurse_debug.ll [llvm] Fix missing FileCheck directive colons 2020-04-06 09:59:08 -06:00
pr30455.ll