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

             Bug #: 50523
           Summary: C++ FE apparently incorrectly rejects tramp3d
    Classification: Unclassified
           Product: gcc
           Version: 4.7.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
        AssignedTo: unassig...@gcc.gnu.org
        ReportedBy: hubi...@gcc.gnu.org


In between the following two builds:
> 110912.64071 
> 110913.25243

tramp3d stopped building with following errors:
/gcc/spec/scripts/c++bench/tramp3d/tramp3d-v4.cpp: In instantiation of 'static
CreateLeaf<Field<G1, T1, E1> >::Return_t CreateLeaf<Field<G1, T1, E1>
>::make(const Input_t&) [with GeometryTag = NoMesh<3>, T = Vector<3, double,
Full>, EngineTag = ViewEngine<3, IndexFunction<GenericURM<MeshTraits<3, double,
UniformRectilinearTag, CartesianTag, 3> >::PositionsFunctor> >,
CreateLeaf<Field<G1, T1, E1> >::Return_t = Reference<Field<NoMesh<3>, Vector<3,
double, Full>, ViewEngine<3, IndexFunction<GenericURM<MeshTraits<3, double,
UniformRectilinearTag, CartesianTag, 3> >::PositionsFunctor> > > >,
CreateLeaf<Field<G1, T1, E1> >::Input_t = Field<NoMesh<3>, Vector<3, double,
Full>, ViewEngine<3, IndexFunction<GenericURM<MeshTraits<3, double,
UniformRectilinearTag, CartesianTag, 3> >::PositionsFunctor> > >]':
/gcc/spec/scripts/c++bench/tramp3d/tramp3d-v4.cpp:42503:44:   required from
'typename MakeFieldReturn<BinaryNode<OpSubtract, typename CreateLeaf<Field<G1,
T1, E1> >::Leaf_t, typename CreateLeaf<Vector<D2, T2, E2> >::Leaf_t>
>::Expression_t operator-(const Field<G1, T1, E1>&, const Vector<D2, T2, E2>&)
[with G1 = NoMesh<3>, T1 = Vector<3, double, Full>, E1 = ViewEngine<3,
IndexFunction<GenericURM<MeshTraits<3, double, UniformRectilinearTag,
CartesianTag, 3> >::PositionsFunctor> >, int D2 = 3, T2 = double, E2 = Full,
typename MakeFieldReturn<BinaryNode<OpSubtract, typename CreateLeaf<Field<G1,
T1, E1> >::Leaf_t, typename CreateLeaf<Vector<D2, T2, E2> >::Leaf_t>
>::Expression_t = Field<NoMesh<3>, Vector<3, double, Full>,
ExpressionTag<BinaryNode<OpSubtract, Reference<Field<NoMesh<3>, Vector<3,
double, Full>, ViewEngine<3, IndexFunction<GenericURM<MeshTraits<3, double,
UniformRectilinearTag, CartesianTag, 3> >::PositionsFunctor> > > >,
Scalar<Vector<3, double, Full> > > > >]'
/gcc/spec/scripts/c++bench/tramp3d/tramp3d-v4.cpp:55995:68:   required from
here
/gcc/spec/scripts/c++bench/tramp3d/tramp3d-v4.cpp:43646:22: error: conversion
from 'CreateLeaf<Field<NoMesh<3>, Vector<3, double, Full>, ViewEngine<3,
IndexFunction<GenericURM<MeshTraits<3, double, UniformRectilinearTag,
CartesianTag, 3> >::PositionsFunctor> > > >::Leaf_t {aka
Reference<Field<NoMesh<3>, Vector<3, double, Full>, ViewEngine<3,
IndexFunction<GenericURM<MeshTraits<3, double, UniformRectilinearTag,
CartesianTag, 3> >::PositionsFunctor> > > >}' to 'const Field<NoMesh<3>,
Vector<3, double, Full>, ViewEngine<3, IndexFunction<GenericURM<MeshTraits<3,
double, UniformRectilinearTag, CartesianTag, 3> >::PositionsFunctor> > >&' is
ambiguous
/gcc/spec/scripts/c++bench/tramp3d/tramp3d-v4.cpp:43646:22: note: candidates
are:
/gcc/spec/scripts/c++bench/tramp3d/tramp3d-v4.cpp:817:3: note:
Reference<T>::operator T&() const [with T = Field<NoMesh<3>, Vector<3, double,
Full>, ViewEngine<3, IndexFunction<GenericURM<MeshTraits<3, double,
UniformRectilinearTag, CartesianTag, 3> >::PositionsFunctor> > >]
/gcc/spec/scripts/c++bench/tramp3d/tramp3d-v4.cpp:816:3: note:
Reference<T>::operator const T&() const [with T = Field<NoMesh<3>, Vector<3,
double, Full>, ViewEngine<3, IndexFunction<GenericURM<MeshTraits<3, double,
UniformRectilinearTag, CartesianTag, 3> >::PositionsFunctor> > >]
/gcc/spec/scripts/c++bench/tramp3d/tramp3d-v4.cpp: In instantiation of
'BinaryNode<Op, Left, Right>::BinaryNode(const Left&, const Right&) [with Op =
OpSubtract, Left = Reference<Field<NoMesh<3>, Vector<3, double, Full>,
ViewEngine<3, IndexFunction<GenericURM<MeshTraits<3, double,
UniformRectilinearTag, CartesianTag, 3> >::PositionsFunctor> > > >, Right =
Scalar<Vector<3, double, Full> >]':
/gcc/spec/scripts/c++bench/tramp3d/tramp3d-v4.cpp:42503:44:   required from
'typename MakeFieldReturn<BinaryNode<OpSubtract, typename CreateLeaf<Field<G1,
T1, E1> >::Leaf_t, typename CreateLeaf<Vector<D2, T2, E2> >::Leaf_t>
>::Expression_t operator-(const Field<G1, T1, E1>&, const Vector<D2, T2, E2>&)
[with G1 = NoMesh<3>, T1 = Vector<3, double, Full>, E1 = ViewEngine<3,
IndexFunction<GenericURM<MeshTraits<3, double, UniformRectilinearTag,
CartesianTag, 3> >::PositionsFunctor> >, int D2 = 3, T2 = double, E2 = Full,
typename MakeFieldReturn<BinaryNode<OpSubtract, typename CreateLeaf<Field<G1,
T1, E1> >::Leaf_t, typename CreateLeaf<Vector<D2, T2, E2> >::Leaf_t>
>::Expression_t = Field<NoMesh<3>, Vector<3, double, Full>,
ExpressionTag<BinaryNode<OpSubtract, Reference<Field<NoMesh<3>, Vector<3,
double, Full>, ViewEngine<3, IndexFunction<GenericURM<MeshTraits<3, double,
UniformRectilinearTag, CartesianTag, 3> >::PositionsFunctor> > > >,
Scalar<Vector<3, double, Full> > > > >]'
/gcc/spec/scripts/c++bench/tramp3d/tramp3d-v4.cpp:55995:68:   required from
here
/gcc/spec/scripts/c++bench/tramp3d/tramp3d-v4.cpp:876:27: error: conversion
from 'const Reference<Field<NoMesh<3>, Vector<3, double, Full>, ViewEngine<3,
IndexFunction<GenericURM<MeshTraits<3, double, UniformRectilinearTag,
CartesianTag, 3> >::PositionsFunctor> > > >' to 'const Field<NoMesh<3>,
Vector<3, double, Full>, ViewEngine<3, IndexFunction<GenericURM<MeshTraits<3,
double, UniformRectilinearTag, CartesianTag, 3> >::PositionsFunctor> > >&' is
ambiguous
/gcc/spec/scripts/c++bench/tramp3d/tramp3d-v4.cpp:876:27: note: candidates are:
/gcc/spec/scripts/c++bench/tramp3d/tramp3d-v4.cpp:817:3: note:
Reference<T>::operator T&() const [with T = Field<NoMesh<3>, Vector<3, double,
Full>, ViewEngine<3, IndexFunction<GenericURM<MeshTraits<3, double,
UniformRectilinearTag, CartesianTag, 3> >::PositionsFunctor> > >]
/gcc/spec/scripts/c++bench/tramp3d/tramp3d-v4.cpp:816:3: note:
Reference<T>::operator const T&() const [with T = Field<NoMesh<3>, Vector<3,
double, Full>, ViewEngine<3, IndexFunction<GenericURM<MeshTraits<3, double,
UniformRectilinearTag, CartesianTag, 3> >::PositionsFunctor> > >]
/gcc/spec/scripts/c++bench/tramp3d/tramp3d-v4.cpp: In instantiation of 'static
CreateLeaf<Field<G1, T1, E1> >::Return_t CreateLeaf<Field<G1, T1, E1>
>::make(const Input_t&) [with GeometryTag =
UniformRectilinearMesh<MeshTraits<3, double, UniformRectilinearTag,
CartesianTag, 3> >, T = double, EngineTag = MultiPatch<GridTag, Remote<Brick>
>, CreateLeaf<Field<G1, T1, E1> >::Return_t =
Reference<Field<UniformRectilinearMesh<MeshTraits<3, double,
UniformRectilinearTag, CartesianTag, 3> >, double, MultiPatch<GridTag,
Remote<Brick> > > >, CreateLeaf<Field<G1, T1, E1> >::Input_t =
Field<UniformRectilinearMesh<MeshTraits<3, double, UniformRectilinearTag,
CartesianTag, 3> >, double, MultiPatch<GridTag, Remote<Brick> > >]':
/gcc/spec/scripts/c++bench/tramp3d/tramp3d-v4.cpp:40105:43:   required from
'typename MakeFieldReturn<BinaryNode<OpMultiply, typename CreateLeaf<Field<G1,
T1, E1> >::Leaf_t, typename CreateLeaf<Field<G2, T2, E2> >::Leaf_t>
>::Expression_t operator*(const Field<G1, T1, E1>&, const Field<G2, T2, E2>&)
[with G1 = UniformRectilinearMesh<MeshTraits<3, double, UniformRectilinearTag,
CartesianTag, 3> >, T1 = double, E1 = MultiPatch<GridTag, Remote<Brick> >, G2 =
UniformRectilinearMesh<MeshTraits<3, double, UniformRectilinearTag,
CartesianTag, 3> >, T2 = double, E2 = MultiPatch<GridTag, Remote<Brick> >,
typename MakeFieldReturn<BinaryNode<OpMultiply, typename CreateLeaf<Field<G1,
T1, E1> >::Leaf_t, typename CreateLeaf<Field<G2, T2, E2> >::Leaf_t>
>::Expression_t = Field<UniformRectilinearMesh<MeshTraits<3, double,
UniformRectilinearTag, CartesianTag, 3> >, double,
ExpressionTag<BinaryNode<OpMultiply,
Reference<Field<UniformRectilinearMesh<MeshTraits<3, double,
UniformRectilinearTag, CartesianTag, 3> >, double, MultiPatch<GridTag,
Remote<Brick> > > >, Reference<Field<UniformRectilinearMesh<MeshTraits<3,
double, UniformRectilinearTag, CartesianTag, 3> >, double, MultiPatch<GridTag,
Remote<Brick> > > > > > >]'
/gcc/spec/scripts/c++bench/tramp3d/tramp3d-v4.cpp:56010:22:   required from
here
/gcc/spec/scripts/c++bench/tramp3d/tramp3d-v4.cpp:43646:22: error: conversion
from 'CreateLeaf<Field<UniformRectilinearMesh<MeshTraits<3, double,
UniformRectilinearTag, CartesianTag, 3> >, double, MultiPatch<GridTag,
Remote<Brick> > > >::Leaf_t {aka
Reference<Field<UniformRectilinearMesh<MeshTraits<3, double,
UniformRectilinearTag, CartesianTag, 3> >, double, MultiPatch<GridTag,
Remote<Brick> > > >}' to 'const Field<UniformRectilinearMesh<MeshTraits<3,
double, UniformRectilinearTag, CartesianTag, 3> >, double, MultiPatch<GridTag,
Remote<Brick> > >&' is ambiguous
/gcc/spec/scripts/c++bench/tramp3d/tramp3d-v4.cpp:43646:22: note: candidates
are:

Honza

Reply via email to