This was stored in LiveIntervals, but not actually used for anything related to LiveIntervals. It was only used in one check for if a load instruction is rematerializable. I also don't think this was entirely correct, since it was implicitly assuming constant loads are also dereferenceable. Remove this and rely only on the invariant+dereferenceable flags in the memory operand. Set the flag based on the AA query upfront. This should have the same net benefit, but has the possible disadvantage of making this AA query nonlazy. Preserve the behavior of assuming pointsToConstantMemory implying dereferenceable for now, but maybe this should be changed.
94 lines
4.0 KiB
LLVM
94 lines
4.0 KiB
LLVM
; RUN: llc -mtriple=aarch64-- -debug-pass=Structure %s -o /dev/null 2>&1 \
|
|
; RUN: --debugify-and-strip-all-safe=0 \
|
|
; RUN: -verify-machineinstrs=0 -O0 \
|
|
; RUN: | FileCheck %s --check-prefixes=ENABLED,FALLBACK
|
|
|
|
; RUN: llc -mtriple=aarch64-- -debug-pass=Structure %s -o /dev/null 2>&1 \
|
|
; RUN: --debugify-and-strip-all-safe=0 \
|
|
; RUN: -verify-machineinstrs -O0 \
|
|
; RUN: | FileCheck %s --check-prefixes=ENABLED,FALLBACK,VERIFY,VERIFY-O0
|
|
|
|
; RUN: llc -mtriple=aarch64-- -debug-pass=Structure %s -o /dev/null 2>&1 \
|
|
; RUN: --debugify-and-strip-all-safe=0 \
|
|
; RUN: -verify-machineinstrs=0 -O0 -aarch64-enable-global-isel-at-O=0 -global-isel-abort=1 \
|
|
; RUN: | FileCheck %s --check-prefixes=ENABLED,NOFALLBACK
|
|
|
|
; RUN: llc -mtriple=aarch64-- -debug-pass=Structure %s -o /dev/null 2>&1 \
|
|
; RUN: --debugify-and-strip-all-safe=0 \
|
|
; RUN: -verify-machineinstrs=0 -O0 -aarch64-enable-global-isel-at-O=0 -global-isel-abort=2 \
|
|
; RUN: | FileCheck %s --check-prefixes=ENABLED,FALLBACK
|
|
|
|
; RUN: llc -mtriple=aarch64-- -debug-pass=Structure %s -o /dev/null 2>&1 \
|
|
; RUN: --debugify-and-strip-all-safe=0 \
|
|
; RUN: -verify-machineinstrs=0 -global-isel \
|
|
; RUN: | FileCheck %s --check-prefix ENABLED --check-prefix NOFALLBACK --check-prefix ENABLED-O1
|
|
|
|
; RUN: llc -mtriple=aarch64-- -debug-pass=Structure %s -o /dev/null 2>&1 \
|
|
; RUN: --debugify-and-strip-all-safe=0 \
|
|
; RUN: -verify-machineinstrs=0 -global-isel -global-isel-abort=2 \
|
|
; RUN: | FileCheck %s --check-prefix ENABLED --check-prefix FALLBACK --check-prefix ENABLED-O1
|
|
|
|
; RUN: llc -mtriple=aarch64-- -debug-pass=Structure %s -o /dev/null 2>&1 \
|
|
; RUN: --debugify-and-strip-all-safe=0 \
|
|
; RUN: -verify-machineinstrs=0 -O1 -aarch64-enable-global-isel-at-O=3 \
|
|
; RUN: | FileCheck %s --check-prefix ENABLED --check-prefix ENABLED-O1
|
|
|
|
; RUN: llc -mtriple=aarch64-- -debug-pass=Structure %s -o /dev/null 2>&1 \
|
|
; RUN: --debugify-and-strip-all-safe=0 \
|
|
; RUN: -verify-machineinstrs=0 -O1 -aarch64-enable-global-isel-at-O=0 \
|
|
; RUN: | FileCheck %s --check-prefix DISABLED
|
|
|
|
; RUN: llc -mtriple=aarch64-- -debug-pass=Structure %s -o /dev/null 2>&1 \
|
|
; RUN: --debugify-and-strip-all-safe=0 \
|
|
; RUN: -verify-machineinstrs=0 -aarch64-enable-global-isel-at-O=-1 \
|
|
; RUN: | FileCheck %s --check-prefix DISABLED
|
|
|
|
; RUN: llc -mtriple=aarch64-- -debug-pass=Structure %s -o /dev/null 2>&1 \
|
|
; RUN: --debugify-and-strip-all-safe=0 \
|
|
; RUN: -verify-machineinstrs=0 | FileCheck %s --check-prefix DISABLED
|
|
|
|
; RUN: llc -mtriple=aarch64-- -fast-isel=0 -global-isel=false \
|
|
; RUN: --debugify-and-strip-all-safe=0 \
|
|
; RUN: -debug-pass=Structure %s -o /dev/null 2>&1 -verify-machineinstrs=0 \
|
|
; RUN: | FileCheck %s --check-prefix DISABLED
|
|
|
|
; ENABLED: Safe Stack instrumentation pass
|
|
|
|
; ENABLED-O1: Basic Alias Analysis (stateless AA impl)
|
|
; ENABLED-O1-NEXT: Function Alias Analysis Results
|
|
; ENABLED: IRTranslator
|
|
; VERIFY-NEXT: Verify generated machine code
|
|
; ENABLED-NEXT: Analysis for ComputingKnownBits
|
|
; ENABLED-O1-NEXT: MachineDominator Tree Construction
|
|
; ENABLED-O1-NEXT: Analysis containing CSE Info
|
|
; ENABLED-O1-NEXT: PreLegalizerCombiner
|
|
; VERIFY-O0-NEXT: AArch64O0PreLegalizerCombiner
|
|
; VERIFY-NEXT: Verify generated machine code
|
|
; ENABLED-O1-NEXT: LoadStoreOpt
|
|
; VERIFY-O0-NEXT: Analysis containing CSE Info
|
|
; ENABLED-NEXT: Legalizer
|
|
; VERIFY-NEXT: Verify generated machine code
|
|
; ENABLED: RegBankSelect
|
|
; VERIFY-NEXT: Verify generated machine code
|
|
; ENABLED-NEXT: Localizer
|
|
; VERIFY-O0-NEXT: Verify generated machine code
|
|
; ENABLED-NEXT: Analysis for ComputingKnownBits
|
|
; ENABLED-O1-NEXT: Lazy Branch Probability Analysis
|
|
; ENABLED-O1-NEXT: Lazy Block Frequency Analysis
|
|
; ENABLED-NEXT: InstructionSelect
|
|
; ENABLED-O1-NEXT: AArch64 Post Select Optimizer
|
|
; VERIFY-NEXT: Verify generated machine code
|
|
; ENABLED-NEXT: ResetMachineFunction
|
|
|
|
; FALLBACK: AArch64 Instruction Selection
|
|
; NOFALLBACK-NOT: AArch64 Instruction Selection
|
|
|
|
; DISABLED-NOT: IRTranslator
|
|
|
|
; DISABLED: AArch64 Instruction Selection
|
|
; DISABLED: Finalize ISel and expand pseudo-instructions
|
|
|
|
define void @empty() {
|
|
ret void
|
|
}
|