From: Aldy Hernandez Date: Sun, 14 Nov 2021 10:27:32 +0000 (+0100) Subject: Do not pass NULL to memset in ssa_global_cache. X-Git-Tag: basepoints/gcc-13~3071 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=a7ef5da3a9c348c35abb72d6f64f209f5661cfa4;p=thirdparty%2Fgcc.git Do not pass NULL to memset in ssa_global_cache. The code computing ranges in PHIs in the path solver reuses the temporary ssa_global_cache by calling its clear method. Calling it on an empty cache causes us to call memset with NULL. Tested on x86-64 Linux. gcc/ChangeLog: PR tree-optimization/103229 * gimple-range-cache.cc (ssa_global_cache::clear): Do not pass null value to memset. gcc/testsuite/ChangeLog: * gcc.dg/pr103229.c: New test. --- diff --git a/gcc/gimple-range-cache.cc b/gcc/gimple-range-cache.cc index a63e20e7e498..b347edeb4740 100644 --- a/gcc/gimple-range-cache.cc +++ b/gcc/gimple-range-cache.cc @@ -651,7 +651,8 @@ ssa_global_cache::clear_global_range (tree name) void ssa_global_cache::clear () { - memset (m_tab.address(), 0, m_tab.length () * sizeof (irange *)); + if (m_tab.address ()) + memset (m_tab.address(), 0, m_tab.length () * sizeof (irange *)); } // Dump the contents of the global cache to F. diff --git a/gcc/testsuite/gcc.dg/pr103229.c b/gcc/testsuite/gcc.dg/pr103229.c new file mode 100644 index 000000000000..96ef9aff67c5 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr103229.c @@ -0,0 +1,10 @@ +// { dg-do compile } +// { dg-options "-O -w" } + +int main() { + int i; + for (; i;) + ; + + return 0; +}