diff --git a/lib/mkmf.rb b/lib/mkmf.rb
index cab9a3f646..79dd3f7172 100644
--- a/lib/mkmf.rb
+++ b/lib/mkmf.rb
@@ -821,20 +821,12 @@ SRC
   # You should use +have_var+ rather than +try_var+.
   def try_var(var, headers = nil, opt = "", &b)
     headers = cpp_include(headers)
-    try_compile(<<"SRC", opt, &b) or
+    try_compile(<<"SRC", opt, &b)
 #{headers}
 /*top*/
 extern int t(void);
 #{MAIN_DOES_NOTHING 't'}
 int t(void) { const volatile void *volatile p; p = &(&#{var})[0]; return !p; }
-SRC
-    try_link(<<"SRC", opt, &b)
-#{headers}
-/*top*/
-extern int t(void);
-#{MAIN_DOES_NOTHING 't'}
-extern int #{var};
-int t(void) { const volatile void *volatile p; p = &(&#{var})[0]; return !p; }
 SRC
   end
 
diff --git a/test/mkmf/test_have_var.rb b/test/mkmf/test_have_var.rb
deleted file mode 100644
index 5367ec2248..0000000000
--- a/test/mkmf/test_have_var.rb
+++ /dev/null
@@ -1,17 +0,0 @@
-# frozen_string_literal: false
-require_relative 'base'
-require 'tempfile'
-
-class TestMkmf
-  class TestHaveVar < TestMkmf
-    def test_have_var
-      assert_equal(true, have_var("ruby_version"), MKMFLOG)
-      assert_include($defs, '-DHAVE_RUBY_VERSION')
-    end
-
-    def test_not_have_var
-      assert_equal(false, have_var("rb_vm_something_flag"), MKMFLOG)
-      assert_not_include($defs, '-DHAVE_RB_VM_SOMETHING_FLAG')
-    end
-  end
-end