public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug tree-optimization/106617] New: [13 Regression] gcc is very slow at ternary expressions,
@ 2022-08-14 21:52 slyfox at gcc dot gnu.org
  2022-08-14 21:55 ` [Bug tree-optimization/106617] " pinskia at gcc dot gnu.org
                   ` (12 more replies)
  0 siblings, 13 replies; 14+ messages in thread
From: slyfox at gcc dot gnu.org @ 2022-08-14 21:52 UTC (permalink / raw)
  To: gcc-bugs

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

            Bug ID: 106617
           Summary: [13 Regression] gcc is very slow at ternary
                    expressions,
           Product: gcc
           Version: 13.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: tree-optimization
          Assignee: unassigned at gcc dot gnu.org
          Reporter: slyfox at gcc dot gnu.org
  Target Milestone: ---

Created attachment 53454
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=53454&action=edit
fc_exch.c.c.orig.gz

Initially I observed slowness on ia64 trying to compile linux-4.19 using this
week's gcc snapshot. x86_64 also seems to be affected.

Original (ia64-specific) example is attached as fc_exch.c.c.orig.gz. It shows
the origin of this construct.

I reduced the example with 4s timeout and got the following reproducer:

// $ cat fc_exch.c.c
int nr_cpu_ids;
void fc_setup_exch_mgr() {
  (((((((1UL << (((0, 0)
                            ? ((1)
                                   ? (((nr_cpu_ids)) ? 0
                                      : ((nr_cpu_ids)) & (21) ? 21
                                      : ((nr_cpu_ids)) ? 20
                                      : ((nr_cpu_ids)) & (19) ? 19
                                      : ((nr_cpu_ids)) ? 18
                                      : ((nr_cpu_ids)) & (17) ? 17
                                      : ((nr_cpu_ids)) ? 16
                                      : ((nr_cpu_ids)) & (15) ? 15
                                      : ((nr_cpu_ids)) ? 14
                                      : ((nr_cpu_ids)) & (13) ? 13
                                      : ((nr_cpu_ids)) ? 12
                                      : ((nr_cpu_ids)) & (11) ? 11
                                      : ((nr_cpu_ids)) ? 10
                                      : ((nr_cpu_ids)) & (9)  ? 9
                                      : ((nr_cpu_ids))  ? 8
                                      : ((nr_cpu_ids)) & (7)  ? 7
                                      : ((nr_cpu_ids))  ? 6
                                      : ((nr_cpu_ids)) & (5)  ? 5
                                      : ((nr_cpu_ids))  ? 4
                                      : ((nr_cpu_ids)) & (3)
                                          ? 3
                                          : ((nr_cpu_ids)-1) & 1)
                                   : 1)
                            : 0) +
                       1))))) &
                 (1ULL << 2)
             ? 2
             : 1))
           );
}


$ time gcc-13.0.0 -Wno-address-of-packed-member -c fc_exch.c.c -o bug.o -O1

real    0m4,821s
user    0m4,726s
sys     0m0,077s

Almost 5s!

$ time gcc-12.1.0 -Wno-address-of-packed-member -c fc_exch.c.c -o bug.o -O1

real    0m0,019s
user    0m0,013s
sys     0m0,006s

$ gcc -v
Using built-in specs.
COLLECT_GCC=/<<NIX>>/gcc-13.0.0/bin/gcc
COLLECT_LTO_WRAPPER=/<<NIX>>/gcc-13.0.0/libexec/gcc/x86_64-unknown-linux-gnu/13.0.0/lto-wrapper
Target: x86_64-unknown-linux-gnu
Configured with:
Thread model: posix
Supported LTO compression algorithms: zlib
gcc version 13.0.0 20220807 (experimental) (GCC)

On this example perf shows the following output:

     8.63%  cc1      cc1                   [.] operand_compare::operand_equal_p
     4.39%  cc1      cc1                   [.]
operand_compare::verify_hash_value
     4.29%  cc1      cc1                   [.] wide_int_to_tree_1
     3.67%  cc1      cc1                   [.] fold_binary_loc
     3.17%  cc1      cc1                   [.] generic_simplify_NE_EXPR
     2.67%  cc1      cc1                   [.] tree_strip_nop_conversions
     2.64%  cc1      cc1                   [.] generic_simplify_EQ_EXPR
     2.47%  cc1      cc1                   [.] tree_operand_check
     2.39%  cc1      cc1                   [.] get_inner_reference
     2.37%  cc1      cc1                   [.] integer_zerop
     2.25%  cc1      cc1                   [.] wide_int_binop
     2.11%  cc1      cc1                   [.] tree_nop_convert
     1.84%  cc1      cc1                   [.] int_const_binop
     1.81%  cc1      cc1                   [.] int_cst_hasher::hash
     1.78%  cc1      cc1                   [.] ggc_internal_alloc
     1.70%  cc1      cc1                   [.] element_precision
     1.44%  cc1      cc1                   [.] wi::fits_to_tree_p<poly_int<1u,
generic_wide_int<wide_int_ref_storage<false, true> > > >
     1.36%  cc1      cc1                   [.] contains_struct_check
     1.08%  cc1      cc1                   [.] build2
     1.05%  cc1      cc1                   [.] hash_table<int_cst_hasher,
false, xcallocator>::find_slot_with_hash
     1.04%  cc1      cc1                   [.] generic_simplify
     1.03%  cc1      cc1                   [.] cache_wide_int_in_type_cache
     0.97%  cc1      cc1                   [.] get_int_cst_ext_nunits
     0.91%  cc1      cc1                   [.] bitmask_inv_cst_vector_p
     0.87%  cc1      cc1                   [.] tree_strip_sign_nop_conversions
     0.86%  cc1      libc.so.6             [.] __memset_avx2_unaligned_erms

^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2022-08-16 15:10 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-08-14 21:52 [Bug tree-optimization/106617] New: [13 Regression] gcc is very slow at ternary expressions, slyfox at gcc dot gnu.org
2022-08-14 21:55 ` [Bug tree-optimization/106617] " pinskia at gcc dot gnu.org
2022-08-14 22:02 ` slyfox at gcc dot gnu.org
2022-08-14 22:08 ` slyfox at gcc dot gnu.org
2022-08-14 22:09 ` pinskia at gcc dot gnu.org
2022-08-15  7:01 ` slyfox at gcc dot gnu.org
2022-08-15  7:22 ` slyfox at gcc dot gnu.org
2022-08-15  7:39 ` pinskia at gcc dot gnu.org
2022-08-15  8:55 ` rguenth at gcc dot gnu.org
2022-08-15  9:06 ` rguenth at gcc dot gnu.org
2022-08-16  6:47 ` [Bug tree-optimization/106617] [13 Regression] gcc is very slow at ternary expressions since r13-322-g7f04b0d786e13ff5 marxin at gcc dot gnu.org
2022-08-16  7:17 ` rguenth at gcc dot gnu.org
2022-08-16 14:48 ` pinskia at gcc dot gnu.org
2022-08-16 15:10 ` pivanov at hotmail dot com

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).