| Index: src/IceTargetLoweringX8632.cpp
|
| diff --git a/src/IceTargetLoweringX8632.cpp b/src/IceTargetLoweringX8632.cpp
|
| index d1fdfc2f97868dcd9f11a6a5b76ca0396912d65c..0beb311e56e0ef690701a6fbb1125dbd14ccd3d0 100644
|
| --- a/src/IceTargetLoweringX8632.cpp
|
| +++ b/src/IceTargetLoweringX8632.cpp
|
| @@ -1900,9 +1900,12 @@ void TargetX8632::lowerCall(const InstCall *Instr) {
|
| } else if (Dest->getType() == IceType_f32 || Dest->getType() == IceType_f64) {
|
| // Special treatment for an FP function which returns its result in
|
| // st(0).
|
| - _fstp(Dest);
|
| // If Dest ends up being a physical xmm register, the fstp emit code
|
| // will route st(0) through a temporary stack slot.
|
| + _fstp(Dest);
|
| + // Create a fake use of Dest in case it actually isn't used,
|
| + // because st(0) still needs to be popped.
|
| + Context.insert(InstFakeUse::create(Func, Dest));
|
| }
|
| }
|
|
|
|
|