[MC] Use LShr for constant evaluation of ">>" on non-arm64 darwin.
authorAhmed Bougacha <ahmed.bougacha@gmail.com>
Wed, 11 Nov 2015 00:51:36 +0000 (00:51 +0000)
committerAhmed Bougacha <ahmed.bougacha@gmail.com>
Wed, 11 Nov 2015 00:51:36 +0000 (00:51 +0000)
Follow-up to r235963: this matches other assemblers and is less
unexpected (e.g. PR23227).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@252681 91177308-0d34-0410-b5e6-96231b3b80d8

lib/MC/MCAsmInfoCOFF.cpp
lib/MC/MCAsmInfoDarwin.cpp
lib/Target/AArch64/MCTargetDesc/AArch64MCAsmInfo.cpp
test/MC/AsmParser/expr-shr.s
test/MC/AsmParser/exprs.s

index 97fc76a9adb19a899392db8d158eca388bb43e68..5b9dd2009f8b2eed2ac0863f1794b447372f9d17 100644 (file)
@@ -37,8 +37,7 @@ MCAsmInfoCOFF::MCAsmInfoCOFF() {
 
   UseIntegratedAssembler = true;
 
-  // FIXME: For now keep the previous behavior, AShr. Need to double-check
-  // other COFF-targeting assemblers and change this if necessary.
+  // At least MSVC inline-asm does AShr.
   UseLogicalShr = false;
 }
 
index bb90ff2c350ae7bda091ceec5f3b38d7ac203003..ae9486d3db4de9c535af8cc9c0c1667faaa45559 100644 (file)
@@ -93,9 +93,4 @@ MCAsmInfoDarwin::MCAsmInfoDarwin() {
 
   UseIntegratedAssembler = true;
   SetDirectiveSuppressesReloc = true;
-
-  // FIXME: For now keep the previous behavior, AShr, matching the previous
-  // behavior of as(1) (both -q and -Q: resp. LLVM and gas v1.38).
-  // If/when this changes, the AArch64 Darwin special case can go away.
-  UseLogicalShr = false;
 }
index 921c4b94a7299d313c38c123bdd1767b0caf2409..fbce26e1d9a116001c866676c07dc0438d5c79a9 100644 (file)
@@ -48,10 +48,6 @@ AArch64MCAsmInfoDarwin::AArch64MCAsmInfoDarwin() {
   UseDataRegionDirectives = true;
 
   ExceptionsType = ExceptionHandling::DwarfCFI;
-
-  // AArch64 Darwin doesn't have the baggage of X86/ARM, so it's fine to use
-  // LShr instead of AShr.
-  UseLogicalShr = true;
 }
 
 const MCExpr *AArch64MCAsmInfoDarwin::getExprForPersonalitySymbol(
index fc117b64e95ac5393323de9c5ccf87af906183e3..792bef050d31e4fabd8b10645e417aff2a120a35 100644 (file)
@@ -1,13 +1,12 @@
 // RUN: llvm-mc -triple x86_64-unknown-unknown-elf %s | FileCheck %s --check-prefix=CHECK
+// RUN: llvm-mc -triple x86_64-unknown-darwin %s | FileCheck %s --check-prefix=CHECK
 // RUN: llvm-mc -triple x86_64-pc-windows-msvc %s | FileCheck %s --check-prefix=MSVC
-// RUN: llvm-mc -triple x86_64-unknown-darwin %s | FileCheck %s --check-prefix=DARWIN
 
 .data
 
 // CHECK: .quad 3
 
-// Both COFF and Darwin still use AShr.
+// MSVC does AShr.
 // MSVC: .quad -1
-// DARWIN: .quad -1
 
 .quad (~0 >> 62)
index c5fc9b594a0c608db95a30625f5a54ceb69891e3..1c3e284bcf7eed93acc67837ed36c460d9d673b0 100644 (file)
@@ -34,7 +34,7 @@ k:
         check_expr 1 | 2, 3
         check_expr 1 << 1, 2
         check_expr 2 >> 1, 1
-        check_expr (~0 >> 1), -1
+        check_expr (~0 >> 62), 3
         check_expr 3 - 2, 1
         check_expr 1 ^ 3, 2
         check_expr 1 && 2, 1