[LLVMdev] Undocumented API changes

Duncan Sands baldrick at free.fr
Wed Jun 24 01:56:04 PDT 2009


Hi Mark,

> Why are there so many undocumented (and as I far I can see) unnecessary 
> API changes?

these can now be documented in docs/ReleaseNotes-2.6.html.

Ciao,

Duncan.

> 
> Recently there has been:
> 
> 1.
> For JIT applications, please include llvm/Target/TargetSelect.h and
> call the llvm::InitializeNativeTarget() function before creating an EE.
> 
> 2.
> The major CHANGE is:  the JIT will no longer be safe for executing
> threaded applications without first invoking llvm_start_multithreaded(). 
>   Please begin to update your client applications now if this affects 
> you, as I will be throwing the switch in SVN sooner rather than later.
> 
> 3.
> The change you should make: every call to addPassesToEmitFile,
> addPassesToEmitFileFinish, addPassesToEmitMachineCode, or
> addCommonCodeGenPasses should pass an optimization level enum rather
> than true / false for "Fast". The enum is in
> llvm/Target/TargetMachine.h:
> 
> namespace CodeGenOpt {
>    enum Level {
>      Default,
>      None,
>      Aggressive
>    };
> }
> 
> 4.
> The LLVM IR opcodes Add, Sub, and Mul have been each split into two. 
> Add, Sub, and Mul now only handle integer types, and three new opcodes, 
> FAdd, FSub, and FMul now handle floating-point types.
> 
> And that's just in a few days!
> 
> I recently tried to build my compiler-generator with the svn-head 
> version of llvm.
> No chance.
> It wouldn't build, thanks to (3) above.
> Once I got it to build, it crashed.
> It all works just fine with 2.5.
> 
> I spent a lot of time and effort, getting things to work, first with 
> 2.4, then with 2.5 (The changes in the API between 2.4 and 2.5 were more 
> than I would have liked, but mainly renaming and caught by the compiler).
> 
> Remember, its not just gcc-llvm and clang that use llvm.
> 
> So please treat the API with respect.
> Don't change it often, and document EACH and EVERY change.
> 
> PS.
> 
> Change (1) above seems to be pointless.
> Why can't the code to create the EE, just call 
> llvm::InitializeNativeTarget()?
> 
> Mark.
> 
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev




More information about the llvm-dev mailing list