Re: [eigen] any remaining issues blocking beta1, speak up!

[ Thread Index | Date Index | More lists.tuxfamily.org/eigen Archives ]


no warning.


here is an simpler version:

#include <iostream>
#include <Eigen/Dense>

int main()
{
  Eigen::Matrix<float,1,1> v;
  v.setOnes();
  return (v.cwiseAbs()-v).sum();
}

I have also simplified CwiseBinaryOp, such that the coeff(int)
function is directly implemented in CwiseBinaryOp (not in the base
class CwiseBinaryOpImpl) and such that it simply does:

return m_rhs.coeff(0);

which, in this example, should return v.coeff(0) == 1;

 (so the left hand side and the functor are not used, but I remove
them then the issue disappear).

I've also changed the functor by an object of type:

struct foo {
  foo() : x(1) {}
  int x;
};

just be sure the issue does not come from our empty functors. No success.

If the left hand side (here v.cwiseAbs(), which is not used) is nested
by reference, then the issue disappear.

Also, m_rhs().data() is wrong.

....

gael

On Sat, Jul 3, 2010 at 3:55 PM, Benoit Jacob <jacob.benoit.1@xxxxxxxxx> wrote:
> Can you try compiling with
>
>    -Wstrict-aliasing=1
>
> indeed, the default value is 3, and 1 is the most aggressive warning
> level. It could however report a lot of false positives. According to
> `man gcc`.
>
> Benoit
>
> 2010/7/3 Gael Guennebaud <gael.guennebaud@xxxxxxxxx>:
>> here is a simplified version:
>>
>> #include <iostream>
>> #include <Eigen/Dense>
>>
>> template<typename A, typename B> EIGEN_DONT_INLINE int foo(const A& a,
>> const B& b)
>> {
>>  return (a - b).sum() <= 0;
>> }
>>
>> int main()
>> {
>>  Eigen::Matrix<float,1,1> v;
>>  v.setOnes();
>>  return foo(v.colwise().maxCoeff(),v);
>> }
>>
>> which, again, fails with gcc-4.3 + strict-aliasing only....
>> investigating to see if I can find a workaround.
>>
>> gael
>>
>> On Sat, Jul 3, 2010 at 1:03 PM, Jitse Niesen <jitse@xxxxxxxxxxxxxxxxx> wrote:
>>> On Sat, 3 Jul 2010, Benoit Jacob wrote:
>>>
>>>> All is in the title. Can we release beta1 this Saturday?
>>>
>>> There is also the stable_norm_1 test that is failing on gcc 4.3. This seems
>>> to be a mistake in Eigen itself.
>>>
>>> See the previous email I wrote:
>>>
>>> On Thu, 1 Jul 2010, Jitse Niesen wrote:
>>>>
>>>> Date: Thu, 1 Jul 2010 11:02:51 +0100 (BST)
>>>> From: Jitse Niesen <jitse@xxxxxxxxxxxxxxxxx>
>>>> To: Eigen mailinglist <eigen@xxxxxxxxxxxxxxxxxxx>
>>>> Subject: Failing stable_norm_1 test
>>>>
>>>> Hello,
>>>>
>>>> I just spent some time on the stable_norm_1 test, which fails on both my
>>>> computer and Gael's computer when using gcc 4.3. It looks similar to the
>>>> issue
>>>> which you solved by the empty struct magic (well done!).
>>>>
>>>> The details are as follows. I constructed the following (fairly) minimal
>>>> test
>>>> example:
>>>>
>>>> #include <iostream>
>>>> #include <Eigen/Dense>
>>>>
>>>> int main()
>>>> {
>>>>  Eigen::Matrix<float,1,1> v;
>>>>  v(0,0) = 0.1;
>>>>  std::cerr << "blue norm = " << v.colwise().blueNorm() << "\n";
>>>>  std::cerr << "status = " <<
>>>> v.colwise().hypotNorm().isApprox(v.colwise().norm(), 1e-4) << "\n";
>>>> }
>>>>
>>>> When compiling with g++ (version 4.3.3) -O2 -g and running under valgrind,
>>>> this
>>>> produces:
>>>>
>>>> Use of uninitialised value of size 4
>>>>    at 0x8048F28: bool
>>>> Eigen::DenseBase<Eigen::PartialReduxExpr<Eigen::Matrix<float, 1, 1, 0, 1,
>>>> 1>,
>>>> Eigen::ei_member_hypotNorm<float>, 0>
>>>> >::isApprox<Eigen::PartialReduxExpr<Eigen::Matrix<float, 1, 1, 0, 1, 1>,
>>>> Eigen::ei_member_norm<float>, 0>
>>>> >(Eigen::DenseBase<Eigen::PartialReduxExpr<Eigen::Matrix<float, 1, 1, 0,
>>>> > 1, 1>,
>>>> Eigen::ei_member_norm<float>, 0> > const&, float) const (in
>>>> /scratch/1/users/jitse/work/c/eigen/eigenfoo)
>>>>    by 0x8048AF5: main (in /scratch/1/users/jitse/work/c/eigen/eigenfoo)
>>>>
>>>> and the same error with the same stack trace a bit later, at 0x8048F2A..
>>>>
>>>> The result of the program is also wrong: it should print status = 1, but
>>>> it
>>>> says status = 0.
>>>>
>>>> The error goes away when compiling with -fno-strict-aliasing.
>>>> I tried compiling with -Wstrict-aliasing=2 but that does not produce any
>>>> warnings.
>>>>
>>>> Over to the gurus!
>>>>
>>>> Cheers,
>>>> Jitse
>>>>
>>>
>>>
>>>
>>
>>
>>
>
>
>



Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/