I know little of the field and nothing of the state of the art, but wonder how smarter compilers would combine with the statistical analysis that profile-guided optimization, the JVM and branch prediction logic do. Do the improvements they bring up add up perfectly, or is smarter compilation more effective for dumber CPUs/runtimes?