From: Andrew Pinski Date: Sat, 20 Jan 2024 19:39:11 +0000 (-0800) Subject: ipa: Add testcase for already fixed case [PR110705] X-Git-Tag: basepoints/gcc-15~1833 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=17473a93cff5340acfc293299a2f9a5857a50909;p=thirdparty%2Fgcc.git ipa: Add testcase for already fixed case [PR110705] This testcase was fixed with r13-1695-gb0f02eeb906b63 which added an Ada testcase for the issue but adding a C testcase is a good idea and that is what this does. Committed after making sure it passes on x86_64-linux-gnu. PR ipa/110705 gcc/testsuite/ChangeLog: * gcc.c-torture/compile/pr110705-1.c: New test. Signed-off-by: Andrew Pinski --- diff --git a/gcc/testsuite/gcc.c-torture/compile/pr110705-1.c b/gcc/testsuite/gcc.c-torture/compile/pr110705-1.c new file mode 100644 index 000000000000..6c0029c99e35 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/compile/pr110705-1.c @@ -0,0 +1,27 @@ +/* PR ipa/110705 */ + +/* We used to ICE in gimplify_modify_expr due to + the gimplifier not handling VCE between an struct + and an integer type. */ + +struct a { + long b; +}; +union d { + struct a b; + int e; +}v; +long c; +int f; +static void g(union d h, long i) { + while (1) + switch (c) + case 4: + if (h.e) + c = 4; +} +void j(union d *h) { + if (f) + g(*h, h->b.b); +} +void k() { union d *h = &v; j(h); }