Skip to content

[NewGVN] Fast math flags dropped #62095

Open
@piotrAMD

Description

@piotrAMD

NewGVN drops fast math flags - see the reproducer with fdiv below:

define void @repro(float %.i2240) {
.entry:
  %0 = fdiv reassoc nnan nsz arcp contract afn float %.i2240, 0.000000e+00
  br label %.cont.1

.cont.1:                                          ; preds = %.entry
  br i1 false, label %.cont.2, label %.else.2

.else.2:                                          ; preds = %.cont.1
  br label %.cont.2

.cont.2:                                          ; preds = %.else.2, %.cont.1
  %.sroa.12.1.2 = phi float [ %0, %.else.2 ], [ 0.000000e+00, %.cont.1 ]
  %1 = fcmp olt float %.sroa.12.1.2, 0.000000e+00
  br i1 %1, label %2, label %.preheader.3

2:                                                ; preds = %.cont.2
  br label %.preheader.3

.preheader.3:                                     ; preds = %2, %.cont.2
  ret void
}

opt -S -passes="newgvn"

define void @repro(float %.i2240) {
.entry:
  %0 = fdiv float %.i2240, 0.000000e+00
  br label %.cont.1

.cont.1:                                          ; preds = %.entry
  br i1 false, label %.cont.2, label %.else.2

.else.2:                                          ; preds = %.cont.1
  br label %.cont.2

.cont.2:                                          ; preds = %.else.2, %.cont.1
  %1 = fcmp olt float %0, 0.000000e+00
  br i1 %1, label %2, label %.preheader.3

2:                                                ; preds = %.cont.2
  br label %.preheader.3

.preheader.3:                                     ; preds = %2, %.cont.2
  ret void
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    llvm:GVNGVN and NewGVN stages (Global value numbering)performance

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions