diff options
author | Richard Kenner <kenner@gcc.gnu.org> | 1997-01-04 22:21:27 -0500 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 1997-01-04 22:21:27 -0500 |
commit | f7fa6ef9c7e369c662149c43e18a63eee4dd63cb (patch) | |
tree | 085063eeb3fe88de0c95d0e35d283488fde5887b /gcc/tree.c | |
parent | 0d15e60cd56057d72005c7fff060d387cc894fc3 (diff) | |
download | gcc-f7fa6ef9c7e369c662149c43e18a63eee4dd63cb.tar.gz |
(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.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/gcc/tree.c b/gcc/tree.c index c54cf6ec6f3..f8b1a6ecd26 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 |