In the attached, I've adjusted the code to use the latter of the two above methods in 3 places. In examine_variable() this reduces the complexity of the logic quite a bit and saves calling bms_is_member() in addition to bms_singleton_member().
+1 to the idea.
I think you have a typo in distribute_restrictinfo_to_rels. We should remove the call of bms_singleton_member and use relid instead.
--- a/src/backend/optimizer/plan/initsplan.c +++ b/src/backend/optimizer/plan/initsplan.c @@ -2644,7 +2644,7 @@ distribute_restrictinfo_to_rels(PlannerInfo *root, * There is only one relation participating in the clause, so it * is a restriction clause for that relation. */ - rel = find_base_rel(root, bms_singleton_member(relids)); + rel = find_base_rel(root, relid);