[cfe-dev] [RFC] Changing/clarifying clang's handling of -fno-builtin and -ffreestanding
Hal Finkel via cfe-dev
cfe-dev at lists.llvm.org
Sat Jan 7 13:40:04 PST 2017
On 01/07/2017 02:06 AM, Mehdi Amini via cfe-dev wrote:
> Hi,
>
> I’m trying to “fix” a longstanding issue about TLI options and LTO: we’re not preserving -ffreestanding of -veclib options from the compile phase to the link phase.
>
> As a starting point, I need to clarify our handling of -ffreestanding and -fno-builtin. Right now clang does not differentiate between the two (except that -ffreestanding disable special handling of function “main”).
>
> Here is the proposed behavior:
>
> 1) -ffreestanding carries the fact that the compiler can’t assume anything about the environment: i.e. the libc is not present and the compiler should not create calls to libc functions. -ffreestanding implies -fno-builtin.
Even freestanding implementations are required to support certain
functions (e.g. memcpy). -ffreestanding should only disable those not
required.
>
> 2) -fno-builtin describe the handling of the compiler with respect to the *source*. It tells the compiler to not assume anything about a call to, let say, malloc() in the source. We implement this already using the LLVM attribute “nobuiltin” on such calls. But I’d like to stop removing these builtins from the TLI and allow LLVM to create a call to (for example) memset() even with -fno-builtin.
This makes sense to me.
>
> LTO will happily implement freestanding and veclib through module flags, without having to care about the list of “no-builtin”, which will be carried by the function declaration and the call sites attributes (we can discuss further the merging strategy in case of incoherency between modules, but I’d like to get us to agree on the high level bits first).
>
> I’d be interested to know if this is in line with GCC handling of such options (I can’t be 100% sure just by reading the doc).
>
> Note also that this is going quite against (some of) the previous views developed in this thread: http://lists.llvm.org/pipermail/llvm-dev/2013-February/059562.html
I skimmed the thread, but can you be more specific about to which views
you're referring? The thread is also somewhat out of date because we do
now implement -fno-builtin-FOO.
Thanks again,
Hal
>
> Best,
>
> —
> Mehdi
> _______________________________________________
> cfe-dev mailing list
> cfe-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
--
Hal Finkel
Lead, Compiler Technology and Programming Languages
Leadership Computing Facility
Argonne National Laboratory
More information about the cfe-dev
mailing list