Blogs

What XL's adoption of Clang means to you

By Archive User posted Tue October 03, 2017 02:34 PM

  

Originally posted by: Nicole Trudeau


Over the last few years, you may have read about IBM's adoption of the open source Clang front end in the XL C/C++ for Linux compilers.

What does that adoption mean to you?

What benefits will you get from it?

 

What is Clang?

Clang is a component of the LLVM open source compiler and toolchain project and provides the C and C++ language family front end for LLVM. Clang was first introduced into a portion of the IBM XL C/C++ for Linux compilers front end in V13.1.1, released Dec 2014. The IBM XL C/C++ for Linux compiler combines the Clang front-end infrastructure with the advanced optimization technology from IBM in the compiler back-end.
 
IBM and other large companies are actively contributing to the community in svn, which is mirrored in github for convenience. The community has been growing dramatically in recent years. As Clang states on their website "we intend for it to be production quality.". IBM also tests all compiler GA products with our millions of test cases to ensure that you get a quality product.
 
image

Never used IBM XL C/C++?

  • Clang = Easy migration from GCC
  • Clang supports the majority of GCC options and extensions. From Clang, "GCC is currently the defacto-standard open source compiler today, and it routinely compiles a huge volume of code ... [we] support the GCC extensions that see the most use".
  • You'll only need minimal Makefile changes to move to XLC on Linux.

Use IBM XL C/C++ V13.1 AIX/Linux or older?

  • Clang = Open Source Collaboration
  • We can now collaborate with our customers in the open source on which our language support is based by contributing back to the community. We're also pulling down from trunk so we're syncing up with the community work.  
  • Clang = Better C/C++ Language Support
  • Want to use C++14 constructs in your code? Clang supports that! For full C++ support in Clang, see here.
  • Clang = The Same Great Application Performance
  • The new compiler combines the Clang front-end infrastructure with the advanced optimization technology from IBM in the compiler back-end. You'll experience the same great application performance with the Clang front end as you did with IBM's fully proprietary front end.
  • Clang = Better Diagnostic Messages
  • From Clang, "In addition to being fast and functional, we aim to make Clang extremely user friendly. As far as a command-line compiler goes, this basically boils down to making the diagnostics (error and warning messages) generated by the compiler be as useful as possible." See here for full details on the types of diagnostic messages available.
  • Clang = Deep C++ Expertise
  • The Clang implementation is developed by a large community with deep skill depth and expertise in the C++ world. You can trust the production quality of Clang.
  • Clang = Easier management of software across multiple platforms
  • Clang is more ubiquitous than XL. Customers can use the IBM's Clang-based compiler for Linux on Power, and use other Clang-based compilers for the other platforms that they would like to deploy on. If every compiler you are using contains the same Clang front end, you will get option and source compatibility and will not encounter implementation defined behaviours.
 
Did you know that you can try the latest version of IBM XL C/C++ for Linux free of charge? The IBM XL C/C++ for Linux Community Edition, a fully-functional, production-use, free-of-charge C/C++ compiler, is available for you to download on 3 channels: Dockerhub, Linux repos, and as a tarball from IBM developerWorks. Find more info at this blog entry.
 
You may want to read a related blog, recently written by my colleague Chris Bowler about the reasons for why we (IBM XL Compilers) decided to pursue the Clang front end.
 
Have you used IBM XL C/C++ for Linux V13.1.1 or later? Leave a comment to let us know what difference the Clang front end made for you!

#IBM-XL-C,-C++,-and-Fortran-Compilers-for-POWER-servers-blog
#C/C++andFortran
0 comments
1 view

Permalink