From 88b17d450602da928cabdfcbb324de8e76c4e8c4 Mon Sep 17 00:00:00 2001 From: Arnaud Charlet Date: Tue, 22 Jun 2010 10:40:51 +0200 Subject: [multiple changes] 2010-06-22 Ed Schonberg * uintp.adb: Fix scope error in operator call. 2010-06-22 Vincent Celier * makeutl.adb (Executable_Prefix_Path): on VMS, return "/gnu/". * prj-conf.adb (Get_Or_Create_Configuration_File): On VMS, if autoconfiguration is needed, fail indicating that no config project file can be found, as there is no autoconfiguration on VMS. 2010-06-22 Ed Schonberg * sem_res.adb (Make_Call_Into_Operator): Diagnose an incorrect scope for an operator in a functional notation, when operands are universal. From-SVN: r161147 --- gcc/ada/ChangeLog | 16 ++++++++++++++++ gcc/ada/makeutl.adb | 9 ++++++++- gcc/ada/prj-conf.adb | 17 ++++++++++++++--- gcc/ada/sem_res.adb | 25 +++++++++++++++++++++++++ gcc/ada/uintp.adb | 4 ++-- 5 files changed, 65 insertions(+), 6 deletions(-) (limited to 'gcc') diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 05044fb..c33f44c 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,19 @@ +2010-06-22 Ed Schonberg + + * uintp.adb: Fix scope error in operator call. + +2010-06-22 Vincent Celier + + * makeutl.adb (Executable_Prefix_Path): on VMS, return "/gnu/". + * prj-conf.adb (Get_Or_Create_Configuration_File): On VMS, if + autoconfiguration is needed, fail indicating that no config project + file can be found, as there is no autoconfiguration on VMS. + +2010-06-22 Ed Schonberg + + * sem_res.adb (Make_Call_Into_Operator): Diagnose an incorrect scope + for an operator in a functional notation, when operands are universal. + 2010-06-22 Arnaud Charlet * gcc-interface/Make-lang.in: Update dependencies. diff --git a/gcc/ada/makeutl.adb b/gcc/ada/makeutl.adb index ab00b50..49d64af 100644 --- a/gcc/ada/makeutl.adb +++ b/gcc/ada/makeutl.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2004-2009, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2010, 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- -- @@ -26,6 +26,7 @@ with ALI; use ALI; with Debug; with Fname; +with Hostparm; with Osint; use Osint; with Output; use Output; with Opt; use Opt; @@ -378,6 +379,12 @@ package body Makeutl is -- Beginning of Executable_Prefix_Path begin + -- For VMS, the path returned is always /gnu/ + + if Hostparm.OpenVMS then + return "/gnu/"; + end if; + -- First determine if a path prefix was placed in front of the -- executable name. diff --git a/gcc/ada/prj-conf.adb b/gcc/ada/prj-conf.adb index dfebd9a..757d547 100644 --- a/gcc/ada/prj-conf.adb +++ b/gcc/ada/prj-conf.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2006-2009, Free Software Foundation, Inc. -- +-- Copyright (C) 2006-2010, 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- -- @@ -25,6 +25,7 @@ with Ada.Directories; use Ada.Directories; with GNAT.HTable; use GNAT.HTable; +with Hostparm; with Makeutl; use Makeutl; with MLib.Tgt; with Opt; use Opt; @@ -889,8 +890,18 @@ package body Prj.Conf is <> if Automatically_Generated then - -- This might raise an Invalid_Config exception - Do_Autoconf; + if Hostparm.OpenVMS then + + -- There is no gprconfig on VMS + + raise Invalid_Config + with "could not locate any configuration project file"; + + else + -- This might raise an Invalid_Config exception + + Do_Autoconf; + end if; end if; -- Parse the configuration file diff --git a/gcc/ada/sem_res.adb b/gcc/ada/sem_res.adb index ca2059d..c9f3c57 100644 --- a/gcc/ada/sem_res.adb +++ b/gcc/ada/sem_res.adb @@ -1422,6 +1422,31 @@ package body Sem_Res is ("& not declared in&", N, Selector_Name (Name (N))); Set_Etype (N, Any_Type); return; + + -- Detect a mismatch between the context type and the result type + -- in the named package, which is otherwise not detected if the + -- operands are universal. Check is only needed if source entity is + -- an operator, not a function that renames an operator. + + elsif Nkind (Parent (N)) /= N_Type_Conversion + and then Ekind (Entity (Name (N))) = E_Operator + and then Is_Numeric_Type (Typ) + and then not Is_Universal_Numeric_Type (Typ) + and then Scope (Base_Type (Typ)) /= Pack + and then not In_Instance + then + if Is_Fixed_Point_Type (Typ) + and then (Op_Name = Name_Op_Multiply + or else + Op_Name = Name_Op_Divide) + then + -- Already checked above + + null; + + else + Error_Msg_NE ("expect type&", N, Typ); + end if; end if; end if; diff --git a/gcc/ada/uintp.adb b/gcc/ada/uintp.adb index 3b72d15..b84ae5a 100644 --- a/gcc/ada/uintp.adb +++ b/gcc/ada/uintp.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2009, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2010, 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- -- @@ -239,7 +239,7 @@ package body Uintp is function Hash_Num (F : Int) return Hnum is begin - return Standard."mod" (F, Hnum'Range_Length); + return Types."mod" (F, Hnum'Range_Length); end Hash_Num; --------------- -- cgit v1.1