public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c++/18512] New: ICE on overriden template method
@ 2004-11-16  2:13 Tringi at Mx-3 dot cz
  2004-11-16  2:21 ` [Bug c++/18512] [3.4/4.0 Regression] " pinskia at gcc dot gnu dot org
                   ` (9 more replies)
  0 siblings, 10 replies; 11+ messages in thread
From: Tringi at Mx-3 dot cz @ 2004-11-16  2:13 UTC (permalink / raw)
  To: gcc-bugs

Hello,

I was just wondering around code and following code resulted in ICE (MinGW 
3.4.2). I don't think that this is some kind of terrible bug as the code is 
obviously wrong (or isn't it?). Maybe you'll want to know about it, at least 
the compiler want me to report bug :) Maybe someone already reported 
it ...unfortunately have no time to browse buglists... :(

The error message is:

g++.exe -c main.cpp -o main.o -I"C:/Code/Dev-Cpp/include"  

-I"C:/Code/Dev-Cpp/include/c++/3.4.2"  

-I"C:/Code/Dev-Cpp/include/c++/3.4.2/backward"  

-I"C:/Code/Dev-Cpp/include/c++/3.4.2/mingw32"  

-I"C:/Code/Dev-Cpp/lib/gcc/mingw32/3.4.2/include"  -save-temps -Wall  
main.cpp: In member function `virtual const int iii::get_callback() const':
main.cpp:13: internal compiler error: in lookup_member, at cp/search.c:1288
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://www.mingw.org/bugs.shtml> for instructions.make.exe: *** 
[main.o] Error 1

Yes I know it says to contact MinGW but I think the ICEs are better to submit 
to GCC directly, aren't they?

The codes are:

--- main.cpp ---
#include <stdlib.h>
#include <stdio.h>
#include "cProperty.tcc"

class iii : public property<int> {
    public:
        iii() { };
        iii(int i) : property<int>(i) { };
    
    protected:
        const int get_callback() const {
            printf("my getcb\n");
            return this->property<int>; // this causes the ICE
        };
    
};

int main(int argc, char *argv[]) {
    iii *i = new iii;
    
    printf("::: %d\n", (int)*i );
    *i = 1;
    printf("::: %d\n", (int)*i );
    
    delete i;
    
    system("PAUSE");	
    return 0;
};

--- EOF ---
--- cProperty.tcc ---
#ifndef CPROPERTY_HPP
#define CPROPERTY_HPP

template <typename T> class property {
    private:
        T _p;
        
    protected:
        virtual const T get_callback() const { printf("getcb\n"); return _p; };
        virtual const T set_callback(const T& p) const { printf("setcb\n"); 
return 

p; };
        
    public:
        property() { };
        property(const T &p) { this->_p = set_callback(p); };
        virtual ~property() { };
        
        virtual operator T() const { return get_callback(); };
        virtual const T& operator=(const T &p) { return this->_p = set_callback
(p); 

};
        
};

#endif

--- EOF ---

Well, there is a lot of code that could be stripped but I hope you can browse 

through it.
Have a good time.

-- 
           Summary: ICE on overriden template method
           Product: gcc
           Version: 3.4.2
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: c++
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: Tringi at Mx-3 dot cz
                CC: gcc-bugs at gcc dot gnu dot org


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


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

end of thread, other threads:[~2005-09-01 15:24 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2004-11-16  2:13 [Bug c++/18512] New: ICE on overriden template method Tringi at Mx-3 dot cz
2004-11-16  2:21 ` [Bug c++/18512] [3.4/4.0 Regression] " pinskia at gcc dot gnu dot org
2004-11-16  2:35 ` [Bug c++/18512] [3.4/4.0 Regression] ICE on invalid usage of template base class reichelt at gcc dot gnu dot org
2004-11-27 17:29 ` mmitchel at gcc dot gnu dot org
2004-11-29 20:11 ` cvs-commit at gcc dot gnu dot org
2004-11-29 20:25 ` [Bug c++/18512] [3.4 " mmitchel at gcc dot gnu dot org
2005-04-22  4:13 ` pinskia at gcc dot gnu dot org
2005-05-19 17:25 ` mmitchel at gcc dot gnu dot org
2005-09-01 14:58 ` reichelt at gcc dot gnu dot org
2005-09-01 15:23 ` cvs-commit at gcc dot gnu dot org
2005-09-01 15:24 ` reichelt 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).