| Index: lib/Transforms/NaCl/ExpandVarArgs.cpp
|
| diff --git a/lib/Transforms/NaCl/ExpandVarArgs.cpp b/lib/Transforms/NaCl/ExpandVarArgs.cpp
|
| index 0fd1a3cb44f1f11096e457ce964c22c7e8d20ee3..f4f82adf66993f026d38b782f6bd31c7323cd3a9 100644
|
| --- a/lib/Transforms/NaCl/ExpandVarArgs.cpp
|
| +++ b/lib/Transforms/NaCl/ExpandVarArgs.cpp
|
| @@ -17,21 +17,15 @@
|
| // Alignment:
|
| //
|
| // This pass does not add any alignment padding between the arguments
|
| -// that are copied onto the stack. We assume that the only argument
|
| -// types that need to be handled are 32-bit and 64-bit -- i32, i64,
|
| -// pointers and double:
|
| +// that are copied onto the stack. This means that if the argument
|
| +// list contains a mixture of, say, 1-byte and 4-byte values, the code
|
| +// generated by this pass might be inefficient due to the memory
|
| +// accesses being unaligned.
|
| //
|
| -// * We won't see i1, i8, i16 and float as varargs arguments because
|
| -// the C standard requires the compiler to promote these to the
|
| -// types "int" and "double".
|
| -//
|
| -// * We won't see va_arg instructions of struct type because Clang
|
| -// does not yet support them in PNaCl mode. See
|
| -// https://code.google.com/p/nativeclient/issues/detail?id=2381
|
| -//
|
| -// If such arguments do appear in the input, this pass will generate
|
| -// correct, working code, but this code might be inefficient due to
|
| -// using unaligned memory accesses.
|
| +// This should only be an issue when passing structs as varargs
|
| +// arguments. We won't see i1, i8, i16 and float as varargs arguments
|
| +// because the C standard requires the compiler to promote these to
|
| +// the types "int" and "double".
|
| //
|
| //===----------------------------------------------------------------------===//
|
|
|
|
|