diff options
author | Bud Davis <bdavis9659@comcast.net> | 2003-03-22 13:01:08 +0000 |
---|---|---|
committer | Toon Moene <toon@gcc.gnu.org> | 2003-03-22 13:01:08 +0000 |
commit | 6dd0f30b36df25e1e9b01f1253e08ae2d341b080 (patch) | |
tree | 8a407bae36a52fb2123c2e1a020e6fee6d41df06 /gcc/f/com.c | |
parent | dcde977582f92d6e8e6b0df8862504be064dd3ec (diff) | |
download | gcc-6dd0f30b36df25e1e9b01f1253e08ae2d341b080.zip gcc-6dd0f30b36df25e1e9b01f1253e08ae2d341b080.tar.gz gcc-6dd0f30b36df25e1e9b01f1253e08ae2d341b080.tar.bz2 |
com.c (ffecom_constantunion_with_type): New function.
2003-03-22 Bud Davis <bdavis9659@comcast.net>
* com.c (ffecom_constantunion_with_type): New function.
* com.h (ffecom_constantunion_with_type): Declare.
* stc.c (ffestc_R810): Check for kind type.
* ste.c (ffeste_R810): Use ffecom_constantunion_with_type
to discern SELECT CASE variables.
From-SVN: r64709
Diffstat (limited to 'gcc/f/com.c')
-rw-r--r-- | gcc/f/com.c | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/gcc/f/com.c b/gcc/f/com.c index 0895485..b850774 100644 --- a/gcc/f/com.c +++ b/gcc/f/com.c @@ -10591,6 +10591,78 @@ ffecom_constantunion (ffebldConstantUnion *cu, ffeinfoBasictype bt, return item; } +/* Transform constant-union to tree, with the type known. */ + +tree +ffecom_constantunion_with_type (ffebldConstantUnion *cu, + tree tree_type, ffebldConst ct) +{ + tree item; + + int val; + + switch (ct) + { +#if FFETARGET_okINTEGER1 + case FFEBLD_constINTEGER1: + val = ffebld_cu_val_integer1 (*cu); + item = build_int_2 (val, (val < 0) ? -1 : 0); + break; +#endif +#if FFETARGET_okINTEGER2 + case FFEBLD_constINTEGER2: + val = ffebld_cu_val_integer2 (*cu); + item = build_int_2 (val, (val < 0) ? -1 : 0); + break; +#endif +#if FFETARGET_okINTEGER3 + case FFEBLD_constINTEGER3: + val = ffebld_cu_val_integer3 (*cu); + item = build_int_2 (val, (val < 0) ? -1 : 0); + break; +#endif +#if FFETARGET_okINTEGER4 + case FFEBLD_constINTEGER4: + val = ffebld_cu_val_integer4 (*cu); + item = build_int_2 (val, (val < 0) ? -1 : 0); + break; +#endif +#if FFETARGET_okLOGICAL1 + case FFEBLD_constLOGICAL1: + val = ffebld_cu_val_logical1 (*cu); + item = build_int_2 (val, (val < 0) ? -1 : 0); + break; +#endif +#if FFETARGET_okLOGICAL2 + case FFEBLD_constLOGICAL2: + val = ffebld_cu_val_logical2 (*cu); + item = build_int_2 (val, (val < 0) ? -1 : 0); + break; +#endif +#if FFETARGET_okLOGICAL3 + case FFEBLD_constLOGICAL3: + val = ffebld_cu_val_logical3 (*cu); + item = build_int_2 (val, (val < 0) ? -1 : 0); + break; +#endif +#if FFETARGET_okLOGICAL4 + case FFEBLD_constLOGICAL4: + val = ffebld_cu_val_logical4 (*cu); + item = build_int_2 (val, (val < 0) ? -1 : 0); + break; +#endif + default: + assert ("constant type not supported"==NULL); + return error_mark_node; + break; + } + + TREE_TYPE (item) = tree_type; + + TREE_CONSTANT (item) = 1; + + return item; +} /* Transform expression into constant tree. If the expression can be transformed into a tree that is constant, |