Is it possible to assign a structure (in C) with defined bit-fields to a SFR that is not bit addressable to gain bit addressability ?
OK, then it's a dead end. The problem with the 8051 is that it has a number of memory blocks that all have different addressing modes, thereby giving overlapping address ranges.
The problem is to always keep track of what is available in the different memory regions so the correct addressing mode gets used. There are specific keywords xdata, pdata, idata, code, ... just to tell the compiler how to access the memory. If the keyword sfr isn't allowed as attribute for a struct but only as a special data type for a global variable then no alternative will be possible.
The main thing here is that there really isn't any loss from the above. A programmer wouldn't have gained anything from accessing an 8-bit SFR from a struct instead of directly. For 16-bit SFR, byte order could have been a problem - the sfr16 keyword already have limitations. Next is of course that the SFR that are most important to be able to access as bits have their bits aliased separately - someting C bit fields can't help with.
There really are a lot of limitations when it comes to accessing memory using the 8051 and the cmpiler vendors have had to spend a lot of time to fit the C language to the processor. Still, it's very much a task for the developer to fit the code to the processor instead of using generic implementations.
The 8051 have survived well, despite large numbers of quite drastic compromises just to be able to keep down on the transistor count.