mirror of
https://github.com/RPCSX/llvm.git
synced 2024-11-25 12:50:00 +00:00
Fixed alloca declaration problem on sun.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5546 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
98d829c22f
commit
ecd78ac1cb
@ -504,6 +504,17 @@ bool CWriter::nameAllUsedStructureTypes(Module &M) {
|
||||
return Changed;
|
||||
}
|
||||
|
||||
static void generateAllocaDecl(ostream& Out)
|
||||
{
|
||||
// On SunOS, we need to insert the alloca macro & proto for the builtin.
|
||||
Out << "#ifdef sun\n"
|
||||
<< "extern void *__builtin_alloca(unsigned long);\n"
|
||||
<< "#define alloca(x) __builtin_alloca(x)\n"
|
||||
<< "#else\n"
|
||||
<< "#include <alloca.h>\n"
|
||||
<< "#endif\n\n";
|
||||
}
|
||||
|
||||
void CWriter::printModule(Module *M) {
|
||||
// Calculate which global values have names that will collide when we throw
|
||||
// away type information.
|
||||
@ -528,18 +539,18 @@ void CWriter::printModule(Module *M) {
|
||||
//Out << "#include <stdlib.h>\n";
|
||||
|
||||
// get declaration for alloca
|
||||
Out << "/* Provide Declarations */\n"
|
||||
<< "#include <alloca.h>\n\n"
|
||||
|
||||
// Provide a definition for null if one does not already exist,
|
||||
// and for `bool' if not compiling with a C++ compiler.
|
||||
<< "#ifndef NULL\n#define NULL 0\n#endif\n\n"
|
||||
Out << "/* Provide Declarations */\n";
|
||||
generateAllocaDecl(Out);
|
||||
|
||||
// Provide a definition for null if one does not already exist,
|
||||
// and for `bool' if not compiling with a C++ compiler.
|
||||
Out << "#ifndef NULL\n#define NULL 0\n#endif\n\n"
|
||||
<< "#ifndef __cplusplus\ntypedef unsigned char bool;\n#endif\n"
|
||||
|
||||
|
||||
<< "\n\n/* Support for floating point constants */\n"
|
||||
<< "typedef unsigned long long ConstantDoubleTy;\n"
|
||||
<< "typedef unsigned int ConstantFloatTy;\n"
|
||||
|
||||
|
||||
<< "\n\n/* Global Declarations */\n";
|
||||
|
||||
// First output all the declarations for the program, because C requires
|
||||
|
@ -504,6 +504,17 @@ bool CWriter::nameAllUsedStructureTypes(Module &M) {
|
||||
return Changed;
|
||||
}
|
||||
|
||||
static void generateAllocaDecl(ostream& Out)
|
||||
{
|
||||
// On SunOS, we need to insert the alloca macro & proto for the builtin.
|
||||
Out << "#ifdef sun\n"
|
||||
<< "extern void *__builtin_alloca(unsigned long);\n"
|
||||
<< "#define alloca(x) __builtin_alloca(x)\n"
|
||||
<< "#else\n"
|
||||
<< "#include <alloca.h>\n"
|
||||
<< "#endif\n\n";
|
||||
}
|
||||
|
||||
void CWriter::printModule(Module *M) {
|
||||
// Calculate which global values have names that will collide when we throw
|
||||
// away type information.
|
||||
@ -528,18 +539,18 @@ void CWriter::printModule(Module *M) {
|
||||
//Out << "#include <stdlib.h>\n";
|
||||
|
||||
// get declaration for alloca
|
||||
Out << "/* Provide Declarations */\n"
|
||||
<< "#include <alloca.h>\n\n"
|
||||
|
||||
// Provide a definition for null if one does not already exist,
|
||||
// and for `bool' if not compiling with a C++ compiler.
|
||||
<< "#ifndef NULL\n#define NULL 0\n#endif\n\n"
|
||||
Out << "/* Provide Declarations */\n";
|
||||
generateAllocaDecl(Out);
|
||||
|
||||
// Provide a definition for null if one does not already exist,
|
||||
// and for `bool' if not compiling with a C++ compiler.
|
||||
Out << "#ifndef NULL\n#define NULL 0\n#endif\n\n"
|
||||
<< "#ifndef __cplusplus\ntypedef unsigned char bool;\n#endif\n"
|
||||
|
||||
|
||||
<< "\n\n/* Support for floating point constants */\n"
|
||||
<< "typedef unsigned long long ConstantDoubleTy;\n"
|
||||
<< "typedef unsigned int ConstantFloatTy;\n"
|
||||
|
||||
|
||||
<< "\n\n/* Global Declarations */\n";
|
||||
|
||||
// First output all the declarations for the program, because C requires
|
||||
|
Loading…
Reference in New Issue
Block a user