aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.dg/prefetch-loop-arrays-1.c
diff options
context:
space:
mode:
authorRoger Sayle <sayle@gcc.gnu.org>2006-09-18 01:54:33 +0000
committerRoger Sayle <sayle@gcc.gnu.org>2006-09-18 01:54:33 +0000
commitaac8b8ed8a1f8a2f26ebdad86824600f828bf8cc (patch)
tree75f098e9bc265156e2b16c0f13768b250a6693ea /gcc/testsuite/gcc.dg/prefetch-loop-arrays-1.c
parent8e77de24deed6692b43b91bc753d3d78895527cd (diff)
downloadgcc-aac8b8ed8a1f8a2f26ebdad86824600f828bf8cc.zip
gcc-aac8b8ed8a1f8a2f26ebdad86824600f828bf8cc.tar.gz
gcc-aac8b8ed8a1f8a2f26ebdad86824600f828bf8cc.tar.bz2
re PR tree-optimization/28887 (rejects valid code (bitfields and loops) with -O1 -fprefetch-loop-arrays)
2006-09-17 Zdenek Dvorak <dvorakz@suse.cz> PR tree-optimization/28887 * tree-ssa-loop-prefetch.c (analyze_ref): Strip nonaddressable component parts from the reference. (gather_memory_references_ref): Record the reference without the nonaddressable component parts. * gcc.dg/prefetch-loop-arrays-1.c: New test case. From-SVN: r117012
Diffstat (limited to 'gcc/testsuite/gcc.dg/prefetch-loop-arrays-1.c')
-rw-r--r--gcc/testsuite/gcc.dg/prefetch-loop-arrays-1.c36
1 files changed, 36 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.dg/prefetch-loop-arrays-1.c b/gcc/testsuite/gcc.dg/prefetch-loop-arrays-1.c
new file mode 100644
index 0000000..ba91d69
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/prefetch-loop-arrays-1.c
@@ -0,0 +1,36 @@
+/* PR tree-optimization/28887 */
+/* { dg-do compile } */
+/* { dg-options "-O2 -fprefetch-loop-arrays -w" } */
+/* { dg-options "-O2 -fprefetch-loop-arrays -march=i686 -msse -w" { target { { i?86-*-* x86_64-*-* } && ilp32 } } } */
+
+typedef unsigned long size_t;
+
+struct re_pattern_buffer
+{
+ size_t re_nsub;
+};
+
+typedef enum
+{
+ start_memory,
+} re_opcode_t;
+
+typedef union
+{
+ struct
+ {
+ unsigned matched_something:1;
+ } bits;
+} byte_register_info_type;
+
+void byte_re_match_2_internal (struct re_pattern_buffer *bufp)
+{
+ int mcnt;
+ size_t num_regs = bufp->re_nsub + 1;
+ byte_register_info_type *reg_info;
+ for (mcnt = 1; (unsigned) mcnt < num_regs; mcnt++)
+ {
+ ((reg_info[mcnt]).bits.matched_something) = 0;
+ }
+}
+