This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c++/26882] New: ICE when using template function with memory attributes
- From: "gcc-bugzilla at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 27 Mar 2006 07:19:44 -0000
- Subject: [Bug c++/26882] New: ICE when using template function with memory attributes
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
This program (which has no included files) causes an ICE and a bus error:
--
typedef unsigned char uint8_t ;
typedef unsigned short uint16_t ;
typedef unsigned long uint32_t ;
#define PROGMEM __attribute__((__progmem__))
template<typename T>
T PROGMEM * rom(const T& init)
{
static T PROGMEM t = init;
return &t;
}
struct funny
{
uint8_t a;
uint16_t b;
uint32_t c;
};
uint8_t PROGMEM *rom1 = rom((uint8_t)123);
funny f = { 0xBB, 0xCCCC, 0xDDDDEEEE };
funny PROGMEM *rom2 = rom(f);
int main()
{
*((volatile uint8_t*)0x55) = *rom1;
*((volatile uint8_t*)0xAA) = rom2->a;
}
bool __cxa_guard_acquire(uint8_t *gv) { return true; }
bool __cxa_guard_release(uint8_t *gv) { return true; }
--
Environment:
System: Darwin Neds-Mini.local 8.5.0 Darwin Kernel Version 8.5.0: Sun Jan 22
10:38:46 PST 2006; root:xnu-792.6.61.obj~1/RELEASE_PPC Power Macintosh powerpc
host: powerpc-apple-darwin8.5.0
build: powerpc-apple-darwin8.5.0
target: avr-unknown-none
configured with:
/opt/local/var/db/dports/build/_Users_ned_src_darwinports_dports_cross_avr-gcc/work/gcc-4.0.2/configure
--prefix=/opt/local --infodir=/opt/local/share/info
--mandir=/opt/local/share/man --target=avr --program-prefix=avr-
--with-included-gettext --enable-obsolete
--with-gxx-include-dir=/opt/local/avr/include/c++/4.0.2/
--enable-languages=c,c++
How-To-Repeat:
Compile the above program. I used the command line:
avr-g++ -mmcu=atmega128 -c -o romtest2.o romtest2.cpp
and got this:
romtest2.cpp: In function 'T* rom(const T&) [with T = uint8_t]':
romtest2.cpp|21| instantiated from here
romtest2.cpp|10| internal compiler error: Bus error
--
Summary: ICE when using template function with memory attributes
Product: gcc
Version: 4.0.2
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: ned at bike-nomad dot com
GCC build triplet: powerpc-apple-darwin8.5.0
GCC host triplet: powerpc-apple-darwin8.5.0
GCC target triplet: avr-unknown-none
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26882