[PATCH] D62639: Fix ABI breakage with noimplicitfloat and varargs functions

Eli Friedman via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri May 31 12:44:49 PDT 2019

efriedma added a comment.

The way the definition is written is a little backwards.  Really, it means "The compiler will not generate any floating-point instructions unless there is an explicit floating-point operation."

Then maybe worth adding a quick explanation of what constructs count as an explicit floating-point operation.  This falls into two categories.  One, expressions where a value has floating-point type, vector type, or a struct type that contains a floating-point or vector type.  Two, anywhere the platform's ABI for a call would require the use of float registers, possibly including varargs function definitions which don't have any explicit float arguments.  Maybe also mention that this doesn't control the synthesis of calls to certain runtime functions, like memcpy or compiler-rt builtins.

The definition of a "floating-point instruction" is target-specific, and probably obvious to anyone who cares, so I think we can continue to use that term without defining it.

Note that on AArch64, there is no equivalent to x86's use of "al" for varargs calls.

  rG LLVM Github Monorepo



More information about the llvm-commits mailing list