aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite
diff options
context:
space:
mode:
authorAndrew MacLeod <amacleod@redhat.com>2020-12-17 09:24:11 -0500
committerAndrew MacLeod <amacleod@redhat.com>2020-12-17 09:38:31 -0500
commitc25b504636fec7bf8f181a84af83a52757ba7e89 (patch)
tree90aad777bbcc9ba96b68e7cd67db802a9bc30f7c /gcc/testsuite
parentd592ee3ada825fe8c022e1d5fa30562b17fc3221 (diff)
downloadgcc-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.c21
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;
+ }
+}
+