Skip to content

Commit d3790a8

Browse files
Handle FPSW register in exegesis annotator
This was causing errors on one of the BHive bbs. We simply skip doing anything with the register since we can not really set the status of the floating point environment. Reviewers: ondrasej, virajbshah, orodley Reviewed By: orodley Pull Request: #340
1 parent 0920e28 commit d3790a8

File tree

2 files changed

+15
-0
lines changed

2 files changed

+15
-0
lines changed

gematria/datasets/find_accessed_addrs_exegesis.cc

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,11 @@ Expected<ExecutionAnnotations> ExegesisAnnotator::findAccessedAddrs(
160160
continue;
161161
}
162162

163+
// We cannot explicitly set FPSW, so skip it if it comes up.
164+
if (RegisterIndex == X86::FPSW) {
165+
continue;
166+
}
167+
163168
RegisterAndValue *NewRegisterValue = MemAnnotations.add_initial_registers();
164169
NewRegisterValue->set_register_name(
165170
State.getRegInfo().getName(RegisterIndex));

gematria/datasets/find_accessed_addrs_exegesis_test.cc

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -298,5 +298,15 @@ TEST_F(FindAccessedAddrsExegesisTest, AVX512XMMYMMRegisters) {
298298
"YMM16")}));
299299
}
300300

301+
TEST_F(FindAccessedAddrsExegesisTest, FPSWRegister) {
302+
auto AddrsOrErr = FindAccessedAddrsExegesis(R"asm(
303+
fnstsw
304+
)asm");
305+
ASSERT_TRUE(static_cast<bool>(AddrsOrErr));
306+
EXPECT_THAT(AddrsOrErr->initial_registers(),
307+
Not(Contains(Property(
308+
"register_name", &RegisterAndValue::register_name, "FPSW"))));
309+
}
310+
301311
} // namespace
302312
} // namespace gematria

0 commit comments

Comments
 (0)