forked from OSchip/llvm-project
[MachO] Fix codegen of alias of alias.
Fixes PR33316. llvm-svn: 305012
This commit is contained in:
parent
bc6d8b0f51
commit
60d411b66e
|
@ -655,8 +655,12 @@ bool MCExpr::evaluateAsRelocatableImpl(MCValue &Res, const MCAssembler *Asm,
|
||||||
// the OS X assembler will completely drop the 4. We should probably
|
// the OS X assembler will completely drop the 4. We should probably
|
||||||
// include it in the relocation or produce an error if that is not
|
// include it in the relocation or produce an error if that is not
|
||||||
// possible.
|
// possible.
|
||||||
|
// Allow constant expressions.
|
||||||
if (!A && !B)
|
if (!A && !B)
|
||||||
return true;
|
return true;
|
||||||
|
// Allows aliases with zero offset.
|
||||||
|
if (Res.getConstant() == 0 && (!A || !B))
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,12 @@
|
||||||
|
// RUN: llvm-mc -triple x86_64-apple-macosx10.12.0 %s -filetype=obj | llvm-readobj -r | FileCheck %s
|
||||||
|
|
||||||
|
l_a:
|
||||||
|
l_b = l_a
|
||||||
|
l_c = l_b
|
||||||
|
.long l_c
|
||||||
|
|
||||||
|
// CHECK: Relocations [
|
||||||
|
// CHECK-NEXT: Section __text {
|
||||||
|
// CHECK-NEXT: 0x0 0 2 1 X86_64_RELOC_UNSIGNED 0 l_c
|
||||||
|
// CHECK-NEXT: }
|
||||||
|
// CHECK-NEXT: ]
|
|
@ -110,8 +110,8 @@ Lt0_x = Lt0_a - Lt0_b
|
||||||
// CHECK-I386: 0x2C 0 2 0 GENERIC_RELOC_VANILLA 0 __data
|
// CHECK-I386: 0x2C 0 2 0 GENERIC_RELOC_VANILLA 0 __data
|
||||||
// CHECK-I386: 0x28 0 2 0 GENERIC_RELOC_VANILLA 0 __data
|
// CHECK-I386: 0x28 0 2 0 GENERIC_RELOC_VANILLA 0 __data
|
||||||
// CHECK-I386: 0x24 0 2 1 GENERIC_RELOC_VANILLA 0 d3
|
// CHECK-I386: 0x24 0 2 1 GENERIC_RELOC_VANILLA 0 d3
|
||||||
// CHECK-I386: 0x20 0 2 1 GENERIC_RELOC_VANILLA 0 d2
|
// CHECK-I386: 0x20 0 2 1 GENERIC_RELOC_VANILLA 0 d{{$}}
|
||||||
// CHECK-I386: 0x1C 0 2 1 GENERIC_RELOC_VANILLA 0 d
|
// CHECK-I386: 0x1C 0 2 1 GENERIC_RELOC_VANILLA 0 d{{$}}
|
||||||
// CHECK-I386: 0x18 0 2 n/a GENERIC_RELOC_VANILLA 1 0x5
|
// CHECK-I386: 0x18 0 2 n/a GENERIC_RELOC_VANILLA 1 0x5
|
||||||
// CHECK-I386: 0x14 0 2 0 GENERIC_RELOC_VANILLA 0 __data
|
// CHECK-I386: 0x14 0 2 0 GENERIC_RELOC_VANILLA 0 __data
|
||||||
// CHECK-I386: 0x10 0 2 0 GENERIC_RELOC_VANILLA 0 __data
|
// CHECK-I386: 0x10 0 2 0 GENERIC_RELOC_VANILLA 0 __data
|
||||||
|
@ -319,8 +319,8 @@ Lt0_x = Lt0_a - Lt0_b
|
||||||
// CHECK-X86_64: 0x2C 0 2 1 X86_64_RELOC_UNSIGNED 0 g
|
// CHECK-X86_64: 0x2C 0 2 1 X86_64_RELOC_UNSIGNED 0 g
|
||||||
// CHECK-X86_64: 0x28 0 2 1 X86_64_RELOC_UNSIGNED 0 f
|
// CHECK-X86_64: 0x28 0 2 1 X86_64_RELOC_UNSIGNED 0 f
|
||||||
// CHECK-X86_64: 0x24 0 2 1 X86_64_RELOC_UNSIGNED 0 d3
|
// CHECK-X86_64: 0x24 0 2 1 X86_64_RELOC_UNSIGNED 0 d3
|
||||||
// CHECK-X86_64: 0x20 0 2 1 X86_64_RELOC_UNSIGNED 0 d2
|
// CHECK-X86_64: 0x20 0 2 1 X86_64_RELOC_UNSIGNED 0 d{{$}}
|
||||||
// CHECK-X86_64: 0x1C 0 2 1 X86_64_RELOC_UNSIGNED 0 d
|
// CHECK-X86_64: 0x1C 0 2 1 X86_64_RELOC_UNSIGNED 0 d{{$}}
|
||||||
// CHECK-X86_64: 0x18 0 2 1 X86_64_RELOC_UNSIGNED 0 a
|
// CHECK-X86_64: 0x18 0 2 1 X86_64_RELOC_UNSIGNED 0 a
|
||||||
// CHECK-X86_64: 0x14 0 2 1 X86_64_RELOC_UNSIGNED 0 e
|
// CHECK-X86_64: 0x14 0 2 1 X86_64_RELOC_UNSIGNED 0 e
|
||||||
// CHECK-X86_64: 0x10 0 2 1 X86_64_RELOC_UNSIGNED 0 b
|
// CHECK-X86_64: 0x10 0 2 1 X86_64_RELOC_UNSIGNED 0 b
|
||||||
|
|
Loading…
Reference in New Issue