summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Mark a couple of the X86 target classes as final. Allows the compiler to ↵Craig Topper2014-03-312-2/+2
| | | | | | de-virtualize some internal calls. llvm-svn: 205165
* [OPENMP] Implemented 'copyin' clauseAlexey Bataev2014-03-3118-13/+367
| | | | llvm-svn: 205164
* [core] support .gnu.linkonce sectionsShankar Easwaran2014-03-3111-11/+597
| | | | | | | | | | | .gnu.linkonce sections are similar to section groups. They were supported before section groups existed and provided a way to resolve COMDAT sections using a different design. There are few implementations that use .gnu.linkonce sections to store simple floating point constants which doesnot require complex section group support but need a way to store only one copy of the floating point constant. .gnu.linkonce based symbol resolution achieves that. llvm-svn: 205163
* ARM64CollectLOH.cpp: Tweak \param. [-Wdocumentation]NAKAMURA Takumi2014-03-311-1/+1
| | | | llvm-svn: 205162
* [ARM64] Fix materialization of an fp128 zero immediate. There currentlyChandler Carruth2014-03-312-2/+14
| | | | | | | | | is not a pattern to lower this with clever instructions that zero the register, so restrict the zero immediate legality special case to f64 and f32 (the only two sizes which fmov seems to directly support). Fixes backend errors when building code such as libxml. llvm-svn: 205161
* Add documentation for the pcs attribute, based on r129534's commit message.Nico Weber2014-03-302-1/+10
| | | | llvm-svn: 205160
* [X86] Adjust cost of FP_TO_UINT v8f32->v8i32Adam Nemet2014-03-302-0/+45
| | | | | | | | | | | | | | | There is no direct AVX instruction to convert to unsigned. I have some ideas how we may be able to do this with three vector instructions but the current backend just bails on this to get it scalarized. See the comment why we need to adjust the cost returned by BasicTTI. The test is a bit roundabout (and checks assembly rather than bit code) because I'd like it to work even if at some point we could vectorize this conversion. Fixes <rdar://problem/16371920> llvm-svn: 205159
* RTTI: refactor the uniqueness question into CGCXXABI.Tim Northover2014-03-304-56/+72
| | | | | | | This also brings the code into closer conformance with usual LLVM coding style and other surrounding conventions. llvm-svn: 205158
* PR18929:Stepan Dyatkovskiy2014-03-302-16/+39
| | | | | | | | According to ARM assembler language hash symbol is optional before immediates. For example, see here for more details: http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0473j/dom1359731154529.html llvm-svn: 205157
* MS ABI: Correct typo in mangleStringLiteralDavid Majnemer2014-03-301-1/+1
| | | | | | No functionality change. llvm-svn: 205156
* MS ABI: Simplify mangleTemplateArgsDavid Majnemer2014-03-301-7/+3
| | | | | | No functionality change. llvm-svn: 205154
* Make use of previously generated stores in ↵Hal Finkel2014-03-302-4/+39
| | | | | | | | | | | | | | | | | SelectionDAGLegalize::ExpandExtractFromVectorThroughStack When expanding EXTRACT_VECTOR_ELT and EXTRACT_SUBVECTOR using SelectionDAGLegalize::ExpandExtractFromVectorThroughStack, we store the entire vector and then load the piece we want. This is fine in isolation, but generating a new store (and corresponding stack slot) for each extraction ends up producing code of poor quality. When we scalarize a vector operation (using SelectionDAG::UnrollVectorOp for example) we generate one EXTRACT_VECTOR_ELT for each element in the vector. This used to generate one stored copy of the vector for each element in the vector. Now we search the uses of the vector for a suitable store before generating a new one, which results in much more efficient scalarization code. llvm-svn: 205153
* clang/test/Preprocessor/headermap-rel2.c: Recognize dos path.NAKAMURA Takumi2014-03-301-2/+2
| | | | llvm-svn: 205152
* Use defined(__APPLE__) rather than __APPLE__Tim Northover2014-03-301-2/+3
| | | | llvm-svn: 205150
* Force a header file input to the headermap test to have differentChandler Carruth2014-03-301-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | contents than the header file by the same name under the system header search root. Surprisingly, this is required to get the test to pass on some systems. So, it turns out that there exist filesystems in the world which unique the inode of all files based on their contents. This results in two files with the same contents at different paths suddenly having the same inode. This doesn't actually cause any problems in practice as the contents are the same, and the path used to access the files are the same. However, it can cause tests like this one to be more brittle because the file manager ends up de-duplicating the file entries by inode. We don't have any other really easy ways to observe the behavior shift because the whole point is that the #include written in the source code doesn't contain the information -- instead it is contained in the header map. If folks have other solutions they would prefer, I'm more than happy to work on them, but this seems a reasonable way to ensure that the test in question exercises the code it wants to exercise. llvm-svn: 205149
* llvm/test/MC/ELF/nocompression.s: Loosen an expression to match "llvm-mc.EXE".NAKAMURA Takumi2014-03-301-1/+1
| | | | llvm-svn: 205148
* [ARM64] Use %clang_cc1 consistently in the new arm64 codegen tests.Chandler Carruth2014-03-3021-25/+25
| | | | | | | | Really, all tests outside of the Driver tree should use %clang_cc1, but these are new and easy to fix, and many of them use buitlin headers which don't work as well without using %clang_cc1. llvm-svn: 205147
* [PowerPC] Handle VSX v2i64 SIGN_EXTEND_INREGHal Finkel2014-03-304-0/+83
| | | | | | | | | | | | | | | | sitofp from v2i32 to v2f64 ends up generating a SIGN_EXTEND_INREG v2i64 node (and similarly for v2i16 and v2i8). Even though there are no sign-extension (or algebraic shifts) for v2i64 types, we can handle v2i32 sign extensions by converting two and from v2i64. The small trick necessary here is to shift the i32 elements into the right lanes before the i32 -> f64 step. This is because of the big Endian nature of the system, we need the i32 portion in the high word of the i64 elements. For v2i16 and v2i8 we can do the same, but we first use the default Altivec shift-based expansion from v2i16 or v2i8 to v2i32 (by casting to v4i32) and then apply the above procedure. llvm-svn: 205146
* [PowerPC] Make -pg generate calls to _mcount not mcountHal Finkel2014-03-302-0/+14
| | | | | | | | | At least on REL6 (Linux/glibc 2.12), the proper symbol for generating gprof data is _mcount, not mcount. Prior to this change, compiling with -pg would generate linking errors (because of unresolved references to mcount), after this change -pg seems at least minimally functional. llvm-svn: 205144
* [Allocator] Lift the slab size and size threshold into templateChandler Carruth2014-03-304-176/+162
| | | | | | | | | | parameters rather than runtime parameters. There is only one user of these parameters and they are compile time for that user. Making these compile time seems to better reflect their intended usage as well. llvm-svn: 205143
* [Allocator] Remove forward declarations of BumpPtrAllocator. TheseChandler Carruth2014-03-305-13/+5
| | | | | | | aren't necessary and will break when it changes to be a typedef of a class template. llvm-svn: 205142
* [Allocator] Simplify unittests by using the default size parameters inChandler Carruth2014-03-301-5/+5
| | | | | | more places. llvm-svn: 205141
* [Allocator] Stop forward-declaring BumpPtrAllocator in a few places.Chandler Carruth2014-03-304-6/+4
| | | | | | | This is a necessary step to lifting some of its configuration into template parameters rather than runtime parameters. llvm-svn: 205140
* ARM64: compare RTTI names as stringsTim Northover2014-03-302-1/+57
| | | | | | | | ARM64 generates RTTI with hidden visibility, which means that typeinfo must be compared char-by-char since it's not guaranteed to be uniqued across the whole program. llvm-svn: 205139
* ARM64: use the alternate string layout on Apple platforms.Tim Northover2014-03-301-0/+4
| | | | llvm-svn: 205138
* Don't mark the declarations of the TSan annotation functions as weak.Chandler Carruth2014-03-302-9/+15
| | | | | | | | | | | | | | | | | | | | | | | | | That causes references to them to be weak references which can collapse to null if no definition is provided. We call these functions unconditionally, so a definition *must* be provided. Make the definitions provided in the .cpp file weak by re-declaring them as weak just prior to defining them. This should keep compilers which cannot attach the weak attribute to the definition happy while actually resolving the symbols correctly during the link. You might ask yourself upon reading this commit log: how did *any* of this work before? Well, fun story. It turns out we have some code in Support (BumpPtrAllocator) which both uses virtual dispatch and has out-of-line vtables used by that virtual dispatch. If you move the virtual dispatch into its header in *just* the right way, the optimizer gets to devirtualize, and remove all references to the vtable. Then the sad part: the references to this one vtable were the only strong symbol uses in the support library for llvm-tblgen AFAICT. At least, after doing something just like this, these symbols stopped getting their weak definition and random calls to them would segfault instead. Yay software. llvm-svn: 205137
* clang-modernize: fix invalid assignment in findClangApplyReplacements()Guillaume Papin2014-03-301-2/+2
| | | | | | | | | | | | | | | | | Summary: When clang-apply-replacements wasn't in the PATH or sitting next to clang-modernize, findClangApplyReplacements() was finding the wrong path (pointing to clang-modernize instead of nothing). See the related PR at http://llvm.org/bugs/show_bug.cgi?id=18421 Reviewers: klimek CC: silvas, cfe-commits Differential Revision: http://llvm-reviews.chandlerc.com/D3217 llvm-svn: 205136
* [ARM64] Fix a heap-use-after-free spotted by ASan.Chandler Carruth2014-03-301-1/+1
| | | | | | | | StringRef::lower() returns a std::string. Better yet, we can now stop thinking about what it returns and write 'auto'. It does the right thing. =] llvm-svn: 205135
* ARM64: uncopy/paste helper functionTim Northover2014-03-301-5/+4
| | | | | | | | | It was doing functional but highly suspect operations on bools due to the more limited shifting operands supported by memory instructions. Should fix some MSVC warnings. llvm-svn: 205134
* ARM64: remove unused variablesTim Northover2014-03-301-4/+0
| | | | llvm-svn: 205133
* ARM64: remove -m32/-m64 mapping with ARM.Tim Northover2014-03-302-6/+2
| | | | | | | This is causing the ARM build-bots to fail since they only include the ARM backend and can't create an ARM64 target. llvm-svn: 205132
* ARM64: override all the things.Tim Northover2014-03-307-149/+148
| | | | | | | | Actually, mostly only those in the top-level directory that already had a "virtual" attached. But it's the thought that counts and it's been a long day. llvm-svn: 205131
* Support: correct Windows normalisationSaleem Abdulrasool2014-03-302-2/+21
| | | | | | | | | | | | | If the environment is unknown and no object file is provided, then assume an "MSVC" environment, otherwise, set the environment to the object file format. In the case that we have a known environment but a non-native file format for Windows (COFF) which is used for MCJIT, then append the custom file format to the triple as an additional component. This fixes the MCJIT tests on Windows. llvm-svn: 205130
* Sema: Implement DR317David Majnemer2014-03-307-9/+19
| | | | | | | | | | | | | | | Summary: Declaring a function as inline after it has been defined is in violation of [dcl.fct.spec]p4. The program would get a strong definition instead of getting a function with linkonce_odr linkage. Reviewers: rsmith CC: cfe-commits Differential Revision: http://llvm-reviews.chandlerc.com/D3220 llvm-svn: 205129
* MS ABI: Simplify MangleByteDavid Majnemer2014-03-301-3/+2
| | | | | | | | | | The delta between '\xe1' and '\xc1' is equivalent to the one between 'a' and 'A'. This allows us to reuse the computation between '\xe1' and '\xfa' for the '\xc1' to '\xda' case. No functionality change. llvm-svn: 205128
* Tests for dr475-dr500.Richard Smith2014-03-303-24/+388
| | | | llvm-svn: 205127
* Suppress llvm/test/CodeGen/ARM64 for targeting pecoff. ARM64 is unaware of that.NAKAMURA Takumi2014-03-301-0/+5
| | | | | FIXME: Could we support them? llvm-svn: 205126
* llvm/test/Transforms/LoopStrengthReduce/ARM64/lsr-*.ll: Add explicit triple ↵NAKAMURA Takumi2014-03-302-2/+2
| | | | | | arm64-unknown for targeting pecoff. llvm-svn: 205125
* X86Subtarget.h: isTargetWindows() should tell whether he is targeting msvc.NAKAMURA Takumi2014-03-301-2/+1
| | | | | | | FYI, !isWindowsGNUEnvironment() is insufficient. It missed cygwin. FIXME: The name "isTargetWindows" should be fixed. llvm-svn: 205124
* [MC] Remove an unused (and broken) variant of the setupForSymbolicDisassemblyLang Hames2014-03-302-13/+0
| | | | | | method in MCDisassembler. llvm-svn: 205123
* [PBQP] Move invalid graph nodeId/edgeId methods into base class.Lang Hames2014-03-301-10/+10
| | | | llvm-svn: 205122
* Add a missing break.Rafael Espindola2014-03-301-0/+1
| | | | | | | | | | Patch by Tobias Güntner. I tried to write a test, but the only difference is the Changed value that gets returned. It can be tested with "opt -debug-pass=Executions -functionattrs, but that doesn't seem worth it. llvm-svn: 205121
* Support: normalize the default triple on UnixSaleem Abdulrasool2014-03-301-1/+1
| | | | | | | | | | This will fix cross-compiling buildbots (e.g. cygwin). This is in the same vein as SVN r205070. Apply this to fix the cross-compiling scenario, even though the preferred solution is to update the build system to normalize the embedded triple rather than perform this at runtime every time. This is meant to tide us over until that approach is fleshed out and applied. llvm-svn: 205120
* Remove dead declarations.Rafael Espindola2014-03-301-21/+0
| | | | | | Patch by Tobias Güntner. llvm-svn: 205119
* Remove outdated comment.Benjamin Kramer2014-03-291-1/+0
| | | | llvm-svn: 205117
* Fix a few -Wdocumentation warningsDmitri Gribenko2014-03-294-13/+13
| | | | llvm-svn: 205116
* Include string.h for memset() prototype. Thanks Dmitri.Jason Molenda2014-03-291-0/+2
| | | | llvm-svn: 205115
* Detemplatize LOHDirective.Benjamin Kramer2014-03-294-68/+49
| | | | | | | | | | | The ARM64 backend uses it only as a container to keep an MCLOHType and Arguments around so give it its own little copy. The other functionality isn't used and we had a crazy method specialization hack in place to keep it working. Unfortunately that was incompatible with MSVC. Also range-ify a couple of loops while at it. llvm-svn: 205114
* lldb arm64 import.Jason Molenda2014-03-2994-436/+9221
| | | | | | | | | | | | | | | | These changes were written by Greg Clayton, Jim Ingham, Jason Molenda. It builds cleanly against TOT llvm with xcodebuild. I updated the cmake files by visual inspection but did not try a build. I haven't built these sources on any non-Mac platforms - I don't think this patch adds any code that requires darwin, but please let me know if I missed something. In debugserver, MachProcess.cpp and MachTask.cpp were renamed to MachProcess.mm and MachTask.mm as they picked up some new Objective-C code needed to launch processes when running on iOS. llvm-svn: 205113
* ARM64: Remove unused helper function, make others static.Benjamin Kramer2014-03-293-45/+6
| | | | llvm-svn: 205112
OpenPOWER on IntegriCloud