1199990Srdivacky//===-- LangStandards.def - Language Standard Data --------------*- C++ -*-===// 2199990Srdivacky// 3199990Srdivacky// The LLVM Compiler Infrastructure 4199990Srdivacky// 5199990Srdivacky// This file is distributed under the University of Illinois Open Source 6199990Srdivacky// License. See LICENSE.TXT for details. 7199990Srdivacky// 8199990Srdivacky//===----------------------------------------------------------------------===// 9199990Srdivacky 10199990Srdivacky#ifndef LANGSTANDARD 11199990Srdivacky#error "LANGSTANDARD must be defined before including this file" 12199990Srdivacky#endif 13199990Srdivacky 14199990Srdivacky/// LANGSTANDARD(IDENT, NAME, DESC, FEATURES) 15199990Srdivacky/// 16199990Srdivacky/// \param IDENT - The name of the standard as a C++ identifier. 17199990Srdivacky/// \param NAME - The name of the standard. 18199990Srdivacky/// \param DESC - A short description of the standard. 19199990Srdivacky/// \param FEATURES - The standard features as flags, these are enums from the 20199990Srdivacky/// clang::frontend namespace, which is assumed to be be available. 21199990Srdivacky 22199990Srdivacky// C89-ish modes. 23199990SrdivackyLANGSTANDARD(c89, "c89", 24199990Srdivacky "ISO C 1990", 25223017Sdim C89 | ImplicitInt) 26199990SrdivackyLANGSTANDARD(c90, "c90", 27199990Srdivacky "ISO C 1990", 28223017Sdim C89 | ImplicitInt) 29199990SrdivackyLANGSTANDARD(iso9899_1990, "iso9899:1990", 30199990Srdivacky "ISO C 1990", 31223017Sdim C89 | ImplicitInt) 32199990Srdivacky 33199990SrdivackyLANGSTANDARD(c94, "iso9899:199409", 34199990Srdivacky "ISO C 1990 with amendment 1", 35223017Sdim C89 | Digraphs | ImplicitInt) 36199990Srdivacky 37199990SrdivackyLANGSTANDARD(gnu89, "gnu89", 38199990Srdivacky "ISO C 1990 with GNU extensions", 39243830Sdim LineComment | C89 | Digraphs | GNUMode | ImplicitInt) 40226633SdimLANGSTANDARD(gnu90, "gnu90", 41226633Sdim "ISO C 1990 with GNU extensions", 42243830Sdim LineComment | C89 | Digraphs | GNUMode | ImplicitInt) 43199990Srdivacky 44199990Srdivacky// C99-ish modes 45199990SrdivackyLANGSTANDARD(c99, "c99", 46199990Srdivacky "ISO C 1999", 47243830Sdim LineComment | C99 | Digraphs | HexFloat) 48199990SrdivackyLANGSTANDARD(c9x, "c9x", 49199990Srdivacky "ISO C 1999", 50243830Sdim LineComment | C99 | Digraphs | HexFloat) 51199990SrdivackyLANGSTANDARD(iso9899_1999, 52199990Srdivacky "iso9899:1999", "ISO C 1999", 53243830Sdim LineComment | C99 | Digraphs | HexFloat) 54199990SrdivackyLANGSTANDARD(iso9899_199x, 55199990Srdivacky "iso9899:199x", "ISO C 1999", 56243830Sdim LineComment | C99 | Digraphs | HexFloat) 57199990Srdivacky 58199990SrdivackyLANGSTANDARD(gnu99, "gnu99", 59199990Srdivacky "ISO C 1999 with GNU extensions", 60243830Sdim LineComment | C99 | Digraphs | GNUMode | HexFloat) 61199990SrdivackyLANGSTANDARD(gnu9x, "gnu9x", 62199990Srdivacky "ISO C 1999 with GNU extensions", 63243830Sdim LineComment | C99 | Digraphs | GNUMode | HexFloat) 64199990Srdivacky 65234353Sdim// C11 modes 66234353SdimLANGSTANDARD(c11, "c11", 67234353Sdim "ISO C 2011", 68243830Sdim LineComment | C99 | C11 | Digraphs | HexFloat) 69221345SdimLANGSTANDARD(c1x, "c1x", 70234353Sdim "ISO C 2011", 71243830Sdim LineComment | C99 | C11 | Digraphs | HexFloat) 72234353SdimLANGSTANDARD(iso9899_2011, 73234353Sdim "iso9899:2011", "ISO C 2011", 74243830Sdim LineComment | C99 | C11 | Digraphs | HexFloat) 75221345SdimLANGSTANDARD(iso9899_201x, 76234353Sdim "iso9899:2011", "ISO C 2011", 77243830Sdim LineComment | C99 | C11 | Digraphs | HexFloat) 78221345Sdim 79234353SdimLANGSTANDARD(gnu11, "gnu11", 80234353Sdim "ISO C 2011 with GNU extensions", 81243830Sdim LineComment | C99 | C11 | Digraphs | GNUMode | HexFloat) 82221345SdimLANGSTANDARD(gnu1x, "gnu1x", 83234353Sdim "ISO C 2011 with GNU extensions", 84243830Sdim LineComment | C99 | C11 | Digraphs | GNUMode | HexFloat) 85221345Sdim 86199990Srdivacky// C++ modes 87199990SrdivackyLANGSTANDARD(cxx98, "c++98", 88199990Srdivacky "ISO C++ 1998 with amendments", 89243830Sdim LineComment | CPlusPlus | Digraphs) 90226633SdimLANGSTANDARD(cxx03, "c++03", 91226633Sdim "ISO C++ 1998 with amendments", 92243830Sdim LineComment | CPlusPlus | Digraphs) 93199990SrdivackyLANGSTANDARD(gnucxx98, "gnu++98", 94226633Sdim "ISO C++ 1998 with amendments and GNU extensions", 95243830Sdim LineComment | CPlusPlus | Digraphs | GNUMode) 96199990Srdivacky 97199990SrdivackyLANGSTANDARD(cxx0x, "c++0x", 98226633Sdim "ISO C++ 2011 with amendments", 99249423Sdim LineComment | CPlusPlus | CPlusPlus11 | Digraphs) 100226633SdimLANGSTANDARD(cxx11, "c++11", 101226633Sdim "ISO C++ 2011 with amendments", 102249423Sdim LineComment | CPlusPlus | CPlusPlus11 | Digraphs) 103199990SrdivackyLANGSTANDARD(gnucxx0x, "gnu++0x", 104226633Sdim "ISO C++ 2011 with amendments and GNU extensions", 105249423Sdim LineComment | CPlusPlus | CPlusPlus11 | Digraphs | GNUMode) 106226633SdimLANGSTANDARD(gnucxx11, "gnu++11", 107226633Sdim "ISO C++ 2011 with amendments and GNU extensions", 108249423Sdim LineComment | CPlusPlus | CPlusPlus11 | Digraphs | GNUMode) 109199990Srdivacky 110243830SdimLANGSTANDARD(cxx1y, "c++1y", 111243830Sdim "Working draft for ISO C++ 2014", 112249423Sdim LineComment | CPlusPlus | CPlusPlus11 | CPlusPlus1y | Digraphs) 113243830SdimLANGSTANDARD(gnucxx1y, "gnu++1y", 114243830Sdim "Working draft for ISO C++ 2014 with GNU extensions", 115249423Sdim LineComment | CPlusPlus | CPlusPlus11 | CPlusPlus1y | Digraphs | 116243830Sdim GNUMode) 117243830Sdim 118199990Srdivacky// OpenCL 119199990SrdivackyLANGSTANDARD(opencl, "cl", 120199990Srdivacky "OpenCL 1.0", 121243830Sdim LineComment | C99 | Digraphs | HexFloat) 122239462SdimLANGSTANDARD(opencl11, "CL1.1", 123239462Sdim "OpenCL 1.1", 124243830Sdim LineComment | C99 | Digraphs | HexFloat) 125239462SdimLANGSTANDARD(opencl12, "CL1.2", 126239462Sdim "OpenCL 1.2", 127243830Sdim LineComment | C99 | Digraphs | HexFloat) 128199990Srdivacky 129218893Sdim// CUDA 130218893SdimLANGSTANDARD(cuda, "cuda", 131218893Sdim "NVIDIA CUDA(tm)", 132243830Sdim LineComment | CPlusPlus | Digraphs) 133218893Sdim 134199990Srdivacky#undef LANGSTANDARD 135