Home | History | Annotate | Download | only in crosstest
      1 //===- subzero/crosstest/insertelement.h - Helper for PNaCl workaround. ---===//
      2 //
      3 //                        The Subzero Code Generator
      4 //
      5 // This file is distributed under the University of Illinois Open Source
      6 // License. See LICENSE.TXT for details.
      7 //
      8 //===----------------------------------------------------------------------===//
      9 //
     10 // Helper function to work around a potential stack overflow issue.
     11 //
     12 //===----------------------------------------------------------------------===//
     13 
     14 #ifndef INSERTELEMENT_H
     15 #define INSERTELEMENT_H
     16 
     17 // Helper function to perform the insertelement bitcode instruction.  The PNaCl
     18 // ABI simplifications transform insertelement/extractelement instructions with
     19 // a non-constant index into something involving alloca.  This can cause a stack
     20 // overflow if the alloca is inside a loop.
     21 template <typename VectorType, typename ElementType>
     22 void __attribute__((noinline))
     23 setElement(VectorType &Value, size_t Index, ElementType Element) {
     24   Value[Index] = Element;
     25 }
     26 
     27 #endif // INSERTELEMENT_H
     28