aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree.c
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1997-01-04 22:21:27 -0500
committerRichard Kenner <kenner@gcc.gnu.org>1997-01-04 22:21:27 -0500
commitf7fa6ef9c7e369c662149c43e18a63eee4dd63cb (patch)
tree085063eeb3fe88de0c95d0e35d283488fde5887b /gcc/tree.c
parent0d15e60cd56057d72005c7fff060d387cc894fc3 (diff)
downloadgcc-f7fa6ef9c7e369c662149c43e18a63eee4dd63cb.zip
gcc-f7fa6ef9c7e369c662149c43e18a63eee4dd63cb.tar.gz
gcc-f7fa6ef9c7e369c662149c43e18a63eee4dd63cb.tar.bz2
(staticp, case COMPONENT_REF, BIT_FIELD_REF): Not static if bitfield.
From-SVN: r13376
Diffstat (limited to 'gcc/tree.c')
-rw-r--r--gcc/tree.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/gcc/tree.c b/gcc/tree.c
index c54cf6e..f8b1a6e 100644
--- a/gcc/tree.c
+++ b/gcc/tree.c
@@ -2174,9 +2174,14 @@ staticp (arg)
case STRING_CST:
return 1;
+ /* If we are referencing a bitfield, we can't evaluate an
+ ADDR_EXPR at compile time and so it isn't a constant. */
case COMPONENT_REF:
+ return (! DECL_BIT_FIELD (TREE_OPERAND (arg, 1))
+ && staticp (TREE_OPERAND (arg, 0)));
+
case BIT_FIELD_REF:
- return staticp (TREE_OPERAND (arg, 0));
+ return 0;
#if 0
/* This case is technically correct, but results in setting