1414
1515#include < system_error>
1616
17+ #define LLVM_360 \
18+ (LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR == 6 )
19+
20+
1721using namespace llvm ;
1822
1923static cl::opt<std::string>
@@ -30,7 +34,7 @@ int main(int argc, char **argv) {
3034 cl::ParseCommandLineOptions (argc, argv, " libclc builtin preparation tool\n " );
3135
3236 std::string ErrorMessage;
33- std::auto_ptr< Module> M;
37+ Module * M;
3438
3539 {
3640 ErrorOr<std::unique_ptr<MemoryBuffer>> BufferOrErr =
@@ -39,15 +43,24 @@ int main(int argc, char **argv) {
3943 if (std::error_code ec = BufferOrErr.getError ())
4044 ErrorMessage = ec.message ();
4145 else {
42- ErrorOr<Module *> ModuleOrErr =
43- parseBitcodeFile (BufferPtr.get ()->getMemBufferRef (), Context);
46+ #if LLVM_360
47+ ErrorOr<Module *>
48+ #else
49+ ErrorOr<std::unique_ptr<Module>>
50+ #endif
51+ ModuleOrErr =
52+ parseBitcodeFile (BufferPtr.get ()->getMemBufferRef (), Context);
4453 if (std::error_code ec = ModuleOrErr.getError ())
4554 ErrorMessage = ec.message ();
46- M.reset (ModuleOrErr.get ());
55+ #if LLVM_360
56+ M = ModuleOrErr.get ().get ();
57+ #else
58+ M = ModuleOrErr.get ().release ();
59+ #endif
4760 }
4861 }
4962
50- if (M. get () == 0 ) {
63+ if (!M ) {
5164 errs () << argv[0 ] << " : " ;
5265 if (ErrorMessage.size ())
5366 errs () << ErrorMessage << " \n " ;
@@ -81,7 +94,7 @@ int main(int argc, char **argv) {
8194 exit (1 );
8295 }
8396
84- WriteBitcodeToFile (M. get () , Out->os ());
97+ WriteBitcodeToFile (M, Out->os ());
8598
8699 // Declare success.
87100 Out->keep ();
0 commit comments