Few mistakes on TypeBuilder.h

Hi,

I built my own type for some reason and it appears some minor mistakes are present in the file (or I am getting wrong at some point and I am interested to know where) TypeBuilder.h.

There is a little usecase presented at the beginning:

/// \code{.cpp}
///
/// struct MyType {
/// int32 a;
/// int32 *b;
/// void *array[1]; // Intended as a flexible array.
/// };
/// int8 AFunction(struct MyType *value);

int8, int32 are to be replaced with #include<stdint.h> and int8_t, int32_t

///
/// \endcode
///
/// You’ll want to use
/// Function::Create(TypeBuilder<types::i<8>(MyType*), true>::get(), …)

the call to get needs an LLVMContext argument.

/// to declare the function, but when you first try this, your compiler will
/// complain that TypeBuilder<MyType, true>::get() doesn’t exist. To fix this,
/// write:
///
/// \code{.cpp}
///
/// namespace llvm {
/// template class TypeBuilder<MyType, xcompile> {
/// public:
/// static StructType get(LLVMContext &Context) {
/// // If you cache this result, be sure to cache it separately
/// // for each LLVMContext.
/// return StructType::get(
/// TypeBuilder<types::i<32>, xcompile>::get(Context),
/// TypeBuilder<types::i<32>
, xcompile>::get(Context),
/// TypeBuilder<types::i<8>*[], xcompile>::get(Context),
/// nullptr);
/// }
///
/// // You may find this a convenient place to put some constants
/// // to help with getelementptr. They don’t have any effect on
/// // the operation of TypeBuilder.
/// enum Fields {
/// FIELD_A,
/// FIELD_B,
/// FIELD_ARRAY
/// };
/// }
/// } // namespace llvm
///
/// \endcode

Tell me if I’m wrong but it my case it worked only after those changes.

Thanks,

Pierre