[llvm] r305012 - [MachO] Fix codegen of alias of alias.
Evgeniy Stepanov via llvm-commits
llvm-commits at lists.llvm.org
Thu Jun 8 13:49:04 PDT 2017
Author: eugenis
Date: Thu Jun 8 15:49:03 2017
New Revision: 305012
URL: http://llvm.org/viewvc/llvm-project?rev=305012&view=rev
Log:
[MachO] Fix codegen of alias of alias.
Fixes PR33316.
Added:
llvm/trunk/test/MC/MachO/alias.s
Modified:
llvm/trunk/lib/MC/MCExpr.cpp
llvm/trunk/test/MC/MachO/variable-exprs.s
Modified: llvm/trunk/lib/MC/MCExpr.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/MC/MCExpr.cpp?rev=305012&r1=305011&r2=305012&view=diff
==============================================================================
--- llvm/trunk/lib/MC/MCExpr.cpp (original)
+++ llvm/trunk/lib/MC/MCExpr.cpp Thu Jun 8 15:49:03 2017
@@ -655,8 +655,12 @@ bool MCExpr::evaluateAsRelocatableImpl(M
// 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
// possible.
+ // Allow constant expressions.
if (!A && !B)
return true;
+ // Allows aliases with zero offset.
+ if (Res.getConstant() == 0 && (!A || !B))
+ return true;
}
}
Added: llvm/trunk/test/MC/MachO/alias.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/MachO/alias.s?rev=305012&view=auto
==============================================================================
--- llvm/trunk/test/MC/MachO/alias.s (added)
+++ llvm/trunk/test/MC/MachO/alias.s Thu Jun 8 15:49:03 2017
@@ -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: ]
Modified: llvm/trunk/test/MC/MachO/variable-exprs.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/MachO/variable-exprs.s?rev=305012&r1=305011&r2=305012&view=diff
==============================================================================
--- llvm/trunk/test/MC/MachO/variable-exprs.s (original)
+++ llvm/trunk/test/MC/MachO/variable-exprs.s Thu Jun 8 15:49:03 2017
@@ -110,8 +110,8 @@ Lt0_x = Lt0_a - Lt0_b
// CHECK-I386: 0x2C 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: 0x20 0 2 1 GENERIC_RELOC_VANILLA 0 d2
-// CHECK-I386: 0x1C 0 2 1 GENERIC_RELOC_VANILLA 0 d
+// CHECK-I386: 0x20 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: 0x14 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: 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: 0x20 0 2 1 X86_64_RELOC_UNSIGNED 0 d2
-// CHECK-X86_64: 0x1C 0 2 1 X86_64_RELOC_UNSIGNED 0 d
+// 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: 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: 0x10 0 2 1 X86_64_RELOC_UNSIGNED 0 b
More information about the llvm-commits
mailing list