Refactor duplicated expression. NFC.

llvm-svn: 289550
This commit is contained in:
Rafael Espindola 2016-12-13 16:59:19 +00:00
parent a3dc05b363
commit 09d5daab49
1 changed files with 4 additions and 4 deletions

View File

@ -150,6 +150,7 @@ static unsigned handleTlsRelocation(uint32_t Type, SymbolBody &Body,
return handleNoRelaxTlsRelocation<ELFT>(In<ELFT>::MipsGot, Type, Body, C, return handleNoRelaxTlsRelocation<ELFT>(In<ELFT>::MipsGot, Type, Body, C,
Offset, Addend, Expr); Offset, Addend, Expr);
bool IsPreemptible = isPreemptible(Body, Type);
if ((Expr == R_TLSDESC || Expr == R_TLSDESC_PAGE || Expr == R_TLSDESC_CALL) && if ((Expr == R_TLSDESC || Expr == R_TLSDESC_PAGE || Expr == R_TLSDESC_CALL) &&
Config->Shared) { Config->Shared) {
if (In<ELFT>::Got->addDynTlsEntry(Body)) { if (In<ELFT>::Got->addDynTlsEntry(Body)) {
@ -195,7 +196,7 @@ static unsigned handleTlsRelocation(uint32_t Type, SymbolBody &Body,
// If the symbol is preemptible we need the dynamic linker to write // If the symbol is preemptible we need the dynamic linker to write
// the offset too. // the offset too.
uintX_t OffsetOff = Off + (uintX_t)sizeof(uintX_t); uintX_t OffsetOff = Off + (uintX_t)sizeof(uintX_t);
if (isPreemptible(Body, Type)) if (IsPreemptible)
In<ELFT>::RelaDyn->addReloc({Target->TlsOffsetRel, In<ELFT>::Got, In<ELFT>::RelaDyn->addReloc({Target->TlsOffsetRel, In<ELFT>::Got,
OffsetOff, false, &Body, 0}); OffsetOff, false, &Body, 0});
else else
@ -208,7 +209,7 @@ static unsigned handleTlsRelocation(uint32_t Type, SymbolBody &Body,
// Global-Dynamic relocs can be relaxed to Initial-Exec or Local-Exec // Global-Dynamic relocs can be relaxed to Initial-Exec or Local-Exec
// depending on the symbol being locally defined or not. // depending on the symbol being locally defined or not.
if (isPreemptible(Body, Type)) { if (IsPreemptible) {
C.Relocations.push_back( C.Relocations.push_back(
{Target->adjustRelaxExpr(Type, nullptr, R_RELAX_TLS_GD_TO_IE), Type, {Target->adjustRelaxExpr(Type, nullptr, R_RELAX_TLS_GD_TO_IE), Type,
Offset, Addend, &Body}); Offset, Addend, &Body});
@ -228,8 +229,7 @@ static unsigned handleTlsRelocation(uint32_t Type, SymbolBody &Body,
// Initial-Exec relocs can be relaxed to Local-Exec if the symbol is locally // Initial-Exec relocs can be relaxed to Local-Exec if the symbol is locally
// defined. // defined.
if (Target->isTlsInitialExecRel(Type) && !Config->Shared && if (Target->isTlsInitialExecRel(Type) && !Config->Shared && !IsPreemptible) {
!isPreemptible(Body, Type)) {
C.Relocations.push_back( C.Relocations.push_back(
{R_RELAX_TLS_IE_TO_LE, Type, Offset, Addend, &Body}); {R_RELAX_TLS_IE_TO_LE, Type, Offset, Addend, &Body});
return 1; return 1;