From: Arnaud Charlet Date: Wed, 27 Apr 2016 13:22:48 +0000 (+0200) Subject: [multiple changes] X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=ac566cbe4b11e71b0c9c3b595e1787fe06487310;p=gcc.git [multiple changes] 2016-04-27 Arnaud Charlet * sinput-l.ads, sem_ch13.adb: Minor editing. 2016-04-27 Doug Rupp * init.c (__gnat_adjust_context_for_raise) [arm-linux thumb]: Bump the pc so the lower order bit is set. 2016-04-27 Ed Schonberg * sem_case.adb, sem_case.ads (NO_Op): If appropriate warning is enabled, report an empty range in a case construct. From-SVN: r235503 --- diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index cdc9cb8d5bf..a69659d6e3d 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,17 @@ +2016-04-27 Arnaud Charlet + + * sinput-l.ads, sem_ch13.adb: Minor editing. + +2016-04-27 Doug Rupp + + * init.c (__gnat_adjust_context_for_raise) [arm-linux thumb]: + Bump the pc so the lower order bit is set. + +2016-04-27 Ed Schonberg + + * sem_case.adb, sem_case.ads (NO_Op): If appropriate warning is + enabled, report an empty range in a case construct. + 2016-04-27 Arnaud Charlet * sinput.ads, a-cfdlli.adb, a-crbtgo.adb, a-chtgop.adb, a-cbhama.adb, diff --git a/gcc/ada/init.c b/gcc/ada/init.c index 43ea1e78dad..440a068d272 100644 --- a/gcc/ada/init.c +++ b/gcc/ada/init.c @@ -6,7 +6,7 @@ * * * C Implementation File * * * - * Copyright (C) 1992-2015, Free Software Foundation, Inc. * + * Copyright (C) 1992-2016, Free Software Foundation, Inc. * * * * GNAT is free software; you can redistribute it and/or modify it under * * terms of the GNU General Public License as published by the Free Soft- * @@ -503,6 +503,11 @@ __gnat_adjust_context_for_raise (int signo ATTRIBUTE_UNUSED, void *ucontext) #elif defined (__ARMEL__) /* ARM Bump has to be an even number because of odd/even architecture. */ mcontext->arm_pc+=2; +#ifdef __thumb2__ + /* For thumb, the return address much have the low order bit set, otherwise + the unwwinder will reset to "arm" mode upon return. It's a feature. */ + mcontext->arm_pc+=1; +#endif #endif } diff --git a/gcc/ada/sem_case.adb b/gcc/ada/sem_case.adb index a23358afe2e..ee845ee1947 100644 --- a/gcc/ada/sem_case.adb +++ b/gcc/ada/sem_case.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1996-2015, Free Software Foundation, Inc. -- +-- Copyright (C) 1996-2016, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -1126,9 +1126,13 @@ package body Sem_Case is ----------- procedure No_OP (C : Node_Id) is - pragma Warnings (Off, C); begin - null; + if Nkind (C) = N_Range and then Warn_On_Redundant_Constructs then + Error_Msg_N ("choice is an empty range?", C); + + else + null; + end if; end No_OP; ----------------------------- diff --git a/gcc/ada/sem_case.ads b/gcc/ada/sem_case.ads index c6917f06837..9e9e82833c6 100644 --- a/gcc/ada/sem_case.ads +++ b/gcc/ada/sem_case.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1996-2013, Free Software Foundation, Inc. -- +-- Copyright (C) 1996-2016, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -86,9 +86,10 @@ with Types; use Types; package Sem_Case is procedure No_OP (C : Node_Id); - -- The no-operation routine. Does absolutely nothing. Can be used + -- The no-operation routine. Does mostly nothing. Can be used -- in the following generics for the parameters Process_Empty_Choice, - -- or Process_Associated_Node. + -- or Process_Associated_Node. In the case of an empty range choice, + -- routine emits a warning when Warn_On_Redundant_Constructs is enabled. generic with procedure Process_Associated_Node (A : Node_Id); diff --git a/gcc/ada/sem_ch13.adb b/gcc/ada/sem_ch13.adb index d42b7cad79e..8afc5429e48 100644 --- a/gcc/ada/sem_ch13.adb +++ b/gcc/ada/sem_ch13.adb @@ -6202,8 +6202,8 @@ package body Sem_Ch13 is ----------------------------------------------- procedure Analyze_Enumeration_Representation_Clause (N : Node_Id) is - Ident : constant Node_Id := Identifier (N); - Aggr : constant Node_Id := Array_Aggregate (N); + Ident : constant Node_Id := Identifier (N); + Aggr : constant Node_Id := Array_Aggregate (N); Enumtype : Entity_Id; Elit : Entity_Id; Expr : Node_Id; diff --git a/gcc/ada/sinput-l.ads b/gcc/ada/sinput-l.ads index c1ac9c512fc..9cb29482f61 100644 --- a/gcc/ada/sinput-l.ads +++ b/gcc/ada/sinput-l.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2014, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2016, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -119,7 +119,7 @@ private -- be applied, used to ensure that no incorrect adjustments are -- made. Really it is a bug if anyone ever tries to adjust outside -- this range, but since we are only doing this anyway for getting - -- better error messages, it is not critical + -- better error messages, it is not critical. end record;