- Nov 15, 2013
-
-
Bob Wilson authored
Stop folding constant adds into GEP when the type size doesn't match. Otherwise, the adds' operands are effectively being promoted, changing the conditions of an overflow. Results are different when: sext(a) + sext(b) != sext(a + b) Problem originally found on x86-64, but also fixed issues with ARM and PPC, which used similar code. <rdar://problem/15292280> Patch by Duncan Exon Smith! llvm-svn: 194840
-
Justin Bogner authored
llvm-svn: 194838
-
Hans Wennborg authored
Even if we don't support a flag, we should be able to parse it to provide a better error message than the current default "error: no such file or directory: '/foo'" (which we should probably also tweak, btw). This also tries to clean up the test file a bit. llvm-svn: 194837
-
Tom Stellard authored
This fixes a crash with GNOME settings manager. llvm-svn: 194836
-
Alp Toker authored
llvm-svn: 194835
-
Justin Bogner authored
Up until now we were expecting that when libc++ is installed alongside clang the headers would be in lib/, which was true if the configure build was used and false if the cmake build was. We've now corrected the configure build to install in include/, and with this change we'll be able to find the correct headers with both build systems. llvm-svn: 194834
-
Justin Bogner authored
When using the configure build system, the libc++ headers were being installed in lib/, whereas cmake installs them in include/. Since include/ makes more sense for headers, we'll make both systems install headers there. llvm-svn: 194833
-
Andrew Kaylor authored
Patch by James Lyon! llvm-svn: 194832
-
Andrew Kaylor authored
Patch by Dale Martin! llvm-svn: 194831
-
Fariborz Jahanian authored
ivar when property belongs to a super class and currnt class happens to have a method with same name as property. // rdar//15473432 llvm-svn: 194830
-
Chad Rosier authored
llvm-svn: 194829
-
Chad Rosier authored
llvm-svn: 194828
-
Hans Wennborg authored
Instead of storing the vtable offset directly in the function pointer and doing a branch to check for virtualness at each call site, the MS ABI generates a thunk for calling the function at a specific vtable offset, and puts that in the function pointer. This patch adds support for emitting such thunks. However, it doesn't support pointers to virtual member functions that are variadic, have an incomplete aggregate return type or parameter, or are overriding a function in a virtual base class. Differential Revision: http://llvm-reviews.chandlerc.com/D2104 llvm-svn: 194827
-
Daniel Sanders authored
Now that FileCheck supports multiple check prefixes, we don't need to keep the little and big endian versions of this test separate anymore. Merge them back together. llvm-svn: 194826
-
Howard Hinnant authored
easier to use freshly-built clang with freshly-built libc++. Basically, this makes it possible to run clang with libc++ without having to install it, even if you don't have any version of libc++ installed in /usr/ llvm-svn: 194825
-
Cameron McInally authored
llvm-svn: 194824
-
Dmitry Vyukov authored
llvm-svn: 194823
-
Alexander Potapenko authored
llvm-svn: 194822
-
Justin Holewinski authored
llvm-svn: 194821
-
Alexander Potapenko authored
Add a test. llvm-svn: 194820
-
Daniel Sanders authored
[mips][msa] lowerMSABitClear() should use SelectionDAG::getNOT() instead of using a long-winded equivalent. Now that getConstant(-1, MVT::v2i64) works correctly on MIPS32 we can use SelectionDAG::getNOT() to produce the bitmask. llvm-svn: 194819
-
Alexey Samsonov authored
llvm-svn: 194818
-
Sylvestre Ledru authored
Summary: Currently with clang: $ clang -O20 foo.c error: invalid value '20' in '-O20' With the patch: $ clang -O20 foo.c warning: optimization level '-O20' is unsupported; using '-O3' instead. 1 warning generated. This matches the gcc behavior (with a warning added) Pass all tests: Testing: 0 .. 10.. 20.. 30.. 40.. 50.. 60.. 70.. 80.. 90.. Testing Time: 94.14s Expected Passes : 6721 Expected Failures : 20 Unsupported Tests : 17 (which was not the case of http://llvm-reviews.chandlerc.com/D2125) Reviewers: chandlerc, rafael, rengolin, hfinkel Reviewed By: rengolin CC: cfe-commits Differential Revision: http://llvm-reviews.chandlerc.com/D2152 llvm-svn: 194817
-
Alexander Potapenko authored
llvm-svn: 194816
-
Sylvestre Ledru authored
Thanks to Kal Conley for the patch llvm-svn: 194815
-
Alp Toker authored
By adding a default config.excludes pattern we can avoid individual suppressions in subdirectories. This matches LLVM's lit.cfg which also excludes a few other common non-test filenames for consistency. llvm-svn: 194814
-
Alexander Potapenko authored
llvm-svn: 194813
-
Justin Holewinski authored
llvm-svn: 194812
-
Daniel Sanders authored
Summary: When getConstant() is called for an expanded vector type, it is split into multiple scalar constants which are then combined using appropriate build_vector and bitcast operations. In addition to the usual big/little endian differences, the case where the element-order of the vector does not have the same endianness as the elements themselves is also accounted for. For example, for v4i32 on big-endian MIPS, the byte-order of the vector is <3210,7654,BA98,FEDC>. For little-endian, it is <0123,4567,89AB,CDEF>. Handling this case turns out to be a nop since getConstant() returns a splatted vector (so reversing the element order doesn't change the value) This fixes a number of cases in MIPS MSA where calling getConstant() during operation legalization introduces illegal types (e.g. to legalize v2i64 UNDEF into a v2i64 BUILD_VECTOR of illegal i64 zeros). It should also handle bigger differences between illegal and legal types such as legalizing v2i64 into v8i16. lowerMSASplatImm() in the MIPS backend no longer needs to avoid calling getConstant() so this function has been updated in the same patch. For the sake of transparency, the steps I've taken since the review are: * Added 'virtual' to isVectorEltOrderLittleEndian() as requested. This revealed that the MIPS tests were falsely passing because a polymorphic function was not actually polymorphic in the reviewed patch. * Fixed the tests that were now failing. This involved deleting the code to handle the MIPS MSA element-order (which was previously doing an byte-order swap instead of an element-order swap). This left isVectorEltOrderLittleEndian() unused and it was deleted. * Fixed build failures caused by rebasing beyond r194467-r194472. These build failures involved the bset, bneg, and bclr instructions added in these commits using lowerMSASplatImm() in a way that was no longer valid after this patch. Some of these were fixed by calling SelectionDAG::getConstant() instead, others were fixed by a new function getBuildVectorSplat() that provided the removed functionality of lowerMSASplatImm() in a more sensible way. Reviewers: bkramer Reviewed By: bkramer CC: llvm-commits Differential Revision: http://llvm-reviews.chandlerc.com/D1973 llvm-svn: 194811
-
Justin Holewinski authored
Using a special machine node is cleaner than an InlineAsm node, and fixes an assertion failure in InstrEmitter llvm-svn: 194810
-
Kostya Serebryany authored
llvm-svn: 194809
-
Yaron Keren authored
llvm-svn: 194808
-
Manuel Klimek authored
In response to post-commit feedback by Jordan, this is required to make sure path-sensitive checks work correctly. llvm-svn: 194807
-
Daniel Sanders authored
Summary: This patch (correctly) breaks some MSA tests by exposing the cases when SelectionDAG::getConstant() produces illegal types. These have been temporarily marked XFAIL and the XFAIL flag will be removed when SelectionDAG::getConstant() is fixed. There are three categories of failure: * Immediate instructions are not selected in one endian mode. * Immediates used in ldi.[bhwd] must be different according to endianness. (this only affects cases where the 'wrong' ldi is used to load the correct bitpattern. E.g. (bitcast:v2i64 (build_vector:v4i32 ...))) * Non-immediate instructions that rely on immediates affected by the previous two categories as part of their match pattern. For example, the bset match pattern is the vector equivalent of 'ws | (1 << wt)'. One test needed correcting to expect different output depending on whether big or little endian was in use. This test was test/CodeGen/Mips/msa/basic_operations.ll and experiences the second category of failure shown above. The little endian version of this test is named basic_operations_little.ll and will be merged back into basic_operations.ll in a follow up commit now that FileCheck supports multiple check prefixes. Reviewers: bkramer, jacksprat, dsanders Reviewed By: dsanders CC: llvm-commits Differential Revision: http://llvm-reviews.chandlerc.com/D1972 llvm-svn: 194806
-
Alexey Samsonov authored
llvm-svn: 194805
-
Sylvestre Ledru authored
llvm-svn: 194804
-
Dmitry Vyukov authored
this allows gdb to unwind through our hacky call llvm-svn: 194803
-
Chandler Carruth authored
location, update this reference to reflect that. llvm-svn: 194802
-
Chandler Carruth authored
externally to simplify our integration of GoogleTest into LLVM. Also, build the single source file gtest-all.cc instead of the individual source files as we don't expect these to change and thus gain nothing from increased incrementality in compiles. This makes our standard build of googletest exactly like upstream's recommended build and the sanitizer's build. It also simplifies the steps of importing a new version should we ever want one. llvm-svn: 194801
-
Kostya Serebryany authored
llvm-svn: 194800
-