In D120781, there's discussion that various linkages can cause the
definitions of functions to not be emitted, or replaced. In those cases,
what does it mean to take the address of a block?
For a function with available_externally linkage, it obviously doesn't
make sense (as the function definition will not be emitted).
Check the users of each blockaddress; permit the above linkage if the
usage is local to the function.
So for ConstantExpr, I think we'll want a new SmallPtrSet<ConstantExpr*> member for Verifier, akin to ConstantExprVisited because theoretically, two different BlockAddresses could appear in the same ConstantExpr...oh, but we will need to revist the ConstantExpr each time for each BlockAddress, so nvm. Guess I should delete my comment above.