[llvm] d2a06ef - Attributor: Allow refining of callsite attributes that already have nofpclass

Matt Arsenault via llvm-commits llvm-commits at lists.llvm.org
Mon Aug 28 10:54:56 PDT 2023


Author: Matt Arsenault
Date: 2023-08-28T13:54:49-04:00
New Revision: d2a06ef05a22211b8b2cefdd1e68d2a54ddc86ce

URL: https://github.com/llvm/llvm-project/commit/d2a06ef05a22211b8b2cefdd1e68d2a54ddc86ce
DIFF: https://github.com/llvm/llvm-project/commit/d2a06ef05a22211b8b2cefdd1e68d2a54ddc86ce.diff

LOG: Attributor: Allow refining of callsite attributes that already have nofpclass

https://reviews.llvm.org/D158419

Added: 
    

Modified: 
    llvm/lib/Transforms/IPO/AttributorAttributes.cpp
    llvm/test/Transforms/Attributor/nofpclass.ll

Removed: 
    


################################################################################
diff  --git a/llvm/lib/Transforms/IPO/AttributorAttributes.cpp b/llvm/lib/Transforms/IPO/AttributorAttributes.cpp
index 79f216bedbc505..ee63ec337c6c05 100644
--- a/llvm/lib/Transforms/IPO/AttributorAttributes.cpp
+++ b/llvm/lib/Transforms/IPO/AttributorAttributes.cpp
@@ -10342,7 +10342,6 @@ struct AANoFPClassImpl : AANoFPClass {
     A.getAttrs(getIRPosition(), {Attribute::NoFPClass}, Attrs, false);
     for (const auto &Attr : Attrs) {
       addKnownBits(Attr.getNoFPClass());
-      return;
     }
 
     const DataLayout &DL = A.getDataLayout();

diff  --git a/llvm/test/Transforms/Attributor/nofpclass.ll b/llvm/test/Transforms/Attributor/nofpclass.ll
index d05481a1a34d9f..2690bba123a345 100644
--- a/llvm/test/Transforms/Attributor/nofpclass.ll
+++ b/llvm/test/Transforms/Attributor/nofpclass.ll
@@ -2248,7 +2248,7 @@ define float @fadd_known_positive_normal_dapz(float nofpclass(ninf nnorm nzero)
 define internal float @returns_fence(float %arg) {
 ; TUNIT: Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none)
 ; TUNIT-LABEL: define internal float @returns_fence
-; TUNIT-SAME: (float nofpclass(nan) [[ARG:%.*]]) #[[ATTR3]] {
+; TUNIT-SAME: (float nofpclass(nan inf) [[ARG:%.*]]) #[[ATTR3]] {
 ; TUNIT-NEXT:    [[RET:%.*]] = call float @llvm.arithmetic.fence.f32(float [[ARG]]) #[[ATTR20]]
 ; TUNIT-NEXT:    ret float [[RET]]
 ;
@@ -2267,7 +2267,7 @@ define internal float @refine_callsite_attribute(float nofpclass(inf) %arg) {
 ; TUNIT: Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none)
 ; TUNIT-LABEL: define internal float @refine_callsite_attribute
 ; TUNIT-SAME: (float nofpclass(inf) [[ARG:%.*]]) #[[ATTR3]] {
-; TUNIT-NEXT:    [[FUNC0:%.*]] = call float @returns_fence(float nofpclass(nan) [[ARG]]) #[[ATTR17]]
+; TUNIT-NEXT:    [[FUNC0:%.*]] = call float @returns_fence(float nofpclass(nan inf) [[ARG]]) #[[ATTR17]]
 ; TUNIT-NEXT:    [[RET:%.*]] = call float @llvm.arithmetic.fence.f32(float [[FUNC0]]) #[[ATTR20]]
 ; TUNIT-NEXT:    ret float [[RET]]
 ;


        


More information about the llvm-commits mailing list