[llvm] [IR] Remove -use-dereferenceable-at-point-semantics option (PR #218428)

Nikita Popov via llvm-commits llvm-commits at lists.llvm.org
Mon Aug 24 07:41:32 PDT 2026


https://github.com/nikic created https://github.com/llvm/llvm-project/pull/218428

This was a temporary migration option, remove it now that the migration is complete.

>From 92809828ffca9eceb2a5f8ee5257a3e86b1a5669 Mon Sep 17 00:00:00 2001
From: Nikita Popov <npopov at redhat.com>
Date: Mon, 24 Aug 2026 16:38:21 +0200
Subject: [PATCH] [IR] Remove -use-dereferenceable-at-point-semantics option

This was a temporary migration option, remove it now that the
migration is complete.
---
 llvm/lib/IR/Value.cpp                         |  6 +-
 llvm/test/Analysis/BasicAA/dereferenceable.ll |  1 -
 .../early-exit-runtime-checks.ll              |  1 -
 .../ValueTracking/deref-abstract-gc.ll        |  2 +-
 .../ValueTracking/memory-dereferenceable.ll   | 69 +++++++------------
 .../Transforms/ArgumentPromotion/align.ll     |  1 -
 .../Transforms/InstCombine/inbounds-gep.ll    |  1 -
 .../InstCombine/loadstore-metadata.ll         |  1 -
 llvm/test/Transforms/JumpThreading/guards.ll  |  1 -
 llvm/test/Transforms/LICM/hoist-alloc.ll      |  3 +-
 llvm/test/Transforms/LICM/hoist-deref-load.ll |  1 -
 llvm/test/Transforms/LICM/scalar-promote.ll   |  1 -
 .../LoopVectorize/early-exit-calls.ll         |  1 -
 .../MergeICmps/X86/no-gep-other-work.ll       | 46 +++++--------
 .../Transforms/MergeICmps/X86/opaque-ptr.ll   |  1 -
 .../masked-loads-side-effects-after-vec.ll    |  1 -
 .../Transforms/SimplifyCFG/speculate-store.ll |  1 -
 17 files changed, 44 insertions(+), 94 deletions(-)

diff --git a/llvm/lib/IR/Value.cpp b/llvm/lib/IR/Value.cpp
index 50882ec0d7b10..95a9d39fd1c8f 100644
--- a/llvm/lib/IR/Value.cpp
+++ b/llvm/lib/IR/Value.cpp
@@ -37,10 +37,6 @@
 
 using namespace llvm;
 
-static cl::opt<bool> UseDerefAtPointSemantics(
-    "use-dereferenceable-at-point-semantics", cl::Hidden, cl::init(true),
-    cl::desc("Deref attributes and metadata infer facts at definition only"));
-
 //===----------------------------------------------------------------------===//
 //                                Value Class
 //===----------------------------------------------------------------------===//
@@ -991,7 +987,7 @@ uint64_t Value::getPointerDereferenceableBytes(const DataLayout &DL,
     // Call canBeFreed() only if there are dereferenceable bytes and it's not
     // one of the cases that can never be freed.
     if (!CanNotBeFreed && DerefBytes != 0)
-      *CanBeFreed = UseDerefAtPointSemantics && canBeFreed();
+      *CanBeFreed = canBeFreed();
     else
       *CanBeFreed = false;
   }
diff --git a/llvm/test/Analysis/BasicAA/dereferenceable.ll b/llvm/test/Analysis/BasicAA/dereferenceable.ll
index 8df2e4c6bda3a..cde212b6fdbec 100644
--- a/llvm/test/Analysis/BasicAA/dereferenceable.ll
+++ b/llvm/test/Analysis/BasicAA/dereferenceable.ll
@@ -1,5 +1,4 @@
 ; RUN: opt -aa-pipeline=basic-aa -print-all-alias-modref-info -passes=aa-eval < %s 2>&1 | FileCheck %s
-; RUN: opt -aa-pipeline=basic-aa -print-all-alias-modref-info -passes=aa-eval -use-dereferenceable-at-point-semantics < %s 2>&1 | FileCheck %s
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
diff --git a/llvm/test/Analysis/LoopAccessAnalysis/early-exit-runtime-checks.ll b/llvm/test/Analysis/LoopAccessAnalysis/early-exit-runtime-checks.ll
index 1b9f22c53e1f9..a2ffddb4fbbbd 100644
--- a/llvm/test/Analysis/LoopAccessAnalysis/early-exit-runtime-checks.ll
+++ b/llvm/test/Analysis/LoopAccessAnalysis/early-exit-runtime-checks.ll
@@ -1,6 +1,5 @@
 ; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --version 5
 ; RUN: opt -passes='print<access-info>' -disable-output %s 2>&1 | FileCheck %s
-; RUN: opt -passes='print<access-info>' -use-dereferenceable-at-point-semantics -disable-output %s 2>&1 | FileCheck %s
 
 define void @all_exits_dominate_latch_countable_exits_at_most_500_iterations_known_deref(ptr dereferenceable(2000) %A, ptr dereferenceable(2000) %B) {
 ; CHECK-LABEL: 'all_exits_dominate_latch_countable_exits_at_most_500_iterations_known_deref'
diff --git a/llvm/test/Analysis/ValueTracking/deref-abstract-gc.ll b/llvm/test/Analysis/ValueTracking/deref-abstract-gc.ll
index 47b8cc95388b4..75456c0c91176 100644
--- a/llvm/test/Analysis/ValueTracking/deref-abstract-gc.ll
+++ b/llvm/test/Analysis/ValueTracking/deref-abstract-gc.ll
@@ -1,4 +1,4 @@
-; RUN: opt -passes='print<mem-derefs>' -S < %s -disable-output  -use-dereferenceable-at-point-semantics 2>&1 | FileCheck %s --check-prefixes=CHECK
+; RUN: opt -passes='print<mem-derefs>' -S < %s -disable-output 2>&1 | FileCheck %s --check-prefixes=CHECK
 
 target datalayout = "e-i32:32:64"
 
diff --git a/llvm/test/Analysis/ValueTracking/memory-dereferenceable.ll b/llvm/test/Analysis/ValueTracking/memory-dereferenceable.ll
index 09c8e74a5c675..b5c7769329e18 100644
--- a/llvm/test/Analysis/ValueTracking/memory-dereferenceable.ll
+++ b/llvm/test/Analysis/ValueTracking/memory-dereferenceable.ll
@@ -1,5 +1,4 @@
-; RUN: opt -passes='print<mem-derefs>' -S < %s -disable-output  -use-dereferenceable-at-point-semantics=false 2>&1 | FileCheck %s --check-prefixes=CHECK,GLOBAL
-; RUN: opt -passes='print<mem-derefs>' -S < %s -disable-output  -use-dereferenceable-at-point-semantics 2>&1 | FileCheck %s --check-prefixes=CHECK,POINT
+; RUN: opt -passes='print<mem-derefs>' -S < %s -disable-output 2>&1 | FileCheck %s
 
 
 ; Uses the print-deref (+ analyze to print) pass to run
@@ -43,12 +42,10 @@ define void @test(ptr addrspace(1) dereferenceable(8) %dparam,
 entry:
   call void @mayfree()
 
-; GLOBAL: %dparam{{.*}}(unaligned)
-; POINT-NOT: %dparam{{.*}}(unaligned)
+; CHECK-NOT: %dparam{{.*}}(unaligned)
     %load3 = load i32, ptr addrspace(1) %dparam
 
-; GLOBAL: %relocate{{.*}}(unaligned)
-; POINT-NOT: %relocate{{.*}}(unaligned)
+; CHECK-NOT: %relocate{{.*}}(unaligned)
     %tok = tail call token (i64, i32, ptr, i32, i32, ...) @llvm.experimental.gc.statepoint.p0(i64 0, i32 0, ptr elementtype(i1 ()) @return_i1, i32 0, i32 0, i32 0, i32 0) ["gc-live" (ptr addrspace(1) %dparam)]
     %relocate = call ptr addrspace(1) @llvm.experimental.gc.relocate.p1(token %tok, i32 0, i32 0)
     %load4 = load i32, ptr addrspace(1) %relocate
@@ -64,8 +61,7 @@ entry:
     %load6 = load i32, ptr %nd_load
 
     ; Load from a dereferenceable load
-; GLOBAL: %d4_load{{.*}}(unaligned)
-; POINT-NOT: %d4_load{{.*}}(unaligned)
+; CHECK-NOT: %d4_load{{.*}}(unaligned)
     %d4_load = load ptr, ptr @globali32ptr, !dereferenceable !0
     call void @mayfree()
     %load7 = load i32, ptr %d4_load
@@ -81,29 +77,22 @@ entry:
     %load9 = load i32, ptr %d_or_null_load
 
     ; Load from a non-null pointer with dereferenceable_or_null
-; GLOBAL: %d_or_null_non_null_load{{.*}}(unaligned)
-; POINT-NOT: %d_or_null_non_null_load{{.*}}(unaligned)
+; CHECK-NOT: %d_or_null_non_null_load{{.*}}(unaligned)
     %d_or_null_non_null_load = load ptr, ptr @globali32ptr, !nonnull !2, !dereferenceable_or_null !0
     call void @mayfree()
     %load10 = load i32, ptr %d_or_null_non_null_load
 
     ; Loads from aligned arguments
-; GLOBAL: %dparam.align1{{.*}}(unaligned)
-; POINT-NOT: %dparam.align1{{.*}}(unaligned)
-; POINT-NOT: %dparam.align16{{.*}}(aligned)
-; GLOBAL: %dparam.align16{{.*}}(aligned)
+; CHECK-NOT: %dparam.align1{{.*}}(unaligned)
+; CHECK-NOT: %dparam.align16{{.*}}(aligned)
     %load15 = load i8, ptr addrspace(1) %dparam.align1, align 16
     %load16 = load i8, ptr addrspace(1) %dparam.align16, align 16
 
     ; Loads from GEPs
-; GLOBAL: %gep.align1.offset1{{.*}}(unaligned)
-; GLOBAL: %gep.align16.offset1{{.*}}(unaligned)
-; GLOBAL: %gep.align1.offset16{{.*}}(unaligned)
-; GLOBAL: %gep.align16.offset16{{.*}}(aligned)
-; POINT-NOT: %gep.align1.offset1{{.*}}(unaligned)
-; POINT-NOT: %gep.align16.offset1{{.*}}(unaligned)
-; POINT-NOT: %gep.align1.offset16{{.*}}(unaligned)
-; POINT-NOT: %gep.align16.offset16{{.*}}(aligned)
+; CHECK-NOT: %gep.align1.offset1{{.*}}(unaligned)
+; CHECK-NOT: %gep.align16.offset1{{.*}}(unaligned)
+; CHECK-NOT: %gep.align1.offset16{{.*}}(unaligned)
+; CHECK-NOT: %gep.align16.offset16{{.*}}(aligned)
     %gep.align1.offset1 = getelementptr inbounds i8, ptr addrspace(1) %dparam.align1, i32 1
     %gep.align16.offset1 = getelementptr inbounds i8, ptr addrspace(1) %dparam.align16, i32 1
     %gep.align1.offset16 = getelementptr inbounds i8, ptr addrspace(1) %dparam.align1, i32 16
@@ -114,10 +103,8 @@ entry:
     %load22 = load i8, ptr addrspace(1) %gep.align16.offset16, align 16
 
 ; CHECK-NOT: %no_deref_return
-; GLOBAL: %deref_return{{.*}}(unaligned)
-; GLOBAL: %deref_and_aligned_return{{.*}}(aligned)
-; POINT-NOT: %deref_return{{.*}}(unaligned)
-; POINT-NOT: %deref_and_aligned_return{{.*}}(aligned)
+; CHECK-NOT: %deref_return{{.*}}(unaligned)
+; CHECK-NOT: %deref_and_aligned_return{{.*}}(aligned)
     %no_deref_return = call ptr @foo()
     %deref_return = call dereferenceable(32) ptr @foo()
     %deref_and_aligned_return = call dereferenceable(32) align 16 ptr @foo()
@@ -127,10 +114,8 @@ entry:
     %load25 = load i32, ptr %deref_and_aligned_return, align 16
 
     ; Load from a dereferenceable and aligned load
-; GLOBAL: %d4_unaligned_load{{.*}}(unaligned)
-; GLOBAL: %d4_aligned_load{{.*}}(aligned)
-; POINT-NOT: %d4_unaligned_load{{.*}}(unaligned)
-; POINT-NOT: %d4_aligned_load{{.*}}(aligned)
+; CHECK-NOT: %d4_unaligned_load{{.*}}(unaligned)
+; CHECK-NOT: %d4_aligned_load{{.*}}(aligned)
     %d4_unaligned_load = load ptr, ptr @globali32ptr, !dereferenceable !0
     %d4_aligned_load = load ptr, ptr @globali32ptr, !dereferenceable !0, !align !{i64 16}
     call void @mayfree()
@@ -230,8 +215,7 @@ define void @byval(ptr byval(i8) %i8_byval,
 }
 
 ; CHECK-LABEL: 'f_0'
-; GLOBAL: %ptr = inttoptr i32 %val to ptr, !dereferenceable !0
-; POINT-NOT: %ptr = inttoptr i32 %val to ptr, !dereferenceable !0
+; CHECK-NOT: %ptr = inttoptr i32 %val to ptr, !dereferenceable !0
 define i32 @f_0(i32 %val) {
   %ptr = inttoptr i32 %val to ptr, !dereferenceable !0
   call void @mayfree()
@@ -243,8 +227,7 @@ define i32 @f_0(i32 %val) {
 ; The most basic case showing the difference between legacy global deref
 ; attribute semantics and the new point-in-time semantics.
 ; CHECK-LABEL: 'negative'
-; GLOBAL: %p
-; POINT-NOT: %p
+; CHECK-NOT: %p
 define void @negative(ptr dereferenceable(8) %p) {
   call void @mayfree()
   %v = load i32, ptr %p
@@ -284,8 +267,7 @@ define void @infer_noalias2(ptr dereferenceable(8) noalias readonly %p) {
 }
 
 ; CHECK-LABEL: 'infer_missing_noalias1'
-; GLOBAL: %p
-; POINT-NOT: %p
+; CHECK-NOT: %p
 define void @infer_missing_noalias1(ptr dereferenceable(8) nofree %p) {
   call void @mayfree()
   %v = load i32, ptr %p
@@ -293,8 +275,7 @@ define void @infer_missing_noalias1(ptr dereferenceable(8) nofree %p) {
 }
 
 ; CHECK-LABEL: 'infer_missing_noalias2'
-; GLOBAL: %p
-; POINT-NOT: %p
+; CHECK-NOT: %p
 define void @infer_missing_noalias2(ptr dereferenceable(8) readonly %p) {
   call void @mayfree()
   %v = load i32, ptr %p
@@ -334,8 +315,7 @@ if.end:
 }
 
 ; CHECK-LABEL: 'dereferenceable_arg_freed_between'
-; GLOBAL: %a
-; POINT-NOT: %a
+; CHECK-NOT: %a
 define void @dereferenceable_arg_freed_between(ptr dereferenceable(16) %a) {
   call void @mayfree()
   %v = load i32, ptr %a
@@ -343,8 +323,7 @@ define void @dereferenceable_arg_freed_between(ptr dereferenceable(16) %a) {
 }
 
 ; CHECK-LABEL: 'dereferenceable_arg_freed_between2'
-; GLOBAL: %a
-; POINT-NOT: %a
+; CHECK-NOT: %a
 define void @dereferenceable_arg_freed_between2(ptr dereferenceable(16) %a, ptr %p) {
   load atomic i32, ptr %p acquire, align 4
   %v = load i32, ptr %a
@@ -360,8 +339,7 @@ define void @dereferenceable_arg_not_freed_between(ptr dereferenceable(16) %a) {
 }
 
 ; CHECK-LABEL: 'dereferenceable_ret_freed_between'
-; GLOBAL: %a
-; POINT-NOT: %a
+; CHECK-NOT: %a
 define void @dereferenceable_ret_freed_between() {
   %a = call dereferenceable(16) ptr @foo()
   call void @mayfree()
@@ -370,8 +348,7 @@ define void @dereferenceable_ret_freed_between() {
 }
 
 ; CHECK-LABEL: 'dereferenceable_ret_freed_between2'
-; GLOBAL: %a
-; POINT-NOT: %a
+; CHECK-NOT: %a
 define void @dereferenceable_ret_freed_between2(ptr %p) {
   %a = call dereferenceable(16) ptr @foo()
   load atomic i32, ptr %p acquire, align 4
diff --git a/llvm/test/Transforms/ArgumentPromotion/align.ll b/llvm/test/Transforms/ArgumentPromotion/align.ll
index 62dd1dcc478c4..656c7c9da5b4a 100644
--- a/llvm/test/Transforms/ArgumentPromotion/align.ll
+++ b/llvm/test/Transforms/ArgumentPromotion/align.ll
@@ -1,6 +1,5 @@
 ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --function-signature --scrub-attributes
 ; RUN: opt -S -passes=argpromotion < %s | FileCheck %s
-; RUN: opt -S -passes=argpromotion -use-dereferenceable-at-point-semantics < %s | FileCheck %s
 
 define internal i32 @callee_must_exec(ptr %p) {
 ; CHECK-LABEL: define {{[^@]+}}@callee_must_exec
diff --git a/llvm/test/Transforms/InstCombine/inbounds-gep.ll b/llvm/test/Transforms/InstCombine/inbounds-gep.ll
index 0ea71da485766..467e5a82f89cc 100644
--- a/llvm/test/Transforms/InstCombine/inbounds-gep.ll
+++ b/llvm/test/Transforms/InstCombine/inbounds-gep.ll
@@ -1,6 +1,5 @@
 ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 2
 ; RUN: opt -passes=instcombine -S < %s | FileCheck %s
-; RUN: opt -passes=instcombine -use-dereferenceable-at-point-semantics -S < %s | FileCheck %s
 
 declare ptr @g()
 declare ptr @use(ptr)
diff --git a/llvm/test/Transforms/InstCombine/loadstore-metadata.ll b/llvm/test/Transforms/InstCombine/loadstore-metadata.ll
index 3de4c2dd8df15..6e0f661e5ed27 100644
--- a/llvm/test/Transforms/InstCombine/loadstore-metadata.ll
+++ b/llvm/test/Transforms/InstCombine/loadstore-metadata.ll
@@ -1,6 +1,5 @@
 ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6
 ; RUN: opt -passes=instcombine -S < %s | FileCheck %s
-; RUN: opt -passes=instcombine -use-dereferenceable-at-point-semantics -S < %s | FileCheck %s
 
 target datalayout = "e-m:e-p:64:64:64-i64:64-f80:128-n8:16:32:64-S128"
 
diff --git a/llvm/test/Transforms/JumpThreading/guards.ll b/llvm/test/Transforms/JumpThreading/guards.ll
index 126e54726eef0..bb92b91144bfd 100644
--- a/llvm/test/Transforms/JumpThreading/guards.ll
+++ b/llvm/test/Transforms/JumpThreading/guards.ll
@@ -1,6 +1,5 @@
 ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
 ; RUN: opt -S -passes=jump-threading,dce < %s | FileCheck %s
-; RUN: opt -S -passes=jump-threading,dce -use-dereferenceable-at-point-semantics < %s | FileCheck %s
 
 declare void @llvm.experimental.guard(i1, ...)
 
diff --git a/llvm/test/Transforms/LICM/hoist-alloc.ll b/llvm/test/Transforms/LICM/hoist-alloc.ll
index fe4f03713926f..eade17afbf23b 100644
--- a/llvm/test/Transforms/LICM/hoist-alloc.ll
+++ b/llvm/test/Transforms/LICM/hoist-alloc.ll
@@ -1,6 +1,5 @@
 ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
-; RUN: opt -S -passes=licm -use-dereferenceable-at-point-semantics=false < %s | FileCheck %s
-; RUN: opt -S -passes=licm -use-dereferenceable-at-point-semantics < %s | FileCheck %s
+; RUN: opt -S -passes=licm < %s | FileCheck %s
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-unknown-linux-gnu"
diff --git a/llvm/test/Transforms/LICM/hoist-deref-load.ll b/llvm/test/Transforms/LICM/hoist-deref-load.ll
index 4ff21a34afa3b..c498e85ddd6c2 100644
--- a/llvm/test/Transforms/LICM/hoist-deref-load.ll
+++ b/llvm/test/Transforms/LICM/hoist-deref-load.ll
@@ -1,6 +1,5 @@
 ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
 ; RUN: opt -S -passes=licm -verify-memoryssa < %s | FileCheck %s
-; RUN: opt -S -passes=licm -verify-memoryssa -use-dereferenceable-at-point-semantics < %s | FileCheck %s
 ; RUN: opt -aa-pipeline=basic-aa -passes='require<opt-remark-emit>,loop-mssa(loop-simplifycfg,licm)' -verify-memoryssa -S < %s | FileCheck %s
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
diff --git a/llvm/test/Transforms/LICM/scalar-promote.ll b/llvm/test/Transforms/LICM/scalar-promote.ll
index ee25ba90c214e..3af65df55a099 100644
--- a/llvm/test/Transforms/LICM/scalar-promote.ll
+++ b/llvm/test/Transforms/LICM/scalar-promote.ll
@@ -1,6 +1,5 @@
 ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --check-attributes --version 6
 ; RUN: opt < %s -passes=licm -S | FileCheck %s
-; RUN: opt < %s -passes=licm -use-dereferenceable-at-point-semantics -S | FileCheck %s
 ; RUN: opt -aa-pipeline=tbaa,basic-aa -passes='require<aa>,require<target-ir>,require<scalar-evolution>,require<opt-remark-emit>,loop-mssa(licm)' -S %s | FileCheck %s
 target datalayout = "E-p:64:64:64-a0:0:8-f32:32:32-f64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-v64:64:64-v128:128:128"
 
diff --git a/llvm/test/Transforms/LoopVectorize/early-exit-calls.ll b/llvm/test/Transforms/LoopVectorize/early-exit-calls.ll
index 5f56f5d797589..29bd33e24309c 100644
--- a/llvm/test/Transforms/LoopVectorize/early-exit-calls.ll
+++ b/llvm/test/Transforms/LoopVectorize/early-exit-calls.ll
@@ -1,6 +1,5 @@
 ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --check-globals none --version 6
 ; RUN: opt -passes=loop-vectorize -force-vector-width=4 -S %s | FileCheck %s
-; RUN: opt -passes=loop-vectorize -force-vector-width=4 -use-dereferenceable-at-point-semantics -S %s | FileCheck %s
 
 define i32 @early_exit_with_extractvalue(ptr dereferenceable(1024) align 8 %src, i32 noundef %x) {
 ; CHECK-LABEL: define i32 @early_exit_with_extractvalue(
diff --git a/llvm/test/Transforms/MergeICmps/X86/no-gep-other-work.ll b/llvm/test/Transforms/MergeICmps/X86/no-gep-other-work.ll
index 6164e43af9bdc..ad375e78904a4 100644
--- a/llvm/test/Transforms/MergeICmps/X86/no-gep-other-work.ll
+++ b/llvm/test/Transforms/MergeICmps/X86/no-gep-other-work.ll
@@ -1,6 +1,5 @@
 ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
-; RUN: opt -S -passes=mergeicmps -use-dereferenceable-at-point-semantics=0 < %s | FileCheck %s --check-prefixes=CHECK,GLOBAL
-; RUN: opt -S -passes=mergeicmps -use-dereferenceable-at-point-semantics < %s | FileCheck %s --check-prefixes=CHECK,AT-POINT
+; RUN: opt -S -passes=mergeicmps < %s | FileCheck %s
 
 ; This does not use a GEP for the zero-offset comparison and requires a
 ; split for other work.
@@ -10,32 +9,23 @@ target triple = "x86_64-grtev4-linux-gnu"
 declare void @other_work()
 
 define i1 @test(ptr dereferenceable(2) %arg, ptr dereferenceable(2) %arg1) {
-; GLOBAL-LABEL: @test(
-; GLOBAL-NEXT:  "if+entry":
-; GLOBAL-NEXT:    call void @other_work()
-; GLOBAL-NEXT:    [[MEMCMP:%.*]] = call i32 @memcmp(ptr [[ARG:%.*]], ptr [[ARG1:%.*]], i64 2)
-; GLOBAL-NEXT:    [[TMP0:%.*]] = icmp eq i32 [[MEMCMP]], 0
-; GLOBAL-NEXT:    br label [[JOIN:%.*]]
-; GLOBAL:       join:
-; GLOBAL-NEXT:    ret i1 [[TMP0]]
-;
-; AT-POINT-LABEL: @test(
-; AT-POINT-NEXT:  entry:
-; AT-POINT-NEXT:    call void @other_work()
-; AT-POINT-NEXT:    [[ARG_OFF:%.*]] = getelementptr inbounds i8, ptr [[ARG:%.*]], i64 1
-; AT-POINT-NEXT:    [[ARG1_OFF:%.*]] = getelementptr inbounds i8, ptr [[ARG1:%.*]], i64 1
-; AT-POINT-NEXT:    [[ARG_OFF_VAL:%.*]] = load i8, ptr [[ARG_OFF]], align 1
-; AT-POINT-NEXT:    [[ARG1_OFF_VAL:%.*]] = load i8, ptr [[ARG1_OFF]], align 1
-; AT-POINT-NEXT:    [[CMP_OFF:%.*]] = icmp eq i8 [[ARG_OFF_VAL]], [[ARG1_OFF_VAL]]
-; AT-POINT-NEXT:    br i1 [[CMP_OFF]], label [[IF:%.*]], label [[JOIN:%.*]]
-; AT-POINT:       if:
-; AT-POINT-NEXT:    [[ARG_VAL:%.*]] = load i8, ptr [[ARG]], align 1
-; AT-POINT-NEXT:    [[ARG1_VAL:%.*]] = load i8, ptr [[ARG1]], align 1
-; AT-POINT-NEXT:    [[CMP:%.*]] = icmp eq i8 [[ARG_VAL]], [[ARG1_VAL]]
-; AT-POINT-NEXT:    br label [[JOIN]]
-; AT-POINT:       join:
-; AT-POINT-NEXT:    [[PHI:%.*]] = phi i1 [ false, [[ENTRY:%.*]] ], [ [[CMP]], [[IF]] ]
-; AT-POINT-NEXT:    ret i1 [[PHI]]
+; CHECK-LABEL: @test(
+; CHECK-NEXT:  entry:
+; CHECK-NEXT:    call void @other_work()
+; CHECK-NEXT:    [[ARG_OFF:%.*]] = getelementptr inbounds i8, ptr [[ARG:%.*]], i64 1
+; CHECK-NEXT:    [[ARG1_OFF:%.*]] = getelementptr inbounds i8, ptr [[ARG1:%.*]], i64 1
+; CHECK-NEXT:    [[ARG_OFF_VAL:%.*]] = load i8, ptr [[ARG_OFF]], align 1
+; CHECK-NEXT:    [[ARG1_OFF_VAL:%.*]] = load i8, ptr [[ARG1_OFF]], align 1
+; CHECK-NEXT:    [[CMP_OFF:%.*]] = icmp eq i8 [[ARG_OFF_VAL]], [[ARG1_OFF_VAL]]
+; CHECK-NEXT:    br i1 [[CMP_OFF]], label [[IF:%.*]], label [[JOIN:%.*]]
+; CHECK:       if:
+; CHECK-NEXT:    [[ARG_VAL:%.*]] = load i8, ptr [[ARG]], align 1
+; CHECK-NEXT:    [[ARG1_VAL:%.*]] = load i8, ptr [[ARG1]], align 1
+; CHECK-NEXT:    [[CMP:%.*]] = icmp eq i8 [[ARG_VAL]], [[ARG1_VAL]]
+; CHECK-NEXT:    br label [[JOIN]]
+; CHECK:       join:
+; CHECK-NEXT:    [[PHI:%.*]] = phi i1 [ false, [[ENTRY:%.*]] ], [ [[CMP]], [[IF]] ]
+; CHECK-NEXT:    ret i1 [[PHI]]
 ;
 entry:
   call void @other_work()
diff --git a/llvm/test/Transforms/MergeICmps/X86/opaque-ptr.ll b/llvm/test/Transforms/MergeICmps/X86/opaque-ptr.ll
index f3ba65759f32a..df2fa0cee08dd 100644
--- a/llvm/test/Transforms/MergeICmps/X86/opaque-ptr.ll
+++ b/llvm/test/Transforms/MergeICmps/X86/opaque-ptr.ll
@@ -1,6 +1,5 @@
 ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
 ; RUN: opt -S -passes=mergeicmps < %s | FileCheck %s
-; RUN: opt -S -passes=mergeicmps -use-dereferenceable-at-point-semantics < %s | FileCheck %s
 
 target triple = "x86_64-unknown-unknown"
 
diff --git a/llvm/test/Transforms/SLPVectorizer/AArch64/masked-loads-side-effects-after-vec.ll b/llvm/test/Transforms/SLPVectorizer/AArch64/masked-loads-side-effects-after-vec.ll
index df4c527aa216a..ca3c8bbac6366 100644
--- a/llvm/test/Transforms/SLPVectorizer/AArch64/masked-loads-side-effects-after-vec.ll
+++ b/llvm/test/Transforms/SLPVectorizer/AArch64/masked-loads-side-effects-after-vec.ll
@@ -1,6 +1,5 @@
 ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 5
 ; RUN: opt -S --passes=slp-vectorizer -mtriple=aarch64-unknown-linux-gnu < %s | FileCheck %s
-; RUN: opt -S --passes=slp-vectorizer -mtriple=aarch64-unknown-linux-gnu -use-dereferenceable-at-point-semantics < %s | FileCheck %s
 
 declare noalias ptr @malloc()
 
diff --git a/llvm/test/Transforms/SimplifyCFG/speculate-store.ll b/llvm/test/Transforms/SimplifyCFG/speculate-store.ll
index 57f6fffaadc29..161ec380d31cf 100644
--- a/llvm/test/Transforms/SimplifyCFG/speculate-store.ll
+++ b/llvm/test/Transforms/SimplifyCFG/speculate-store.ll
@@ -1,6 +1,5 @@
 ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
 ; RUN: opt -passes=simplifycfg -simplifycfg-require-and-preserve-domtree=1 -S < %s | FileCheck %s
-; RUN: opt -passes=simplifycfg -simplifycfg-require-and-preserve-domtree=1 -use-dereferenceable-at-point-semantics -S < %s | FileCheck %s
 
 define void @ifconvertstore(ptr %A, i32 %B, i32 %C, i32 %D) {
 ; CHECK-LABEL: @ifconvertstore(



More information about the llvm-commits mailing list