public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug ada/17160] New: Assert_Failure einfo.adb:1359
@ 2004-08-24  0:38 listor1 dot rombobeorn at comhem dot se
  2004-08-24  0:40 ` [Bug ada/17160] " listor1 dot rombobeorn at comhem dot se
                   ` (7 more replies)
  0 siblings, 8 replies; 9+ messages in thread
From: listor1 dot rombobeorn at comhem dot se @ 2004-08-24  0:38 UTC (permalink / raw)
  To: gcc-bugs

$ gcc -v
Reading specs from
/home/bjorn/ada/gcc-3.4.0-inst/lib/gcc/i686-pc-linux-gnu/3.4.0/specs
Configured with: /home/bjorn/ada/gcc-3.4.0/configure
--prefix=/home/bjorn/ada/gcc-3.4.0-inst
Thread model: posix
gcc version 3.4.0

$ gcc -c -I./ -I-
/home/bjorn/hemmaprogrammerat/adacl/Include/adacl-character_encodings.adb
+===========================GNAT BUG DETECTED==============================+
| 3.4.0 (i686-pc-linux-gnu) Assert_Failure einfo.adb:1359                  |
| Error detected at adacl-character_encodings.adb:61:14                    |
| Please submit a bug report; see http://gcc.gnu.org/bugs.html.            |
| Include the entire contents of this bug box in the report.               |
| Include the exact gcc or gnatmake command that you entered.              |
| Also include sources listed below in gnatchop format                     |
| (concatenated together with no headers between files).                   |
+==========================================================================+

-- 
           Summary: Assert_Failure einfo.adb:1359
           Product: gcc
           Version: 3.4.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: ada
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: listor1 dot rombobeorn at comhem dot se
                CC: gcc-bugs at gcc dot gnu dot org
 GCC build triplet: i686-pc-linux-gnu
  GCC host triplet: i686-pc-linux-gnu
GCC target triplet: i686-pc-linux-gnu


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=17160


^ permalink raw reply	[flat|nested] 9+ messages in thread

* [Bug ada/17160] Assert_Failure einfo.adb:1359
  2004-08-24  0:38 [Bug ada/17160] New: Assert_Failure einfo.adb:1359 listor1 dot rombobeorn at comhem dot se
@ 2004-08-24  0:40 ` listor1 dot rombobeorn at comhem dot se
  2004-09-19 20:22 ` ludovic dot brenta at insalien dot org
                   ` (6 subsequent siblings)
  7 siblings, 0 replies; 9+ messages in thread
From: listor1 dot rombobeorn at comhem dot se @ 2004-08-24  0:40 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From listor1 dot rombobeorn at comhem dot se  2004-08-24 00:40 -------
Created an attachment (id=6982)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=6982&action=view)
source files


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=17160


^ permalink raw reply	[flat|nested] 9+ messages in thread

* [Bug ada/17160] Assert_Failure einfo.adb:1359
  2004-08-24  0:38 [Bug ada/17160] New: Assert_Failure einfo.adb:1359 listor1 dot rombobeorn at comhem dot se
  2004-08-24  0:40 ` [Bug ada/17160] " listor1 dot rombobeorn at comhem dot se
@ 2004-09-19 20:22 ` ludovic dot brenta at insalien dot org
  2004-09-19 20:23 ` ludovic dot brenta at insalien dot org
                   ` (5 subsequent siblings)
  7 siblings, 0 replies; 9+ messages in thread
From: ludovic dot brenta at insalien dot org @ 2004-09-19 20:22 UTC (permalink / raw)
  To: gcc-bugs

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain, Size: 415 bytes --]


------- Additional Comments From ludovic dot brenta at insalien dot org  2004-09-19 20:22 -------
Created an attachment (id=7175)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=7175&action=view)
shorter test case

This shorter test case, from Björn Perssson the OP, also demonstrates the bug.
 Hopefully, it will make it easier to isolate the bug.

-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=17160


^ permalink raw reply	[flat|nested] 9+ messages in thread

* [Bug ada/17160] Assert_Failure einfo.adb:1359
  2004-08-24  0:38 [Bug ada/17160] New: Assert_Failure einfo.adb:1359 listor1 dot rombobeorn at comhem dot se
  2004-08-24  0:40 ` [Bug ada/17160] " listor1 dot rombobeorn at comhem dot se
  2004-09-19 20:22 ` ludovic dot brenta at insalien dot org
@ 2004-09-19 20:23 ` ludovic dot brenta at insalien dot org
  2004-09-23 20:40 ` listor1 dot rombobeorn at comhem dot se
                   ` (4 subsequent siblings)
  7 siblings, 0 replies; 9+ messages in thread
From: ludovic dot brenta at insalien dot org @ 2004-09-19 20:23 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From ludovic dot brenta at insalien dot org  2004-09-19 20:23 -------
This bug is not present in GNAT 3.15p-12 on Debian GNU/Linux, but it is in 3.4.2-2.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=17160


^ permalink raw reply	[flat|nested] 9+ messages in thread

* [Bug ada/17160] Assert_Failure einfo.adb:1359
  2004-08-24  0:38 [Bug ada/17160] New: Assert_Failure einfo.adb:1359 listor1 dot rombobeorn at comhem dot se
                   ` (2 preceding siblings ...)
  2004-09-19 20:23 ` ludovic dot brenta at insalien dot org
@ 2004-09-23 20:40 ` listor1 dot rombobeorn at comhem dot se
  2004-09-23 21:04 ` listor1 dot rombobeorn at comhem dot se
                   ` (3 subsequent siblings)
  7 siblings, 0 replies; 9+ messages in thread
From: listor1 dot rombobeorn at comhem dot se @ 2004-09-23 20:40 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From listor1 dot rombobeorn at comhem dot se  2004-09-23 20:39 -------
Subject: Re:  Assert_Failure einfo.adb:1359

The attached file uninitialized_field.adb demonstrates a case where the 
discriminant "OS" isn't initialized. I compile and run it like this:

$ gnatmake uninitialized_field.adb
gcc -c uninitialized_field.adb
gnatbind -x uninitialized_field.ali
gnatlink uninitialized_field.ali
$ ./uninitialized_field
Initialized with Unified_Encoding_Record aggregate:
With predefined "=" - A1a and A2a: equal
Initialized with Character_Encoding aggregate:
With predefined "=" - A1b and A2b: not equal
With redefined "=" - B1c and B2c: equal
OS of A1a: LINUX
OS of A2a: LINUX
OS of A1b: OS2
OS of A2b:

raised CONSTRAINT_ERROR : uninitialized_field.adb:117 invalid data

Correct output would be:

Initialized with Unified_Encoding_Record aggregate:
With predefined "=" - A1a and A2a: equal
Initialized with Character_Encoding aggregate:
With predefined "=" - A1b and A2b: equal
With redefined "=" - B1c and B2c: equal
OS of A1a: LINUX
OS of A2a: LINUX
OS of A1b: LINUX
OS of A2b: LINUX

The other attached file, convert_to_pointer.ada, contains relevant parts 
of the code in uninitialized_field.adb, but here the declarations are in 
a package and are referenced from the main program. This causes a very 
strange error message:

$ gnatmake convert_to_pointer_package.ads
gcc -c convert_to_pointer_package.ads
$ LANG=en_US gnatmake convert_to_pointer_main.adb
gcc -c convert_to_pointer_main.adb
convert_to_pointer_package.ads: In function `Convert_To_Pointer_Main':
convert_to_pointer_package.ads:37: error: cannot convert to a pointer type
gnatmake: "convert_to_pointer_main.adb" compilation error

This is with GCC-Gnat 3.4.0 on Gnu/Linux (Fedora Core 1).
with Ada.Text_IO; use Ada.Text_IO;
with Ada.Strings.Unbounded; use Ada.Strings.Unbounded;
with Interfaces; use Interfaces;

procedure Uninitialized_Field is

   type Known_OS is (NT, OS2, Linux);

   This_OS : constant Known_OS := Linux;

   type Encoding_ID is
     (UTF_8_ID, ASCII_ID, Latin_1_ID);

   type Unified_Encoding_Record (Known : Boolean; OS : Known_OS) is record
      case Known is
         when True =>
            Which : Encoding_ID;
         when False =>
            case OS is
               when Linux =>
                  -- If Unbounded_String is replaced with Character,
                  -- the problem goes away.
                  Name : Unbounded_String;
               when NT | OS2 =>
                  Number : Unsigned_16;
            end case;
      end case;
   end record;

   -- Two identical types are defined and "=" is overridden for one of them
   -- to compare the predefined "=" to this one.

   type Character_Encoding_A (Known : Boolean := False) is
     new Unified_Encoding_Record (Known => Known, OS => This_OS);

   type Character_Encoding_B (Known : Boolean := False) is
     new Unified_Encoding_Record (Known => Known, OS => This_OS);

   function "=" (Left, Right : Character_Encoding_B) return Boolean is
   begin
      if Left.Known /= Right.Known then
         return False;
      elsif Left.Known then
         return Left.Which = Right.Which;
      else
         case This_OS is
            when Linux =>
               return Left.Name = Right.Name;
            when NT | OS2 =>
               return Left.Number = Right.Number;
         end case;
      end if;
   end "=";

   type Encoding_Bytes is
     array (1 .. Unified_Encoding_Record'Size / 8)
     of aliased Unsigned_8;
   for Encoding_Bytes'Component_Size use 8;

   -- The Raw constants and the address clauses are here solely to get control
   -- over what is in the memory cells before the Encoding constants are
   -- created. Without them the bug would not get reproduced reliably.

   Raw_1a : constant Encoding_Bytes := (others => 1);
   Raw_1b : constant Encoding_Bytes := (others => 1);
   Raw_1c : constant Encoding_Bytes := (others => 1);
   Raw_2a : constant Encoding_Bytes := (others => 3);
   Raw_2b : constant Encoding_Bytes := (others => 3);
   Raw_2c : constant Encoding_Bytes := (others => 3);

   -- When the constants are initialized like this, everything is OK:

   Encoding_A1a : constant Character_Encoding_A := Character_Encoding_A
     (Unified_Encoding_Record'(True, This_OS, Latin_1_ID));
   Encoding_A2a : constant Character_Encoding_A := Character_Encoding_A
     (Unified_Encoding_Record'(True, This_OS, Latin_1_ID));

   -- When it's done this way, the OS field isn't initialized:

   Encoding_A1b : constant Character_Encoding_A := (True, Latin_1_ID);
   Encoding_A2b : constant Character_Encoding_A := (True, Latin_1_ID);
   Encoding_B1c : constant Character_Encoding_B := (True, Latin_1_ID);
   Encoding_B2c : constant Character_Encoding_B := (True, Latin_1_ID);

   for Encoding_A1a'Address use Raw_1a'Address;
   for Encoding_A2a'Address use Raw_2a'Address;
   for Encoding_A1b'Address use Raw_1b'Address;
   for Encoding_A2b'Address use Raw_2b'Address;
   for Encoding_B1c'Address use Raw_1c'Address;
   for Encoding_B2c'Address use Raw_2c'Address;

   procedure Show (Equal : Boolean) is
   begin
      if Equal then
         Put_Line ("equal");
      else
         Put_Line ("not equal");
      end if;
   end Show;

begin
   Put_Line ("Initialized with Unified_Encoding_Record aggregate: ");
   Put ("With predefined ""="" - A1a and A2a: ");
   Show (Encoding_A1a = Encoding_A2a);  -- equal
   Put_Line ("Initialized with Character_Encoding aggregate: ");
   Put ("With predefined ""="" - A1b and A2b: ");
   Show (Encoding_A1b = Encoding_A2b);  -- not equal, WRONG
   Put ("With redefined ""="" - B1c and B2c: ");
   Show (Encoding_B1c = Encoding_B2c);  -- equal
   Put ("OS of A1a: ");  -- Linux
   Put_Line (Known_OS'Image (Unified_Encoding_Record (Encoding_A1a).OS));
   Put ("OS of A2a: ");  -- Linux
   Put_Line (Known_OS'Image (Unified_Encoding_Record (Encoding_A2a).OS));
   Put ("OS of A1b: ");  -- OS2, WRONG
   Put_Line (Known_OS'Image (Unified_Encoding_Record (Encoding_A1b).OS));
   Put ("OS of A2b: ");  -- invalid data
   Put_Line (Known_OS'Image (Unified_Encoding_Record (Encoding_A2b).OS));
end Uninitialized_Field;
with Ada.Strings.Unbounded; use Ada.Strings.Unbounded;
with Interfaces; use Interfaces;

package Convert_To_Pointer_Package is

   type Known_OS is (NT, OS2, Linux);

   This_OS : constant Known_OS := Linux;

   type Encoding_ID is
     (UTF_8_ID, ASCII_ID, Latin_1_ID);

   type Unified_Encoding_Record (Known : Boolean; OS : Known_OS) is record
      case Known is
         when True =>
            Which : Encoding_ID;
         when False =>
            case OS is
               when Linux =>
                  Name : Unbounded_String;
               when NT | OS2 =>
                  Number : Unsigned_16;
            end case;
      end case;
   end record;

   type Character_Encoding_A (Known : Boolean := False) is
     new Unified_Encoding_Record (Known => Known, OS => This_OS);

   type Encoding_Bytes is
     array (1 .. Unified_Encoding_Record'Size / 8)
     of aliased Unsigned_8;
   for Encoding_Bytes'Component_Size use 8;

   Raw_1a : constant Encoding_Bytes := (others => 1);
   Encoding_A1a : constant Character_Encoding_A := Character_Encoding_A
     (Unified_Encoding_Record'(True, This_OS, Latin_1_ID));
   for Encoding_A1a'Address use Raw_1a'Address;

end Convert_To_Pointer_Package;
with Convert_To_Pointer_Package; use Convert_To_Pointer_Package;

procedure Convert_To_Pointer_Main is
begin
   if Encoding_A1a.Known then
      null;
   end if;
end Convert_To_Pointer_Main;


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=17160


^ permalink raw reply	[flat|nested] 9+ messages in thread

* [Bug ada/17160] Assert_Failure einfo.adb:1359
  2004-08-24  0:38 [Bug ada/17160] New: Assert_Failure einfo.adb:1359 listor1 dot rombobeorn at comhem dot se
                   ` (3 preceding siblings ...)
  2004-09-23 20:40 ` listor1 dot rombobeorn at comhem dot se
@ 2004-09-23 21:04 ` listor1 dot rombobeorn at comhem dot se
  2004-09-23 21:07 ` listor1 dot rombobeorn at comhem dot se
                   ` (2 subsequent siblings)
  7 siblings, 0 replies; 9+ messages in thread
From: listor1 dot rombobeorn at comhem dot se @ 2004-09-23 21:04 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From listor1 dot rombobeorn at comhem dot se  2004-09-23 21:04 -------
Subject: Re:  Assert_Failure einfo.adb:1359

Sorry about the "Content-Disposition: inline;". I told Mozilla to 
*attach* the files, so I did expect them to be *attachments*.



-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=17160


^ permalink raw reply	[flat|nested] 9+ messages in thread

* [Bug ada/17160] Assert_Failure einfo.adb:1359
  2004-08-24  0:38 [Bug ada/17160] New: Assert_Failure einfo.adb:1359 listor1 dot rombobeorn at comhem dot se
                   ` (4 preceding siblings ...)
  2004-09-23 21:04 ` listor1 dot rombobeorn at comhem dot se
@ 2004-09-23 21:07 ` listor1 dot rombobeorn at comhem dot se
  2004-09-23 21:09 ` listor1 dot rombobeorn at comhem dot se
  2004-10-12  3:46 ` pinskia at gcc dot gnu dot org
  7 siblings, 0 replies; 9+ messages in thread
From: listor1 dot rombobeorn at comhem dot se @ 2004-09-23 21:07 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From listor1 dot rombobeorn at comhem dot se  2004-09-23 21:07 -------
Created an attachment (id=7206)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=7206&action=view)
demonstrates uninitialized discriminant


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=17160


^ permalink raw reply	[flat|nested] 9+ messages in thread

* [Bug ada/17160] Assert_Failure einfo.adb:1359
  2004-08-24  0:38 [Bug ada/17160] New: Assert_Failure einfo.adb:1359 listor1 dot rombobeorn at comhem dot se
                   ` (5 preceding siblings ...)
  2004-09-23 21:07 ` listor1 dot rombobeorn at comhem dot se
@ 2004-09-23 21:09 ` listor1 dot rombobeorn at comhem dot se
  2004-10-12  3:46 ` pinskia at gcc dot gnu dot org
  7 siblings, 0 replies; 9+ messages in thread
From: listor1 dot rombobeorn at comhem dot se @ 2004-09-23 21:09 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From listor1 dot rombobeorn at comhem dot se  2004-09-23 21:09 -------
Created an attachment (id=7207)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=7207&action=view)
demonstrates strange error message


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=17160


^ permalink raw reply	[flat|nested] 9+ messages in thread

* [Bug ada/17160] Assert_Failure einfo.adb:1359
  2004-08-24  0:38 [Bug ada/17160] New: Assert_Failure einfo.adb:1359 listor1 dot rombobeorn at comhem dot se
                   ` (6 preceding siblings ...)
  2004-09-23 21:09 ` listor1 dot rombobeorn at comhem dot se
@ 2004-10-12  3:46 ` pinskia at gcc dot gnu dot org
  7 siblings, 0 replies; 9+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2004-10-12  3:46 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From pinskia at gcc dot gnu dot org  2004-10-12 03:46 -------
Fixed on the mainline.

-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |RESOLVED
           Keywords|                            |ice-on-valid-code
         Resolution|                            |FIXED
   Target Milestone|---                         |4.0.0


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=17160


^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2004-10-12  3:46 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2004-08-24  0:38 [Bug ada/17160] New: Assert_Failure einfo.adb:1359 listor1 dot rombobeorn at comhem dot se
2004-08-24  0:40 ` [Bug ada/17160] " listor1 dot rombobeorn at comhem dot se
2004-09-19 20:22 ` ludovic dot brenta at insalien dot org
2004-09-19 20:23 ` ludovic dot brenta at insalien dot org
2004-09-23 20:40 ` listor1 dot rombobeorn at comhem dot se
2004-09-23 21:04 ` listor1 dot rombobeorn at comhem dot se
2004-09-23 21:07 ` listor1 dot rombobeorn at comhem dot se
2004-09-23 21:09 ` listor1 dot rombobeorn at comhem dot se
2004-10-12  3:46 ` pinskia at gcc dot gnu dot org

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).