diff options
| author | kenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4> | 2000-10-11 10:04:03 +0000 |
|---|---|---|
| committer | kenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4> | 2000-10-11 10:04:03 +0000 |
| commit | 9965111454e04d976fa6a49de3c21eeee34c33cc (patch) | |
| tree | 4f21a8f7157e841a82606063245e3c5d8dd5c496 | |
| parent | eac49f561a4b98c0e4a6710bfe4ab3a500327e63 (diff) | |
| download | ppe42-gcc-9965111454e04d976fa6a49de3c21eeee34c33cc.tar.gz ppe42-gcc-9965111454e04d976fa6a49de3c21eeee34c33cc.zip | |
* tree.c (get_narrower): Don't look at precision of field if
not laid out yet.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@36837 138bc75d-0d04-0410-961f-82ee72b054a4
| -rw-r--r-- | gcc/ChangeLog | 5 | ||||
| -rw-r--r-- | gcc/tree.c | 9 |
2 files changed, 10 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index b55b4c23d83..52e180f1c4d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +Wed Oct 11 06:15:41 2000 Richard Kenner <kenner@vlsi1.ultra.nyu.edu> + + * tree.c (get_narrower): Don't look at precision of field if + not laid out yet. + Tue Oct 10 23:14:33 2000 Denis Chertykov <denisc@overta.ru> * config/avr/avr.c (valid_machine_decl_attribute): Allow `extern' diff --git a/gcc/tree.c b/gcc/tree.c index 6eafd910edf..fab3d1de0c9 100644 --- a/gcc/tree.c +++ b/gcc/tree.c @@ -5052,11 +5052,12 @@ get_narrower (op, unsignedp_ptr) if (TREE_CODE (op) == COMPONENT_REF /* Since type_for_size always gives an integer type. */ - && TREE_CODE (TREE_TYPE (op)) != REAL_TYPE) + && TREE_CODE (TREE_TYPE (op)) != REAL_TYPE + /* Ensure field is laid out already. */ + && DECL_SIZE (TREE_OPERAND (op, 1)) != 0) { - unsigned int innerprec - = TREE_INT_CST_LOW (DECL_SIZE (TREE_OPERAND (op, 1))); - + unsigned HOST_WIDE_INT innerprec + = tree_low_cst (DECL_SIZE (TREE_OPERAND (op, 1)), 1); tree type = type_for_size (innerprec, TREE_UNSIGNED (op)); /* We can get this structure field in a narrower type that fits it, |

