diff options
author | Andrew MacLeod <amacleod@redhat.com> | 2020-12-17 09:24:11 -0500 |
---|---|---|
committer | Andrew MacLeod <amacleod@redhat.com> | 2020-12-17 09:38:31 -0500 |
commit | c25b504636fec7bf8f181a84af83a52757ba7e89 (patch) | |
tree | 90aad777bbcc9ba96b68e7cd67db802a9bc30f7c /gcc/testsuite | |
parent | d592ee3ada825fe8c022e1d5fa30562b17fc3221 (diff) | |
download | gcc-c25b504636fec7bf8f181a84af83a52757ba7e89.zip gcc-c25b504636fec7bf8f181a84af83a52757ba7e89.tar.gz gcc-c25b504636fec7bf8f181a84af83a52757ba7e89.tar.bz2 |
Fix trap in pointer conversion in op1_range.
Processing op1_range for conversion between a non-pointer and pointer
shouldnt do any fancy math.
gcc/
PR tree-optimization/97750
* range-op.cc (operator_cast::op1_range): Handle pointers better.
gcc/testsuite/
* gcc.dg/pr97750.c: New.
Diffstat (limited to 'gcc/testsuite')
-rw-r--r-- | gcc/testsuite/gcc.dg/pr97750.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.dg/pr97750.c b/gcc/testsuite/gcc.dg/pr97750.c new file mode 100644 index 0000000..822b53a --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr97750.c @@ -0,0 +1,21 @@ +/* PR tree-optimization/97750 */ +/* { dg-do compile } */ +/* { dg-options "-O2 -Wall -Wextra" } */ + +char CopyPlane_src; +long CopyPlane_copy_pitch; +char *CopyFromUswc_src; +int CopyFromUswc_height; +void CopyPlane(char *dst) { + __builtin_memcpy(dst, &CopyPlane_src, CopyPlane_copy_pitch); +} +void CopyFromUswc(long src_pitch) { + char *dst; + for (; CopyFromUswc_height;) { + unsigned unaligned = (long)CopyFromUswc_src; + if (unaligned) + CopyPlane(&dst[unaligned]); /* { dg-warning "may be used uninitialized" } */ + CopyFromUswc_src += src_pitch; + } +} + |