https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93535

            Bug ID: 93535
           Summary: slow float/double simple constant folding with -Ofast
           Product: gcc
           Version: 8.3.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: hehaochen at hotmail dot com
  Target Milestone: ---

Created attachment 47763
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=47763&action=edit
testcase

slow float/double simple constant folding with -Ofast compared to -O3

Workload:
Adobe benchmark C++
  - simple_types_constant_folding.cpp
    - float simple constant folding
    - double simple constant folding


(Homebrew GCC 8.3.0_2)

g++-8  -O3  simple_types_constant_folding.cpp && ./a.out

  float simple constant folding: 7.40 sec  (OK)
  double simple constant folding: 7.41 sec (OK)

g++-8  -Ofast  simple_types_constant_folding.cpp && ./a.out

  float simple constant folding: 8.39 sec  SLOW
  double simple constant folding: 8.33 sec SLOW

g++-8  -Ofast -fno-fast-math  simple_types_constant_folding.cpp && ./a.out

  float simple constant folding: 7.43 sec  (OK)
  double simple constant folding: 7.37 sec (OK)


(Homebrew GCC 9.2.0_3)

g++-9  -O3  simple_types_constant_folding.cpp && ./a.out

  float simple constant folding: 7.42 sec  (OK)
  double simple constant folding: 7.43 sec (OK)

g++-9  -Ofast  simple_types_constant_folding.cpp && ./a.out

  float simple constant folding: 1.85 sec  (OK)
  double simple constant folding: 7.43 sec (should be optimized more)

g++-9  -Ofast -fno-fast-math  simple_types_constant_folding.cpp && ./a.out

  float simple constant folding: 7.49 sec  (OK)
  double simple constant folding: 7.51 sec (OK)


while, in Apple clang version 11.0.0 (clang-1100.0.33.17):

clang++ -O3  simple_types_constant_folding.cpp && ./a.out

  float simple constant folding: 7.59 sec  (OK)
  double simple constant folding: 7.81 sec (OK)

clang++ -Ofast simple_types_constant_folding.cpp && ./a.out

  float simple constant folding: 0.91 sec  (OK)
  double simple constant folding: 0.90 sec (OK)

Reply via email to