Disable IsSub subregister assert. pr18663.

This is a follow-up to the activity in the bug at
http://llvm.org/bugs/show_bug.cgi?id=18663 .  The underlying issue has
to do with how the KILL pseudo-instruction is handled.  I defer to
Hal/Jakob/Uli for additional details and background.

This will disable the (bad?) assert, add an associated fixme comment,
and add a pair of tests.

The code change and the pr18663-2.ll test are copied from the referenced
bug.  That test does not immediately fail in my environment, but I have
added the pr18663.ll test which does.

(Comment from Hal)
to provide everyone else with some context, this assert was not bad when
it was written. At that time, we only generated KILL pseudo instructions
around subregister copies. This logic, unfortunately, had its own problems.
In r199797, the relevant logic in MachineCopyPropagation was replaced to
generate KILLs for other kinds of copies too. This change in semantics broke
this now-problematic assumption in AggressiveAntiDepBreaker. The
AggressiveAntiDepBreaker really needs a proper cleanup to deal with the
change, but removing the assert (which just allows the function to return
false) is a safe conservative behavior, and should do for the time being.

llvm-svn: 214429
This commit is contained in:
Will Schmidt 2014-07-31 19:50:53 +00:00
parent 380f3d8334
commit 44ff8f06ec
3 changed files with 454 additions and 1 deletions
llvm

View File

@ -582,7 +582,9 @@ bool AggressiveAntiDepBreaker::FindSuitableFreeRegisters(
unsigned Reg = Regs[i];
if (Reg == SuperReg) continue;
bool IsSub = TRI->isSubRegister(SuperReg, Reg);
assert(IsSub && "Expecting group subregister");
// FIXME: remove this once PR18663 has been properly fixed. For now,
// return a conservative answer:
// assert(IsSub && "Expecting group subregister");
if (!IsSub)
return false;
}

View File

@ -0,0 +1,153 @@
; RUN: llc < %s -march=ppc64 -mtriple=powerpc64-unknown-linux-gnu
; RUN: llc < %s -march=ppc64le -mtriple=powerpc64le-unknown-linux-gnu
%"class.std::__1::locale::id.1580.4307.4610.8491" = type { %"struct.std::__1::once_flag.1579.4306.4609.8490", i32 }
%"struct.std::__1::once_flag.1579.4306.4609.8490" = type { i64 }
%"class.Foam::IOerror.1581.4308.4611.8505" = type { %"class.Foam::error.1535.4262.4565.8504", %"class.Foam::string.1530.4257.4560.8499", i32, i32 }
%"class.Foam::error.1535.4262.4565.8504" = type { %"class.std::exception.1523.4250.4553.8492", [36 x i8], %"class.Foam::string.1530.4257.4560.8499", %"class.Foam::string.1530.4257.4560.8499", i32, i8, i8, %"class.Foam::OStringStream.1534.4261.4564.8503"* }
%"class.std::exception.1523.4250.4553.8492" = type { i32 (...)** }
%"class.Foam::OStringStream.1534.4261.4564.8503" = type { %"class.Foam::OSstream.1533.4260.4563.8502" }
%"class.Foam::OSstream.1533.4260.4563.8502" = type { [50 x i8], %"class.Foam::fileName.1531.4258.4561.8500", %"class.std::__1::basic_ostream.1532.4259.4562.8501"* }
%"class.Foam::fileName.1531.4258.4561.8500" = type { %"class.Foam::string.1530.4257.4560.8499" }
%"class.std::__1::basic_ostream.1532.4259.4562.8501" = type { i32 (...)**, [148 x i8] }
%"class.Foam::string.1530.4257.4560.8499" = type { %"class.std::__1::basic_string.1529.4256.4559.8498" }
%"class.std::__1::basic_string.1529.4256.4559.8498" = type { %"class.std::__1::__compressed_pair.1528.4255.4558.8497" }
%"class.std::__1::__compressed_pair.1528.4255.4558.8497" = type { %"class.std::__1::__libcpp_compressed_pair_imp.1527.4254.4557.8496" }
%"class.std::__1::__libcpp_compressed_pair_imp.1527.4254.4557.8496" = type { %"struct.std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::__rep.1526.4253.4556.8495" }
%"struct.std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::__rep.1526.4253.4556.8495" = type { %union.anon.1525.4252.4555.8494 }
%union.anon.1525.4252.4555.8494 = type { %"struct.std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::__long.1524.4251.4554.8493" }
%"struct.std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::__long.1524.4251.4554.8493" = type { i64, i64, i8* }
@.str3 = external unnamed_addr constant [16 x i8], align 1
@_ZNSt3__15ctypeIcE2idE = external global %"class.std::__1::locale::id.1580.4307.4610.8491"
@_ZN4Foam12FatalIOErrorE = external global %"class.Foam::IOerror.1581.4308.4611.8505"
@.str204 = external unnamed_addr constant [18 x i8], align 1
@.str205 = external unnamed_addr constant [34 x i8], align 1
declare void @_ZN4FoamlsERNS_7OstreamEPKc() #0
declare i32 @__gxx_personality_v0(...)
declare void @_ZNKSt3__18ios_base6getlocEv() #0
declare void @_ZNKSt3__16locale9use_facetERNS0_2idE() #0
; Function Attrs: noreturn
declare void @_ZNKSt3__121__basic_string_commonILb1EE20__throw_length_errorEv() #1 align 2
declare void @_ZN4Foam6string6expandEb() #0
declare void @_ZN4Foam8IFstreamC1ERKNS_8fileNameENS_8IOstream12streamFormatENS4_13versionNumberE() #0
declare void @_ZN4Foam7IOerrorclEPKcS2_iRKNS_8IOstreamE() #0
declare void @_ZN4Foam7IOerror4exitEi() #0
; Function Attrs: inlinehint
declare void @_ZN4Foam8fileName12stripInvalidEv() #2 align 2
define void @_ZN4Foam3CSVINS_6VectorIdEEE4readEv() #0 align 2 {
entry:
invoke void @_ZN4Foam6string6expandEb()
to label %invoke.cont unwind label %lpad
invoke.cont: ; preds = %entry
br i1 undef, label %if.then.i.i.i.i176, label %_ZN4Foam6stringC2ERKS0_.exit.i
if.then.i.i.i.i176: ; preds = %invoke.cont
invoke void @_ZNKSt3__121__basic_string_commonILb1EE20__throw_length_errorEv()
to label %.noexc unwind label %lpad
.noexc: ; preds = %if.then.i.i.i.i176
unreachable
_ZN4Foam6stringC2ERKS0_.exit.i: ; preds = %invoke.cont
invoke void @_ZN4Foam8fileName12stripInvalidEv()
to label %invoke.cont2 unwind label %lpad.i
lpad.i: ; preds = %_ZN4Foam6stringC2ERKS0_.exit.i
%0 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
cleanup
br label %ehcleanup142
invoke.cont2: ; preds = %_ZN4Foam6stringC2ERKS0_.exit.i
invoke void @_ZN4Foam8IFstreamC1ERKNS_8fileNameENS_8IOstream12streamFormatENS4_13versionNumberE()
to label %invoke.cont4 unwind label %lpad3
invoke.cont4: ; preds = %invoke.cont2
br i1 undef, label %for.body, label %if.then
if.then: ; preds = %invoke.cont4
invoke void @_ZN4Foam7IOerrorclEPKcS2_iRKNS_8IOstreamE()
to label %invoke.cont8 unwind label %lpad5
invoke.cont8: ; preds = %if.then
invoke void @_ZN4FoamlsERNS_7OstreamEPKc()
to label %memptr.end.i unwind label %lpad5
memptr.end.i: ; preds = %invoke.cont8
invoke void @_ZN4Foam7IOerror4exitEi()
to label %if.end unwind label %lpad5
lpad: ; preds = %if.then.i.i.i.i176, %entry
%1 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
cleanup
br label %ehcleanup142
lpad3: ; preds = %invoke.cont2
%2 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
cleanup
br label %ehcleanup142
lpad5: ; preds = %memptr.end.i, %invoke.cont8, %if.then
%3 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
cleanup
br label %ehcleanup142
if.end: ; preds = %memptr.end.i
br i1 undef, label %for.body, label %vector.body
for.body: ; preds = %if.end, %invoke.cont4
invoke void @_ZNKSt3__18ios_base6getlocEv()
to label %.noexc205 unwind label %lpad19
.noexc205: ; preds = %for.body
invoke void @_ZNKSt3__16locale9use_facetERNS0_2idE()
to label %invoke.cont.i.i.i unwind label %lpad.i.i.i
invoke.cont.i.i.i: ; preds = %.noexc205
unreachable
lpad.i.i.i: ; preds = %.noexc205
%4 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
cleanup
br label %ehcleanup142
lpad19: ; preds = %for.body
%5 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
cleanup
br label %ehcleanup142
vector.body: ; preds = %vector.body, %if.end
%vec.phi = phi <8 x i32> [ %10, %vector.body ], [ undef, %if.end ]
%vec.phi1302 = phi <8 x i32> [ %11, %vector.body ], [ undef, %if.end ]
%vec.phi1303 = phi <8 x i32> [ %12, %vector.body ], [ undef, %if.end ]
%vec.phi1304 = phi <8 x i32> [ %13, %vector.body ], [ undef, %if.end ]
%6 = icmp sgt <8 x i32> undef, %vec.phi
%7 = icmp sgt <8 x i32> undef, %vec.phi1302
%8 = icmp sgt <8 x i32> undef, %vec.phi1303
%9 = icmp sgt <8 x i32> undef, %vec.phi1304
%10 = select <8 x i1> %6, <8 x i32> undef, <8 x i32> %vec.phi
%11 = select <8 x i1> %7, <8 x i32> undef, <8 x i32> %vec.phi1302
%12 = select <8 x i1> %8, <8 x i32> undef, <8 x i32> %vec.phi1303
%13 = select <8 x i1> %9, <8 x i32> undef, <8 x i32> %vec.phi1304
br label %vector.body
ehcleanup142: ; preds = %lpad19, %lpad.i.i.i, %lpad5, %lpad3, %lpad, %lpad.i
resume { i8*, i32 } undef
}
attributes #0 = { "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
attributes #1 = { noreturn "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
attributes #2 = { inlinehint "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }

View File

@ -0,0 +1,298 @@
; RUN: llc < %s -march=ppc64 -mtriple=powerpc64-unknown-linux-gnu
; RUN: llc < %s -march=ppc64le -mtriple=powerpc64le-unknown-linux-gnu
%class.Point.1 = type { %class.Tensor.0 }
%class.Tensor.0 = type { [3 x double] }
%class.TriaObjectAccessor.57 = type { %class.TriaAccessor.56 }
%class.TriaAccessor.56 = type { i32, i32, %class.Triangulation.55* }
%class.Triangulation.55 = type { %class.Subscriptor, %"class.std::vector.46", %"class.std::vector", %"class.std::vector.3.8", [255 x %class.Boundary.50*], i32, %struct.TriaNumberCache.54 }
%class.Subscriptor = type { i32 (...)**, i32, %"class.std::type_info.2"* }
%"class.std::type_info.2" = type { i32 (...)**, i8* }
%"class.std::vector.46" = type { %"struct.std::_Vector_base.45" }
%"struct.std::_Vector_base.45" = type { %"struct.std::_Vector_base<TriangulationLevel<3> *, std::allocator<TriangulationLevel<3> *> >::_Vector_impl.44" }
%"struct.std::_Vector_base<TriangulationLevel<3> *, std::allocator<TriangulationLevel<3> *> >::_Vector_impl.44" = type { %class.TriangulationLevel.43**, %class.TriangulationLevel.43**, %class.TriangulationLevel.43** }
%class.TriangulationLevel.43 = type { %class.TriangulationLevel.0.37, %"struct.TriangulationLevel<3>::HexesData.42" }
%class.TriangulationLevel.0.37 = type { %class.TriangulationLevel.1.31, %"struct.TriangulationLevel<2>::QuadsData.36" }
%class.TriangulationLevel.1.31 = type { %class.TriangulationLevel, %"struct.TriangulationLevel<1>::LinesData.30" }
%class.TriangulationLevel = type { %"class.std::vector.3.8", %"class.std::vector.3.8", %"class.std::vector.7.12", %"class.std::vector.12.15" }
%"class.std::vector.7.12" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<std::pair<int, int>, std::allocator<std::pair<int, int> > >::_Vector_impl.10" }
%"struct.std::_Vector_base<std::pair<int, int>, std::allocator<std::pair<int, int> > >::_Vector_impl.10" = type { %"struct.std::pair.9"*, %"struct.std::pair.9"*, %"struct.std::pair.9"* }
%"struct.std::pair.9" = type opaque
%"class.std::vector.12.15" = type { %"struct.std::_Vector_base.13.14" }
%"struct.std::_Vector_base.13.14" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int> >::_Vector_impl.13" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int> >::_Vector_impl.13" = type { i32*, i32*, i32* }
%"struct.TriangulationLevel<1>::LinesData.30" = type { %"class.std::vector.17.20", %"class.std::vector.22.23", %"class.std::vector.3.8", %"class.std::vector.3.8", %"class.std::vector.27.26", %"class.std::vector.32.29" }
%"class.std::vector.17.20" = type { %"struct.std::_Vector_base.18.19" }
%"struct.std::_Vector_base.18.19" = type { %"struct.std::_Vector_base<Line, std::allocator<Line> >::_Vector_impl.18" }
%"struct.std::_Vector_base<Line, std::allocator<Line> >::_Vector_impl.18" = type { %class.Line.17*, %class.Line.17*, %class.Line.17* }
%class.Line.17 = type { [2 x i32] }
%"class.std::vector.22.23" = type { %"struct.std::_Vector_base.23.22" }
%"struct.std::_Vector_base.23.22" = type { %"struct.std::_Vector_base<int, std::allocator<int> >::_Vector_impl.21" }
%"struct.std::_Vector_base<int, std::allocator<int> >::_Vector_impl.21" = type { i32*, i32*, i32* }
%"class.std::vector.27.26" = type { %"struct.std::_Vector_base.28.25" }
%"struct.std::_Vector_base.28.25" = type { %"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char> >::_Vector_impl.24" }
%"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char> >::_Vector_impl.24" = type { i8*, i8*, i8* }
%"class.std::vector.32.29" = type { %"struct.std::_Vector_base.33.28" }
%"struct.std::_Vector_base.33.28" = type { %"struct.std::_Vector_base<void *, std::allocator<void *> >::_Vector_impl.27" }
%"struct.std::_Vector_base<void *, std::allocator<void *> >::_Vector_impl.27" = type { i8**, i8**, i8** }
%"struct.TriangulationLevel<2>::QuadsData.36" = type { %"class.std::vector.37.35", %"class.std::vector.22.23", %"class.std::vector.3.8", %"class.std::vector.3.8", %"class.std::vector.27.26", %"class.std::vector.32.29" }
%"class.std::vector.37.35" = type { %"struct.std::_Vector_base.38.34" }
%"struct.std::_Vector_base.38.34" = type { %"struct.std::_Vector_base<Quad, std::allocator<Quad> >::_Vector_impl.33" }
%"struct.std::_Vector_base<Quad, std::allocator<Quad> >::_Vector_impl.33" = type { %class.Quad.32*, %class.Quad.32*, %class.Quad.32* }
%class.Quad.32 = type { [4 x i32] }
%"struct.TriangulationLevel<3>::HexesData.42" = type { %"class.std::vector.42.41", %"class.std::vector.22.23", %"class.std::vector.3.8", %"class.std::vector.3.8", %"class.std::vector.27.26", %"class.std::vector.32.29", %"class.std::vector.3.8" }
%"class.std::vector.42.41" = type { %"struct.std::_Vector_base.43.40" }
%"struct.std::_Vector_base.43.40" = type { %"struct.std::_Vector_base<Hexahedron, std::allocator<Hexahedron> >::_Vector_impl.39" }
%"struct.std::_Vector_base<Hexahedron, std::allocator<Hexahedron> >::_Vector_impl.39" = type { %class.Hexahedron.38*, %class.Hexahedron.38*, %class.Hexahedron.38* }
%class.Hexahedron.38= type { [6 x i32] }
%"class.std::vector" = type { %"struct.std::_Vector_base.48.48" }
%"struct.std::_Vector_base.48.48" = type { %"struct.std::_Vector_base<Point<3>, std::allocator<Point<3> > >::_Vector_impl.47" }
%"struct.std::_Vector_base<Point<3>, std::allocator<Point<3> > >::_Vector_impl.47" = type { %class.Point.1*, %class.Point.1*, %class.Point.1* }
%"class.std::vector.3.8" = type { %"struct.std::_Bvector_base.7" }
%"struct.std::_Bvector_base.7" = type { %"struct.std::_Bvector_base<std::allocator<bool> >::_Bvector_impl.6" }
%"struct.std::_Bvector_base<std::allocator<bool> >::_Bvector_impl.6" = type { %"struct.std::_Bit_iterator.5", %"struct.std::_Bit_iterator.5", i64* }
%"struct.std::_Bit_iterator.5" = type { %"struct.std::_Bit_iterator_base.base.4", [4 x i8] }
%"struct.std::_Bit_iterator_base.base.4" = type <{ i64*, i32 }>
%class.Boundary.50 = type opaque
%struct.TriaNumberCache.54 = type { %struct.TriaNumberCache.52.52, i32, %"class.std::vector.12.15", i32, %"class.std::vector.12.15" }
%struct.TriaNumberCache.52.52 = type { %struct.TriaNumberCache.53.51, i32, %"class.std::vector.12.15", i32, %"class.std::vector.12.15" }
%struct.TriaNumberCache.53.51 = type { i32, %"class.std::vector.12.15", i32, %"class.std::vector.12.15" }
define void @_ZNK18TriaObjectAccessorILi3ELi3EE10barycenterEv(%class.Point.1* noalias nocapture sret %agg.result, %class.TriaObjectAccessor.57* %this) #0 align 2 {
entry:
%0 = load double* null, align 8
%1 = load double* undef, align 8
%call18 = tail call dereferenceable(24) %class.Point.1* @_ZNK18TriaObjectAccessorILi3ELi3EE6vertexEj(%class.TriaObjectAccessor.57* %this, i32 zeroext 6)
%2 = load double* undef, align 8
%call21 = tail call dereferenceable(24) %class.Point.1* @_ZNK18TriaObjectAccessorILi3ELi3EE6vertexEj(%class.TriaObjectAccessor.57* %this, i32 zeroext 7)
%3 = load double* undef, align 8
%call33 = tail call dereferenceable(24) %class.Point.1* @_ZNK18TriaObjectAccessorILi3ELi3EE6vertexEj(%class.TriaObjectAccessor.57* %this, i32 zeroext 3)
%4 = load double* null, align 8
%5 = load double* undef, align 8
%call45 = tail call dereferenceable(24) %class.Point.1* @_ZNK18TriaObjectAccessorILi3ELi3EE6vertexEj(%class.TriaObjectAccessor.57* %this, i32 zeroext 7)
%6 = load double* undef, align 8
%call48 = tail call dereferenceable(24) %class.Point.1* @_ZNK18TriaObjectAccessorILi3ELi3EE6vertexEj(%class.TriaObjectAccessor.57* %this, i32 zeroext 0)
%7 = load double* undef, align 8
%call66 = tail call dereferenceable(24) %class.Point.1* @_ZNK18TriaObjectAccessorILi3ELi3EE6vertexEj(%class.TriaObjectAccessor.57* %this, i32 zeroext 6)
%8 = load double* undef, align 8
%mul334 = fmul double undef, 2.000000e+00
%mul579 = fmul double %2, %5
%mul597 = fmul double undef, %mul579
%mul679 = fmul double %2, %8
%mul1307 = fmul double undef, %1
%mul2092 = fmul double undef, %4
%mul2679 = fmul double undef, undef
%mul2931 = fmul double undef, %3
%mul3094 = fmul double undef, %3
%mul3096 = fmul double %mul3094, %8
%sub3097 = fsub double 0.000000e+00, %mul3096
%add3105 = fadd double undef, %sub3097
%add3113 = fadd double 0.000000e+00, %add3105
%sub3121 = fsub double %add3113, undef
%sub3129 = fsub double %sub3121, undef
%add3137 = fadd double undef, %sub3129
%add3145 = fadd double undef, %add3137
%sub3153 = fsub double %add3145, undef
%sub3162 = fsub double %sub3153, 0.000000e+00
%add3171 = fadd double undef, %sub3162
%add3180 = fadd double undef, %add3171
%add3189 = fadd double 0.000000e+00, %add3180
%mul3197 = fmul double %4, %mul2679
%sub3198 = fsub double %add3189, %mul3197
%sub3207 = fsub double %sub3198, 0.000000e+00
%mul3212 = fmul double %2, undef
%mul3214 = fmul double %mul3212, undef
%sub3215 = fsub double %sub3207, %mul3214
%mul3222 = fmul double %5, 0.000000e+00
%sub3223 = fsub double %sub3215, %mul3222
%mul3228 = fmul double %2, undef
%mul3230 = fmul double %3, %mul3228
%add3231 = fadd double %mul3230, %sub3223
%mul3236 = fmul double undef, undef
%mul3238 = fmul double %mul3236, %8
%add3239 = fadd double %mul3238, %add3231
%mul3244 = fmul double %mul1307, %3
%mul3246 = fmul double %mul3244, %7
%sub3247 = fsub double %add3239, %mul3246
%mul3252 = fmul double undef, undef
%mul3254 = fmul double %mul3252, %7
%add3255 = fadd double %mul3254, %sub3247
%sub3263 = fsub double %add3255, undef
%add3271 = fadd double 0.000000e+00, %sub3263
%sub3279 = fsub double %add3271, undef
%sub3287 = fsub double %sub3279, undef
%mul3292 = fmul double %mul1307, %5
%mul3294 = fmul double %mul3292, undef
%add3295 = fadd double %mul3294, %sub3287
%add3303 = fadd double undef, %add3295
%add3311 = fadd double 0.000000e+00, %add3303
%mul3318 = fmul double undef, %7
%sub3319 = fsub double %add3311, %mul3318
%mul3326 = fmul double %4, %mul3228
%sub3327 = fsub double %sub3319, %mul3326
%mul3334 = fmul double undef, %8
%sub3335 = fsub double %sub3327, %mul3334
%add3343 = fadd double undef, %sub3335
%mul3350 = fmul double %mul3212, %7
%add3351 = fadd double %mul3350, %add3343
%mul3358 = fmul double %mul2092, undef
%sub3359 = fsub double %add3351, %mul3358
%mul3362 = fmul double undef, %1
%mul3366 = fmul double 0.000000e+00, %8
%add3367 = fadd double %mul3366, %sub3359
%mul3372 = fmul double %mul3362, %5
%sub3375 = fsub double %add3367, undef
%add3383 = fadd double undef, %sub3375
%mul3389 = fmul double %2, 0.000000e+00
%mul3391 = fmul double %4, %mul3389
%sub3392 = fsub double %add3383, %mul3391
%mul3396 = fmul double undef, 0.000000e+00
%mul3400 = fmul double undef, %7
%sub3401 = fsub double %sub3392, %mul3400
%mul3407 = fmul double %mul3396, %4
%mul3409 = fmul double %mul3407, %8
%add3410 = fadd double %mul3409, %sub3401
%add3419 = fadd double undef, %add3410
%mul3423 = fmul double undef, %mul334
%add3428 = fadd double undef, %add3419
%add3437 = fadd double undef, %add3428
%mul3443 = fmul double %mul3423, %3
%mul3445 = fmul double %mul3443, %8
%sub3446 = fsub double %add3437, %mul3445
%mul3453 = fmul double %mul3372, undef
%add3454 = fadd double %mul3453, %sub3446
%add3462 = fadd double 0.000000e+00, %add3454
%mul3467 = fmul double %mul3362, %3
%mul3469 = fmul double %mul3467, %8
%sub3470 = fsub double %add3462, %mul3469
%add3478 = fadd double 0.000000e+00, %sub3470
%sub3486 = fsub double %add3478, undef
%mul3490 = fmul double %mul334, 0.000000e+00
%mul3492 = fmul double %2, %mul3490
%mul3494 = fmul double %mul3492, undef
%sub3495 = fsub double %sub3486, %mul3494
%sub3503 = fsub double %sub3495, undef
%sub3512 = fsub double %sub3503, undef
%add3520 = fadd double undef, %sub3512
%sub3528 = fsub double %add3520, undef
%add3537 = fadd double undef, %sub3528
%add3545 = fadd double 0.000000e+00, %add3537
%sub3553 = fsub double %add3545, undef
%add3561 = fadd double undef, %sub3553
%sub3569 = fsub double %add3561, undef
%mul3574 = fmul double undef, undef
%mul3576 = fmul double %mul3574, %7
%add3577 = fadd double %mul3576, %sub3569
%sub3585 = fsub double %add3577, undef
%mul3592 = fmul double %4, undef
%sub3593 = fsub double %sub3585, %mul3592
%mul3598 = fmul double %2, undef
%mul3600 = fmul double %mul3598, %7
%add3601 = fadd double %mul3600, %sub3593
%mul3608 = fmul double %mul3598, undef
%sub3609 = fsub double %add3601, %mul3608
%sub3618 = fsub double %sub3609, undef
%add3627 = fadd double undef, %sub3618
%add3635 = fadd double undef, %add3627
%mul3638 = fmul double undef, %2
%mul3640 = fmul double %mul3638, %5
%mul3642 = fmul double %mul3640, %7
%sub3643 = fsub double %add3635, %mul3642
%mul3648 = fmul double %1, undef
%mul3650 = fmul double %mul3648, %8
%sub3651 = fsub double %sub3643, %mul3650
%mul3656 = fmul double %mul3638, %4
%mul3658 = fmul double %mul3656, %8
%add3659 = fadd double %mul3658, %sub3651
%mul3666 = fmul double %5, 0.000000e+00
%add3667 = fadd double %mul3666, %add3659
%sub3675 = fsub double %add3667, undef
%mul3680 = fmul double %mul3638, %3
%mul3682 = fmul double %mul3680, %8
%sub3683 = fsub double %sub3675, %mul3682
%add3692 = fadd double 0.000000e+00, %sub3683
%mul3696 = fmul double undef, undef
%mul3698 = fmul double %mul3696, %4
%mul3700 = fmul double %mul3698, %8
%add3701 = fadd double %mul3700, %add3692
%sub3710 = fsub double %add3701, undef
%mul3716 = fmul double undef, %3
%mul3718 = fmul double %mul3716, %8
%sub3719 = fsub double %sub3710, %mul3718
%add3727 = fadd double undef, %sub3719
%mul3734 = fmul double %mul3574, %8
%add3735 = fadd double %mul3734, %add3727
%sub3743 = fsub double %add3735, 0.000000e+00
%add3751 = fadd double 0.000000e+00, %sub3743
%mul3758 = fmul double %6, 0.000000e+00
%sub3759 = fsub double %add3751, %mul3758
%mul3764 = fmul double undef, %mul2931
%mul3766 = fmul double %mul3764, undef
%sub3767 = fsub double %sub3759, %mul3766
%add3775 = fadd double 0.000000e+00, %sub3767
%add3783 = fadd double undef, %add3775
%sub3791 = fsub double %add3783, 0.000000e+00
%add3799 = fadd double undef, %sub3791
%sub3807 = fsub double %add3799, undef
%mul3814 = fmul double 0.000000e+00, undef
%add3815 = fadd double %mul3814, %sub3807
%mul3822 = fmul double %mul597, undef
%sub3823 = fsub double %add3815, %mul3822
%add3831 = fadd double undef, %sub3823
%mul3836 = fmul double undef, %mul679
%mul3838 = fmul double %6, %mul3836
%sub3839 = fsub double %add3831, %mul3838
%add3847 = fadd double undef, %sub3839
%add3855 = fadd double undef, %add3847
%mul3858 = fmul double undef, %8
%mul3860 = fmul double undef, %mul3858
%mul3862 = fmul double %6, %mul3860
%sub3863 = fsub double %add3855, %mul3862
%add3872 = fadd double undef, %sub3863
%sub3880 = fsub double %add3872, undef
%sub3889 = fsub double %sub3880, undef
%sub3898 = fsub double %sub3889, undef
%add3907 = fadd double undef, %sub3898
%sub3915 = fsub double %add3907, 0.000000e+00
%add3923 = fadd double undef, %sub3915
%mul3930 = fmul double %3, undef
%add3931 = fadd double %mul3930, %add3923
%add3940 = fadd double undef, %add3931
%sub3949 = fsub double %add3940, undef
%mul3952 = fmul double %2, %3
%sub3957 = fsub double %sub3949, undef
%sub3966 = fsub double %sub3957, undef
%add3975 = fadd double undef, %sub3966
%add3983 = fadd double undef, %add3975
%sub3992 = fsub double %add3983, undef
%mul3997 = fmul double undef, %mul3952
%mul3999 = fmul double %mul3997, %8
%add4000 = fadd double %mul3999, %sub3992
%sub4008 = fsub double %add4000, undef
%add4017 = fadd double undef, %sub4008
%add4026 = fadd double 0.000000e+00, %add4017
%mul4034 = fmul double %6, undef
%sub4035 = fsub double %add4026, %mul4034
%add4043 = fadd double undef, %sub4035
%sub4051 = fsub double %add4043, 0.000000e+00
%mul4916 = fmul double 0.000000e+00, %sub4051
%mul4917 = fmul double %mul4916, 0x3FC5555555555555
%mul7317 = fmul double 0.000000e+00, %3
%mul7670 = fmul double %0, %mul7317
%mul8882 = fmul double %0, 0.000000e+00
%mul8884 = fmul double undef, %mul8882
%sub8885 = fsub double 0.000000e+00, %mul8884
%mul8892 = fmul double %mul7670, undef
%add8893 = fadd double %mul8892, %sub8885
%mul8900 = fmul double undef, undef
%add8901 = fadd double %mul8900, %add8893
%mul9767 = fmul double 0.000000e+00, %add8901
%mul9768 = fmul double %mul9767, 0x3FC5555555555555
store double %mul4917, double* undef, align 8
store double %mul9768, double* undef, align 8
ret void
}
declare dereferenceable(24) %class.Point.1* @_ZNK18TriaObjectAccessorILi3ELi3EE6vertexEj(%class.TriaObjectAccessor.57*, i32 zeroext) #0