3 separate fields,one views exposed filter
If you add all 3 fields as exposed filters and hide 2 of them (with CSS or if you set all fields as "hidden" type with hook_form_FORM_ID_alter()). Then you can use the visible field as master and alter values of the two others with a #submit callback.

&lt;?php
/**
 * Implementation of hook_form_FORM_ID_alter().
 */
function mymodule_form_views_exposed_form_alter(&amp;$form, &amp;$form_state) {
    if (isset($form['field_to_expose1'])) {
        // Hide two fields and left one exposed.
        $form['field_to_hide2']['#type'] = 'hidden';
        $form['field_to_hide3']['#type'] = 'hidden';

        // Execute set_value_for_hidden_fields() as first function submit on $form['#submit'] array.
        array_unshift($form['#submit'], 'set_value_for_hidden_fields');
    }
}

function set_value_for_hidden_fields($form, &amp;$form_state) {
  $value = $form_state['values']['field_to_expose1'];

  // Modify form_state values of concerned field.
  $form_state['values']['field_to_hide2'] = $value;
  $form_state['values']['field_to_hide3'] = $value;

  // Modify form_state of concerned field to pass to the view.
  $form_state['view']-&gt;display_handler-&gt;handlers['filter']['field_to_hide2']-&gt;validated_exposed_input = $value;
  $form_state['view']-&gt;display_handler-&gt;handlers['filter']['field_to_hide3']-&gt;validated_exposed_input = $value;
}


That's unstested code, but I hope you get the idea.

But is it worth the effort? Is sharing a field between multiple content types really a blocking issue when planning an upgrade? I'm not well informed on upgrade procedures for D7 to 8, but sharing a field between content types seems to be a pretty common thing using D7.