annotate gcc/testsuite/g++.dg/tree-ssa/pr86062.C @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
131
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
1 // { dg-do compile }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
2 // { dg-require-effective-target c++14 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
3 // { dg-options "-O2 -ffinite-math-only -fdump-tree-fre1" }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
4
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
5 #include <array>
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
6
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
7 struct I { double i,s; I(double d):i(d),s(d){} };
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
8 typedef std::array<double,3> P;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
9 typedef std::array<I,3> AP;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
10
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
11 static AP c(P const&p){
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
12 return {p[0],p[1],p[2]};
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
13 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
14 template<class T> auto const& ac(T const&p, int n){return p[n];}
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
15 static double g(P const&p, int n)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
16 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
17 I res = ac(c(p),n);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
18 return res.s-res.i;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
19 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
20
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
21 __attribute__((flatten)) double fff(P p){ return g(p,1); }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
22
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
23 // { dg-final { scan-tree-dump "return 0.0;" "fre1" } }