From 5d2b5c7d997059280214d2c8928462ca4e6630e5 Mon Sep 17 00:00:00 2001 From: Ahmed Bougacha Date: Wed, 11 Nov 2015 00:51:36 +0000 Subject: [PATCH] [MC] Use LShr for constant evaluation of ">>" on non-arm64 darwin. 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 | 3 +-- lib/MC/MCAsmInfoDarwin.cpp | 5 ----- lib/Target/AArch64/MCTargetDesc/AArch64MCAsmInfo.cpp | 4 ---- test/MC/AsmParser/expr-shr.s | 5 ++--- test/MC/AsmParser/exprs.s | 2 +- 5 files changed, 4 insertions(+), 15 deletions(-) diff --git a/lib/MC/MCAsmInfoCOFF.cpp b/lib/MC/MCAsmInfoCOFF.cpp index 97fc76a9adb..5b9dd2009f8 100644 --- a/lib/MC/MCAsmInfoCOFF.cpp +++ b/lib/MC/MCAsmInfoCOFF.cpp @@ -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; } diff --git a/lib/MC/MCAsmInfoDarwin.cpp b/lib/MC/MCAsmInfoDarwin.cpp index bb90ff2c350..ae9486d3db4 100644 --- a/lib/MC/MCAsmInfoDarwin.cpp +++ b/lib/MC/MCAsmInfoDarwin.cpp @@ -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; } diff --git a/lib/Target/AArch64/MCTargetDesc/AArch64MCAsmInfo.cpp b/lib/Target/AArch64/MCTargetDesc/AArch64MCAsmInfo.cpp index 921c4b94a72..fbce26e1d9a 100644 --- a/lib/Target/AArch64/MCTargetDesc/AArch64MCAsmInfo.cpp +++ b/lib/Target/AArch64/MCTargetDesc/AArch64MCAsmInfo.cpp @@ -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( diff --git a/test/MC/AsmParser/expr-shr.s b/test/MC/AsmParser/expr-shr.s index fc117b64e95..792bef050d3 100644 --- a/test/MC/AsmParser/expr-shr.s +++ b/test/MC/AsmParser/expr-shr.s @@ -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) diff --git a/test/MC/AsmParser/exprs.s b/test/MC/AsmParser/exprs.s index c5fc9b594a0..1c3e284bcf7 100644 --- a/test/MC/AsmParser/exprs.s +++ b/test/MC/AsmParser/exprs.s @@ -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 -- 2.34.1