mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-15 04:30:12 +00:00
wrap long lines
Fix PR1358 and test/Assembler/2007-04-25-AssemblerFoldExternWeak.ll, by creating forward decl globals with linkage extern_weak to defeat implicit constant folding. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36469 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
5fc30dfe71
commit
4989b84271
@ -1608,7 +1608,8 @@ ConstVal: Types '[' ConstVector ']' { // Nonempty unsized arr
|
|||||||
|
|
||||||
// Check to ensure that Type is not packed
|
// Check to ensure that Type is not packed
|
||||||
if (STy->isPacked())
|
if (STy->isPacked())
|
||||||
GEN_ERROR("Unpacked Initializer to vector type '" + STy->getDescription() + "'");
|
GEN_ERROR("Unpacked Initializer to vector type '" +
|
||||||
|
STy->getDescription() + "'");
|
||||||
|
|
||||||
$$ = ConstantStruct::get(STy, *$3);
|
$$ = ConstantStruct::get(STy, *$3);
|
||||||
delete $1; delete $3;
|
delete $1; delete $3;
|
||||||
@ -1627,7 +1628,8 @@ ConstVal: Types '[' ConstVector ']' { // Nonempty unsized arr
|
|||||||
|
|
||||||
// Check to ensure that Type is not packed
|
// Check to ensure that Type is not packed
|
||||||
if (STy->isPacked())
|
if (STy->isPacked())
|
||||||
GEN_ERROR("Unpacked Initializer to vector type '" + STy->getDescription() + "'");
|
GEN_ERROR("Unpacked Initializer to vector type '" +
|
||||||
|
STy->getDescription() + "'");
|
||||||
|
|
||||||
$$ = ConstantStruct::get(STy, std::vector<Constant*>());
|
$$ = ConstantStruct::get(STy, std::vector<Constant*>());
|
||||||
delete $1;
|
delete $1;
|
||||||
@ -1746,11 +1748,11 @@ ConstVal: Types '[' ConstVector ']' { // Nonempty unsized arr
|
|||||||
GlobalValue *GV;
|
GlobalValue *GV;
|
||||||
if (const FunctionType *FTy =
|
if (const FunctionType *FTy =
|
||||||
dyn_cast<FunctionType>(PT->getElementType())) {
|
dyn_cast<FunctionType>(PT->getElementType())) {
|
||||||
GV = new Function(FTy, GlobalValue::ExternalLinkage, Name,
|
GV = new Function(FTy, GlobalValue::ExternalWeakLinkage, Name,
|
||||||
CurModule.CurrentModule);
|
CurModule.CurrentModule);
|
||||||
} else {
|
} else {
|
||||||
GV = new GlobalVariable(PT->getElementType(), false,
|
GV = new GlobalVariable(PT->getElementType(), false,
|
||||||
GlobalValue::ExternalLinkage, 0,
|
GlobalValue::ExternalWeakLinkage, 0,
|
||||||
Name, CurModule.CurrentModule);
|
Name, CurModule.CurrentModule);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2023,7 +2025,8 @@ Definition
|
|||||||
} GlobalVarAttributes {
|
} GlobalVarAttributes {
|
||||||
CurGV = 0;
|
CurGV = 0;
|
||||||
}
|
}
|
||||||
| OptGlobalAssign GVInternalLinkage GVVisibilityStyle ThreadLocal GlobalType ConstVal {
|
| OptGlobalAssign GVInternalLinkage GVVisibilityStyle ThreadLocal GlobalType
|
||||||
|
ConstVal {
|
||||||
if ($6 == 0)
|
if ($6 == 0)
|
||||||
GEN_ERROR("Global value initializer is not a constant");
|
GEN_ERROR("Global value initializer is not a constant");
|
||||||
CurGV = ParseGlobalVariable($1, $2, $3, $5, $6->getType(), $6, $4);
|
CurGV = ParseGlobalVariable($1, $2, $3, $5, $6->getType(), $6, $4);
|
||||||
@ -2031,7 +2034,8 @@ Definition
|
|||||||
} GlobalVarAttributes {
|
} GlobalVarAttributes {
|
||||||
CurGV = 0;
|
CurGV = 0;
|
||||||
}
|
}
|
||||||
| OptGlobalAssign GVExternalLinkage GVVisibilityStyle ThreadLocal GlobalType Types {
|
| OptGlobalAssign GVExternalLinkage GVVisibilityStyle ThreadLocal GlobalType
|
||||||
|
Types {
|
||||||
if (!UpRefs.empty())
|
if (!UpRefs.empty())
|
||||||
GEN_ERROR("Invalid upreference in type: " + (*$6)->getDescription());
|
GEN_ERROR("Invalid upreference in type: " + (*$6)->getDescription());
|
||||||
CurGV = ParseGlobalVariable($1, $2, $3, $5, *$6, 0, $4);
|
CurGV = ParseGlobalVariable($1, $2, $3, $5, *$6, 0, $4);
|
||||||
@ -2041,7 +2045,8 @@ Definition
|
|||||||
CurGV = 0;
|
CurGV = 0;
|
||||||
CHECK_FOR_ERROR
|
CHECK_FOR_ERROR
|
||||||
}
|
}
|
||||||
| OptGlobalAssign GVVisibilityStyle ALIAS AliasLinkage ResultTypes SymbolicValueRef {
|
| OptGlobalAssign GVVisibilityStyle ALIAS AliasLinkage ResultTypes
|
||||||
|
SymbolicValueRef {
|
||||||
std::string Name($1);
|
std::string Name($1);
|
||||||
if (Name.empty())
|
if (Name.empty())
|
||||||
GEN_ERROR("Alias name cannot be empty")
|
GEN_ERROR("Alias name cannot be empty")
|
||||||
@ -2060,7 +2065,8 @@ Definition
|
|||||||
if (V == 0)
|
if (V == 0)
|
||||||
GEN_ERROR(std::string("Invalid aliasee for alias: ") + $1);
|
GEN_ERROR(std::string("Invalid aliasee for alias: ") + $1);
|
||||||
if (GlobalValue* Aliasee = dyn_cast<GlobalValue>(V)) {
|
if (GlobalValue* Aliasee = dyn_cast<GlobalValue>(V)) {
|
||||||
GlobalAlias* GA = new GlobalAlias(VTy, $4, Name, Aliasee, CurModule.CurrentModule);
|
GlobalAlias* GA = new GlobalAlias(VTy, $4, Name, Aliasee,
|
||||||
|
CurModule.CurrentModule);
|
||||||
GA->setVisibility($2);
|
GA->setVisibility($2);
|
||||||
InsertValue(GA, CurModule.Values);
|
InsertValue(GA, CurModule.Values);
|
||||||
} else
|
} else
|
||||||
@ -2228,7 +2234,7 @@ FunctionHeaderH : OptCallingConv ResultTypes GlobalName '(' ArgList ')'
|
|||||||
CurModule.CurrentModule->getFunctionList().push_back(Fn);
|
CurModule.CurrentModule->getFunctionList().push_back(Fn);
|
||||||
} else if (!FunctionName.empty() && // Merge with an earlier prototype?
|
} else if (!FunctionName.empty() && // Merge with an earlier prototype?
|
||||||
(Fn = CurModule.CurrentModule->getFunction(FunctionName))) {
|
(Fn = CurModule.CurrentModule->getFunction(FunctionName))) {
|
||||||
if (Fn->getFunctionType() != FT ) {
|
if (Fn->getFunctionType() != FT) {
|
||||||
// The existing function doesn't have the same type. This is an overload
|
// The existing function doesn't have the same type. This is an overload
|
||||||
// error.
|
// error.
|
||||||
GEN_ERROR("Overload of function '" + FunctionName + "' not permitted.");
|
GEN_ERROR("Overload of function '" + FunctionName + "' not permitted.");
|
||||||
@ -2243,7 +2249,7 @@ FunctionHeaderH : OptCallingConv ResultTypes GlobalName '(' ArgList ')'
|
|||||||
AI->setName("");
|
AI->setName("");
|
||||||
}
|
}
|
||||||
} else { // Not already defined?
|
} else { // Not already defined?
|
||||||
Fn = new Function(FT, GlobalValue::ExternalLinkage, FunctionName,
|
Fn = new Function(FT, GlobalValue::ExternalWeakLinkage, FunctionName,
|
||||||
CurModule.CurrentModule);
|
CurModule.CurrentModule);
|
||||||
|
|
||||||
InsertValue(Fn, CurModule.Values);
|
InsertValue(Fn, CurModule.Values);
|
||||||
|
Loading…
Reference in New Issue
Block a user