This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c++/32970] New: C++ frontend can not handle vector pointer constant parameter
- From: "saliu at de dot ibm dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 2 Aug 2007 18:37:20 -0000
- Subject: [Bug c++/32970] New: C++ frontend can not handle vector pointer constant parameter
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
When compiling a function with parameter of a pointer to a vector constant
type, the compiler calls a recursive function and is not able to get out.
Concretely, in gcc/cp/mangle.c file, in function write_type:
if (write_CV_qualifiers_for_type (type) > 0)
/* If TYPE was CV-qualified, we just wrote the qualifiers; now
mangle the unqualified type. The recursive call is needed here
since both the qualified and unqualified types are substitution
candidates. */
write_type (TYPE_MAIN_VARIANT (type));
But TYPE_MAIN_VARIANT (type) has been set as type itself in gcc/tree.c
function make_node_stat:
case tcc_type:
...
TYPE_MAIN_VARIANT (t) = t;
Therefor the write_type function runs into a dead recursion.
The bug was detected on spu, and the same error appears on PowerPC and Intel
too.
The following is a test case on Intel:
void bar(
int __attribute__((vector_size(16))) * a,
int __attribute__((vector_size(16))) * const b);
int instance(void)
{
int __attribute__((vector_size(16))) a[1], b[1];
bar(a, b);
}
--
Summary: C++ frontend can not handle vector pointer constant
parameter
Product: gcc
Version: 4.3.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: saliu at de dot ibm dot com
GCC build triplet: powerpc64-unknown-linux-gnu
GCC host triplet: powerpc64-unknown-linux-gnu
GCC target triplet: spu-unknown-elf
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32970