1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-24 03:33:20 +01:00
llvm-mirror/lib/Support
David Majnemer 60b0be69b7 [APInt] Don't shift into the sign bit
This fixes PR28294.

llvm-svn: 273722
2016-06-24 20:51:47 +00:00
..
Unix In openFileForRead, attempt to fetch the actual name of the file on disk -- including case -- so that clang can later warn about non-portable #include and #import directives. 2016-06-13 15:54:56 +00:00
Windows Explicitly specify the ANSI version of these Win32 APIs. While these are seemingly unrelated changes, they are all NFC because we currently default to the ANSI versions of the APIs when building for Windows. This simply makes the ANSI usage explicit. 2016-06-23 14:45:54 +00:00
Allocator.cpp
APFloat.cpp
APInt.cpp [APInt] Don't shift into the sign bit 2016-06-24 20:51:47 +00:00
APSInt.cpp
ARMBuildAttrs.cpp
ARMWinEH.cpp
Atomic.cpp
BlockFrequency.cpp
BranchProbability.cpp
CachePruning.cpp
circular_raw_ostream.cpp
CMakeLists.txt
COM.cpp
CommandLine.cpp Avoid duplicated map lookups. No functionality change intended. 2016-06-17 18:59:41 +00:00
Compression.cpp
ConvertUTF.c
ConvertUTFWrapper.cpp
COPYRIGHT.regex
CrashRecoveryContext.cpp
DAGDeltaAlgorithm.cpp
DataExtractor.cpp
DataStream.cpp
Debug.cpp
DeltaAlgorithm.cpp
Dwarf.cpp [DebugInfo] Add calling convention support for DWARF and CodeView 2016-06-08 20:34:29 +00:00
DynamicLibrary.cpp
Errno.cpp
Error.cpp
ErrorHandling.cpp
FileOutputBuffer.cpp
FileUtilities.cpp
FoldingSet.cpp
FormattedStream.cpp
GraphWriter.cpp
Hashing.cpp
Host.cpp Reapply 272328 and 272329 as a single patch. 2016-06-09 23:04:15 +00:00
IntEqClasses.cpp
IntervalMap.cpp
IntrusiveRefCntPtr.cpp
JamCRC.cpp
LEB128.cpp
LineIterator.cpp
LLVMBuild.txt
Locale.cpp
LockFileManager.cpp [LockFileManager] Improve error output by using better error messages 2016-06-04 00:34:00 +00:00
ManagedStatic.cpp [LPM] Reinstate r271781 which reinstated r271652 to replace the 2016-06-04 19:57:55 +00:00
MathExtras.cpp
MD5.cpp
Memory.cpp
MemoryBuffer.cpp
MemoryObject.cpp
Mutex.cpp
Options.cpp
Path.cpp Add support for Darwin’s 64-bit universal files with 64-bit offsets and sizes for the objects. 2016-06-20 22:16:18 +00:00
PluginLoader.cpp
PrettyStackTrace.cpp
Process.cpp
Program.cpp
RandomNumberGenerator.cpp
raw_os_ostream.cpp
raw_ostream.cpp
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
ScaledNumber.cpp
ScopedPrinter.cpp
SearchForAddressOfSpecialSymbol.cpp
SHA1.cpp
Signals.cpp Search for llvm-symbolizer binary in the same directory as argv[0], before 2016-06-09 00:53:21 +00:00
SmallPtrSet.cpp
SmallVector.cpp
SourceMgr.cpp
SpecialCaseList.cpp
Statistic.cpp Statistic: Add machine parseable json output 2016-06-15 20:19:16 +00:00
StreamingMemoryObject.cpp
StringExtras.cpp
StringMap.cpp
StringPool.cpp
StringRef.cpp
StringSaver.cpp
SystemUtils.cpp
TargetParser.cpp [AArch64] Add RAS extensions support in AArch64TargetParser. 2016-06-13 05:27:58 +00:00
TargetRegistry.cpp
Threading.cpp [LPM] Reinstate r271781 which reinstated r271652 to replace the 2016-06-04 19:57:55 +00:00
ThreadLocal.cpp
ThreadPool.cpp Removing whitespace from test commit rL273447 2016-06-22 18:01:11 +00:00
Timer.cpp
TimeValue.cpp
ToolOutputFile.cpp
Triple.cpp Add a Musl environment to the triple. 2016-06-14 12:45:33 +00:00
Twine.cpp
Unicode.cpp
Valgrind.cpp
Watchdog.cpp
YAMLParser.cpp
YAMLTraits.cpp

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