[cfe-dev] (not) initializing assembly outputs with -ftrivial-auto-var-init

Alexander Potapenko via cfe-dev cfe-dev at lists.llvm.org
Thu Mar 21 05:35:27 PDT 2019


Hi JF et al.,

In the Linux kernel we often encounter the following pattern:

type op(...) {
  type retval;
  inline asm(... retval ...);
  return retval;
}

, which is used to implement low-level platform-dependent memory operations.

Some of these operations turn out to be very hot, so we probably don't
want to initialize |retval| given that it's always initialized in the
assembly.

However it's practically impossible to tell that a variable is being
written to by the inline assembly, or figure out the size of that
write.
Perhaps we could speculatively treat every scalar output of an inline
assembly routine as an initialized value (which is true for the Linux
kernel, but I'm not sure about other users of inline assembly, e.g.
video codecs).

WDYT?


-- 
Alexander Potapenko
Software Engineer

Google Germany GmbH
Erika-Mann-Straße, 33
80636 München

Geschäftsführer: Paul Manicle, Halimah DeLaine Prado
Registergericht und -nummer: Hamburg, HRB 86891
Sitz der Gesellschaft: Hamburg



More information about the cfe-dev mailing list