Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vl0Q7-005cbi-2h for pgsql-hackers@arkaria.postgresql.org; Wed, 28 Jan 2026 07:57:01 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vl0Q5-000PAH-31 for pgsql-hackers@arkaria.postgresql.org; Wed, 28 Jan 2026 07:56:58 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vl0Q5-000PA9-1A for pgsql-hackers@lists.postgresql.org; Wed, 28 Jan 2026 07:56:57 +0000 Received: from mail-24420.protonmail.ch ([109.224.244.20]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1vl0Q2-00000000qNv-1vwK for pgsql-hackers@lists.postgresql.org; Wed, 28 Jan 2026 07:56:57 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pinaraf.info; s=protonmail; t=1769587012; x=1769846212; bh=m6kVrkVdyjREIO562DFEceZ5l8f1rNAYCSuCQd3Lp54=; h=Date:To:From:Cc:Subject:Message-ID:In-Reply-To:References: Feedback-ID:From:To:Cc:Date:Subject:Reply-To:Feedback-ID: Message-ID:BIMI-Selector; b=Waezc4VsZiIjWz5eIvWRwE6pXXVXKzTFNRj+bTUcwSkqkplIiQYt+7tExSBfOlSB6 8QDr90KA2vKIoxEslU+7X95u+/BpmgmxuhsbGAZWoXVwnyFhZF7mt6IMgDN3TLelBs eRLR4f2ds8uB4NjhK7iK5N4frPyOVnjKR68365U5BvLTmTJhWvrPPPyIcExC/4WGXh Ah1nPyw3F39hCgLpU4U49cjIAyxKDsgQ1nhP4Mrc2VqO9inzJXdGGCLTB60qlXCio3 aiGiyHHJeo+zBhlZICsB9V7+0g44gClB5vtFjXnZhkcpdwMnPP7dwzBgMfEz9xxjJJ yu86TbWDRHkCQ== Date: Wed, 28 Jan 2026 07:56:46 +0000 To: Matheus Alcantara From: Pierre Ducroquet Cc: "pgsql-hackers@lists.postgresql.org" Subject: Re: [PATCH] llvmjit: always add the simplifycfg pass Message-ID: In-Reply-To: References: Feedback-ID: 175348558:user:proton X-Pm-Message-ID: 37130e0b3e29ecf4f0058778c0aa6e2402458864 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="b1=_B1Q1lsFRi8APWD7PaEVnq0tMEEUfG3ZHi3eb6EyQI" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --b1=_B1Q1lsFRi8APWD7PaEVnq0tMEEUfG3ZHi3eb6EyQI Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Hi Here is a rebased version of the patch with a rewrite of the comment. Thank you again for your previous review. FYI, I've tried adding other passes but none had a similar benefits over co= st ratio. The benefits could rather be in changing from O3 to an extensive = list of passes. Le jeudi 22 janvier 2026 =C3=A0 10:41 PM, Matheus Alcantara a =C3=A9crit=C2=A0: > On Thu Jan 22, 2026 at 5:27 PM -03, Pierre Ducroquet wrote: >=20 > > > The patch needs a rebase due to e5d99b4d9ef. > > >=20 > > > You've added the "simplifycfg" only when the "jit_optimize_above_cost= " > > > is not triggered which will use the default and mem2reg passes, t= he > > >=20 > > > default pass already include "simplifycfg"? > > >=20 > > > With e5d99b4d9ef being committed, should we add "simplifycfg" when > > > PGJIT_INLINE bit is set since it also use the default and mem2reg > > >=20 > > > passes? > >=20 > > Hi > >=20 > > Thank you, here is a rebased version of the patch. > > To answer your questions: > > - O3 already includes simplifycfg, so no need to modify O3 > > - any code generated by our llvmjit provider, esp. tuple deforming, is = heavily dependent on simplifycfg, so when O0 is the basis we should always = add this pass >=20 >=20 > Thanks for confirming. >=20 > I did some benchmarks on some TPCH queries (1 and 4) and I got these > results. Note that for these tests I set jit_optimize_above_cost=3D100000= 0 > so that it force to use the default pass with simplifycfg. >=20 >=20 > Master Q1: > Timing: Generation 1.553 ms (Deform 0.573 ms), Inlining 0.052 ms, Optimiz= ation 95.571 ms, Emission 58.941 ms, Total 156.116 ms > Execution Time: 38221.318 ms >=20 > Patch Q1: > Timing: Generation 1.477 ms (Deform 0.534 ms), Inlining 0.040 ms, Optimiz= ation 95.364 ms, Emission 58.046 ms, Total 154.927 ms > Execution Time: 38257.797 ms >=20 > Master Q4: > Timing: Generation 0.836 ms (Deform 0.309 ms), Inlining 0.086 ms, Optimiz= ation 5.098 ms, Emission 6.963 ms, Total 12.983 ms > Execution Time: 19512.134 ms >=20 > Patch Q4: > Timing: Generation 0.802 ms (Deform 0.294 ms), Inlining 0.090 ms, Optimiz= ation 5.234 ms, Emission 6.521 ms, Total 12.648 ms > Execution Time: 16051.483 ms >=20 >=20 > For Q4 I see a small increase on Optimization phase but we have a good > performance improvement on execution time. For Q1 the results are almost > the same. >=20 > I did not find any major regression using simplifycfg pass and I think > that it make sense to enable since it generate better IR code for LLVM > to compile without too much costs. +1 for this patch. >=20 > Perhaps we could merge the comments on if/else block to include the > simplifycfg, what do you think? >=20 > + /* > + * Determine the LLVM pass pipeline to use. For OPT3 we use the standard > + * suite. For lower optimization levels, we explicitly include mem2reg t= o > + * promote stack variables, simplifycfg to clean up the control flow , a= nd > + * optionally the inliner if the flag is set. Note that default alre= ady >=20 > + * includes the always-inline pass. > + */ > if (context->base.flags & PGJIT_OPT3) >=20 > passes =3D "default"; >=20 > else if (context->base.flags & PGJIT_INLINE) >=20 > - /* if doing inlining, but no expensive optimization, add inline pass */ > passes =3D "default,mem2reg,simplifycfg,inline"; >=20 > else > - /* default includes always-inline pass */ >=20 > passes =3D "default,mem2reg,simplifycfg"; >=20 >=20 > -- > Matheus Alcantara > EDB: https://www.enterprisedb.com > --b1=_B1Q1lsFRi8APWD7PaEVnq0tMEEUfG3ZHi3eb6EyQI Content-Type: text/x-patch; name=0001-llvmjit-always-use-the-simplifycfg-pass.patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=0001-llvmjit-always-use-the-simplifycfg-pass.patch RnJvbSA0Zjc1ZmNjNjUxMzdhNzU3YWZhYzk4MGRkOWZiOTcxOGJjOGRjNmViIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBQaWVycmUgRHVjcm9xdWV0IDxwaW5hcmFmQHBpbmFyYWYuaW5m bz4KRGF0ZTogV2VkLCA3IEphbiAyMDI2IDE1OjQzOjE5ICswMTAwClN1YmplY3Q6IFtQQVRDSCAx LzJdIGxsdm1qaXQ6IGFsd2F5cyB1c2UgdGhlIHNpbXBsaWZ5Y2ZnIHBhc3MKClRoZSBzaW1wbGlm eWNmZyBwYXNzIHdpbGwgcmVtb3ZlIGVtcHR5IG9yIHVucmVhY2hhYmxlIExMVk0gYmFzaWMgYmxv Y2tzLAphbmQgbWVyZ2UgYmxvY2tzIHRvZ2V0aGVyIHdoZW4gcG9zc2libGUuClRoaXMgaXMgaW1w b3J0YW50IGJlY2F1c2UgdGhlIHR1cGxlICBkZWZvcm1pbmcgY29kZSB3aWxsIGdlbmVyYXRlIGEg bG90IG9mCmJhc2ljIGJsb2NrcywgYW5kIHByZXZpb3VzbHkgd2l0aCBPMCB3ZSBkaWQgbm90IHJ1 biB0aGlzIHBhc3MsIHRodXMgY3JlYXRpbmcKdGhpcyBraW5kIG9mIChhbWQ2NCkgbWFjaGluZSBj b2RlOgogICAweDcyMzM4MmI3ODFjMTogICAgICBqbXAgICAgMHg3MjMzODJiNzgxYzMKICAgMHg3 MjMzODJiNzgxYzM6ICAgICAgam1wICAgIDB4NzIzMzgyYjc4MWViCiAgIDB4NzIzMzgyYjc4MWM1 OiAgICAgIG1vdiAgICAtMHgyMCglcnNwKSwlcmF4CiAgIDB4NzIzMzgyYjc4MS4uOiAgICAgIC4u LiAgICAuLi4uLgogICAweDcyMzM4MmI3ODFlNzogICAgICBtb3YgICAgJWN4LCglcmF4KQogICAw eDcyMzM4MmI3ODFlYTogICAgICByZXQKICAgMHg3MjMzODJiNzgxZWI6ICAgICAgam1wICAgIDB4 NzIzMzgyYjc4MWVkCiAgIDB4NzIzMzgyYjc4MWVkOiAgICAgIGptcCAgICAweDcyMzM4MmI3ODFl ZgogICAweDcyMzM4MmI3ODFlZjogICAgICBqbXAgICAgMHg3MjMzODJiNzgxZjEKICAgMHg3MjMz ODJiNzgxZjE6ICAgICAgam1wICAgIDB4NzIzMzgyYjc4MWYzCiAgIDB4NzIzMzgyYjc4MWYzOiAg ICAgIG1vdiAgICAtMHgzMCglcnNwKSwlcmF4CiAgIDB4NzIzMzgyYjc4MS4uOiAgICAgIC4uLiAg ICAuLi4uLi4KICAgMHg3MjMzODJiNzgyMDg6ICAgICAgbW92ICAgICVyY3gsKCVyYXgpCiAgIDB4 NzIzMzgyYjc4MjBiOiAgICAgIGptcCAgICAweDcyMzM4MmI3ODFjNQoKVGhpcyBpcyBub3QgZWZm aWNpZW50IGF0IGFsbCwgYW5kIHRyaWdnZXJpbmcgdGhlIHNpbXBsaWZ5Y2ZnIHBhc3MgZW5kcyB1 cAp0YWNraW5nIGEgZmV3IGh1bmRyZWRzIG1pY3JvIHNlY29uZHMgd2hpbGUgcG9zc2libHkgc2F2 aW5nIG11Y2ggbW9yZSB0aW1lCmR1cmluZyBleGVjdXRpb24uIE9uIGEgYmFzaWMgYmVuY2htYXJr LCBJIHNhdmVkIDdtcyBvbiBxdWVyeSBydW50aW1lIHdoaWxlCnVzaW5nIDAuMm1zIG9uIGV4dHJh IEpJVCBjb21waWxhdGlvbiBvdmVyaGVhZAotLS0KIHNyYy9iYWNrZW5kL2ppdC9sbHZtL2xsdm1q aXQuYyB8IDIwICsrKysrKysrKysrKysrKystLS0tCiAxIGZpbGUgY2hhbmdlZCwgMTYgaW5zZXJ0 aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9qaXQvbGx2 bS9sbHZtaml0LmMgYi9zcmMvYmFja2VuZC9qaXQvbGx2bS9sbHZtaml0LmMKaW5kZXggMmU4YWE0 NzQ5ZGIuLjQ5MTk2OGQ4YjEyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9qaXQvbGx2bS9sbHZt aml0LmMKKysrIGIvc3JjL2JhY2tlbmQvaml0L2xsdm0vbGx2bWppdC5jCkBAIC02MzMsNiArNjMz LDExIEBAIGxsdm1fb3B0aW1pemVfbW9kdWxlKExMVk1KaXRDb250ZXh0ICpjb250ZXh0LCBMTFZN TW9kdWxlUmVmIG1vZHVsZSkKIAl7CiAJCS8qIHdlIHJlbHkgb24gbWVtMnJlZyBoZWF2aWx5LCBz byBlbWl0IGV2ZW4gaW4gdGhlIE8wIGNhc2UgKi8KIAkJTExWTUFkZFByb21vdGVNZW1vcnlUb1Jl Z2lzdGVyUGFzcyhsbHZtX2ZwbSk7CisJCS8qCisJCSAqIHRoZSB0dXBsZSBkZWZvcm1pbmcgZ2Vu ZXJhdGVzIGEgbG90IG9mIGJhc2ljIGJsb2NrcywKKwkJICogc2ltcGxpZnkgdGhlbSBldmVuIHdp dGggTzAKKwkJICovCisJCUxMVk1BZGRDRkdTaW1wbGlmaWNhdGlvblBhc3MobGx2bV9mcG0pOwog CX0KIAogCUxMVk1QYXNzTWFuYWdlckJ1aWxkZXJQb3B1bGF0ZUZ1bmN0aW9uUGFzc01hbmFnZXIo bGx2bV9wbWIsIGxsdm1fZnBtKTsKQEAgLTY3MiwxNCArNjc3LDIxIEBAIGxsdm1fb3B0aW1pemVf bW9kdWxlKExMVk1KaXRDb250ZXh0ICpjb250ZXh0LCBMTFZNTW9kdWxlUmVmIG1vZHVsZSkKIAlM TFZNRXJyb3JSZWYgZXJyOwogCWNvbnN0IGNoYXIgKnBhc3NlczsKIAorCS8qCisJICogRGV0ZXJt aW5lIHRoZSBMTFZNIHBhc3MgcGlwZWxpbmUgdG8gdXNlLgorCSAqIEZvciBPUFQzIHdlIHVzZSB0 aGUgc3RhbmRhcmQgc3VpdGUuCisJICogRm9yIGxvd2VyIG9wdGltaXphdGlvbiBsZXZlbHMsIHdl IGV4cGxpY2l0bHkgaW5jbHVkZToKKwkgKiAtIG1lbTJyZWcgdG8gcHJvbW90ZSBzdGFjayB2YXJp YWJsZXMsCisJICogLSBzaW1wbGlmeWNmZyB0byBjbGVhbiB1cCB0aGUgY29udHJvbCBmbG93CisJ ICogV2hlbiB0aGUgaW5saW5lciBmbGFnIGlzIHNldCwgdGhlIGlubGluZSBwYXNzIGlzIGFkZGVk LiBOb3RlIHRoYXQKKwkgKiBkZWZhdWx0PE8wPiBhbHJlYWR5IGluY2x1ZGVzIHRoZSBhbHdheXMt aW5saW5lIHBhc3MuCisJICovCiAJaWYgKGNvbnRleHQtPmJhc2UuZmxhZ3MgJiBQR0pJVF9PUFQz KQogCQlwYXNzZXMgPSAiZGVmYXVsdDxPMz4iOwogCWVsc2UgaWYgKGNvbnRleHQtPmJhc2UuZmxh Z3MgJiBQR0pJVF9JTkxJTkUpCi0JCS8qIGlmIGRvaW5nIGlubGluaW5nLCBidXQgbm8gZXhwZW5z aXZlIG9wdGltaXphdGlvbiwgYWRkIGlubGluZSBwYXNzICovCi0JCXBhc3NlcyA9ICJkZWZhdWx0 PE8wPixtZW0ycmVnLGlubGluZSI7CisJCXBhc3NlcyA9ICJkZWZhdWx0PE8wPixtZW0ycmVnLHNp bXBsaWZ5Y2ZnLGlubGluZSI7CiAJZWxzZQotCQkvKiBkZWZhdWx0PE8wPiBpbmNsdWRlcyBhbHdh eXMtaW5saW5lIHBhc3MgKi8KLQkJcGFzc2VzID0gImRlZmF1bHQ8TzA+LG1lbTJyZWciOworCQlw YXNzZXMgPSAiZGVmYXVsdDxPMD4sbWVtMnJlZyxzaW1wbGlmeWNmZyI7CiAKIAlvcHRpb25zID0g TExWTUNyZWF0ZVBhc3NCdWlsZGVyT3B0aW9ucygpOwogCi0tIAoyLjQzLjAKCg== --b1=_B1Q1lsFRi8APWD7PaEVnq0tMEEUfG3ZHi3eb6EyQI--