[PATCH] D144035: [llvm] Ensure SCEV does not replace aliases with their aliasees
Leonard Chan via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Wed Feb 22 16:42:23 PST 2023
leonardchan updated this revision to Diff 499668.
leonardchan marked an inline comment as done.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D144035/new/
https://reviews.llvm.org/D144035
Files:
llvm/lib/Analysis/ScalarEvolution.cpp
llvm/test/Analysis/ScalarEvolution/no-follow-alias.ll
Index: llvm/test/Analysis/ScalarEvolution/no-follow-alias.ll
===================================================================
--- /dev/null
+++ llvm/test/Analysis/ScalarEvolution/no-follow-alias.ll
@@ -0,0 +1,19 @@
+; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py
+; RUN: opt -passes='print<scalar-evolution>' -disable-output %s 2>&1 | FileCheck %s
+
+target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"
+target triple = "aarch64-unknown-linux-gnu"
+
+ at glob.private = private constant [32 x i32] zeroinitializer
+ at glob = linkonce_odr hidden alias [32 x i32], inttoptr (i64 add (i64 ptrtoint (ptr @glob.private to i64), i64 1234) to ptr)
+
+define hidden void @func(i64 %idx) local_unnamed_addr {
+; CHECK-LABEL: 'func'
+; CHECK-NEXT: Classifying expressions for: @func
+; CHECK-NEXT: %arrayidx = getelementptr inbounds [32 x i32], ptr @glob, i64 0, i64 %idx
+; CHECK-NEXT: --> ((4 * %idx) + @glob) U: [0,-1) S: [-9223372036854775808,9223372036854775807)
+; CHECK-NEXT: Determining loop execution counts for: @func
+;
+ %arrayidx = getelementptr inbounds [32 x i32], ptr @glob, i64 0, i64 %idx
+ ret void
+}
Index: llvm/lib/Analysis/ScalarEvolution.cpp
===================================================================
--- llvm/lib/Analysis/ScalarEvolution.cpp
+++ llvm/lib/Analysis/ScalarEvolution.cpp
@@ -7449,10 +7449,6 @@
} else if (ConstantInt *CI = dyn_cast<ConstantInt>(V))
return getConstant(CI);
else if (GlobalAlias *GA = dyn_cast<GlobalAlias>(V)) {
- if (!GA->isInterposable()) {
- Ops.push_back(GA->getAliasee());
- return nullptr;
- }
return getUnknown(V);
} else if (!isa<ConstantExpr>(V))
return getUnknown(V);
@@ -7639,7 +7635,7 @@
} else if (ConstantInt *CI = dyn_cast<ConstantInt>(V))
return getConstant(CI);
else if (GlobalAlias *GA = dyn_cast<GlobalAlias>(V))
- return GA->isInterposable() ? getUnknown(V) : getSCEV(GA->getAliasee());
+ return getUnknown(V);
else if (!isa<ConstantExpr>(V))
return getUnknown(V);
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D144035.499668.patch
Type: text/x-patch
Size: 2070 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20230223/6be7d1cc/attachment-0001.bin>
More information about the cfe-commits
mailing list