mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-16 12:24:03 +00:00
* PIC codegen for X86/Linux has been implemented
* PIC-aware internal structures in X86 Codegen have been refactored * Visibility (default/weak) has been added * Docs fixes (external weak linkage, visibility, formatting) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33136 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -1290,6 +1290,11 @@ static void generateCompilerSpecificCode(std::ostream& Out) {
|
||||
<< "#define __ATTRIBUTE_WEAK__\n"
|
||||
<< "#endif\n\n";
|
||||
|
||||
// Add hidden visibility support. FIXME: APPLE_CC?
|
||||
Out << "#if defined(__GNUC__)\n"
|
||||
<< "#define __HIDDEN__ __attribute__((visibility(\"hidden\")))\n"
|
||||
<< "#endif\n\n";
|
||||
|
||||
// Define NaN and Inf as GCC builtins if using GCC, as 0 otherwise
|
||||
// From the GCC documentation:
|
||||
//
|
||||
@ -1500,6 +1505,8 @@ bool CWriter::doInitialization(Module &M) {
|
||||
Out << " __ATTRIBUTE_CTOR__";
|
||||
if (StaticDtors.count(I))
|
||||
Out << " __ATTRIBUTE_DTOR__";
|
||||
if (I->hasHiddenVisibility())
|
||||
Out << " __HIDDEN__";
|
||||
|
||||
if (I->hasName() && I->getName()[0] == 1)
|
||||
Out << " LLVM_ASM(\"" << I->getName().c_str()+1 << "\")";
|
||||
@ -1531,6 +1538,8 @@ bool CWriter::doInitialization(Module &M) {
|
||||
Out << " __ATTRIBUTE_WEAK__";
|
||||
else if (I->hasExternalWeakLinkage())
|
||||
Out << " __EXTERNAL_WEAK__";
|
||||
if (I->hasHiddenVisibility())
|
||||
Out << " __HIDDEN__";
|
||||
Out << ";\n";
|
||||
}
|
||||
}
|
||||
@ -1559,6 +1568,9 @@ bool CWriter::doInitialization(Module &M) {
|
||||
else if (I->hasWeakLinkage())
|
||||
Out << " __ATTRIBUTE_WEAK__";
|
||||
|
||||
if (I->hasHiddenVisibility())
|
||||
Out << " __HIDDEN__";
|
||||
|
||||
// If the initializer is not null, emit the initializer. If it is null,
|
||||
// we try to avoid emitting large amounts of zeros. The problem with
|
||||
// this, however, occurs when the variable has weak linkage. In this
|
||||
|
Reference in New Issue
Block a user