https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69355
--- Comment #6 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
--- pr69355.ii 2016-01-19 13:00:26.772400572 +0100
+++ pr69355-1.ii 2016-01-19 15:54:26.790557524 +0100
@@ -30334,10 +30334,17 @@ namespace std __attribute__ ((__visibili
# 4 "mytest.cpp"
typedef tvmet::Vector<double, 3> Vector;
+__attribute__((noinline, noclone)) Vector
+foo (Vector v1)
+{
+ Vector r;
+ r = v1/norm2(v1);
+ return r;
+}
+
int main(){
Vector v1;
v1 = 1,2,3;
- Vector r;
- r = v1/norm2(v1);
+ Vector r = foo(v1);
std::cout << r;
}
narrows it down a little bit further, happens also with -fno-strict-aliasing,
somewhere during early inlining the operator/ starts ignoring the passed in
long double rhs argument. Looking further.