From: Patrick Steinhardt <ps@pks.im>
To: git@vger.kernel.org
Cc: Jeff King <peff@peff.net>, Junio C Hamano <gitster@pobox.com>
Subject: [PATCH v2 0/2] ci: detect more warnings via `-Og`
Date: Thu, 6 Jun 2024 11:31:35 +0200 [thread overview]
Message-ID: <cover.1717662814.git.ps@pks.im> (raw)
In-Reply-To: <20240606080552.GA658959@coredump.intra.peff.net>
[-- Attachment #1: Type: text/plain, Size: 3798 bytes --]
Hi,
this is the second version of my patch series that modifies one of our
CI jobs to compile with `-Og`. We have noticed that it may surface more
warnings that we do not see with `-O2`, so this should help to find more
bugs up front.
Changes compared to v1:
- Instead of adapting the "pedantic" job, we now adapt
"linux-gcc-default" to compile with `-Og`. This is because that job
uses ubuntu:latest and thus a recent compiler, and there are other
jobs with ubuntu:latest that continue to compile with `-O2`. So this
is a strict improvement of coverage for diagnostics.
- Add a way to override the optimization level to our Makefile, as
suggested by Peff.
Patrick
Patrick Steinhardt (2):
ci: fix check for Ubuntu 20.04
ci: compile "linux-gcc-default" job with -Og
Makefile | 3 ++-
ci/lib.sh | 2 +-
ci/run-build-and-tests.sh | 9 +++++++++
3 files changed, 12 insertions(+), 2 deletions(-)
Range-diff against v1:
1: f91004a438 = 1: f91004a438 ci: fix check for Ubuntu 20.04
2: 351dec4a4d ! 2: bdf0e40a77 ci: let pedantic job compile with -Og
@@ Metadata
Author: Patrick Steinhardt <ps@pks.im>
## Commit message ##
- ci: let pedantic job compile with -Og
+ ci: compile "linux-gcc-default" job with -Og
We have recently noticed that our CI does not always notice variables
that may be used uninitialized. While it is expected that compiler
@@ Commit message
While we could adapt all jobs to compile with `-Og` now, that would
potentially mask other warnings that only get diagnosed with `-O2`.
- Instead, only adapt the "pedantic" job to compile with `-Og`.
+ Instead, adapt the "linux-gcc-default" job to compile with `-Og`. This
+ job is chosen because it uses the "ubuntu:latest" image and should thus
+ have a comparatively recent compiler toolchain, and because we have
+ other jobs that use "ubuntu:latest" so that we do not loose coverage for
+ warnings diagnosed only on `-O2` level.
+
+ To make it easier to set up the optimization level in our CI, add
+ support in our Makefile to specify the level via an environment
+ variable.
Signed-off-by: Patrick Steinhardt <ps@pks.im>
+ ## Makefile ##
+@@ Makefile: endif
+ # tweaked by config.* below as well as the command-line, both of
+ # which'll override these defaults.
+ # Older versions of GCC may require adding "-std=gnu99" at the end.
+-CFLAGS = -g -O2 -Wall
++O ?= 2
++CFLAGS = -g -O$(O) -Wall
+ LDFLAGS =
+ CC_LD_DYNPATH = -Wl,-rpath,
+ BASIC_CFLAGS = -I.
+
## ci/run-build-and-tests.sh ##
-@@ ci/run-build-and-tests.sh: pedantic)
- # Don't run the tests; we only care about whether Git can be
- # built.
- export DEVOPTS=pedantic
+@@ ci/run-build-and-tests.sh: esac
+ run_tests=t
+
+ case "$jobname" in
++linux-gcc-default)
+ # Warnings generated by compilers are unfortunately specific to the
+ # optimization level. With `-O0`, many warnings won't be shown at all,
+ # whereas the optimizations performed by our default optimization level
+ # `-O2` will mask others. We thus use `-Og` here just so that we have
+ # at least one job with a different optimization level so that we can
+ # overall surface more warnings.
-+ cat >config.mak <<-EOF
-+ export CFLAGS=-Og
-+ EOF
- run_tests=
++ export O=g
++ ;;
+ linux-gcc)
+ export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
;;
- esac
--
2.45.2.409.g7b0defb391.dirty
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
next prev parent reply other threads:[~2024-06-06 9:31 UTC|newest]
Thread overview: 48+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-06-06 6:30 [PATCH 0/2] ci: detect more warnings via `-Og` Patrick Steinhardt
2024-06-06 6:30 ` [PATCH 1/2] ci: fix check for Ubuntu 20.04 Patrick Steinhardt
2024-06-06 6:53 ` Jeff King
2024-06-06 7:44 ` Patrick Steinhardt
2024-06-06 6:30 ` [PATCH 2/2] ci: let pedantic job compile with -Og Patrick Steinhardt
2024-06-06 6:52 ` Jeff King
2024-06-06 7:41 ` Patrick Steinhardt
2024-06-06 8:05 ` Jeff King
2024-06-06 8:25 ` Patrick Steinhardt
2024-06-06 9:31 ` Patrick Steinhardt [this message]
2024-06-06 9:31 ` [PATCH v2 1/2] ci: fix check for Ubuntu 20.04 Patrick Steinhardt
2024-06-06 9:31 ` [PATCH v2 2/2] ci: compile "linux-gcc-default" job with -Og Patrick Steinhardt
2024-06-06 15:32 ` Justin Tobler
2024-06-06 17:02 ` Junio C Hamano
2024-06-07 5:28 ` Patrick Steinhardt
2024-06-07 18:45 ` Junio C Hamano
2024-06-08 8:49 ` Jeff King
2024-06-07 18:48 ` Junio C Hamano
2024-06-07 20:35 ` Junio C Hamano
2024-06-07 6:46 ` [PATCH v3 0/4] ci: detect more warnings via `-Og` Patrick Steinhardt
2024-06-07 6:46 ` [PATCH v3 1/4] ci: fix check for Ubuntu 20.04 Patrick Steinhardt
2024-06-07 6:46 ` [PATCH v3 2/4] Makefile: add ability to append to CFLAGS and LDFLAGS Patrick Steinhardt
2024-06-08 8:55 ` Jeff King
2024-06-08 19:01 ` Junio C Hamano
2024-06-10 7:01 ` Patrick Steinhardt
2024-06-07 6:46 ` [PATCH v3 3/4] ci: compile code with V=1 Patrick Steinhardt
2024-06-07 6:46 ` [PATCH v3 4/4] ci: compile "linux-gcc-default" job with -Og Patrick Steinhardt
2024-06-07 20:47 ` [PATCH v3 0/4] ci: detect more warnings via `-Og` Junio C Hamano
2024-06-08 9:28 ` Jeff King
2024-06-08 23:12 ` Junio C Hamano
2024-06-10 6:25 ` Patrick Steinhardt
2024-06-06 16:32 ` [PATCH 2/2] ci: let pedantic job compile with -Og Junio C Hamano
2024-06-07 5:10 ` Patrick Steinhardt
2024-06-07 18:42 ` Junio C Hamano
2024-06-10 6:38 ` [PATCH v4 0/2] ci: detect more warnings via `-Og` Patrick Steinhardt
2024-06-10 6:38 ` [PATCH v4 1/2] Makefile: add ability to append to CFLAGS and LDFLAGS Patrick Steinhardt
2024-06-10 6:38 ` [PATCH v4 2/2] ci: compile "linux-gcc-default" job with -Og Patrick Steinhardt
2024-06-10 16:06 ` Junio C Hamano
2024-06-10 18:36 ` [PATCH 1/2] DONTAPPLY: -Og fallout workaround Junio C Hamano
2024-06-10 20:05 ` Junio C Hamano
2024-06-11 12:09 ` Patrick Steinhardt
2024-06-11 17:30 ` Junio C Hamano
2024-06-12 4:42 ` Patrick Steinhardt
2024-06-12 4:45 ` Patrick Steinhardt
2024-06-10 18:36 ` [PATCH 2/2] DONTAPPLY: -Os " Junio C Hamano
2024-06-12 22:11 ` [PATCH v4 2/2] ci: compile "linux-gcc-default" job with -Og Junio C Hamano
2024-06-13 10:15 ` Jeff King
2024-06-13 15:47 ` Junio C Hamano
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=cover.1717662814.git.ps@pks.im \
--to=ps@pks.im \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=peff@peff.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.