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