http://llvm.org/docs/DeveloperPolicy.html#ir-backwards-compa...
I didn't work on the level of IR, so I didn't come across any problems there, but I wouldn't be surprised if the IR syntax changed slightly across minor versions.
That said, as long as you keep an indication of the LLVM version that your bitcode was generated with, I really don't see a problem with fluid bitcode specs.
While LLVM is a great compiler toolchain, it is no different than many other JIT/AOT frameworks since the old mainframe days.
What you are suggesting is how OS/400 is adapted to new CPUs.
This has interesting consequences such as retargeting anything from the frontend to anything on the backend. I'd venture a wager that in the old mainframe days, the monolithic nature of a JIT would not have been friendly to a porting campaign.
On OS/400 all executables are bytecode (TIMI) with the JIT on the kernel.
When AS/400 changed processors, the programs continued to execute as always, no change required. All languages got the new processor for free.
Any compiler that targets TIMI, gets OS/400 support for free.
However here are some links about OS/400, nowadays known as System i.
http://koeln.ccc.de/ablage/as400/as400concepts.xml
http://de.slideshare.net/tvlooy/introduction-to-the-ibm-as40...
A story about the two times TIMI actually changed:
http://www.itjungle.com/tfh/tfh082007-story01.html
Some Redbooks about ILE, which sits on top of TIMI
http://publib.boulder.ibm.com/iseries/v5r2/ic2924/books/c415...
http://publib.boulder.ibm.com/iseries/v5r2/ic2924/books/c415...
All of them can be found at
http://publib.boulder.ibm.com/iseries/v5r2/ic2924/rzaqhindex...
Coincidentally, there's been a bunch of stuff on the mailing lists recently about embedding bitcode in object files in order to support link time optimisation.
Seems like a very smart way to keep things binaries up to date without developer intervention -- and possibly even allow re-targeting to different CPU architectures after the fact. That would eliminate the need for something like Rosetta if Apple ends up switching major CPU architectures again some day.
I really think that LLVM is one of the best things to happen to computer science in a long, long time.