Fixed
Status Update
Comments
th...@chromium.org <th...@chromium.org> #2
[Empty comment from Monorail migration]
th...@chromium.org <th...@chromium.org> #3
Other than `pragma intrinsic`, we also hit `pragma runtime_checks` (https://llvm.org/PR25138 ) and `pragma optimize` (no upstream bug as far as I can tell).
th...@chromium.org <th...@chromium.org> #4
Here's a list of all pragmas in chromium's code that this fires on:
#pragma intrinsic(_AddressOfReturnAddress)
#pragma intrinsic(_BitScanForward)
#pragma intrinsic(_BitScanReverse)
#pragma intrinsic(_InterlockedCompareExchange)
#pragma intrinsic(_InterlockedCompareExchangePointer)
#pragma intrinsic(_InterlockedDecrement)
#pragma intrinsic(_InterlockedIncrement)
#pragma intrinsic(_ReturnAddress)
#pragma intrinsic(_byteswap_uint64, _byteswap_ulong)
#pragma optimize ( "", off )
#pragma optimize ( "", on )
#pragma optimize( "", off )
#pragma optimize( "", on )
#pragma optimize("", off)
#pragma optimize("", on)
#pragma runtime_checks("c", off)
#pragma runtime_checks("c", restore)
#pragma intrinsic(_AddressOfReturnAddress)
#pragma intrinsic(_BitScanForward)
#pragma intrinsic(_BitScanReverse)
#pragma intrinsic(_InterlockedCompareExchange)
#pragma intrinsic(_InterlockedCompareExchangePointer)
#pragma intrinsic(_InterlockedDecrement)
#pragma intrinsic(_InterlockedIncrement)
#pragma intrinsic(_ReturnAddress)
#pragma intrinsic(_byteswap_uint64, _byteswap_ulong)
#pragma optimize ( "", off )
#pragma optimize ( "", on )
#pragma optimize( "", off )
#pragma optimize( "", on )
#pragma optimize("", off)
#pragma optimize("", on)
#pragma runtime_checks("c", off)
#pragma runtime_checks("c", restore)
th...@chromium.org <th...@chromium.org> #5
th...@chromium.org <th...@chromium.org> #6
With agutowski's intrinsics work, only pragma optimize warnings are left. Here are all places where it fires (64-bit static release build):
C:\src\chrome\src>ninja -C out\gnnew2 -j200
ninja: Entering directory `out\gnnew2'
[499/43214] CXX obj/base/base/alias.obj
C:\src\chrome\src\base\debug\alias.cc(12,9): warning: unknown pragma ignored [-Wunknown-pragmas]
#pragma optimize("", off)
^
C:\src\chrome\src\base\debug\alias.cc(19,9): warning: unknown pragma ignored [-Wunknown-pragmas]
#pragma optimize("", on)
^
2 warnings generated.
[732/43214] CXX obj/base/base/process_startup_helper.obj
C:\src\chrome\src\base\win\process_startup_helper.cc(15,9): warning: unknown pragma ignored [-Wunknown-pragmas]
#pragma optimize("", off)
^
C:\src\chrome\src\base\win\process_startup_helper.cc(29,9): warning: unknown pragma ignored [-Wunknown-pragmas]
#pragma optimize("", on)
^
2 warnings generated.
[1256/43214] CXX obj/base/base/stack_trace_win.obj
C:\src\chrome\src\base\debug\stack_trace_win.cc(209,9): warning: unknown pragma ignored [-Wunknown-pragmas]
#pragma optimize("", off)
^
C:\src\chrome\src\base\debug\stack_trace_win.cc(218,9): warning: unknown pragma ignored [-Wunknown-pragmas]
#pragma optimize("", on)
^
2 warnings generated.
[9400/43214] CC obj/third_party/mesa/mesa/s_zoom.obj
C:\src\chrome\src\third_party\mesa\src\src\mesa\swrast\s_zoom.c(400,9): warning: unknown pragma ignored [-Wunknown-prag
mas]
#pragma optimize("", off)
^
C:\src\chrome\src\third_party\mesa\src\src\mesa\swrast\s_zoom.c(449,9): warning: unknown pragma ignored [-Wunknown-prag
mas]
#pragma optimize("", off)
^
2 warnings generated.
[9468/43214] CC obj/third_party/mesa/mesa/pack.obj
C:\src\chrome\src\third_party\mesa\src\src\mesa\main\pack.c(41,11): warning: unknown pragma ignored [-Wunknown-pragmas]
# pragma optimize( "g", off )
^
1 warning generated.
[15846/43214] CXX obj/components/crash/content/app/app_breakpad_mac_win_to_be_deleted/breakpad_win.obj
C:\src\chrome\src\components\crash\content\app\breakpad_win.cc(128,1): warning: unknown pragma ignored [-Wunknown-pragm
as]
MSVC_DISABLE_OPTIMIZE()
^
C:\src\chrome\src\base\compiler_specific.h(43,42): note: expanded from macro 'MSVC_DISABLE_OPTIMIZE'
#define MSVC_DISABLE_OPTIMIZE() __pragma(optimize("", off))
^
C:\src\chrome\src\components\crash\content\app\breakpad_win.cc(148,1): warning: unknown pragma ignored [-Wunknown-pragm
as]
MSVC_ENABLE_OPTIMIZE()
^
C:\src\chrome\src\base\compiler_specific.h(44,41): note: expanded from macro 'MSVC_ENABLE_OPTIMIZE'
#define MSVC_ENABLE_OPTIMIZE() __pragma(optimize("", on))
^
2 warnings generated.
[15847/43214] CXX obj/components/crash/content/app/app/crashpad_win.obj
C:\src\chrome\src\components\crash\content\app\crashpad_win.cc(163,1): warning: unknown pragma ignored [-Wunknown-pragm
as]
MSVC_DISABLE_OPTIMIZE()
^
C:\src\chrome\src\base\compiler_specific.h(43,42): note: expanded from macro 'MSVC_DISABLE_OPTIMIZE'
#define MSVC_DISABLE_OPTIMIZE() __pragma(optimize("", off))
^
C:\src\chrome\src\components\crash\content\app\crashpad_win.cc(193,1): warning: unknown pragma ignored [-Wunknown-pragm
as]
MSVC_ENABLE_OPTIMIZE()
^
C:\src\chrome\src\base\compiler_specific.h(44,41): note: expanded from macro 'MSVC_ENABLE_OPTIMIZE'
#define MSVC_ENABLE_OPTIMIZE() __pragma(optimize("", on))
^
2 warnings generated.
[16991/43214] CXX obj/net/net/winsock_util.obj
C:\src\chrome\src\net\base\winsock_util.cc(18,9): warning: unknown pragma ignored [-Wunknown-pragmas]
#pragma optimize( "", off )
^
C:\src\chrome\src\net\base\winsock_util.cc(31,9): warning: unknown pragma ignored [-Wunknown-pragmas]
#pragma optimize( "", on )
^
2 warnings generated.
[30485/43214] CXX obj/chrome/browser/browser_1/thread_watcher_report_hang.obj
C:\src\chrome\src\chrome\browser\metrics\thread_watcher_report_hang.cc(9,1): warning: unknown pragma ignored [-Wunknown
-pragmas]
MSVC_DISABLE_OPTIMIZE()
^
C:\src\chrome\src\base\compiler_specific.h(43,42): note: expanded from macro 'MSVC_DISABLE_OPTIMIZE'
#define MSVC_DISABLE_OPTIMIZE() __pragma(optimize("", off))
^
C:\src\chrome\src\chrome\browser\metrics\thread_watcher_report_hang.cc(112,1): warning: unknown pragma ignored [-Wunkno
wn-pragmas]
MSVC_ENABLE_OPTIMIZE();
^
C:\src\chrome\src\base\compiler_specific.h(44,41): note: expanded from macro 'MSVC_ENABLE_OPTIMIZE'
#define MSVC_ENABLE_OPTIMIZE() __pragma(optimize("", on))
^
2 warnings generated.
[31117/43214] CXX obj/chrome/browser/browser_4/process_power_collector.obj
C:\src\chrome\src\chrome\browser\power\process_power_collector.cc(100,9): warning: unknown pragma ignored [-Wunknown-pr
agmas]
#pragma optimize("", off)
^
C:\src\chrome\src\chrome\browser\power\process_power_collector.cc(117,9): warning: unknown pragma ignored [-Wunknown-pr
agmas]
#pragma optimize("", on)
^
2 warnings generated.
[32371/43214] CXX obj/chrome/common/common/logging_chrome.obj
C:\src\chrome\src\chrome\common\logging_chrome.cc(92,1): warning: unknown pragma ignored [-Wunknown-pragmas]
MSVC_DISABLE_OPTIMIZE();
^
C:\src\chrome\src\base\compiler_specific.h(43,42): note: expanded from macro 'MSVC_DISABLE_OPTIMIZE'
#define MSVC_DISABLE_OPTIMIZE() __pragma(optimize("", off))
^
C:\src\chrome\src\chrome\common\logging_chrome.cc(96,1): warning: unknown pragma ignored [-Wunknown-pragmas]
MSVC_ENABLE_OPTIMIZE();
^
C:\src\chrome\src\base\compiler_specific.h(44,41): note: expanded from macro 'MSVC_ENABLE_OPTIMIZE'
#define MSVC_ENABLE_OPTIMIZE() __pragma(optimize("", on))
^
2 warnings generated.
[34356/43214] CXX obj/content/browser/browser/browser_main_loop.obj
C:\src\chrome\src\content\browser\browser_main_loop.cc(297,1): warning: unknown pragma ignored [-Wunknown-pragmas]
MSVC_DISABLE_OPTIMIZE()
^
C:\src\chrome\src\base\compiler_specific.h(43,42): note: expanded from macro 'MSVC_DISABLE_OPTIMIZE'
#define MSVC_DISABLE_OPTIMIZE() __pragma(optimize("", off))
^
C:\src\chrome\src\content\browser\browser_main_loop.cc(347,1): warning: unknown pragma ignored [-Wunknown-pragmas]
MSVC_ENABLE_OPTIMIZE();
^
C:\src\chrome\src\base\compiler_specific.h(44,41): note: expanded from macro 'MSVC_ENABLE_OPTIMIZE'
#define MSVC_ENABLE_OPTIMIZE() __pragma(optimize("", on))
^
2 warnings generated.
[34596/43214] CXX obj/content/browser/browser/browser_thread_impl.obj
C:\src\chrome\src\content\browser\browser_thread_impl.cc(210,1): warning: unknown pragma ignored [-Wunknown-pragmas]
MSVC_DISABLE_OPTIMIZE()
^
C:\src\chrome\src\base\compiler_specific.h(43,42): note: expanded from macro 'MSVC_DISABLE_OPTIMIZE'
#define MSVC_DISABLE_OPTIMIZE() __pragma(optimize("", off))
^
C:\src\chrome\src\content\browser\browser_thread_impl.cc(258,1): warning: unknown pragma ignored [-Wunknown-pragmas]
MSVC_ENABLE_OPTIMIZE();
^
C:\src\chrome\src\base\compiler_specific.h(44,41): note: expanded from macro 'MSVC_ENABLE_OPTIMIZE'
#define MSVC_ENABLE_OPTIMIZE() __pragma(optimize("", on))
^
2 warnings generated.
C:\src\chrome\src>ninja -C out\gnnew2 -j200
ninja: Entering directory `out\gnnew2'
[499/43214] CXX obj/base/base/alias.obj
C:\src\chrome\src\base\debug\alias.cc(12,9): warning: unknown pragma ignored [-Wunknown-pragmas]
#pragma optimize("", off)
^
C:\src\chrome\src\base\debug\alias.cc(19,9): warning: unknown pragma ignored [-Wunknown-pragmas]
#pragma optimize("", on)
^
2 warnings generated.
[732/43214] CXX obj/base/base/process_startup_helper.obj
C:\src\chrome\src\base\win\process_startup_helper.cc(15,9): warning: unknown pragma ignored [-Wunknown-pragmas]
#pragma optimize("", off)
^
C:\src\chrome\src\base\win\process_startup_helper.cc(29,9): warning: unknown pragma ignored [-Wunknown-pragmas]
#pragma optimize("", on)
^
2 warnings generated.
[1256/43214] CXX obj/base/base/stack_trace_win.obj
C:\src\chrome\src\base\debug\stack_trace_win.cc(209,9): warning: unknown pragma ignored [-Wunknown-pragmas]
#pragma optimize("", off)
^
C:\src\chrome\src\base\debug\stack_trace_win.cc(218,9): warning: unknown pragma ignored [-Wunknown-pragmas]
#pragma optimize("", on)
^
2 warnings generated.
[9400/43214] CC obj/third_party/mesa/mesa/s_zoom.obj
C:\src\chrome\src\third_party\mesa\src\src\mesa\swrast\s_zoom.c(400,9): warning: unknown pragma ignored [-Wunknown-prag
mas]
#pragma optimize("", off)
^
C:\src\chrome\src\third_party\mesa\src\src\mesa\swrast\s_zoom.c(449,9): warning: unknown pragma ignored [-Wunknown-prag
mas]
#pragma optimize("", off)
^
2 warnings generated.
[9468/43214] CC obj/third_party/mesa/mesa/pack.obj
C:\src\chrome\src\third_party\mesa\src\src\mesa\main\pack.c(41,11): warning: unknown pragma ignored [-Wunknown-pragmas]
# pragma optimize( "g", off )
^
1 warning generated.
[15846/43214] CXX obj/components/crash/content/app/app_breakpad_mac_win_to_be_deleted/breakpad_win.obj
C:\src\chrome\src\components\crash\content\app\breakpad_win.cc(128,1): warning: unknown pragma ignored [-Wunknown-pragm
as]
MSVC_DISABLE_OPTIMIZE()
^
C:\src\chrome\src\base\compiler_specific.h(43,42): note: expanded from macro 'MSVC_DISABLE_OPTIMIZE'
#define MSVC_DISABLE_OPTIMIZE() __pragma(optimize("", off))
^
C:\src\chrome\src\components\crash\content\app\breakpad_win.cc(148,1): warning: unknown pragma ignored [-Wunknown-pragm
as]
MSVC_ENABLE_OPTIMIZE()
^
C:\src\chrome\src\base\compiler_specific.h(44,41): note: expanded from macro 'MSVC_ENABLE_OPTIMIZE'
#define MSVC_ENABLE_OPTIMIZE() __pragma(optimize("", on))
^
2 warnings generated.
[15847/43214] CXX obj/components/crash/content/app/app/crashpad_win.obj
C:\src\chrome\src\components\crash\content\app\crashpad_win.cc(163,1): warning: unknown pragma ignored [-Wunknown-pragm
as]
MSVC_DISABLE_OPTIMIZE()
^
C:\src\chrome\src\base\compiler_specific.h(43,42): note: expanded from macro 'MSVC_DISABLE_OPTIMIZE'
#define MSVC_DISABLE_OPTIMIZE() __pragma(optimize("", off))
^
C:\src\chrome\src\components\crash\content\app\crashpad_win.cc(193,1): warning: unknown pragma ignored [-Wunknown-pragm
as]
MSVC_ENABLE_OPTIMIZE()
^
C:\src\chrome\src\base\compiler_specific.h(44,41): note: expanded from macro 'MSVC_ENABLE_OPTIMIZE'
#define MSVC_ENABLE_OPTIMIZE() __pragma(optimize("", on))
^
2 warnings generated.
[16991/43214] CXX obj/net/net/winsock_util.obj
C:\src\chrome\src\net\base\winsock_util.cc(18,9): warning: unknown pragma ignored [-Wunknown-pragmas]
#pragma optimize( "", off )
^
C:\src\chrome\src\net\base\winsock_util.cc(31,9): warning: unknown pragma ignored [-Wunknown-pragmas]
#pragma optimize( "", on )
^
2 warnings generated.
[30485/43214] CXX obj/chrome/browser/browser_1/thread_watcher_report_hang.obj
C:\src\chrome\src\chrome\browser\metrics\thread_watcher_report_hang.cc(9,1): warning: unknown pragma ignored [-Wunknown
-pragmas]
MSVC_DISABLE_OPTIMIZE()
^
C:\src\chrome\src\base\compiler_specific.h(43,42): note: expanded from macro 'MSVC_DISABLE_OPTIMIZE'
#define MSVC_DISABLE_OPTIMIZE() __pragma(optimize("", off))
^
C:\src\chrome\src\chrome\browser\metrics\thread_watcher_report_hang.cc(112,1): warning: unknown pragma ignored [-Wunkno
wn-pragmas]
MSVC_ENABLE_OPTIMIZE();
^
C:\src\chrome\src\base\compiler_specific.h(44,41): note: expanded from macro 'MSVC_ENABLE_OPTIMIZE'
#define MSVC_ENABLE_OPTIMIZE() __pragma(optimize("", on))
^
2 warnings generated.
[31117/43214] CXX obj/chrome/browser/browser_4/process_power_collector.obj
C:\src\chrome\src\chrome\browser\power\process_power_collector.cc(100,9): warning: unknown pragma ignored [-Wunknown-pr
agmas]
#pragma optimize("", off)
^
C:\src\chrome\src\chrome\browser\power\process_power_collector.cc(117,9): warning: unknown pragma ignored [-Wunknown-pr
agmas]
#pragma optimize("", on)
^
2 warnings generated.
[32371/43214] CXX obj/chrome/common/common/logging_chrome.obj
C:\src\chrome\src\chrome\common\logging_chrome.cc(92,1): warning: unknown pragma ignored [-Wunknown-pragmas]
MSVC_DISABLE_OPTIMIZE();
^
C:\src\chrome\src\base\compiler_specific.h(43,42): note: expanded from macro 'MSVC_DISABLE_OPTIMIZE'
#define MSVC_DISABLE_OPTIMIZE() __pragma(optimize("", off))
^
C:\src\chrome\src\chrome\common\logging_chrome.cc(96,1): warning: unknown pragma ignored [-Wunknown-pragmas]
MSVC_ENABLE_OPTIMIZE();
^
C:\src\chrome\src\base\compiler_specific.h(44,41): note: expanded from macro 'MSVC_ENABLE_OPTIMIZE'
#define MSVC_ENABLE_OPTIMIZE() __pragma(optimize("", on))
^
2 warnings generated.
[34356/43214] CXX obj/content/browser/browser/browser_main_loop.obj
C:\src\chrome\src\content\browser\browser_main_loop.cc(297,1): warning: unknown pragma ignored [-Wunknown-pragmas]
MSVC_DISABLE_OPTIMIZE()
^
C:\src\chrome\src\base\compiler_specific.h(43,42): note: expanded from macro 'MSVC_DISABLE_OPTIMIZE'
#define MSVC_DISABLE_OPTIMIZE() __pragma(optimize("", off))
^
C:\src\chrome\src\content\browser\browser_main_loop.cc(347,1): warning: unknown pragma ignored [-Wunknown-pragmas]
MSVC_ENABLE_OPTIMIZE();
^
C:\src\chrome\src\base\compiler_specific.h(44,41): note: expanded from macro 'MSVC_ENABLE_OPTIMIZE'
#define MSVC_ENABLE_OPTIMIZE() __pragma(optimize("", on))
^
2 warnings generated.
[34596/43214] CXX obj/content/browser/browser/browser_thread_impl.obj
C:\src\chrome\src\content\browser\browser_thread_impl.cc(210,1): warning: unknown pragma ignored [-Wunknown-pragmas]
MSVC_DISABLE_OPTIMIZE()
^
C:\src\chrome\src\base\compiler_specific.h(43,42): note: expanded from macro 'MSVC_DISABLE_OPTIMIZE'
#define MSVC_DISABLE_OPTIMIZE() __pragma(optimize("", off))
^
C:\src\chrome\src\content\browser\browser_thread_impl.cc(258,1): warning: unknown pragma ignored [-Wunknown-pragmas]
MSVC_ENABLE_OPTIMIZE();
^
C:\src\chrome\src\base\compiler_specific.h(44,41): note: expanded from macro 'MSVC_ENABLE_OPTIMIZE'
#define MSVC_ENABLE_OPTIMIZE() __pragma(optimize("", on))
^
2 warnings generated.
th...@chromium.org <th...@chromium.org> #7
File list:
badd +0 net/base/winsock_util.cc
badd +0 base/debug/alias.cc
badd +0 base/debug/stack_trace_win.cc
badd +0 third_party/mesa/src/src/mesa/swrast/s_zoom.c
badd +0 third_party/mesa/src/src/mesa/main/pack.c
badd +0 components/crash/content/app/breakpad_win.cc
badd +0 components/crash/content/app/crashpad_win.cc
badd +0 chrome/browser/metrics/thread_watcher_report_hang.cc
badd +0 chrome/browser/power/process_power_collector.cc
badd +0 chrome/common/logging_chrome.cc
badd +0 content/browser/browser_main_loop.cc
badd +0 content/browser/browser_thread_impl.cc
badd +0 net/base/winsock_util.cc
badd +0 base/debug/alias.cc
badd +0 base/debug/stack_trace_win.cc
badd +0 third_party/mesa/src/src/mesa/swrast/s_zoom.c
badd +0 third_party/mesa/src/src/mesa/main/pack.c
badd +0 components/crash/content/app/breakpad_win.cc
badd +0 components/crash/content/app/crashpad_win.cc
badd +0 chrome/browser/metrics/thread_watcher_report_hang.cc
badd +0 chrome/browser/power/process_power_collector.cc
badd +0 chrome/common/logging_chrome.cc
badd +0 content/browser/browser_main_loop.cc
badd +0 content/browser/browser_thread_impl.cc
th...@chromium.org <th...@chromium.org> #8
There are two types of uses, both roughly equally common.
1. Turning off optimizations to work around cl.exe compiler crashes.
2. Turning off optimizations so that functions don't get inlined and show up nicer on the crash. These uses all use the pragma through the MSVC_DISABLE_OPTIMIZE macro.
1. Turning off optimizations to work around cl.exe compiler crashes.
2. Turning off optimizations so that functions don't get inlined and show up nicer on the crash. These uses all use the pragma through the MSVC_DISABLE_OPTIMIZE macro.
is...@chromium.org <is...@chromium.org> #9
Hmm, I see tons of noisy pragma-related warnings output when I build (sample below). Am I holding it wrong?
../../content/renderer/mojo_context_state.cc:88:36: warning: unknown pragma ignored [-Wunknown-pragmas]
{mojo::kValidatorModuleName, IDR_MOJO_VALIDATOR_JS},
^
gen/content/grit/content_resources.h:49:31: note: expanded from macro 'IDR_MOJO_VALIDATOR_JS'
#define IDR_MOJO_VALIDATOR_JS _Pragma("whitelisted_resource_20449") 20449
^
<scratch space>:74:2: note: expanded from here
whitelisted_resource_20449
^
../../content/renderer/mojo_context_state.cc:88:36: warning: unknown pragma ignored [-Wunknown-pragmas]
{mojo::kValidatorModuleName, IDR_MOJO_VALIDATOR_JS},
^
gen/content/grit/content_resources.h:49:31: note: expanded from macro 'IDR_MOJO_VALIDATOR_JS'
#define IDR_MOJO_VALIDATOR_JS _Pragma("whitelisted_resource_20449") 20449
^
<scratch space>:74:2: note: expanded from here
whitelisted_resource_20449
^
th...@chromium.org <th...@chromium.org> #10
Are you building on Windows? If not, this isn't your bug. I'm guessing you're doing an official Android build; there we're using these warnings to detect which resources are referenced so we can include just those in the pak.
is...@chromium.org <is...@chromium.org> #11
Sorry, missed your reply. You're right, I'm doing an official Android build.
is...@chromium.org <is...@chromium.org> #12
In case anyone else happens to stumble upon this bug for the same reason that I did, you might find setting enable_resource_whitelist_generation=false (in gn args) to be useful.
dt...@chromium.org <dt...@chromium.org> #13
[Empty comment from Monorail migration]
[Monorail components: Build]
[Monorail components: Build]
th...@chromium.org <th...@chromium.org> #14
This is the last clang warning that we disable only on Windows, so we should try to come up with something. The only thing this still warns on is #pragma optimize. As comments 5-7 describe, these are about 50/50 either workarounds for msvc compiler bugs, or for disabling inlining to get nicer stacks.
I think we don't really want to implement pragma optimize in clang -- we'll pick up a bunch of "don't optimize this because cl.exe crashes compiling it else" which is silly, and the noinline things we can get in another way. We might want to do an audit again and add manual NOINLINEs where pragma optimize is used.
Which means we'll always have this warning for pragma optimize.
So my suggestion is to move the warning for pragma optimize behind -Wunknown-pragma-optimize, then we can disable that warning (forever, likely) but still have the warning about other pragmas on all platforms.
Does that sound like a plan?
I think we don't really want to implement pragma optimize in clang -- we'll pick up a bunch of "don't optimize this because cl.exe crashes compiling it else" which is silly, and the noinline things we can get in another way. We might want to do an audit again and add manual NOINLINEs where pragma optimize is used.
Which means we'll always have this warning for pragma optimize.
So my suggestion is to move the warning for pragma optimize behind -Wunknown-pragma-optimize, then we can disable that warning (forever, likely) but still have the warning about other pragmas on all platforms.
Does that sound like a plan?
rn...@chromium.org <rn...@chromium.org> #15
Sounds about right.
I think we should do what we do for #pragma intrinsic: we should parse it, but only for the purposes of saying "we know what pragma optimize means, but we're ignoring it, use #pragma clang optimize off if you really mean it".
Someone using clang-cl out of the box would get an explanation why #pragma optimize(off) isn't doing what they expect, and Chromium could add -Wno-ignored-pragma-optimize to disable it.
I think we should do what we do for #pragma intrinsic: we should parse it, but only for the purposes of saying "we know what pragma optimize means, but we're ignoring it, use #pragma clang optimize off if you really mean it".
Someone using clang-cl out of the box would get an explanation why #pragma optimize(off) isn't doing what they expect, and Chromium could add -Wno-ignored-pragma-optimize to disable it.
ha...@chromium.org <ha...@chromium.org> #16
ha...@chromium.org <ha...@chromium.org> #17
r327959
We'll need a clang roll to bring that in.
We'll need a clang roll to bring that in.
ha...@chromium.org <ha...@chromium.org> #18
[Empty comment from Monorail migration]
bu...@chromium.org <bu...@chromium.org> #19
The following revision refers to this bug:
https://chromium.googlesource.com/chromium/src.git/+/b45cfad0a869320c8b9265296973f44acc594a5e
commit b45cfad0a869320c8b9265296973f44acc594a5e
Author: Hans Wennborg <hans@chromium.org>
Date: Tue Mar 20 20:11:35 2018
Suppress -Wignored-pragma-optimize warning
This was broken out of -Wunknown-pragmas specifically so we can ignore
it.
Bug: 505314
Change-Id: I7acc79af2db5ca2854613b9be0a683ac9bb7afea
Reviewed-on:https://chromium-review.googlesource.com/971324
Reviewed-by: Hans Wennborg <hans@chromium.org>
Reviewed-by: Reid Kleckner <rnk@chromium.org>
Commit-Queue: Reid Kleckner <rnk@chromium.org>
Cr-Commit-Position: refs/heads/master@{#544503}
[modify]https://crrev.com/b45cfad0a869320c8b9265296973f44acc594a5e/build/config/compiler/BUILD.gn
commit b45cfad0a869320c8b9265296973f44acc594a5e
Author: Hans Wennborg <hans@chromium.org>
Date: Tue Mar 20 20:11:35 2018
Suppress -Wignored-pragma-optimize warning
This was broken out of -Wunknown-pragmas specifically so we can ignore
it.
Bug: 505314
Change-Id: I7acc79af2db5ca2854613b9be0a683ac9bb7afea
Reviewed-on:
Reviewed-by: Hans Wennborg <hans@chromium.org>
Reviewed-by: Reid Kleckner <rnk@chromium.org>
Commit-Queue: Reid Kleckner <rnk@chromium.org>
Cr-Commit-Position: refs/heads/master@{#544503}
[modify]
th...@chromium.org <th...@chromium.org> #20
../../third_party/unrar/src/global.cpp(4,9): error: unknown pragma ignored [-Werror,-Wunknown-pragmas]
#pragma hdrstop
^
/me gives third_party/unrar an evil glance
th...@chromium.org <th...@chromium.org> #21
…but I guess the warning found the valid "we're building the pch file as a regular source file" bug here. Upon looking at the build file, I found bigger issues with that lib (https://crbug.com/chromium/826743 ) :-/
th...@chromium.org <th...@chromium.org> #22
After addressing that one, this is the next one:
../../chrome/installer/mini_installer/mini_installer_exe_main.cc(40,9): error: unknown pragma ignored [-Werror,-Wunknown-pragmas]
#pragma function(memset)
^
This is the reverse of `pragma intrinsic`. This was added inhttps://codereview.chromium.org/6676030/diff/17115/chrome/installer/mini_installer/mini_installer.cc ; I wonder if we still need it
(I happened to see this hilarious CL while looking at this:https://codereview.chromium.org/294943005 )
../../chrome/installer/mini_installer/mini_installer_exe_main.cc(40,9): error: unknown pragma ignored [-Werror,-Wunknown-pragmas]
#pragma function(memset)
^
This is the reverse of `pragma intrinsic`. This was added in
(I happened to see this hilarious CL while looking at this:
th...@chromium.org <th...@chromium.org> #23
memset needs to be defined in mini_installer, else we get a missing symbol error (likely because mini_installer links without most libraries for size reasons (https://cs.chromium.org/chromium/src/chrome/installer/mini_installer/BUILD.gn?q=mini_installer+file:build.gn&sq=package:chromium&dr=C&l=241 ).
Without the `#pragma function(memset)` line, cl.exe says:
../../chrome/installer/mini_installer/mini_installer_exe_main.cc(46): error C2169: 'memset': intrinsic function, cannot be defined
Since clang-cl doesn't emit that warning, maybe it could just silently ignore `#pragma function` -- but per doc, that also controls if calls to memset() are actual calls and doesn't affect just declarations. So not 100% sure what to do about this one.
Without the `#pragma function(memset)` line, cl.exe says:
../../chrome/installer/mini_installer/mini_installer_exe_main.cc(46): error C2169: 'memset': intrinsic function, cannot be defined
Since clang-cl doesn't emit that warning, maybe it could just silently ignore `#pragma function` -- but per doc, that also controls if calls to memset() are actual calls and doesn't affect just declarations. So not 100% sure what to do about this one.
bu...@chromium.org <bu...@chromium.org> #24
The following revision refers to this bug:
https://chromium.googlesource.com/chromium/src.git/+/6b75ed6631252afecb677171e2e000cb3cf2dbad
commit 6b75ed6631252afecb677171e2e000cb3cf2dbad
Author: Nico Weber <thakis@chromium.org>
Date: Fri Mar 30 19:10:48 2018
clang/win: Stop disabling -Wunknown-pragma.
unrar was accidentally compiling in a precompiled header file that contained
`pragma hdrstop`. Remove that from the build.
mini_installer_exe_main.cc defines its own memset(), which with cl.exe requires
a `pragma function(memset)`. With clang that's not needed, so put that behind
an if !defined(__clang__).
Other than that, the only unknown pragma we run into is `#pragma optimize` and
as of the last clang roll, that's behind the separate -Wignored-pragma-optimize
(which we explicitly disable).
No runtime behavior change.
Bug: 505314,504657
Change-Id: I851642a408cec6e5de21464cf582c5f11a5fa496
Reviewed-on:https://chromium-review.googlesource.com/984113
Reviewed-by: Reid Kleckner <rnk@chromium.org>
Commit-Queue: Nico Weber <thakis@chromium.org>
Cr-Commit-Position: refs/heads/master@{#547230}
[modify]https://crrev.com/6b75ed6631252afecb677171e2e000cb3cf2dbad/build/config/compiler/BUILD.gn
[modify]https://crrev.com/6b75ed6631252afecb677171e2e000cb3cf2dbad/chrome/installer/mini_installer/mini_installer_exe_main.cc
[modify]https://crrev.com/6b75ed6631252afecb677171e2e000cb3cf2dbad/third_party/unrar/BUILD.gn
commit 6b75ed6631252afecb677171e2e000cb3cf2dbad
Author: Nico Weber <thakis@chromium.org>
Date: Fri Mar 30 19:10:48 2018
clang/win: Stop disabling -Wunknown-pragma.
unrar was accidentally compiling in a precompiled header file that contained
`pragma hdrstop`. Remove that from the build.
mini_installer_exe_main.cc defines its own memset(), which with cl.exe requires
a `pragma function(memset)`. With clang that's not needed, so put that behind
an if !defined(__clang__).
Other than that, the only unknown pragma we run into is `#pragma optimize` and
as of the last clang roll, that's behind the separate -Wignored-pragma-optimize
(which we explicitly disable).
No runtime behavior change.
Bug: 505314,504657
Change-Id: I851642a408cec6e5de21464cf582c5f11a5fa496
Reviewed-on:
Reviewed-by: Reid Kleckner <rnk@chromium.org>
Commit-Queue: Nico Weber <thakis@chromium.org>
Cr-Commit-Position: refs/heads/master@{#547230}
[modify]
[modify]
[modify]
th...@chromium.org <th...@chromium.org> #25
There are 19 chromium_code files using pragma optimize. I think we probably want to make them not use that pragma in clang builds and enable this warning for chromium_code.
../../base/debug/alias.cc(12,9): warning: '#pragma optimize' is not supported [-Wignored-pragma-optimize]
../../base/debug/alias.cc(19,9): warning: '#pragma optimize' is not supported [-Wignored-pragma-optimize]
../../base/win/process_startup_helper.cc(15,9): warning: '#pragma optimize' is not supported [-Wignored-pragma-optimize]
../../base/win/process_startup_helper.cc(29,9): warning: '#pragma optimize' is not supported [-Wignored-pragma-optimize]
../../base/debug/stack_trace_win.cc(279,9): warning: '#pragma optimize' is not supported [-Wignored-pragma-optimize]
../../base/debug/stack_trace_win.cc(290,9): warning: '#pragma optimize' is not supported [-Wignored-pragma-optimize]
../../base/test/test_suite.cc(327,9): warning: '#pragma optimize' is not supported [-Wignored-pragma-optimize]
../../base/test/test_suite.cc(351,9): warning: '#pragma optimize' is not supported [-Wignored-pragma-optimize]
../../components/crash/content/app/crashpad_win.cc(168,1): warning: '#pragma optimize' is not supported [-Wignored-pragma-optimize]
../../components/crash/content/app/crashpad_win.cc(177,1): warning: '#pragma optimize' is not supported [-Wignored-pragma-optimize]
../../v8/src/base/debug/stack_trace_win.cc(172,9): warning: '#pragma optimize' is not supported [-Wignored-pragma-optimize]
../../v8/src/base/debug/stack_trace_win.cc(181,9): warning: '#pragma optimize' is not supported [-Wignored-pragma-optimize]
../../chrome/chrome_watcher/chrome_watcher_main.cc(72,1): warning: '#pragma optimize' is not supported [-Wignored-pragma-optimize]
../../chrome/chrome_watcher/chrome_watcher_main.cc(79,1): warning: '#pragma optimize' is not supported [-Wignored-pragma-optimize]
../../net/base/winsock_util.cc(18,9): warning: '#pragma optimize' is not supported [-Wignored-pragma-optimize]
../../net/base/winsock_util.cc(31,9): warning: '#pragma optimize' is not supported [-Wignored-pragma-optimize]
../../chrome/common/logging_chrome.cc(97,1): warning: '#pragma optimize' is not supported [-Wignored-pragma-optimize]
../../chrome/common/logging_chrome.cc(104,1): warning: '#pragma optimize' is not supported [-Wignored-pragma-optimize]
../../chrome/browser/metrics/thread_watcher_report_hang.cc(9,1): warning: '#pragma optimize' is not supported [-Wignored-pragma-optimize]
../../chrome/browser/metrics/thread_watcher_report_hang.cc(75,1): warning: '#pragma optimize' is not supported [-Wignored-pragma-optimize]
../../content/browser/browser_process_sub_thread.cc(144,1): warning: '#pragma optimize' is not supported [-Wignored-pragma-optimize]
../../content/browser/browser_process_sub_thread.cc(160,1): warning: '#pragma optimize' is not supported [-Wignored-pragma-optimize]
../../content/browser/browser_main_loop.cc(374,1): warning: '#pragma optimize' is not supported [-Wignored-pragma-optimize]
../../content/browser/browser_main_loop.cc(385,1): warning: '#pragma optimize' is not supported [-Wignored-pragma-optimize]
../../ui/gfx/win/hwnd_util.cc(53,1): warning: '#pragma optimize' is not supported [-Wignored-pragma-optimize]
../../ui/gfx/win/hwnd_util.cc(68,1): warning: '#pragma optimize' is not supported [-Wignored-pragma-optimize]
../../third_party/WebKit/Source/platform/scheduler/base/task_queue_manager_impl.cc(643,1): warning: '#pragma optimize' is not supported [-Wignored-pragma-optimize]
../../third_party/WebKit/Source/platform/scheduler/base/task_queue_manager_impl.cc(647,1): warning: '#pragma optimize' is not supported [-Wignored-pragma-optimize]
../../base/debug/alias.cc(12,9): warning: '#pragma optimize' is not supported [-Wignored-pragma-optimize]
../../base/debug/alias.cc(19,9): warning: '#pragma optimize' is not supported [-Wignored-pragma-optimize]
../../base/debug/stack_trace_win.cc(279,9): warning: '#pragma optimize' is not supported [-Wignored-pragma-optimize]
../../base/debug/stack_trace_win.cc(290,9): warning: '#pragma optimize' is not supported [-Wignored-pragma-optimize]
../../base/win/process_startup_helper.cc(15,9): warning: '#pragma optimize' is not supported [-Wignored-pragma-optimize]
../../base/win/process_startup_helper.cc(29,9): warning: '#pragma optimize' is not supported [-Wignored-pragma-optimize]
../../net/base/winsock_util.cc(18,9): warning: '#pragma optimize' is not supported [-Wignored-pragma-optimize]
../../net/base/winsock_util.cc(31,9): warning: '#pragma optimize' is not supported [-Wignored-pragma-optimize]
../../ui/gfx/win/hwnd_util.cc(53,1): warning: '#pragma optimize' is not supported [-Wignored-pragma-optimize]
../../ui/gfx/win/hwnd_util.cc(68,1): warning: '#pragma optimize' is not supported [-Wignored-pragma-optimize]
../../base/debug/alias.cc(12,9): warning: '#pragma optimize' is not supported [-Wignored-pragma-optimize]
../../base/debug/alias.cc(19,9): warning: '#pragma optimize' is not supported [-Wignored-pragma-optimize]
../../base/win/process_startup_helper.cc(15,9): warning: '#pragma optimize' is not supported [-Wignored-pragma-optimize]
../../base/win/process_startup_helper.cc(29,9): warning: '#pragma optimize' is not supported [-Wignored-pragma-optimize]
../../base/debug/stack_trace_win.cc(279,9): warning: '#pragma optimize' is not supported [-Wignored-pragma-optimize]
../../base/debug/stack_trace_win.cc(290,9): warning: '#pragma optimize' is not supported [-Wignored-pragma-optimize]
../../base/test/test_suite.cc(327,9): warning: '#pragma optimize' is not supported [-Wignored-pragma-optimize]
../../base/test/test_suite.cc(351,9): warning: '#pragma optimize' is not supported [-Wignored-pragma-optimize]
../../components/crash/content/app/crashpad_win.cc(168,1): warning: '#pragma optimize' is not supported [-Wignored-pragma-optimize]
../../components/crash/content/app/crashpad_win.cc(177,1): warning: '#pragma optimize' is not supported [-Wignored-pragma-optimize]
../../v8/src/base/debug/stack_trace_win.cc(172,9): warning: '#pragma optimize' is not supported [-Wignored-pragma-optimize]
../../v8/src/base/debug/stack_trace_win.cc(181,9): warning: '#pragma optimize' is not supported [-Wignored-pragma-optimize]
../../chrome/chrome_watcher/chrome_watcher_main.cc(72,1): warning: '#pragma optimize' is not supported [-Wignored-pragma-optimize]
../../chrome/chrome_watcher/chrome_watcher_main.cc(79,1): warning: '#pragma optimize' is not supported [-Wignored-pragma-optimize]
../../net/base/winsock_util.cc(18,9): warning: '#pragma optimize' is not supported [-Wignored-pragma-optimize]
../../net/base/winsock_util.cc(31,9): warning: '#pragma optimize' is not supported [-Wignored-pragma-optimize]
../../chrome/common/logging_chrome.cc(97,1): warning: '#pragma optimize' is not supported [-Wignored-pragma-optimize]
../../chrome/common/logging_chrome.cc(104,1): warning: '#pragma optimize' is not supported [-Wignored-pragma-optimize]
../../chrome/browser/metrics/thread_watcher_report_hang.cc(9,1): warning: '#pragma optimize' is not supported [-Wignored-pragma-optimize]
../../chrome/browser/metrics/thread_watcher_report_hang.cc(75,1): warning: '#pragma optimize' is not supported [-Wignored-pragma-optimize]
../../content/browser/browser_process_sub_thread.cc(144,1): warning: '#pragma optimize' is not supported [-Wignored-pragma-optimize]
../../content/browser/browser_process_sub_thread.cc(160,1): warning: '#pragma optimize' is not supported [-Wignored-pragma-optimize]
../../content/browser/browser_main_loop.cc(374,1): warning: '#pragma optimize' is not supported [-Wignored-pragma-optimize]
../../content/browser/browser_main_loop.cc(385,1): warning: '#pragma optimize' is not supported [-Wignored-pragma-optimize]
../../ui/gfx/win/hwnd_util.cc(53,1): warning: '#pragma optimize' is not supported [-Wignored-pragma-optimize]
../../ui/gfx/win/hwnd_util.cc(68,1): warning: '#pragma optimize' is not supported [-Wignored-pragma-optimize]
../../third_party/WebKit/Source/platform/scheduler/base/task_queue_manager_impl.cc(643,1): warning: '#pragma optimize' is not supported [-Wignored-pragma-optimize]
../../third_party/WebKit/Source/platform/scheduler/base/task_queue_manager_impl.cc(647,1): warning: '#pragma optimize' is not supported [-Wignored-pragma-optimize]
../../base/debug/alias.cc(12,9): warning: '#pragma optimize' is not supported [-Wignored-pragma-optimize]
../../base/debug/alias.cc(19,9): warning: '#pragma optimize' is not supported [-Wignored-pragma-optimize]
../../base/debug/stack_trace_win.cc(279,9): warning: '#pragma optimize' is not supported [-Wignored-pragma-optimize]
../../base/debug/stack_trace_win.cc(290,9): warning: '#pragma optimize' is not supported [-Wignored-pragma-optimize]
../../base/win/process_startup_helper.cc(15,9): warning: '#pragma optimize' is not supported [-Wignored-pragma-optimize]
../../base/win/process_startup_helper.cc(29,9): warning: '#pragma optimize' is not supported [-Wignored-pragma-optimize]
../../net/base/winsock_util.cc(18,9): warning: '#pragma optimize' is not supported [-Wignored-pragma-optimize]
../../net/base/winsock_util.cc(31,9): warning: '#pragma optimize' is not supported [-Wignored-pragma-optimize]
../../ui/gfx/win/hwnd_util.cc(53,1): warning: '#pragma optimize' is not supported [-Wignored-pragma-optimize]
../../ui/gfx/win/hwnd_util.cc(68,1): warning: '#pragma optimize' is not supported [-Wignored-pragma-optimize]
bu...@chromium.org <bu...@chromium.org> #26
The following revision refers to this bug:
https://chromium.googlesource.com/v8/v8.git/+/d8840043fb3bf119dec93accabb603f00c40082b
commit d8840043fb3bf119dec93accabb603f00c40082b
Author: Nico Weber <thakis@chromium.org>
Date: Tue Apr 03 21:23:14 2018
Remove `pragma optimize` from v8.
This instance of `pragma optimize` was from long ago when we built with
frame pointers disabled. We always build with frame pointers on these
days.
(Also, clang-cl ignores this pragma and will warn about it.)
Bug: chromium:505314
Change-Id: Ia125c9c54e6ec486247241102de1cb62c72d268b
Reviewed-on:https://chromium-review.googlesource.com/993423
Commit-Queue: Jakob Kummerow <jkummerow@chromium.org>
Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
Cr-Commit-Position: refs/heads/master@{#52336}
[modify]https://crrev.com/d8840043fb3bf119dec93accabb603f00c40082b/src/base/debug/stack_trace_win.cc
commit d8840043fb3bf119dec93accabb603f00c40082b
Author: Nico Weber <thakis@chromium.org>
Date: Tue Apr 03 21:23:14 2018
Remove `pragma optimize` from v8.
This instance of `pragma optimize` was from long ago when we built with
frame pointers disabled. We always build with frame pointers on these
days.
(Also, clang-cl ignores this pragma and will warn about it.)
Bug: chromium:505314
Change-Id: Ia125c9c54e6ec486247241102de1cb62c72d268b
Reviewed-on:
Commit-Queue: Jakob Kummerow <jkummerow@chromium.org>
Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
Cr-Commit-Position: refs/heads/master@{#52336}
[modify]
bu...@chromium.org <bu...@chromium.org> #27
The following revision refers to this bug:
https://chromium.googlesource.com/chromium/src.git/+/f9f3ebcea00305663a47c0217cee260fd74c7f0b
commit f9f3ebcea00305663a47c0217cee260fd74c7f0b
Author: Nico Weber <thakis@chromium.org>
Date: Mon Nov 05 20:33:03 2018
clang/win: Remove #pragma hdrstop workaround.
clang-cl supports #pragma hdrstop as of r341963.
Bug: 505314,504657,750327,826743
Change-Id: Ic90b07114bbb886b7d8345a260863f45eef352b7
Reviewed-on:https://chromium-review.googlesource.com/c/1317607
Commit-Queue: Nico Weber <thakis@chromium.org>
Reviewed-by: Varun Khaneja <vakh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#605445}
[modify]https://crrev.com/f9f3ebcea00305663a47c0217cee260fd74c7f0b/third_party/unrar/src/global.cpp
commit f9f3ebcea00305663a47c0217cee260fd74c7f0b
Author: Nico Weber <thakis@chromium.org>
Date: Mon Nov 05 20:33:03 2018
clang/win: Remove #pragma hdrstop workaround.
clang-cl supports #pragma hdrstop as of r341963.
Bug: 505314,504657,750327,826743
Change-Id: Ic90b07114bbb886b7d8345a260863f45eef352b7
Reviewed-on:
Commit-Queue: Nico Weber <thakis@chromium.org>
Reviewed-by: Varun Khaneja <vakh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#605445}
[modify]
th...@chromium.org <th...@chromium.org> #28
This is fixed. We might want to open a new bug for building without Wno-ignored-pragma-optimize though.
Description
This warning makes clang warn about pragmas it doesn't know about. This includes Microsoft-specific pragmas that just aren't implemented in clang-cl yet (such as `#pragma intrinsic`), so removing this is likely blocked on clang-cl learning at least about pragma intrinsic (