https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91212

Martin Liška <marxin at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
      Known to work|                            |7.4.0
           Keywords|                            |wrong-code
   Last reconfirmed|                            |2020-01-28
                 CC|                            |jason at gcc dot gnu.org,
                   |                            |marxin at gcc dot gnu.org
     Ever confirmed|0                           |1
            Summary|const ignored for ctor      |[8/9/10 Regression] const
                   |arguments within return     |ignored for ctor arguments
                   |                            |within return since
                   |                            |r8-2493-g4ce8c5dea53d8073
      Known to fail|                            |10.0, 8.3.0, 9.2.0

--- Comment #1 from Martin Liška <marxin at gcc dot gnu.org> ---
Confirmed, started with r8-2493-g4ce8c5dea53d8073.

Slightly modified test-case:

$ cat pr91212.cc
extern "C" {
    long write( int fd, const void *buf, unsigned long count );
}

struct X {
        template <unsigned long N> X(const char (&src)[N]) {
                __builtin_printf ("X(const char (&src)[N])\n");
        }
        template <unsigned long N> X(char (&src)[N]) {
                __builtin_printf("X(char (&src)[N])\n");
        }
};

X
func1()
{
        char buf[2048];
        return buf;
}

X
func2()
{
        char buf[4096];
        return X(buf);
}

int
main()
{
        char buf[1024];

        __builtin_printf("1: ");
        X a( buf );
        __builtin_printf("2: ");
        X b( "x" );
        __builtin_printf("3: ");
        X c = func1();
        __builtin_printf("4: ");
        X d = func2();
}

Reply via email to