llvm-mirror/lib/Support
Tim Northover 49f7c6fb6b ARMv7k: use Cortex-A7 by default even for tvOS
Also actually test the default CPU from those triples.

llvm-svn: 260621
2016-02-11 23:49:08 +00:00
..
Unix Fix Clang-tidy modernize-use-nullptr and modernize-use-override warnings; other minor fixes. 2016-01-26 18:48:36 +00:00
Windows Auto-link with ole32.dll to simplify building LLVM.dll 2016-01-12 18:33:49 +00:00
Allocator.cpp Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
APFloat.cpp Add isInteger() to APFloat. 2015-11-16 21:52:48 +00:00
APInt.cpp APInt: Simplify EqualSlowCase 2016-02-10 22:13:10 +00:00
APSInt.cpp ADT: Add a string APSInt constructor. 2015-06-23 18:22:10 +00:00
ARMBuildAttrs.cpp [ARM] Add DSP build attribute and extension targeting 2016-01-25 11:26:11 +00:00
ARMWinEH.cpp Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
Atomic.cpp
BlockFrequency.cpp Add - and -= operators to BlockFrequency using saturating arithmetic. 2015-10-12 18:34:00 +00:00
BranchProbability.cpp Annotate dump() methods with LLVM_DUMP_METHOD, addressing Richard Smith r259192 post commit comment. 2016-01-29 20:50:44 +00:00
circular_raw_ostream.cpp
CMakeLists.txt llvm-config: Add preliminary Windows support 2016-02-09 19:41:14 +00:00
COM.cpp Make an RAII com initializer. 2015-04-27 17:19:26 +00:00
CommandLine.cpp Avoid overly large SmallPtrSet/SmallSet 2016-01-30 01:24:31 +00:00
Compression.cpp
ConvertUTF.c
ConvertUTFWrapper.cpp
COPYRIGHT.regex
CrashRecoveryContext.cpp Use array_lengthof. NFC 2015-10-18 05:15:38 +00:00
DAGDeltaAlgorithm.cpp Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
DataExtractor.cpp
DataStream.cpp Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
Debug.cpp The --debug-only option now takes a comma separated list of debug types. 2016-01-12 10:23:13 +00:00
DeltaAlgorithm.cpp
Dwarf.cpp Macro debug info support in LLVM IR 2015-12-10 12:56:35 +00:00
DynamicLibrary.cpp Add more wrappers for symbol APIs to the C API. 2015-06-09 15:57:30 +00:00
Errno.cpp
ErrorHandling.cpp Reorganize the C API headers to improve build times. 2015-12-18 01:46:52 +00:00
FileOutputBuffer.cpp Remove temporary file on signal. 2015-09-18 15:17:53 +00:00
FileUtilities.cpp
FoldingSet.cpp [ADT] Teach FoldingSet to be movable. 2015-08-16 23:17:27 +00:00
FormattedStream.cpp
GraphWriter.cpp [Support] Reapply r245289 "Always wait for GraphViz before opening the viewer" 2015-09-18 10:56:30 +00:00
Hashing.cpp
Host.cpp Added Skylake client to X86 targets and features 2016-01-24 10:41:28 +00:00
IntEqClasses.cpp IntEqClasses: Let join() return the new leader 2016-01-08 01:16:39 +00:00
IntervalMap.cpp
IntrusiveRefCntPtr.cpp
JamCRC.cpp [MC] Add support for generating COFF CRCs 2015-09-01 21:23:58 +00:00
LEB128.cpp
LineIterator.cpp
LLVMBuild.txt
Locale.cpp Add #include llvm-config.h to Locale.cpp which depends on LLVM_ON_WIN32. 2015-09-11 13:22:47 +00:00
LockFileManager.cpp Reapply "Use gethostuuid() on Mac to identify hosts for LockFileManager" 2015-06-29 22:16:39 +00:00
ManagedStatic.cpp Support: Clean up TSan annotations. 2015-08-18 22:31:24 +00:00
MathExtras.cpp Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
MD5.cpp Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
Memory.cpp
MemoryBuffer.cpp Fix undefined behavior when compiling in C++14 mode (with sized deletion 2016-02-04 01:21:16 +00:00
MemoryObject.cpp
Mutex.cpp Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
Options.cpp
Path.cpp Fix identify_magic() to check that a file that starts with MH_MAGIC is 2016-01-26 23:43:37 +00:00
PluginLoader.cpp
PrettyStackTrace.cpp Reorganize the C API headers to improve build times. 2015-12-18 01:46:52 +00:00
Process.cpp Assert that Process::FindInEnvPath() is passed a relative path. 2015-04-24 22:18:46 +00:00
Program.cpp
RandomNumberGenerator.cpp
raw_os_ostream.cpp
raw_ostream.cpp [Support] Use hexdigit. NFC 2016-02-08 01:03:01 +00:00
README.txt.system
regcclass.h
regcname.h
regcomp.c
regengine.inc
regerror.c
regex2.h
regex_impl.h
Regex.cpp
regexec.c
regfree.c
regstrlcpy.c
regutils.h
RWMutex.cpp Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
ScaledNumber.cpp
SearchForAddressOfSpecialSymbol.cpp
Signals.cpp Appease hosts without HAVE_BACKTRACE nor ENABLE_BACKTRACES. 2015-11-08 09:45:06 +00:00
SmallPtrSet.cpp SmallPtrSet: Make destructor available for inlining 2016-01-28 04:49:14 +00:00
SmallVector.cpp [ADT] Assert that SmallVectorBase::grow_pod() successfully reallocates memory. 2015-06-09 09:47:46 +00:00
SourceMgr.cpp MIR Serialization: Connect the machine function analysis pass to the MIR parser. 2015-06-15 20:30:22 +00:00
SpecialCaseList.cpp
Statistic.cpp Simplify memory management with std::unique_ptr. 2015-12-16 22:28:34 +00:00
StreamingMemoryObject.cpp Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
StringExtras.cpp
StringMap.cpp
StringPool.cpp
StringRef.cpp [ADT] Rewrite the StringRef::find implementation to be simpler, clearer, 2015-09-10 11:17:49 +00:00
StringSaver.cpp There is only one saver of strings. 2015-08-13 01:07:02 +00:00
SystemUtils.cpp
TargetParser.cpp [ARM] Add ARMv8-M Baseline/Mainline LLVM targeting 2016-01-15 10:24:39 +00:00
TargetRegistry.cpp Don't mention a command line option in an error. 2016-01-28 22:55:45 +00:00
Threading.cpp
ThreadLocal.cpp
ThreadPool.cpp Fix MSVC build with LLVM_ENABLE_THREADS=OFF 2015-12-15 05:53:41 +00:00
Timer.cpp [Support] Allow multiple paired calls to {start,stop}Timer() 2015-12-22 17:36:17 +00:00
TimeValue.cpp Fix some Clang-tidy modernize warnings, other minor fixes. 2015-11-04 22:32:32 +00:00
ToolOutputFile.cpp
Triple.cpp ARMv7k: use Cortex-A7 by default even for tvOS 2016-02-11 23:49:08 +00:00
Twine.cpp Annotate dump() methods with LLVM_DUMP_METHOD, addressing Richard Smith r259192 post commit comment. 2016-01-29 20:50:44 +00:00
Unicode.cpp
Valgrind.cpp Add a missing include of cstddef needed for size_t. 2015-10-15 19:41:54 +00:00
Watchdog.cpp
YAMLParser.cpp Refactor: Simplify boolean conditional return statements in llvm/lib/Support 2015-12-28 15:46:15 +00:00
YAMLTraits.cpp [YAMLTraits] Use StringRef::copy. No functionality change. 2015-08-05 14:16:38 +00:00

Design Of lib/System
====================

The software in this directory is designed to completely shield LLVM from any
and all operating system specific functionality. It is not intended to be a
complete operating system wrapper (such as ACE), but only to provide the
functionality necessary to support LLVM.

The software located here, of necessity, has very specific and stringent design
rules. Violation of these rules means that cracks in the shield could form and
the primary goal of the library is defeated. By consistently using this library,
LLVM becomes more easily ported to new platforms since the only thing requiring
porting is this library.

Complete documentation for the library can be found in the file:
  llvm/docs/SystemLibrary.html
or at this URL:
  http://llvm.org/docs/SystemLibrary.html

While we recommend that you read the more detailed documentation, for the
impatient, here's a high level summary of the library's requirements.

 1. No system header files are to be exposed through the interface.
 2. Std C++ and Std C header files are okay to be exposed through the interface.
 3. No exposed system-specific functions.
 4. No exposed system-specific data.
 5. Data in lib/System classes must use only simple C++ intrinsic types.
 6. Errors are handled by returning "true" and setting an optional std::string
 7. Library must not throw any exceptions, period.
 8. Interface functions must not have throw() specifications.
 9. No duplicate function impementations are permitted within an operating
    system class.

To accomplish these requirements, the library has numerous design criteria that
must be satisfied. Here's a high level summary of the library's design criteria:

 1. No unused functionality (only what LLVM needs)
 2. High-Level Interfaces
 3. Use Opaque Classes
 4. Common Implementations
 5. Multiple Implementations
 6. Minimize Memory Allocation
 7. No Virtual Methods