public inbox for sid@sourceware.org
 help / color / mirror / Atom feed
* [patch]: RFA: Remove compile time warnings in cgen-cpu.h
@ 2005-04-13 10:46 Nick Clifton
  2005-04-13 11:03 ` Frank Ch. Eigler
  0 siblings, 1 reply; 3+ messages in thread
From: Nick Clifton @ 2005-04-13 10:46 UTC (permalink / raw)
  To: sid

[-- Attachment #1: Type: text/plain, Size: 951 bytes --]

Hi Guys,

  I am seeking permission to apply the attached patch.  It fixes a
  couple of compile time warnings associated with the cgen-cpu.h file.
  
  The first is that it declares several void functions and then uses a
  "return <expression>" statement.  The second is that it uses the
  "reinterpret_cast<>" operator to convert between integer types and
  floating point types, which for some versions of GCC at least, does
  not work.

  The patch fixes these problems by first removing the "return"
  keyword, but leaving the expression, in the void functions and
  secondly by using a union to perform explicit conversions between
  floats and ints.

  Tested by building an xstormy16-elf sid.

  May I apply this patch ?

Cheers
  Nick

sid/components/cgen-cpu/ChangeLog
2005-04-13  Nick Clifton  <nickc@redhat.com>

	* cgen-cpu.h: Remove return operators from void	functions.
	Use unions to convert between integer and floating point types.


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: cgen-cpu.h.patch --]
[-- Type: text/x-patch, Size: 9024 bytes --]

Index: sid/component/cgen-cpu/cgen-cpu.h
===================================================================
RCS file: /cvs/src/src/sid/component/cgen-cpu/cgen-cpu.h,v
retrieving revision 1.11
diff -c -3 -p -r1.11 cgen-cpu.h
*** sid/component/cgen-cpu/cgen-cpu.h	12 Feb 2005 16:25:45 -0000	1.11
--- sid/component/cgen-cpu/cgen-cpu.h	13 Apr 2005 10:26:37 -0000
*************** public:
*** 100,116 ****
    inline void
    SETMEMBI(PCADDR pc, ADDR addr, BI value) const
      {
!       return this->write_insn_memory_1 (pc, addr, value);
      }
    inline void
    SETMEMQI(PCADDR pc, ADDR addr, QI value) const
      {
!       return this->write_data_memory_1 (pc, addr, value);
      }
    inline void
    SETMEMUQI(PCADDR pc, ADDR addr, UQI value) const
      {
!       return this->write_data_memory_1 (pc, addr, value);
      }
    inline HI
    GETMEMHI(PCADDR pc, ADDR addr) const
--- 100,116 ----
    inline void
    SETMEMBI(PCADDR pc, ADDR addr, BI value) const
      {
!       this->write_insn_memory_1 (pc, addr, value);
      }
    inline void
    SETMEMQI(PCADDR pc, ADDR addr, QI value) const
      {
!       this->write_data_memory_1 (pc, addr, value);
      }
    inline void
    SETMEMUQI(PCADDR pc, ADDR addr, UQI value) const
      {
!       this->write_data_memory_1 (pc, addr, value);
      }
    inline HI
    GETMEMHI(PCADDR pc, ADDR addr) const
*************** public:
*** 125,136 ****
    inline void
    SETMEMHI(PCADDR pc, ADDR addr, HI value) const
      {
!       return this->write_data_memory_2 (pc, addr, value);
      }
    inline void
    SETMEMUHI(PCADDR pc, ADDR addr, UHI value) const
      {
!       return this->write_data_memory_2 (pc, addr, value);
      }
    inline SI
    GETMEMSI(PCADDR pc, ADDR addr) const
--- 125,136 ----
    inline void
    SETMEMHI(PCADDR pc, ADDR addr, HI value) const
      {
!       this->write_data_memory_2 (pc, addr, value);
      }
    inline void
    SETMEMUHI(PCADDR pc, ADDR addr, UHI value) const
      {
!       this->write_data_memory_2 (pc, addr, value);
      }
    inline SI
    GETMEMSI(PCADDR pc, ADDR addr) const
*************** public:
*** 140,146 ****
    inline void
    SETMEMSI(PCADDR pc, ADDR addr, SI value) const
      {
!       return this->write_data_memory_4 (pc, addr, value);
      }
    inline USI
    GETMEMUSI(PCADDR pc, ADDR addr) const
--- 140,146 ----
    inline void
    SETMEMSI(PCADDR pc, ADDR addr, SI value) const
      {
!       this->write_data_memory_4 (pc, addr, value);
      }
    inline USI
    GETMEMUSI(PCADDR pc, ADDR addr) const
*************** public:
*** 150,156 ****
    inline void
    SETMEMUSI(PCADDR pc, ADDR addr, USI value) const
      {
!       return this->write_data_memory_4 (pc, addr, value);
      }
    inline DI
    GETMEMDI(PCADDR pc, ADDR addr) const
--- 150,156 ----
    inline void
    SETMEMUSI(PCADDR pc, ADDR addr, USI value) const
      {
!       this->write_data_memory_4 (pc, addr, value);
      }
    inline DI
    GETMEMDI(PCADDR pc, ADDR addr) const
*************** public:
*** 160,194 ****
    inline void
    SETMEMDI(PCADDR pc, ADDR addr, DI value) const
      {
!       return this->write_data_memory_8 (pc, addr, value);
      }
    inline void
    SETMEMUDI(PCADDR pc, ADDR addr, UDI value) const
      {
!       return this->write_data_memory_8 (pc, addr, value);
      }
  
    // floats (can you think of a better way to do this?)
    inline SF
    GETMEMSF(PCADDR pc, IADDR addr) const
      {
!       return reinterpret_cast<SF>(this->read_insn_memory_4 (pc, addr));
      }
    inline void
    SETMEMSF(PCADDR pc, ADDR addr, SF value) const
      {
!       return this->write_insn_memory_4 (pc, addr, reinterpret_cast<USI>(value));
      }
- 
    inline DF
    GETMEMDF(PCADDR pc, IADDR addr) const
      {
!       return reinterpret_cast<DF>(this->read_insn_memory_8 (pc, addr));
      }
    inline void
    SETMEMDF(PCADDR pc, ADDR addr, DF value) const
      {
!       return this->write_insn_memory_8 (pc, addr, reinterpret_cast<UDI>(value));
      }
  
    // IMEM: instruction memory calls
--- 160,225 ----
    inline void
    SETMEMDI(PCADDR pc, ADDR addr, DI value) const
      {
!       this->write_data_memory_8 (pc, addr, value);
      }
    inline void
    SETMEMUDI(PCADDR pc, ADDR addr, UDI value) const
      {
!       this->write_data_memory_8 (pc, addr, value);
      }
  
    // floats (can you think of a better way to do this?)
    inline SF
    GETMEMSF(PCADDR pc, IADDR addr) const
      {
!       union
!       {
! 	SF sf;
! 	USI usi;
!       }
!       caster;
!       
!       caster.usi = this->read_insn_memory_4 (pc, addr);
!       return caster.sf;
      }
    inline void
    SETMEMSF(PCADDR pc, ADDR addr, SF value) const
      {
!       union
!       {
! 	SF sf;
! 	USI usi;
!       }
!       caster;
!       caster.sf = value;
! 	
!       this->write_insn_memory_4 (pc, addr, caster.usi);
      }
    inline DF
    GETMEMDF(PCADDR pc, IADDR addr) const
      {
!       union
!       {
! 	DF df;
! 	UDI udi;
!       }
!       caster;
!       
!       caster.udi = this->read_insn_memory_8 (pc, addr);
!       return caster.df;
      }
    inline void
    SETMEMDF(PCADDR pc, ADDR addr, DF value) const
      {
!       union
!       {
! 	DF df;
! 	UDI udi;
!       }
!       caster;
! 
!       caster.df = value;
!       this->write_insn_memory_8 (pc, addr, caster.udi);
      }
  
    // IMEM: instruction memory calls
*************** public:
*** 201,207 ****
    inline void
    SETIMEMQI(PCADDR pc, ADDR addr, QI value) const
      {
!       return this->write_insn_memory_1 (pc, addr, value);
      }
    inline UQI
    GETIMEMUQI(PCADDR pc, IADDR addr) const
--- 232,238 ----
    inline void
    SETIMEMQI(PCADDR pc, ADDR addr, QI value) const
      {
!       this->write_insn_memory_1 (pc, addr, value);
      }
    inline UQI
    GETIMEMUQI(PCADDR pc, IADDR addr) const
*************** public:
*** 211,217 ****
    inline void
    SETIMEMUQI(PCADDR pc, ADDR addr, UQI value) const
      {
!       return this->write_insn_memory_1 (pc, addr, value);
      }
    inline HI
    GETIMEMHI(PCADDR pc, IADDR addr) const
--- 242,248 ----
    inline void
    SETIMEMUQI(PCADDR pc, ADDR addr, UQI value) const
      {
!       this->write_insn_memory_1 (pc, addr, value);
      }
    inline HI
    GETIMEMHI(PCADDR pc, IADDR addr) const
*************** public:
*** 221,227 ****
    inline void
    SETIMEMHI(PCADDR pc, ADDR addr, HI value) const
      {
!       return this->write_insn_memory_2 (pc, addr, value);
      }
    inline UHI
    GETIMEMUHI(PCADDR pc, IADDR addr) const
--- 252,258 ----
    inline void
    SETIMEMHI(PCADDR pc, ADDR addr, HI value) const
      {
!       this->write_insn_memory_2 (pc, addr, value);
      }
    inline UHI
    GETIMEMUHI(PCADDR pc, IADDR addr) const
*************** public:
*** 231,237 ****
    inline void
    SETIMEMUHI(PCADDR pc, ADDR addr, UHI value) const
      {
!       return this->write_insn_memory_2 (pc, addr, value);
      }
    inline SI
    GETIMEMSI(PCADDR pc, IADDR addr) const
--- 262,268 ----
    inline void
    SETIMEMUHI(PCADDR pc, ADDR addr, UHI value) const
      {
!       this->write_insn_memory_2 (pc, addr, value);
      }
    inline SI
    GETIMEMSI(PCADDR pc, IADDR addr) const
*************** public:
*** 241,247 ****
    inline void
    SETIMEMSI(PCADDR pc, ADDR addr, SI value) const
      {
!       return this->write_insn_memory_4 (pc, addr, value);
      }
    inline USI
    GETIMEMUSI(PCADDR pc, IADDR addr) const
--- 272,278 ----
    inline void
    SETIMEMSI(PCADDR pc, ADDR addr, SI value) const
      {
!       this->write_insn_memory_4 (pc, addr, value);
      }
    inline USI
    GETIMEMUSI(PCADDR pc, IADDR addr) const
*************** public:
*** 251,257 ****
    inline void
    SETIMEMUSI(PCADDR pc, ADDR addr, USI value) const
      {
!       return this->write_insn_memory_4 (pc, addr, value);
      }
    inline DI
    GETIMEMDI(PCADDR pc, IADDR addr) const
--- 282,288 ----
    inline void
    SETIMEMUSI(PCADDR pc, ADDR addr, USI value) const
      {
!       this->write_insn_memory_4 (pc, addr, value);
      }
    inline DI
    GETIMEMDI(PCADDR pc, IADDR addr) const
*************** public:
*** 261,267 ****
    inline void
    SETIMEMDI(PCADDR pc, ADDR addr, DI value) const
      {
!       return this->write_insn_memory_8 (pc, addr, value);
      }
    inline UDI
    GETIMEMUDI(PCADDR pc, IADDR addr) const
--- 292,298 ----
    inline void
    SETIMEMDI(PCADDR pc, ADDR addr, DI value) const
      {
!       this->write_insn_memory_8 (pc, addr, value);
      }
    inline UDI
    GETIMEMUDI(PCADDR pc, IADDR addr) const
*************** public:
*** 271,281 ****
    inline void
    SETIMEMUDI(PCADDR pc, ADDR addr, UDI value) const
      {
!       return this->write_insn_memory_8 (pc, addr, value);
      }
- 
- 
- 
  };
  
  } // namespace cgen
--- 302,309 ----
    inline void
    SETIMEMUDI(PCADDR pc, ADDR addr, UDI value) const
      {
!       this->write_insn_memory_8 (pc, addr, value);
      }
  };
  
  } // namespace cgen

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

* Re: [patch]: RFA: Remove compile time warnings in cgen-cpu.h
  2005-04-13 10:46 [patch]: RFA: Remove compile time warnings in cgen-cpu.h Nick Clifton
@ 2005-04-13 11:03 ` Frank Ch. Eigler
  2005-04-13 11:12   ` Nick Clifton
  0 siblings, 1 reply; 3+ messages in thread
From: Frank Ch. Eigler @ 2005-04-13 11:03 UTC (permalink / raw)
  To: Nick Clifton; +Cc: sid

[-- Attachment #1: Type: text/plain, Size: 503 bytes --]

Hi, Nick -

>   [...]  The first is that it declares several void functions and
>   then uses a "return <expression>" statement.

But in C++, it is valid to return a void value from a void function.
What compiler version barfs on this?

>   The second is that it uses the "reinterpret_cast<>" operator to
>   convert between integer types and floating point types, which for
>   some versions of GCC at least, does not work.  [...]

Sure.  (Actually, does any cgen/sid port use floating-point?)

- FChE

[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

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

* Re: [patch]: RFA: Remove compile time warnings in cgen-cpu.h
  2005-04-13 11:03 ` Frank Ch. Eigler
@ 2005-04-13 11:12   ` Nick Clifton
  0 siblings, 0 replies; 3+ messages in thread
From: Nick Clifton @ 2005-04-13 11:12 UTC (permalink / raw)
  To: Frank Ch. Eigler; +Cc: sid

Hi Frank,

> But in C++, it is valid to return a void value from a void function.
> What compiler version barfs on this?

Good question - I am not actually sure.  It was reported by a remotely 
run job using the MCR system on a host which has at least two different 
C++ compilers installed on it.  I think however that it was using the 
compiler in /usr/bin, which is:

   c++ (GCC) 3.2.3 20030502 (Red Hat Linux 3.2.3-49)

The actual error message was, for example:

   "cgen-cpu.h:209: error: return-statement with a value, in function 
returning 'void'"

So the compiler believes that the expressions are not void.  Possibly 
this is a bug ?

In any case I assume that there is no reason not to have the return 
keyword since it is not doing anything ?


>>  The second is that it uses the "reinterpret_cast<>" operator to
>>  convert between integer types and floating point types, which for
>>  some versions of GCC at least, does not work.  [...]

> Sure.  (Actually, does any cgen/sid port use floating-point?)

No idea, but the same c++ compiler generated error messages for these 
casts that looked like this:

   "cgen-cpu.h:193: error: invalid cast from type 'sid::host_int_4' to 
type 'cgen::SF'"

Come to think of it, the subject of this thread really should have been 
"fix compile time errors for an old C++ compiler" or something like that.

Cheers
   Nick

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

end of thread, other threads:[~2005-04-13 11:12 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2005-04-13 10:46 [patch]: RFA: Remove compile time warnings in cgen-cpu.h Nick Clifton
2005-04-13 11:03 ` Frank Ch. Eigler
2005-04-13 11:12   ` Nick Clifton

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).