This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Parse error in expression new (int*)[10]


The following (illegal) program compiles with g++ 3.1:

-----------------------------------------
#include <iostream>
#include <typeinfo>

void
f()
{
    int** ppi = new (int*)[ 10 ] ;
}

int
main()
{
    std::cout << typeid( new (int*)[10] ).name() << '\n' ;
    return 0 ;
}
-----------------------------------------

There should be a type error on the line in the function f.  The output
from the typeid in main indicates that g++ is somehow interpreting this
as if the parentheses weren't there in the new expression.

Here's the protocol from compiling the code with -v, and then executing
it:

-----------------------------------------
054@~/tmp/gcc3 (19): g++3 -v bad.cc -o bad
Remading specs from /home/team02/jakan/gnu/bin/../lib/gcc-lib/sparc-sun-solaris2.8/3.1/specs
Configured with: ./configure --previx ../..
Thread model: posix
gcc version 3.1
 /home/team02/jakan/gnu/bin/../lib/gcc-lib/sparc-sun-solaris2.8/3.1/cc1plus -v -iprefix
/home/team02/jakan/gnu/bin/../lib/gcc-lib/sparc-sun-solaris2.8/3.1/ -D__GNUC__=3 -D__GNUC_MINOR__=1 -D__GNUC_PATCHLEVEL__=0 -Dsparc -Dsun -Dunix
-D__svr4__ -D__SVR4 -D__PRAGMA_REDEFINE_EXTNAME -D__sparc__ -D__sun__ -D__unix__ -D__svr4__ -D__SVR4 -D__PRAGMA_REDEFINE_EXTNAME -D__sparc -D__sun
-D__unix -Asystem=unix -Asystem=svr4 -D__NO_INLINE__ -D__STDC_HOSTED__=1 -D_XOPEN_SOURCE=500 -D_LARGEFILE_SOURCE=1 -D_LARGEFILE64_SOURCE=1
-D__EXTENSIONS__ -D__SIZE_TYPE__=unsigned int -D__PTRDIFF_TYPE__=int -D__WCHAR_TYPE__=long int -D__WINT_TYPE__=long int -D__GCC_NEW_VARARGS__
-Acpu=sparc -Amachine=sparc bad.cc -D__GNUG__=3 -D__DEPRECATED -D__EXCEPTIONS -D__GXX_ABI_VERSION=100 -quiet -dumpbase bad.cc -version -o
/var/tmp//cckasQOm.s
GNU CPP version 3.1 (cpplib) (sparc ELF)
GNU C++ version 3.1 (sparc-sun-solaris2.8)
      compiled by GNU C version 3.1.
ignoring nonexistent directory "/home/team02/jakan/gnu/sparc-sun-solaris2.8/include"
ignoring nonexistent directory "/usr/local/include"
ignoring nonexistent directory "/home/team02/jakan/gnu/sparc-sun-solaris2.8/include"
ignoring duplicate directory "/home/team02/jakan/gnu/include/g++-v3"
ignoring duplicate directory "/home/team02/jakan/gnu/include/g++-v3/sparc-sun-solaris2.8"
ignoring duplicate directory "/home/team02/jakan/gnu/include/g++-v3/backward"
ignoring duplicate directory "/home/team02/jakan/gnu/lib/gcc-lib/sparc-sun-solaris2.8/3.1/include"
#include "..." search starts here:
#include <...> search starts here:
 /home/team02/jakan/gnu/include/g++-v3
 /home/team02/jakan/gnu/include/g++-v3/sparc-sun-solaris2.8
 /home/team02/jakan/gnu/include/g++-v3/backward
 /home/team02/jakan/gnu/lib/gcc-lib/sparc-sun-solaris2.8/3.1/include
 /home/team02/jakan/gnu/include
 /usr/include
End of search list.
 /usr/ccs/bin/as -V -Qy -s -o /var/tmp//cclWR6bn.o /var/tmp//cckasQOm.s
/usr/ccs/bin/as: Sun WorkShop 6 99/08/18
 /home/team02/jakan/gnu/bin/../lib/gcc-lib/sparc-sun-solaris2.8/3.1/collect2 -V -Y P,/usr/ccs/lib:/usr/lib -Qy -o bad
/home/team02/jakan/gnu/bin/../lib/gcc-lib/sparc-sun-solaris2.8/3.1/crt1.o /home/team02/jakan/gnu/bin/../lib/gcc-lib/sparc-sun-solaris2.8/3.1/crti.o
/usr/ccs/lib/values-Xa.o /home/team02/jakan/gnu/bin/../lib/gcc-lib/sparc-sun-solaris2.8/3.1/crtbegin.o
-L/home/team02/jakan/gnu/bin/../lib/gcc-lib/sparc-sun-solaris2.8/3.1 -L/home/team02/jakan/gnu/bin/../lib/gcc-lib -L/usr/ccs/bin -L/usr/ccs/lib
-L/home/team02/jakan/gnu/bin/../lib/gcc-lib/sparc-sun-solaris2.8/3.1/../../.. /var/tmp//cclWR6bn.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc -lc
/home/team02/jakan/gnu/bin/../lib/gcc-lib/sparc-sun-solaris2.8/3.1/crtend.o /home/team02/jakan/gnu/bin/../lib/gcc-lib/sparc-sun-solaris2.8/3.1/crtn.o
ld: Solaris Link Editors: 5.8-1.272
054@~/tmp/gcc3 (20): bad
PPi
-----------------------------------------

--
James Kanze                           mailto:jkanze@caicheuvreux.com
Conseils en informatique orientée objet/
                    Beratung in objektorientierter Datenverarbeitung

"This message,  including any attachments may contain confidential and
privileged material;  it is intended only for the person to whom it is
addressed.  Its  contents  do not  constitute  a commitment  by Crédit
Agricole Indosuez Cheuvreux  except  where  provided  for in a written
agreement.  Crédit Agricole Indosuez Cheuvreux assumes no liability or
responsibility for the consequences arising out of a delay and/or loss
in  transit  of  this  message,  or for corruption  or other  error(s)
arising in its transmission and for any misuse or fraudulent use which
may  be made thereof.  If you are not the  intended recipient,  please
contact us  and abstain from  any disclosure, use or dissemination. To
the extent  that  this message  contains  research information  and/or
recommendations,  these  are  provided  on  the  same  basis as Crédit
Agricole Indosuez Cheuvreux's  published  research  and  the recipient
must  have  regard  to  all   disclosures  and  disclaimers  contained
therein."




Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]