c++: Fix warning on 32-bit x86
authorJason Merrill <jason@redhat.com>
Tue, 14 Sep 2021 02:35:18 +0000 (22:35 -0400)
committerJason Merrill <jason@redhat.com>
Tue, 14 Sep 2021 03:16:39 +0000 (23:16 -0400)
My C++17 hardware interference sizes patch caused a bogus warning on 32-bit
x86, where we have a default L1 cache line size of 0, and the front end
complained that the default constructive interference size of 64 was larger
than that.

gcc/cp/ChangeLog:

* decl.c (cxx_init_decl_processing): Don't warn if L1 cache line
size is smaller than maxalign.

gcc/cp/decl.c

index c206502..930531a 100644 (file)
@@ -4776,7 +4776,8 @@ cxx_init_decl_processing (void)
       if (param_construct_interfere_size < max_align)
        error ("%<--param constructive-interference-size=%d%> is less than "
               "%d", param_construct_interfere_size, max_align);
-      else if (param_construct_interfere_size > param_l1_cache_line_size)
+      else if (param_construct_interfere_size > param_l1_cache_line_size
+              && param_l1_cache_line_size >= max_align)
        warning (OPT_Winterference_size,
                 "%<--param constructive-interference-size=%d%> "
                 "is greater than %<--param l1-cache-line-size=%d%>",