<html>
<head>
<base href="https://bugs.freedesktop.org/">
</head>
<body>
<p>
<div>
<b><a class="bz_bug_link
bz_status_NEW "
title="NEW - After upgrade mesa to 19.0.0~rc1 all vulkan based application stop working ["vulkan-cube" received SIGSEGV in radv_pipeline_init_blend_state at ../src/amd/vulkan/radv_pipeline.c:699]"
href="https://bugs.freedesktop.org/show_bug.cgi?id=109543#c11">Comment # 11</a>
on <a class="bz_bug_link
bz_status_NEW "
title="NEW - After upgrade mesa to 19.0.0~rc1 all vulkan based application stop working ["vulkan-cube" received SIGSEGV in radv_pipeline_init_blend_state at ../src/amd/vulkan/radv_pipeline.c:699]"
href="https://bugs.freedesktop.org/show_bug.cgi?id=109543">bug 109543</a>
from <span class="vcard"><a class="email" href="mailto:i.gnatenko.brain@gmail.com" title="Igor Gnatenko <i.gnatenko.brain@gmail.com>"> <span class="fn">Igor Gnatenko</span></a>
</span></b>
<pre><a href="https://www.gnu.org/software/gcc/gcc-9/porting_to.html">https://www.gnu.org/software/gcc/gcc-9/porting_to.html</a>
Block scope compound literal's lifetime
The C standard says that compound literals which occur inside of the body of a
function have automatic storage duration associated with the enclosing block.
Older GCC releases were putting such compound literals into the scope of the
whole function, so their lifetime actually ended at the end of containing
function. This has been fixed in GCC 9. Code that relied on this extended
lifetime needs to be fixed, move the compound literals to whatever scope they
need to accessible in.
struct S { int a, b; };
int foo(void) {
// The following line no longer compiles
struct S *p = &({ (struct S) { 1, 2 }; });
struct S *q;
{
q = &(struct S) { 3, 4 };
}
// This is invalid use after lifetime of the compound literal
// ended.
return q->b;
}</pre>
</div>
</p>
<hr>
<span>You are receiving this mail because:</span>
<ul>
<li>You are the QA Contact for the bug.</li>
<li>You are the assignee for the bug.</li>
</ul>
</body>
</html>