diff options
author | zack <zack@138bc75d-0d04-0410-961f-82ee72b054a4> | 2002-03-25 20:52:28 +0000 |
---|---|---|
committer | zack <zack@138bc75d-0d04-0410-961f-82ee72b054a4> | 2002-03-25 20:52:28 +0000 |
commit | 536f5fb115792c70f4e8e459454a9aaeb83cb8f4 (patch) | |
tree | 8c35b0cf468101ecc396f5eb7631e99dc328e79c /gcc/ada/sem_eval.adb | |
parent | cb6b7c90629c20399ced93bb7ef0ee60ec166e80 (diff) | |
download | gcc-536f5fb115792c70f4e8e459454a9aaeb83cb8f4.tar.gz |
* toplev.c: Don't include setjmp.h. Kill float_handler_set,
float_handled, float_handler, float_signal, set_float_handler,
and do_float_handler. Set handler for SIGFPE to crash_signal.
* toplev.h: Don't prototype do_float_handler.
* c-lex.c: Fold parse_float into lex_number. Make warning
about portability of hex float constants more informative, and
don't issue it on top of a syntax error.
* fold-const.c: Fold const_binop_1 and fold_convert_1 into
their callers.
* real.h: Define REAL_VALUE_ABS here...
* simplify-rtx.c: ... not here. Fold check_fold_consts,
simplify_unary_real, simplify_binary_real, and
simplify_binary_is2orm1 into their callers.
* tree.c: Fold build_real_from_int_cst_1 into caller.
* doc/tm.texi: Document REAL_VALUE_ABS and REAL_VALUE_NEGATIVE.
* tsystem.h: Include float.h here...
* libgcc2.c: ... not here.
java:
* lex.c: Change java_perform_atof to take normal parameters
instead of a pointer to a parameter block. Call it directly
from java_lex.
testsuite:
* gcc.dg/c90-hexfloat-1.c: Adjust error regexps.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@51336 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/ada/sem_eval.adb')
-rw-r--r-- | gcc/ada/sem_eval.adb | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/gcc/ada/sem_eval.adb b/gcc/ada/sem_eval.adb index 7d90e531cc4..0b910a63aac 100644 --- a/gcc/ada/sem_eval.adb +++ b/gcc/ada/sem_eval.adb @@ -921,20 +921,28 @@ package body Sem_Eval is declare Arr : constant Node_Id := Constant_Value (Entity (Prefix (Op))); Sub : constant Node_Id := First (Expressions (Op)); - Ind : constant Node_Id := First_Index (Etype (Arr)); - Lbd : constant Node_Id := Type_Low_Bound (Etype (Ind)); + Aty : constant Node_Id := Etype (Arr); Lin : Nat; -- Linear one's origin subscript value for array reference + Lbd : Node_Id; + -- Lower bound of the first array index + Elm : Node_Id; -- Value from constant array begin + if Ekind (Aty) = E_String_Literal_Subtype then + Lbd := String_Literal_Low_Bound (Aty); + else + Lbd := Type_Low_Bound (Etype (First_Index (Aty))); + end if; + if Compile_Time_Known_Value (Sub) and then Nkind (Arr) = N_Aggregate and then Compile_Time_Known_Value (Lbd) - and then Is_Discrete_Type (Component_Type (Etype (Arr))) + and then Is_Discrete_Type (Component_Type (Aty)) then Lin := UI_To_Int (Expr_Value (Sub) - Expr_Value (Lbd)) + 1; |