Variable Length Arrays in Structs (VLAIS)

This proposal has been accepted as a session.

Accepted Session
Microconference Session

One Line Summary

VLAIS is a gcc extension which isn't supported by clang. The unnecessary use of VLAIS in the Linux Kernel prevents the kernel from being built with clang or any other C standard compliant compiler.


Variable Length Arrays in Structs (VLAIS) are a gcc extension which is used in only a few places in the Linux Kernel. Although clang supports Variable Length Arrays (VLA), it doesn’t support VLAIS because it’s specifically disallowed by the C standard. This talk will discuss the issues surrounding VLAIS, what alternatives there are to VLAIS, and finish up with planning how to move forward in order to remove the use of VLAIS from the Linux Kernel.


LLVM Clang Linux Kernel VLAIS compilers

Presentation Materials



  • Mark Charlebois

    Qualcomm Innovation Center


    Mark Charlebois is a Director of Open Source Software Strategy at Qualcomm Innovation Center, Inc. (QuIC), a subsidiary of Qualcomm, Inc. He has been developing software for Unix, Linux and embedded systems for more than 20 years. Mark joined Qualcomm in 1999, where he initially worked on the GlobalStar satellite system. He subsequently led one of the core subsystem teams for MediaFLO, defining core parts of the system information protocol. He has worked for several years in various R&D organizations at Qualcomm and created the initial Penelope extension to Thunderbird that formed the basis for Open Source Eudora. While in R&D, Mark was an open source evangelist who helped drive the company’s open source strategy. He has moved to QuIC to take a more active role in defining its open source strategy and community engagements. Mark currently serves on the Board of the Linux Foundation. Recently he has been working on compiling the Linux kernel with Clang and helping to maintain and upstream patches to support that goal via the LLVMLinux project. Prior to Qualcomm, Mark worked at LMI in greater Vancouver, designing laser scanners. He also worked for CGI in Toronto as a real-time systems consultant using various Unix systems. Mark holds a bachelor’s degree in Systems Design Engineering from the University of Waterloo, and a master’s degree in Engineering Science from Simon Fraser University.


Leave a private comment to organizers about this proposal