//===- subzero/crosstest/insertelement.h - Helper for PNaCl workaround. ---===// // // The Subzero Code Generator // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // // Helper function to work around a potential stack overflow issue. // //===----------------------------------------------------------------------===// #ifndef INSERTELEMENT_H #define INSERTELEMENT_H // Helper function to perform the insertelement bitcode instruction. The PNaCl // ABI simplifications transform insertelement/extractelement instructions with // a non-constant index into something involving alloca. This can cause a stack // overflow if the alloca is inside a loop. template <typename VectorType, typename ElementType> void __attribute__((noinline)) setElement(VectorType &Value, size_t Index, ElementType Element) { Value[Index] = Element; } #endif // INSERTELEMENT_H