1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-24 03:33:20 +01:00
llvm-mirror/lib/Support
Eli Friedman bb860a63ef Change default # of digits for APFloat::toString
This is a re-commit of r189442; I'll follow up with clang changes.

The previous default was almost, but not quite enough digits to
represent a floating-point value in a manner which preserves the
representation when it's read back in.  The larger default is much
less confusing.

I spent some time looking into printing exactly the right number of
digits if a precision isn't specified, but it's kind of complicated,
and I'm not really sure I understand what APFloat::toString is supposed
to output for FormatPrecision != 0 (or maybe the current API specification
is just silly, not sure which).  I have a WIP patch if anyone is interested.

llvm-svn: 189624
2013-08-29 23:44:34 +00:00
..
Unix Unix/Process.inc: Revert r72332, "Work around a page size issue on Cygwin." 2013-08-21 13:47:12 +00:00
Windows [Win32] mapped_file_region: Fix a bug in CreateFileMapping() that Size must contain Offset when Offset >= 65536. 2013-08-22 15:14:53 +00:00
Allocator.cpp [BumpPtrAllocator] Move DefaultSlabAllocator to a member of BumpPtrAllocator, instead of a static variable. 2013-08-28 01:02:21 +00:00
APFloat.cpp Change default # of digits for APFloat::toString 2013-08-29 23:44:34 +00:00
APInt.cpp APInt: Simplify code. No functionality change. 2013-06-01 11:26:39 +00:00
APSInt.cpp
Atomic.cpp
BlockFrequency.cpp Fix a bad overflow check pointed out by Ben. 2013-06-28 21:51:18 +00:00
BranchProbability.cpp
circular_raw_ostream.cpp
CMakeLists.txt Rename PathV2 to just Path now that it is the only one. 2013-06-26 19:33:03 +00:00
CommandLine.cpp Implement TokenizeWindowsCommandLine. 2013-07-30 19:03:20 +00:00
Compression.cpp Expose CRC-32 implementation from zlib 2013-08-14 16:03:29 +00:00
ConstantRange.cpp Don't use a potentially expensive shift if all we want is one set bit. 2013-07-11 16:05:50 +00:00
ConvertUTF.c Move UTF conversion routines from clang/lib/Basic to llvm/lib/Support 2013-01-30 12:05:05 +00:00
ConvertUTFWrapper.cpp [Support] Add a Unicode conversion wrapper from UTF16 to UTF8 2013-07-16 17:14:33 +00:00
COPYRIGHT.regex
CrashRecoveryContext.cpp [Support/CrashRecoveryContext] Make sure CrashRecoveryContext does not clear the thread-local "CurrentContext" 2013-06-19 22:53:45 +00:00
DAGDeltaAlgorithm.cpp
DataExtractor.cpp Make the host endianness check an integer constant expression. 2013-04-15 14:44:24 +00:00
DataStream.cpp Add a wrapper for open. 2013-07-16 19:44:17 +00:00
Debug.cpp Fix accidental concatenation for "outputuntil" in the -debug-buffer-size option description. 2013-02-20 22:33:46 +00:00
DeltaAlgorithm.cpp Revert r171829 "Split changeset_ty using iterators instead of loops" as it breaks the VS2008 build 2013-01-14 14:13:06 +00:00
Disassembler.cpp Remove some std stream usage from Support and TableGen 2013-08-06 22:51:21 +00:00
Dwarf.cpp Add DW_AT_GNU_odr_signature to the set of dwarf attributes. 2013-07-14 22:02:31 +00:00
DynamicLibrary.cpp Remove redundant 'llvm::' qualifications 2013-01-13 16:01:15 +00:00
Errno.cpp Remove dead or useless header checks from cmake and autoconf 2013-07-26 16:54:23 +00:00
ErrorHandling.cpp [Support] Fix some warnings when self-hosting clang on Windows 2013-07-16 14:04:08 +00:00
FileOutputBuffer.cpp Create files with the correct permission instead of changing it afterwards. 2013-07-08 15:22:09 +00:00
FileUtilities.cpp MemoryBuffer::getFile handles zero sized files, no need to duplicate the test. 2013-07-10 17:30:39 +00:00
FoldingSet.cpp Make the host endianness check an integer constant expression. 2013-04-15 14:44:24 +00:00
FormattedStream.cpp Add line tracking support to FormattedStream 2013-05-08 20:29:10 +00:00
GraphWriter.cpp Find xdot or xdot.py. 2013-07-08 20:24:54 +00:00
Hashing.cpp
Host.cpp Actually, use GNU inline asm for cpuid with clang 2013-08-16 22:42:42 +00:00
IncludeFile.cpp
IntEqClasses.cpp
IntervalMap.cpp
IntrusiveRefCntPtr.cpp
IsInf.cpp
IsNAN.cpp
LLVMBuild.txt
Locale.cpp
LocaleGeneric.inc isCharInSet refactoring. 2013-08-29 12:12:13 +00:00
LocaleWindows.inc
LocaleXlocale.inc Use the new script to sort the includes of every file under lib. 2012-12-03 16:50:05 +00:00
LockFileManager.cpp Fix boolean logic in LockFileManager and test it 2013-08-07 01:22:04 +00:00
Makefile
ManagedStatic.cpp
MD5.cpp Add support for adding the contents of a StringRef to the MD5 hash. 2013-05-31 22:34:56 +00:00
Memory.cpp Use the new script to sort the includes of every file under lib. 2012-12-03 16:50:05 +00:00
MemoryBuffer.cpp MemoryBuffer.cpp: Consider if PageSize were not 4096 in shouldUseMmap(). Follow-up to r188903. 2013-08-22 10:23:52 +00:00
MemoryObject.cpp Remove the Copied parameter from MemoryObject::readBytes. 2013-05-24 10:54:58 +00:00
Mutex.cpp
Path.cpp Fixes a bug when iterating on paths 2013-08-12 17:10:49 +00:00
PluginLoader.cpp Use the new script to sort the includes of every file under lib. 2012-12-03 16:50:05 +00:00
PrettyStackTrace.cpp Add a new watchdog timer interface. The interface does not permit handling timeouts, so 2013-03-26 01:27:52 +00:00
Process.cpp Add time getters to the process interface for requesting the elapsed 2013-01-04 23:19:55 +00:00
Program.cpp Replace use of PathV1.h in Program.cpp. 2013-06-14 19:38:45 +00:00
raw_os_ostream.cpp
raw_ostream.cpp raw_ostream.cpp: Introduce <fcntl.h> to let O_BINARY provided. Or, llvm::outs() would be set to O_TEXT by default. 2013-07-17 02:21:10 +00:00
README.txt.system
regcclass.h
regcname.h
regcomp.c
regengine.inc
regerror.c
regex2.h
regex_impl.h
Regex.cpp Fix off-by-one error in Regex::isValid 2013-08-08 17:32:45 +00:00
regexec.c
regfree.c
regstrlcpy.c
regutils.h
RWMutex.cpp
SearchForAddressOfSpecialSymbol.cpp
Signals.cpp
SmallPtrSet.cpp SmallVector and SmallPtrSet allocations now power-of-two aligned. 2013-03-29 22:07:12 +00:00
SmallVector.cpp
SourceMgr.cpp Fix size_t -> uint warnings with MSVC 64-bit build 2013-07-20 00:20:10 +00:00
Statistic.cpp Disable statistics on Release builds and move tests that depend on -stats. 2013-03-08 22:56:31 +00:00
StreamableMemoryObject.cpp Remove the Copied parameter from MemoryObject::readBytes. 2013-05-24 10:54:58 +00:00
StringExtras.cpp
StringMap.cpp
StringPool.cpp
StringRef.cpp Added const qualifier to StringRef::edit_distance member function 2013-08-24 01:50:41 +00:00
StringRefMemoryObject.cpp Remove the Copied parameter from MemoryObject::readBytes. 2013-05-24 10:54:58 +00:00
system_error.cpp Use the new script to sort the includes of every file under lib. 2012-12-03 16:50:05 +00:00
SystemUtils.cpp Move PrependMainExecutablePath next to its only user. 2013-06-14 15:12:13 +00:00
TargetRegistry.cpp
Threading.cpp Use the new script to sort the includes of every file under lib. 2012-12-03 16:50:05 +00:00
ThreadLocal.cpp
Timer.cpp Add a wrapper for open. 2013-07-16 19:44:17 +00:00
TimeValue.cpp Fix initialization-order bug in llvm::Support::TimeValue. TimeValue::now() is explicitly called during module initialization of lib/Support/Process.cpp. It reads the field of global object PosixZeroTime, which is not guaranteed to be initialized at this point. Found by AddressSanitizer with -fsanitize=init-order option. 2013-02-19 11:35:39 +00:00
ToolOutputFile.cpp Add a wrapper for open. 2013-07-16 19:44:17 +00:00
Triple.cpp [PowerPC] Support powerpc64le as a syntax-checking target. 2013-07-26 01:35:43 +00:00
Twine.cpp
Valgrind.cpp
Watchdog.cpp Add a new watchdog timer interface. The interface does not permit handling timeouts, so 2013-03-26 01:27:52 +00:00
YAMLParser.cpp Add ArrayRef constructor from None, and do the cleanups that this constructor enables 2013-05-05 00:40:33 +00:00
YAMLTraits.cpp Tighten up the yamilizer so it stops eliding empty sequences if the embedded empty sequence is the first key/value in a map which is itself in a sequence. 2013-08-15 23:17:53 +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