llvm-project/clang/lib/Lex
David Chisnall fa35df628a Some improvements to the handling of C11 atomic types:
- Add atomic-to/from-nonatomic cast types
- Emit atomic operations for arithmetic on atomic types
- Emit non-atomic stores for initialisation of atomic types, but atomic stores and loads for every other store / load
- Add a __atomic_init() intrinsic which does a non-atomic store to an _Atomic() type.  This is needed for the corresponding C11 stdatomic.h function.
- Enables the relevant __has_feature() checks.  The feature isn't 100% complete yet, but it's done enough that we want people testing it.

Still to do:

- Make the arithmetic operations on atomic types (e.g. Atomic(int) foo = 1; foo++;) use the correct LLVM intrinsic if one exists, not a loop with a cmpxchg.
- Add a signal fence builtin
- Properly set the fenv state in atomic operations on floating point values
- Correctly handle things like _Atomic(_Complex double) which are too large for an atomic cmpxchg on some platforms (this requires working out what 'correctly' means in this context)
- Fix the many remaining corner cases

llvm-svn: 148242
2012-01-16 17:27:18 +00:00
..
CMakeLists.txt Update the CMake build for r146959's new files. 2011-12-20 08:42:15 +00:00
HeaderMap.cpp remove unneeded llvm:: namespace qualifiers on some core types now that LLVM.h imports 2011-07-23 10:55:15 +00:00
HeaderSearch.cpp When inferring a module for a framework, first determine whether that 2012-01-13 22:31:52 +00:00
Lexer.cpp Two variables had been added for an assert, but their values were 2012-01-15 09:03:45 +00:00
LiteralSupport.cpp Fix a regression in wide character codegen. See PR11369. 2011-11-14 05:17:37 +00:00
MacroArgs.cpp Fixed exapnsion range for # and ##. 2011-10-03 18:39:03 +00:00
MacroArgs.h Fixed exapnsion range for # and ##. 2011-10-03 18:39:03 +00:00
MacroInfo.cpp For modules, all macros that aren't include guards are implicitly 2011-10-17 15:32:29 +00:00
Makefile BUILD_ARCHIVE is the default for libraries, no need to set it. 2010-07-18 00:14:47 +00:00
ModuleMap.cpp Don't infer a submodule for a framework's private header, at least for now. 2012-01-13 16:54:27 +00:00
PPCaching.cpp Don't treat 'import' as a contextual keyword when we're in a caching lexer, or when modules are disabled. 2012-01-04 06:20:15 +00:00
PPCallbacks.cpp Unweaken vtables as per http://llvm.org/docs/CodingStandards.html#ll_virtual_anch 2011-12-20 02:48:34 +00:00
PPDirectives.cpp Re-uglify #public and #private to #__public_macro and #__private_macro. 2012-01-03 19:48:16 +00:00
PPExpressions.cpp -Wc++98-compat warnings for the lexer. 2011-10-15 01:18:56 +00:00
PPLexerChange.cpp Implement support for module requirements, which indicate the language 2011-12-31 04:05:44 +00:00
PPMacroExpansion.cpp Some improvements to the handling of C11 atomic types: 2012-01-16 17:27:18 +00:00
PTHLexer.cpp Rename Diagnostic to DiagnosticsEngine as per issue 5397 2011-09-25 23:23:43 +00:00
Pragma.cpp Fix a memory leak of PragmaNamespaces, rdar://10611796. 2012-01-06 00:22:09 +00:00
PreprocessingRecord.cpp [PCH] When visiting preprocessed entities, make it possible to avoid deserializing 2011-10-25 00:29:50 +00:00
Preprocessor.cpp When loading an AST file, set SourceManager::MainFileID to the main file of the AST file, 2012-01-05 21:36:25 +00:00
PreprocessorLexer.cpp Unweaken vtables as per http://llvm.org/docs/CodingStandards.html#ll_virtual_anch 2011-12-20 02:48:34 +00:00
ScratchBuffer.cpp Rename SourceLocation::getFileLocWithOffset -> getLocWithOffset. 2011-09-19 20:40:19 +00:00
TokenConcatenation.cpp Rename SourceLocation::getFileLocWithOffset -> getLocWithOffset. 2011-09-19 20:40:19 +00:00
TokenLexer.cpp Fixed exapnsion range for # and ##. 2011-10-03 18:39:03 +00:00