summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Support
Commit message (Collapse)AuthorAgeFilesLines
* Add llvm::hexDigitValue to convert single characters to hex.Jordan Rose2013-01-181-20/+1
| | | | | | This is duplicated in a couple places in the codebase. Adopt this in APFloat. llvm-svn: 172851
* Introduce llvm::sys::getProcessTriple() function.Peter Collingbourne2013-01-161-0/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | In r143502, we renamed getHostTriple() to getDefaultTargetTriple() as part of work to allow the user to supply a different default target triple at configure time. This change also affected the JIT. However, it is inappropriate to use the default target triple in the JIT in most circumstances because this will not necessarily match the current architecture used by the process, leading to illegal instruction and other such errors at run time. Introduce the getProcessTriple() function for use in the JIT and its clients, and cause the JIT to use it. On architectures with a single bitness, the host and process triples are identical. On other architectures, the host triple represents the architecture of the host CPU, while the process triple represents the architecture used by the host CPU to interpret machine code within the current process. For example, when executing 32-bit code on a 64-bit Linux machine, the host triple may be 'x86_64-unknown-linux-gnu', while the process triple may be 'i386-unknown-linux-gnu'. This fixes JIT for the 32-on-64-bit (and vice versa) build on non-Apple platforms. Differential Revision: http://llvm-reviews.chandlerc.com/D254 llvm-svn: 172627
* Revert r171829 "Split changeset_ty using iterators instead of loops" as it ↵Timur Iskhodzhanov2013-01-141-8/+6
| | | | | | breaks the VS2008 build llvm-svn: 172411
* Remove redundant 'llvm::' qualificationsDmitri Gribenko2013-01-132-2/+2
| | | | llvm-svn: 172358
* SMDiagnostic: don't emit ranges if there are /any/ multibyte characters.Jordan Rose2013-01-111-9/+12
| | | | | | | | | Right now, only OS X has a way to determine the column width of a string (PR14910). Until we have a good way to deal with this, we just won't print carets, source ranges, or fixits for SMDiagnostic if the source line has multibyte characters in it. llvm-svn: 172164
* Add basic fix-its to SMDiagnostic.Jordan Rose2013-01-101-32/+158
| | | | | | | | | | | | | Like Clang's FixItHint, SMFixIt represents an insertion, replacement, or removal of source text. One or more fix-its can be emitted as part of a diagnostic, and will be printed below the source range line to show the user how they can fix their code. Currently, the only client of SMFixIt is clang-tblgen; thus, the tests for this behavior live in clang/test/TableGen/tg-fixits.td. If/when SMFixIt is adopted within LLVM itself, those tests should be moved to the LLVM suite. llvm-svn: 172086
* Fix a race condition in the lock-file manager: once the lock file isDouglas Gregor2013-01-101-3/+13
| | | | | | gone, check for the actual file we care about. llvm-svn: 172033
* Fix a race condition in llvm::sys::path::unique_file: when we end upDouglas Gregor2013-01-101-4/+7
| | | | | | | failing to create the unique file because the path doesn't exist, don't fail if someone else manages to create the path before we do. llvm-svn: 172032
* Move the internal PrintStackTrace function that is used for ↵Argyrios Kyrtzidis2013-01-092-11/+19
| | | | | | | | llvm::sys::PrintStackTraceOnErrorSignal(), into a new function llvm::sys::PrintStackTrace, so that it's available to clients for logging purposes. llvm-svn: 171989
* Fix memory leak in YAML I/O.Nick Kledzik2013-01-081-9/+32
| | | | | | | | Stop using BumpPtrAllocator for HNodes because they have fields (vector, map) which require HNode destructors to be run. llvm-svn: 171896
* Remove the llvm-local DW_TAG_vector_type tag and add a test toEric Christopher2013-01-081-1/+0
| | | | | | make sure that vector types do work. llvm-svn: 171833
* Split changeset_ty using iterators instead of loops.Lenny Maiorani2013-01-081-6/+8
| | | | llvm-svn: 171829
* Remove what appears to be a dead llvm-specific debug tag.Eric Christopher2013-01-081-1/+0
| | | | llvm-svn: 171821
* Change SMRange to be half-open (exclusive end) instead of closed (inclusive)Jordan Rose2013-01-071-1/+1
| | | | | | | | | | This is necessary not only for representing empty ranges, but for handling multibyte characters in the input. (If the end pointer in a range refers to a multibyte character, should it point to the beginning or the end of the character in a char array?) Some of the code in the asm parsers was already assuming this anyway. llvm-svn: 171765
* Implement APFloat::isDenormal()Shuxin Yang2013-01-071-0/+7
| | | | llvm-svn: 171764
* Eric thought that Darwin was right to use -1 consistently rather thanChandler Carruth2013-01-051-1/+1
| | | | | | | | | | | leaving this undefined, and despite the sentence in the standard that seems to require it, I'll cede the point and assume its a bug in the wording. Other parts of POSIX regularly allow for things to be -1 instead of undefined, this should too. Makes things more consistent too. This should have to real impact for folks though. llvm-svn: 171574
* Try to suppress the use of clock_gettime on Darwin which apparantlyChandler Carruth2013-01-051-1/+1
| | | | | | | | | | | | | | | | | defines _POSIX_CPUTIME but doesn't support the clock_* functions. I don't test the value of _POSIX_CPUTIME because the spec merely says that if it is defined, the CPU-specific timers are available, whereas it says that _POSIX_TIMERS must be defined and defined to a value greater than zero. However, this may not work, as the POSIX spec clearly states: "If the symbolic constant _POSIX_CPUTIME is defined, then the symbolic constant _POSIX_TIMERS shall also be defined by the implementation to have the value 200112L." If this doesn't work, I'll add more hacks for Darwin. llvm-svn: 171565
* Fix an obvious typo spotted by Reid Kleckner, and breaking windows builds.Chandler Carruth2013-01-041-1/+1
| | | | llvm-svn: 171559
* Add time getters to the process interface for requesting the elapsedChandler Carruth2013-01-043-35/+103
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | wall time, user time, and system time since a process started. For walltime, we currently use TimeValue's interface and a global initializer to compute a close approximation of total process runtime. For user time, this adds support for an somewhat more precise timing mechanism -- clock_gettime with the CLOCK_PROCESS_CPUTIME_ID clock selected. For system time, we have to do a full getrusage call to extract the system time from the OS. This is expensive but unavoidable. In passing, clean up the implementation of the old APIs and fix some latent bugs in the Windows code. This might have manifested on Windows ARM systems or other systems with strange 64-bit integer behavior. The old API for this both user time and system time simultaneously from a single getrusage call. While this results in fewer system calls, it also results in a lower precision user time and if only user time is desired, it introduces a higher overhead. It may be worthwhile to switch some of the pass timers to not track system time and directly track user and wall time. The old API also tracked walltime in a confusing way -- it just set it to the current walltime rather than providing any measure of wall time since the process started the way buth user and system time are tracked. The new API is more consistent here. The plan is to eventually implement these methods for a *child* process by using the wait3(2) system call to populate an rusage struct representing the whole subprocess execution. That way, after waiting on a child process its stats will become accurate and cheap to query. llvm-svn: 171551
* Fix how YAML I/O detects flow sequences. Nick Kledzik2013-01-041-1/+1
| | | | | | | Update test case to verify flow sequence is written as a flow sequence. llvm-svn: 171514
* Move all of the header files which are involved in modelling the LLVM IRChandler Carruth2013-01-021-1/+1
| | | | | | | | | | | | | | | | | | | | | into their new header subdirectory: include/llvm/IR. This matches the directory structure of lib, and begins to correct a long standing point of file layout clutter in LLVM. There are still more header files to move here, but I wanted to handle them in separate commits to make tracking what files make sense at each layer easier. The only really questionable files here are the target intrinsic tablegen files. But that's a battle I'd rather not fight today. I've updated both CMake and Makefile build systems (I think, and my tests think, but I may have missed something). I've also re-sorted the includes throughout the project. I'll be committing updates to Clang, DragonEgg, and Polly momentarily. llvm-svn: 171366
* Resort the #include lines in include/... and lib/... with theChandler Carruth2013-01-021-1/+1
| | | | | | | | | | utils/sort_includes.py script. Most of these are updating the new R600 target and fixing up a few regressions that have creeped in since the last time I sorted the includes. llvm-svn: 171362
* Remove an unused method on Program.Chandler Carruth2012-12-312-35/+0
| | | | | | | I'm simplifying this interface as much as I can before merging it with the new process interface. llvm-svn: 171334
* Remove an unused method on the Program class.Chandler Carruth2012-12-312-10/+0
| | | | llvm-svn: 171332
* Go ahead and get rid of the old page size interface and convert all theChandler Carruth2012-12-314-19/+11
| | | | | | | users over to the new one. No sense maintaining this "compatibility" layer it seems. llvm-svn: 171331
* Flesh out a page size accessor in the new API.Chandler Carruth2012-12-313-12/+21
| | | | | | | | Implement the old API in terms of the new one. This simplifies the implementation on Windows which can now re-use the self_process's once initialization. llvm-svn: 171330
* Remove an unused function in the old Process interface.Chandler Carruth2012-12-312-28/+0
| | | | llvm-svn: 171327
* Switch this code to a more idiomatic double using namespace directive.Chandler Carruth2012-12-313-6/+3
| | | | | | | | Fix a truly odd namespace qualifier that was flat out wrong in the process. The fully qualified namespace would have been llvm::sys::TimeValue, llvm::TimeValue makes no sense. llvm-svn: 171292
* Delete a cut/paste-o from r171290. Very sorry about the noise.Chandler Carruth2012-12-311-1/+0
| | | | llvm-svn: 171291
* Suppress a MSVC warning complaining about the code working as intended.Chandler Carruth2012-12-311-0/+13
| | | | llvm-svn: 171290
* Begin sketching out the process interface.Chandler Carruth2012-12-313-1/+33
| | | | | | | | | | | | | | | | | | | | | | | The coding style used here is not LLVM's style because this is modeled after a Boost interface and thus done in the style of a candidate C++ standard library interface. I'll probably end up proposing it as a standard C++ library if it proves to be reasonably portable and useful. This is just the most basic parts of the interface -- getting the process ID out of it. However, it helps sketch out some of the boiler plate such as the base class, derived class, shared code, and static factory function. It also introduces a unittest so that I can incrementally ensure this stuff works. However, I've not even compiled this code for Windows yet. I'll try to fix any Windows fallout from the bots, and if I can't fix it I'll revert and get someone on Windows to help out. There isn't a lot more that is mandatory, so soon I'll switch to just stubbing out the Windows side and get Michael Spencer to help with implementation as he can test it directly. llvm-svn: 171289
* Fix whitespace. No functionality change.Nick Lewycky2012-12-251-2/+2
| | | | llvm-svn: 171051
* Don't call back() on an empty SmallVector. Found by -fsanitize=enum!Richard Smith2012-12-221-1/+1
| | | | llvm-svn: 170968
* Remove duplicate includes.Roman Divacky2012-12-211-1/+0
| | | | llvm-svn: 170902
* Rename the 'Attributes' class to 'Attribute'. It's going to represent a ↵Bill Wendling2012-12-191-1/+1
| | | | | | single attribute in the future. llvm-svn: 170502
* Define getHostCPUFeatures for ARM Linux platformHao Liu2012-12-131-0/+58
| | | | llvm-svn: 170085
* YAMLIO: Remove all of the template instantiation hacks, I don't see why ↵Benjamin Kramer2012-12-121-397/+318
| | | | | | | | they're necessary and it breaks linking of the unit tests. Also comes with a clang-format run on the cpp file, it had major style violations. llvm-svn: 170036
* Fix calls to getAsSignedInteger() to use long long - not int64_tNick Kledzik2012-12-121-21/+25
| | | | llvm-svn: 170030
* Fix the build on case sensitive file systems.Benjamin Kramer2012-12-121-4/+2
| | | | llvm-svn: 170021
* Initial implementation of a utility for converting native data Nick Kledzik2012-12-122-0/+882
| | | | | | | | | structures to and from YAML using traits. The first client will be the test suite of lld. The documentation will show up at: http://llvm.org/docs/YamlIO.html llvm-svn: 170019
* Make NaCl naming consistent. The triple OSType is called NaCl and is representedEli Bendersky2012-12-041-2/+2
| | | | | | | | | textually as NativeClient. Also added a link to the native client project for readers unfamiliar with it. A Clang patch will follow shortly. llvm-svn: 169291
* Sort includes for all of the .h files under the 'lib' tree. These wereChandler Carruth2012-12-041-3/+3
| | | | | | | | | | missed in the first pass because the script didn't yet handle include guards. Note that the script is now able to handle all of these headers without manual edits. =] llvm-svn: 169224
* Add a comment about the requirement that the Windows.h header be last.Chandler Carruth2012-12-041-0/+2
| | | | | | | This comment has the dual effect of blocking reorderings with the sort_include script. llvm-svn: 169221
* [Support] Make FileOutputBuffer work on Windows.Michael J. Spencer2012-12-031-55/+27
| | | | llvm-svn: 169167
* [Support][FileSystem] Fix open mode in resize_file on Windows.Michael J. Spencer2012-12-031-1/+1
| | | | llvm-svn: 169166
* Revert the header sort on this file.Michael J. Spencer2012-12-031-1/+1
| | | | | | | | "Windows.h" includes <Windows.h> which defines a bunch of stuff it shouldn't (even with all the restriction macros). We have no control over this file, so make it's scope as small as possible. llvm-svn: 169165
* Use the new script to sort the includes of every file under lib.Chandler Carruth2012-12-0340-87/+83
| | | | | | | | | | | | | | | | | Sooooo many of these had incorrect or strange main module includes. I have manually inspected all of these, and fixed the main module include to be the nearest plausible thing I could find. If you own or care about any of these source files, I encourage you to take some time and check that these edits were sensible. I can't have broken anything (I strictly added headers, and reordered them, never removed), but they may not be the headers you'd really like to identify as containing the API being implemented. Many forward declarations and missing includes were added to a header files to allow them to parse cleanly when included first. The main module rule does in fact have its merits. =] llvm-svn: 169131
* Add support for fission attributes/forms/operations -> string.Eric Christopher2012-11-301-0/+16
| | | | llvm-svn: 169056
* Fix a bug in APFloat.cpp: declare APFloat after fltSemantics itAlexey Samsonov2012-11-301-1/+3
| | | | | | | | | | | uses. APFloat::convert() takes the pointer to the fltSemantics variable, which is later accessed it in ~APFloat() desctructor. That is, semantics must still be alive at the moment we delete APFloat. Found by experimental AddressSanitizer use-after-scope checker. llvm-svn: 169047
* Switch LLVM_USE_RVALUE_REFERENCES to LLVM_HAS_RVALUE_REFERENCES.Chandler Carruth2012-11-303-3/+3
| | | | | | | | | | | | | | Rationale: 1) This was the name in the comment block. ;] 2) It matches Clang's __has_feature naming convention. 3) It matches other compiler-feature-test conventions. Sorry for the noise. =] I've also switch the comment block to use a \brief tag and not duplicate the name. llvm-svn: 168996
OpenPOWER on IntegriCloud