mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-22 18:54:02 +01:00
Fixes for PR258 and PR259.
Functions with linkonce linkage are declared with weak linkage. Global floating point constants used to represent unprintable values (such as NaN and infinity) are declared static so that they don't interfere with other CBE generated translation units. llvm-svn: 11884
This commit is contained in:
parent
d359fbf991
commit
0b01bff060
@ -690,6 +690,7 @@ bool CWriter::doInitialization(Module &M) {
|
|||||||
if (!I->getIntrinsicID()) {
|
if (!I->getIntrinsicID()) {
|
||||||
printFunctionSignature(I, true);
|
printFunctionSignature(I, true);
|
||||||
if (I->hasWeakLinkage()) Out << " __ATTRIBUTE_WEAK__";
|
if (I->hasWeakLinkage()) Out << " __ATTRIBUTE_WEAK__";
|
||||||
|
if (I->hasLinkOnceLinkage()) Out << " __ATTRIBUTE_WEAK__";
|
||||||
Out << ";\n";
|
Out << ";\n";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -788,12 +789,12 @@ void CWriter::printFloatingPointConstants(Module &M) {
|
|||||||
|
|
||||||
if (FPC->getType() == Type::DoubleTy) {
|
if (FPC->getType() == Type::DoubleTy) {
|
||||||
DBLUnion.D = Val;
|
DBLUnion.D = Val;
|
||||||
Out << "const ConstantDoubleTy FPConstant" << FPCounter++
|
Out << "static const ConstantDoubleTy FPConstant" << FPCounter++
|
||||||
<< " = 0x" << std::hex << DBLUnion.U << std::dec
|
<< " = 0x" << std::hex << DBLUnion.U << std::dec
|
||||||
<< "ULL; /* " << Val << " */\n";
|
<< "ULL; /* " << Val << " */\n";
|
||||||
} else if (FPC->getType() == Type::FloatTy) {
|
} else if (FPC->getType() == Type::FloatTy) {
|
||||||
FLTUnion.F = Val;
|
FLTUnion.F = Val;
|
||||||
Out << "const ConstantFloatTy FPConstant" << FPCounter++
|
Out << "static const ConstantFloatTy FPConstant" << FPCounter++
|
||||||
<< " = 0x" << std::hex << FLTUnion.U << std::dec
|
<< " = 0x" << std::hex << FLTUnion.U << std::dec
|
||||||
<< "U; /* " << Val << " */\n";
|
<< "U; /* " << Val << " */\n";
|
||||||
} else
|
} else
|
||||||
@ -890,7 +891,6 @@ void CWriter::printContainedStructs(const Type *Ty,
|
|||||||
|
|
||||||
void CWriter::printFunctionSignature(const Function *F, bool Prototype) {
|
void CWriter::printFunctionSignature(const Function *F, bool Prototype) {
|
||||||
if (F->hasInternalLinkage()) Out << "static ";
|
if (F->hasInternalLinkage()) Out << "static ";
|
||||||
if (F->hasLinkOnceLinkage()) Out << "inline ";
|
|
||||||
|
|
||||||
// Loop over the arguments, printing them...
|
// Loop over the arguments, printing them...
|
||||||
const FunctionType *FT = cast<FunctionType>(F->getFunctionType());
|
const FunctionType *FT = cast<FunctionType>(F->getFunctionType());
|
||||||
|
Loading…
Reference in New Issue
Block a user