In addition to the issues it creates (covered by the link @RobPratt provided), it's worth nothing that the upper bound probably contributes nothing to the solver's performance. It will possibly give you a more realistic gap measure (if the solver uses it), but I don't see it guiding the solver's behavior in a useful way.
If you want to test this, introduce a variable z to represent your objective function, maximize z, add a constraint z = original objective function, and use the a priori upper bound as an upper bound on the z variable. I think this will cause fewer problems than the constraint <= UB would cause.