I noticed this code in gdb.base/watchpoint-reuse-slot.exp, proc stepi:
...
    gdb_test_multiple "stepi" $test {
	-re "($hex).*[string_to_regexp $srcline]\r\n$gdb_prompt $" {
	    set addr $expect_out(1,string)
	    if {$addr != $cur_addr} {
		pass $test
	    } else {
		fail $test
	    }
	    set cur_addr addr
	}
    }
...
The variable cur_addr is documented as:
...
 # The address the program is stopped at currently.
 set cur_addr ""
...
but in the gdb_test_multiple clause we assign the string "addr" to cur_addr,
while $addr contains the current address.
Fix this by assigning $addr instead "addr".
Tested on x86_64-linux.
gdb/testsuite/ChangeLog:
2020-05-06  Tom de Vries  <tdevries@suse.de>
	* gdb.base/watchpoint-reuse-slot.exp: Fix incorrect assignment.
+2020-05-06  Tom de Vries  <tdevries@suse.de>
+
+       * gdb.base/watchpoint-reuse-slot.exp: Fix incorrect assignment.
+
 2020-05-06  Tom de Vries  <tdevries@suse.de>
 
        * gdb.base/store.exp (check_set, up_set): Allowing missing location
 
            } else {
                fail $test
            }
-           set cur_addr addr
+           set cur_addr $addr
        }
     }
 }