I looked at Sipser ("Introduction to the Theory of Computation"), Problem 7.17:
Prove that if P = NP, then every language in P, except $\emptyset$ and $\Sigma^*$, is NP-Complete.
The solution is as follows:
Let $A$ be any language in NP and let $B$ be another language not equal to $\emptyset$ or $\Sigma^*$. Then there exist strings $x \in B$ and $y \notin B$. To reduce an instance $w$ of $A$ to that of $B$, we just check in polynomial time if $w \in A$. If yes, we output $x$ and $y$ when $w \notin A$.
But I don't see why this reduction could not be applied to any language (except $\emptyset$ and $\Sigma^*$). It would not mean that the language is in P, but the reduction would be correct. The only point where I have doubts is the part where we say that $x$ and $y$ exist, do we somehow have to take into account some computing time for $x$ and $y$ ? Else the reduction would work even for unrecognizable languages for example.