- Feb 19, 2014
-
-
Daniel Jasper authored
This causes the LLVMgold plugin to segfault. More information on the replies to r201608. llvm-svn: 201669
-
Tim Northover authored
If LLVM is built without X86 as a supported target then the test would mysteriously fail. llvm-svn: 201668
-
Tim Northover authored
This fixes one immediate bug where an expression with side-effects could be emitted twice during a NEON call. It also prepares the way for folding CodeGen for many of the SISD intrinsics into a table, reducing code size and hopefully increasing performance eventually ("binary search + few switch cases" should be better than "lots of switch cases"). llvm-svn: 201667
-
Alexey Samsonov authored
llvm-svn: 201666
-
Deepak Panickal authored
llvm-svn: 201665
-
Evgeniy Stepanov authored
There are more cases when those manifest as an access below SP. llvm-svn: 201664
-
Tim Northover authored
Apparently it's not True C++. rdar://problem/16035743 still. llvm-svn: 201663
-
Renato Golin authored
Patch by Andrew Turner. llvm-svn: 201662
-
Tim Northover authored
These instructions (well, the f32 ones) are supported on 32-bit ARMv8, not just AArch64. Now that the arm_neon.td refactoring is complete, adding them is surprisingly simple. rdar://problem/16035743 llvm-svn: 201661
-
Tim Northover authored
We used to have special handling for isCrypto and isA64 bits in the NeonEmitter.cpp file (it knew the former was predicated on __ARM_FEATURE_CRYPTO and the latter on __aarch64__ and went through various contortions to make sure the correct intrinsics were emitted under the correct guard. This is ugly and has obvious scalability problems (e.g. vcvtX intrinsics are needed, which are ARMv8 only but available on both, yet another category). This patch moves the #if predicate into the arm_neon.td file directly and makes NeonEmitter.cpp agnostic about what goes in there. It also deduplicates arm_neon.td so that each desired intrinsic is mentioned in just one place (necessary because of the new mechanism for creating arm_neon.h). rdar://problem/16035743 llvm-svn: 201660
-
Tim Northover authored
There are two kinds of automatically generated tests for NEON intrinsics, both of which can be merged without adversely affecting users. 1. We check that a valid kind of __builtin_neon_XYZ overload is requested (e.g. we're not asking for a float32x4_t version when it only accepts integers. Since the __builtin_neon_XYZ intrinsics should only be used in arm_neon.h, relaxing this test and permitting AArch64 types for AArch32 should not cause a problem. The extra arm_neon.h definitions should be #ifdefed out anyway. 2. We check that intrinsics which take immediates are actually given compile-time constants within range. Since all NEON intrinsics should be backwards compatible, these tests should be identical on AArch64 and AArch32 anyway. This patch, therefore, merges the separate AArch64 and 32-bit checks. rdar://problem/16035743 llvm-svn: 201659
-
Tim Northover authored
Just a wild stab in the dark really, but in the absence of any ability to reproduce the problem... llvm-svn: 201658
-
Dmitri Gribenko authored
llvm-svn: 201657
-
Alexey Samsonov authored
1) Depend on llvm-config (configured in LLVM_CONFIG_PATH) to get necessary LLVM source/binary directories. 2) Add basic support for running lit tests (check-xsan commands). For now this "support" is far from what we want: * unit tests are not built currently. * lit tests use Clang/compiler-rt from LLVM build directory, not the host compiler or just-built compiler-rt libraries. We should make a choice on the way we intend ti run compiler-rt lit testsuite: a) use either Clang from LLVM build tree, or the host compiler. b) use either just-built runtimes, or the runtimes shipped with the host compiler. Using just-built runtimes is tricky - we have to know where to put them, so that Clang/GCC driver would pick them up (and not overwrite the existing runtimes). Using a host compiler instead of Clang from LLVM build tree will give us a chance to run lit tests under GCC (which already has support for several sanitizers). That is, I tend to make the following choice: if we're in a standalone compiler-rt build, use host compiler with its set of runtime libraries to run lit tests. This will effectively decouple "make compiler-rt" and "make check-compiler-rt" in a standalone build - the latter wouldn't invoke the former. Note that if we decide to fix LLVM/Clang/compiler-rt build system so that it would configure/build compiler-rt with just-built Clang (as we do in Makefile-based build), this will not be a problem - we can add a dependency to ensure that clang/compiler-rt are rebuilt before running compiler-rt tests. llvm-svn: 201656
-
Tim Northover authored
On x86, shifting a vector by a scalar is significantly cheaper than shifting a vector by another fully general vector. Unfortunately, because SelectionDAG operates on just one basic block at a time, the shufflevector instruction that reveals whether the right-hand side of a shift *is* really a scalar is often not visible to CodeGen when it's needed. This adds another handler to CodeGenPrepare, to sink any useful shufflevector instructions down to the basic block where they're used, predicated on a target hook (since on other architectures, doing so will often just introduce extra real work). rdar://problem/16063505 llvm-svn: 201655
-
Evgeniy Stepanov authored
This change also removes CMAKE_LINK_FLAGS setting that seems to be ignored by cmake. llvm-svn: 201654
-
Evgeniy Stepanov authored
Move asm tests to their own file. llvm-svn: 201653
-
Evgeniy Stepanov authored
llvm-svn: 201652
-
Alexey Samsonov authored
llvm-svn: 201651
-
Evgeniy Stepanov authored
These are runtime support functions for inline assembly instrumentation. This is a re-submit of r201402. Patch by Yuri Gorshenin. llvm-svn: 201650
-
Craig Topper authored
Remove special FP opcode maps and instead add enough MRM_XX formats to handle all the FP operations. This increases format by 1 bit, but decreases opcode map by 1 bit so the TSFlags size doesn't change. llvm-svn: 201649
-
Ted Kremenek authored
llvm-svn: 201648
-
Alexey Samsonov authored
This change allows to build compiler-rt libraries separately from LLVM/Clang (path to LLVM build directory should be specified at configure time). Running tests is not yet supported. llvm-svn: 201647
-
Craig Topper authored
llvm-svn: 201646
-
Craig Topper authored
llvm-svn: 201645
-
Craig Topper authored
Remove A6/A7 opcode maps. They can all be handled with a TB map, opcode of 0xa6/0xa7, and adding MRM_C0/MRM_E0 forms. Removes 376K from the disassembler tables. llvm-svn: 201641
-
Ted Kremenek authored
llvm-svn: 201640
-
Ben Langmuir authored
Explicit operator bool doesn't not play nicely with gtest assertion macros (i.e. it performs as advertised and I wish that gtest subverted it for me). llvm-svn: 201639
-
Rui Ueyama authored
Load Configuration Table may contain a pointer to SEH table. This patch is to print the offset to the table. Printing SEH table contents is a TODO. The layout of Layout Configuration Table is described in Microsoft PE/COFF Object File Format Spec, but the table's offset/size descriptions seems to be totally wrong, at least in revision 8.3 of the spec. I believe the table in this patch is the correct one. llvm-svn: 201638
-
Jason Molenda authored
because there are too many trap handlers that will have an improperly aligned caller sp and this will cause the unwinder to stop too early. llvm-svn: 201637
-
Ben Langmuir authored
This change was somehow missed from r201618 llvm-svn: 201636
-
Ben Langmuir authored
Provides a way to merge multiple vfs::FileSystem objects into a single filesystem. llvm-svn: 201635
-
David Majnemer authored
Accidentally piped the stdout from make_cxx_dr_status into cxx_dr_status.html llvm-svn: 201634
-
Mingjie Xing authored
llvm-svn: 201633
-
David Majnemer authored
llvm-svn: 201632
-
David Majnemer authored
DR18 previously forebode typedefs to be used as parameter types if they were of type 'void'. DR577 allows 'void' to be used as a function parameter type regardless from where it came. llvm-svn: 201631
-
Saleem Abdulrasool authored
This enhances the macro parser to parse and handle parameter qualifications, which is needed to support required formal parameters in macro definitions. A required parameter may not be defaulted (though providing a default value is accepted with a warning). This improves GAS compatibility. Partially addresses PR9248. llvm-svn: 201630
-
Saleem Abdulrasool authored
Rather than using std::pair, create a structure to represent the type. This is a preliminary refactoring to enable required parameter handling. Additional state is needed to indicate required parameters. This has a minor side effect of improving readability by providing more accurate names compared to first and second. llvm-svn: 201629
-
Saleem Abdulrasool authored
TU is not guaranteed to be initialised in all cases. In particular if CIdx or ast_filename is NULL (or if &TU is NULL), then clang_createTranslationUnit2 will not initialise the out parameter out_TU. This is followed by an assertion check which may perform a branch based on unitialised memory. Caught by scan-build. llvm-svn: 201628
-
Rafael Espindola authored
Clang never produces a linker private object, so this code is dead. llvm-svn: 201627
-