diff --git a/crypto/test/file_test.cc b/crypto/test/file_test.cc
index 473094b..21ae3e4 100644
--- a/crypto/test/file_test.cc
+++ b/crypto/test/file_test.cc
@@ -81,13 +81,13 @@
 
 FileTest::ReadResult FileTest::ReadNext() {
   // If the previous test had unused attributes or instructions, it is an error.
-  if (!unused_attributes_.empty() && !ignore_unused_attributes_) {
+  if (!unused_attributes_.empty()) {
     for (const std::string &key : unused_attributes_) {
       PrintLine("Unused attribute: %s", key.c_str());
     }
     return kReadError;
   }
-  if (!unused_instructions_.empty() && !ignore_unused_attributes_) {
+  if (!unused_instructions_.empty()) {
     for (const std::string &key : unused_instructions_) {
       PrintLine("Unused instruction: %s", key.c_str());
     }
@@ -372,10 +372,6 @@
   instructions_[key] = value;
 }
 
-void FileTest::SetIgnoreUnusedAttributes(bool ignore) {
-  ignore_unused_attributes_ = ignore;
-}
-
 int FileTestMainSilent(FileTestFunc run_test, void *arg, const char *path) {
   FileTest t(path);
   if (!t.is_open()) {
diff --git a/crypto/test/file_test.h b/crypto/test/file_test.h
index 17213d9..1a52e26 100644
--- a/crypto/test/file_test.h
+++ b/crypto/test/file_test.h
@@ -162,8 +162,6 @@
   // instructions.
   void InjectInstruction(const std::string &key, const std::string &value);
 
-  void SetIgnoreUnusedAttributes(bool ignore);
-
  private:
   void ClearTest();
   void ClearInstructions();
@@ -195,8 +193,6 @@
 
   bool is_at_new_instruction_block_ = false;
 
-  bool ignore_unused_attributes_ = false;
-
   FileTest(const FileTest &) = delete;
   FileTest &operator=(const FileTest &) = delete;
 };
