diff options
author | Aldy Hernandez <aldyh@redhat.com> | 2021-11-14 11:27:32 +0100 |
---|---|---|
committer | Aldy Hernandez <aldyh@redhat.com> | 2021-11-14 14:13:55 +0100 |
commit | a7ef5da3a9c348c35abb72d6f64f209f5661cfa4 (patch) | |
tree | 4758eb567477b1b2ad3e0d5685367d9fccb0b344 | |
parent | 5a6100a25536ff75c40f1b4c44442cdbedc0426b (diff) | |
download | gcc-a7ef5da3a9c348c35abb72d6f64f209f5661cfa4.zip gcc-a7ef5da3a9c348c35abb72d6f64f209f5661cfa4.tar.gz gcc-a7ef5da3a9c348c35abb72d6f64f209f5661cfa4.tar.bz2 |
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.
-rw-r--r-- | gcc/gimple-range-cache.cc | 3 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/pr103229.c | 10 |
2 files changed, 12 insertions, 1 deletions
diff --git a/gcc/gimple-range-cache.cc b/gcc/gimple-range-cache.cc index a63e20e..b347ede 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 0000000..96ef9af --- /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; +} |