On Fri, May 25, 2018 at 12:40 PM, Sudakshina Das <sudi....@arm.com> wrote: > On 23/05/18 18:21, Jason Merrill wrote: >> >> The first patch implements the adjustments from core issues 616 and >> 1213 to the value category of subobjects of class prvalues: they were >> considered prvalues themselves, but that was kind of nonsensical. Now >> they are considered xvalues. Along with this, I've removed the >> diagnostic distinction between xvalues and prvalues when trying to use >> one or the other as an lvalue; the important thing is that they are >> rvalues. >> >> The second patch corrects various issues with casts and xvalues/rvalue >> references: we were treating an xvalue operand to dynamic_cast as an >> lvalue, and we were objecting to casts from prvalue to rvalue >> reference type. >> > > With the second patch: > commit f7d2790049fd1e59af4b69ee12f7c101cfe4cdab > Author: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> > Date: Wed May 23 17:21:39 2018 +0000 > > Fix cast to rvalue reference from prvalue. > > * cvt.c (diagnose_ref_binding): Handle rvalue reference. > * rtti.c (build_dynamic_cast_1): Don't try to build a reference to > non-class type. Handle xvalue argument. > * typeck.c (build_reinterpret_cast_1): Allow cast from prvalue to > rvalue reference. > * semantics.c (finish_compound_literal): Do direct-initialization, > not cast, to initialize a reference. > > git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@260622 > 138bc75d-0d04-0410-961f-82ee72b054a4 > > I have observed the following failure in Spec2017 while building > 510.parest_r on aarch64-none-linux-gnu > > aarch64-none-linux-gnu-g++ -c -o source/numerics/matrices.all_dimensions.o > -DSPEC -DNDEBUG -Iinclude -I. -DSPEC_AUTO_SUPPRESS_OPENMP > -mcpu=cortex-a57+crypto -Ofast -fomit-frame-pointer -fpermissive > -DSPEC_LP64 source/numerics/matrices.all_dimensions.cc > > source/numerics/matrices.all_dimensions.cc: In static member function > 'static void dealii::MatrixTools::apply_boundary_values(const > std::map<unsigned int, double>&, dealii::BlockSparseMatrix<number>&, > dealii::BlockVector<number>&, dealii::BlockVector<number>&, bool)': > > source/numerics/matrices.all_dimensions.cc:469:50: error: lvalue required as > unary '&' operand > > [this_sparsity.get_rowstart_indices()[row]]; > > ^ > > source/numerics/matrices.all_dimensions.cc:472:55: error: lvalue required as > unary '&' operand > > [this_sparsity.get_rowstart_indices()[row]+1], > > ^ > > source/numerics/matrices.all_dimensions.cc:474:55: error: lvalue required as > unary '&' operand > > [this_sparsity.get_rowstart_indices()[row+1]], > > ^ > > source/numerics/matrices.all_dimensions.cc:479:49: error: lvalue required as > unary '&' operand > > [this_sparsity.get_rowstart_indices()[row]], > > ^ > > source/numerics/matrices.all_dimensions.cc:481:51: error: lvalue required as > unary '&' operand > > [this_sparsity.get_rowstart_indices()[row+1]], > > ^ > > source/numerics/matrices.all_dimensions.cc:510:50: error: lvalue required as > unary '&' operand > > [this_sparsity.get_rowstart_indices()[0]]); > > Sudi
Thanks, investigating. Jason