summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* ReleaseNotes: add note about ASTContext::WCharTy and WideCharTyHans Wennborg2013-05-201-0/+9
| | | | llvm-svn: 182280
* Q registers are encoded in fields of the same length as D registers. As Q ↵Mihai Popa2013-05-202-3/+3
| | | | | | registers are half as many, the ARM reference manual mandates the least significant bit to be zeroed out. Failure to do so should result in an undefined instruction. With this change test/MC/Disassembler/ARM/invalid-VQADD-arm.txt is passing (removed XFAIL). llvm-svn: 182279
* Nuke build of static ASan runtime on Mac OS - clang partAlexey Samsonov2013-05-201-1/+1
| | | | llvm-svn: 182278
* [nolibc] Make GetArgsAndEnv libc-independent.Peter Collingbourne2013-05-201-18/+18
| | | | | | | __libc_stack_end is made into a weak symbol if possible. If libc is not linked, read args and environment from /proc. llvm-svn: 182276
* [SystemZ] Add long branch passRichard Sandiford2013-05-2017-37/+599
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Before this change, the SystemZ backend would use BRCL for all branches and only consider shortening them to BRC when generating an object file. E.g. a branch on equal would use the JGE alias of BRCL in assembly output, but might be shortened to the JE alias of BRC in ELF output. This was a useful first step, but it had two problems: (1) The z assembler isn't traditionally supposed to perform branch shortening or branch relaxation. We followed this rule by not relaxing branches in assembler input, but that meant that generating assembly code and then assembling it would not produce the same result as going directly to object code; the former would give long branches everywhere, whereas the latter would use short branches where possible. (2) Other useful branches, like COMPARE AND BRANCH, do not have long forms. We would need to do something else before supporting them. (Although COMPARE AND BRANCH does not change the condition codes, the plan is to model COMPARE AND BRANCH as a CC-clobbering instruction during codegen, so that we can safely lower it to a separate compare and long branch where necessary. This is not a valid transformation for the assembler proper to make.) This patch therefore moves branch relaxation to a pre-emit pass. For now, calls are still shortened from BRASL to BRAS by the assembler, although this too is not really the traditional behaviour. The first test takes about 1.5s to run, and there are likely to be more tests in this vein once further branch types are added. The feeling on IRC was that 1.5s is a bit much for a single test, so I've restricted it to SystemZ hosts for now. The patch exposes (and fixes) some typos in the main CodeGen/SystemZ tests. A later patch will remove the {{g}}s from that directory. llvm-svn: 182274
* Build LSan on x86_64 only if this target is supportedAlexey Samsonov2013-05-201-8/+12
| | | | llvm-svn: 182272
* [ms-cxxabi] Look up operator delete() at every virtual dtor declaration.Peter Collingbourne2013-05-203-5/+45
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | While the C++ standard requires that this lookup take place only at the definition point of a virtual destructor (C++11 [class.dtor]p12), the Microsoft ABI may require the compiler to emit a deleting destructor for any virtual destructor declared in the TU, including ones without a body, requiring an operator delete() lookup for every virtual destructor declaration. The result of the lookup should be the same no matter which declaration is used (except in weird corner cases). This change will cause us to reject some valid TUs in Microsoft ABI mode, e.g.: struct A { void operator delete(void *); }; struct B { void operator delete(void *); }; struct C : A, B { virtual ~C(); }; As Richard points out, every virtual function declared in a TU (including this virtual destructor) is odr-used, so it must be defined in any program which declares it, or the program is ill formed, no diagnostic required. Because we know that any definition of this destructor will cause the lookup to fail, the compiler can choose to issue a diagnostic here. Differential Revision: http://llvm-reviews.chandlerc.com/D822 llvm-svn: 182270
* Extend default blacklist logic to MSan and TSan.Evgeniy Stepanov2013-05-201-3/+9
| | | | llvm-svn: 182269
* Add arm_neon.h to the builtin intrinsics module map.Douglas Gregor2013-05-202-0/+16
| | | | | | Fixes <rdar://problem/13933913>. llvm-svn: 182268
* [lsan] Fix r182256.Sergey Matveev2013-05-201-0/+1
| | | | | | Add missing call to GetUserBegin(). llvm-svn: 182267
* Implement __declspec(selectany) under -fms-extensionsReid Kleckner2013-05-207-1/+73
| | | | | | | | | | | | | | | | selectany only applies to externally visible global variables. It has the effect of making the data weak_odr. The MSDN docs suggest that unused definitions can only be dropped at linktime, so Clang uses weak instead of linkonce. MSVC optimizes away references to constant selectany data, so it must assume that there is only one definition, hence weak_odr. Reviewers: espindola Differential Revision: http://llvm-reviews.chandlerc.com/D814 llvm-svn: 182266
* Update matmul example to the latest polly versionTobias Grosser2013-05-2037-1718/+2144
| | | | | | | | | As the namings of the scops have changed, polly was not able to read in the user given .jscop files. By renaming the provided files, polly now finds them again and can use them to optimize the matmul function. We also update the generated files to reflect the very latest version of Polly. llvm-svn: 182265
* Fix broken testDouglas Gregor2013-05-201-1/+1
| | | | llvm-svn: 182264
* Add -Wincomplete-module, which detects when a header is included from a ↵Douglas Gregor2013-05-207-2/+46
| | | | | | module but isn't itself part of a module. llvm-svn: 182263
* [ASan] Nuke build of static ASan runtime on Mac OSAlexey Samsonov2013-05-201-7/+0
| | | | llvm-svn: 182261
* [Sanitizer] Build sanitizer runtimes with debug info in Makefile buildAlexey Samsonov2013-05-202-10/+12
| | | | llvm-svn: 182260
* [libsanitizer] Introduce INTERCEPTOR_WITH_SUFFIX which is to be used for ↵Alexander Potapenko2013-05-202-6/+28
| | | | | | | | appending the __DARWIN_ALIAS() version suffixes to function names on Darwin. This should fix asan/lit_tests/wait.cc under ASan. llvm-svn: 182259
* Enable pod-like optimizations for pred and succ iterators.Benjamin Kramer2013-05-202-1/+4
| | | | llvm-svn: 182257
* [lsan] GetUserBegin() in LSan.Sergey Matveev2013-05-203-1/+13
| | | | | | | Separate the notions of user-visible chunk and allocator chunk, to facilitate ASan integration. llvm-svn: 182256
* Fix realloc'ing freed/invalid pointersTimur Iskhodzhanov2013-05-202-11/+43
| | | | | | See https://code.google.com/p/address-sanitizer/issues/detail?id=187 for the details llvm-svn: 182255
* [NVPTX] Add GenericToNVVM IR converter to better handle idiomatic LLVM IR inputsJustin Holewinski2013-05-208-80/+550
| | | | | | | | | | | | | | | This converter currently only handles global variables in address space 0. For these variables, they are promoted to address space 1 (global memory), and all uses are updated to point to the result of a cvta.global instruction on the new variable. The motivation for this is address space 0 global variables are illegal since we cannot declare variables in the generic address space. Instead, we place the variables in address space 1 and explicitly convert the pointer to address space 0. This is primarily intended to help new users who expect to be able to place global variables in the default address space. llvm-svn: 182254
* [NVPTX] Fix i1 kernel parameters and global variables. ABI rules say we ↵Justin Holewinski2013-05-203-2/+49
| | | | | | need to use .u8 for i1 parameters for kernels. llvm-svn: 182253
* [asan] Modify ASan metadata atomically.Sergey Matveev2013-05-201-3/+5
| | | | | | We need this to avoid races when ASan and LSan are used together. llvm-svn: 182252
* [lsan] CMakeLists and lit test configs for LSan.Sergey Matveev2013-05-205-0/+147
| | | | llvm-svn: 182251
* [lsan] Tests for LeakSanitizer.Sergey Matveev2013-05-203-0/+329
| | | | llvm-svn: 182250
* [lsan] Common leak checking module.Sergey Matveev2013-05-203-0/+692
| | | | | | | Leak checking functionality which will be shared between LSan/ASan/MSan. llvm-svn: 182249
* [lsan] Standalone LSan initialization.Sergey Matveev2013-05-202-0/+84
| | | | llvm-svn: 182248
* [lsan] Interceptors for standalone LSan.Sergey Matveev2013-05-201-0/+249
| | | | llvm-svn: 182247
* [lsan] Thread registry for standalone LSan.Sergey Matveev2013-05-202-0/+216
| | | | llvm-svn: 182246
* [lsan] Allocator for standalone LSan.Sergey Matveev2013-05-202-0/+227
| | | | | | | This is the first in a series of CLs implementing LeakSanitizer. http://clang.llvm.org/docs/LeakSanitizer.html llvm-svn: 182245
* [ASan] Remove an unused ChunkBase fieldTimur Iskhodzhanov2013-05-201-5/+3
| | | | | | Also fix wrong alignment maths and an outdated comment llvm-svn: 182238
* PR15868 fix.Stepan Dyatkovskiy2013-05-208-19/+133
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Introduction: In case when stack alignment is 8 and GPRs parameter part size is not N*8: we add padding to GPRs part, so part's last byte must be recovered at address K*8-1. We need to do it, since remained (stack) part of parameter starts from address K*8, and we need to "attach" "GPRs head" without gaps to it: Stack: |---- 8 bytes block ----| |---- 8 bytes block ----| |---- 8 bytes... [ [padding] [GPRs head] ] [ ------ Tail passed via stack ------ ... FIX: Note, once we added padding we need to correct *all* Arg offsets that are going after padded one. That's why we need this fix: Arg offsets were never corrected before this patch. See new test-cases included in patch. We also don't need to insert padding for byval parameters that are stored in GPRs only. We need pad only last byval parameter and only in case it outsides GPRs and stack alignment = 8. Though, stack area, allocated for recovered byval params, must satisfy "Size mod 8 = 0" restriction. This patch reduces stack usage for some cases: We can reduce ArgRegsSaveArea since inner N*4 bytes sized byval params my be "packed" with alignment 4 in some cases. llvm-svn: 182237
* Disable remote MCJIT on pre-v6 ARMRenato Golin2013-05-201-0/+11
| | | | llvm-svn: 182235
* [sanitizer] factor out ByteMap from SizeClassAllocator32 so that it can be ↵Kostya Serebryany2013-05-203-25/+63
| | | | | | later replaced with a more memory-efficient implementation on 64-bit. llvm-svn: 182234
* Partially revert change in r181200 that tried to simplify JIT unit test #ifdefs.Bob Wilson2013-05-201-3/+25
| | | | | | | | | | | | | | The export list for this test requires the following symbols to be available: JITTest_AvailableExternallyFunction JITTest_AvailableExternallyGlobal The change in r181200 commented them out, which caused the test to fail to link, at least on Darwin. I have only reverted the change for arm, since I can't test the other targets and since it sounds like that change was fixing real problems for those other targets. It should be possible to rearrange the code to keep those definitions outside the #ifdefs, but that should be done by someone who can reproduce the problems that r181200 was trying to fix. llvm-svn: 182233
* Revert "Revert "Debug Info: Using declarations/DW_TAG_imported_declaration ↵David Blaikie2013-05-204-24/+117
| | | | | | | | | | | | | | | | | | | | | of variables, types, and functions."" This reverts commit r181947 (git d2990ce56a16050cac0d7937ec9919ff54c6df62 ) This addresses one of the two issues identified in r181947, ensuring that types imported via using declarations only result in a declaration being emitted for the type, not a definition. The second issue (emitting using declarations that are unused) is hopefully an acceptable increase as the real fix for this would be a bit difficult (probably at best we could record which using directives were involved in lookups - but may not have been the result of the lookup). This also ensures that DW_TAG_imported_declarations (& directives) are not emitted in line-tables-only mode as well as ensuring that typedefs only require/emit declarations (rather than definitions) for referenced types. llvm-svn: 182231
* [lld][ELF][x86_64,hexagon] Changed dynamic atoms to live in anonymous namespaceShankar Easwaran2013-05-202-74/+71
| | | | | | | | so that their names are hidden. This addresses comments raised by Sean/Rafael. llvm-svn: 182230
* Also expand 64-bit bitcasts.Jakob Stoklund Olesen2013-05-202-0/+18
| | | | llvm-svn: 182229
* Implement spill and fill of I64Regs.Jakob Stoklund Olesen2013-05-202-2/+17
| | | | llvm-svn: 182228
* Mark i64 SETCC as expand so it is turned into a SELECT_CC.Jakob Stoklund Olesen2013-05-202-0/+12
| | | | llvm-svn: 182227
* Replace some bit operations with simpler ones. No functionality change.Benjamin Kramer2013-05-193-12/+9
| | | | llvm-svn: 182226
* Don't use %g0 to materialize 0 directly.Jakob Stoklund Olesen2013-05-194-5/+14
| | | | | | | | The wired physreg doesn't work on tied operands like on MOVXCC. Add a README note to fix this later. llvm-svn: 182225
* Select i64 values with %icc conditions.Jakob Stoklund Olesen2013-05-192-0/+16
| | | | llvm-svn: 182224
* Remove declaration of __clear_cache for __APPLE__. <rdar://problem/13924072>Bob Wilson2013-05-191-0/+3
| | | | | | | | | | | | | | | This fixes a bootstrapping problem with builds for Apple ARM targets. Clang had the wrong prototype for __clear_cache with ARM targets. Rafael fixed that in clang svn r181784 and r181810, but without those changes, we can't build this code for ARM because clang reports an error about the declaration in Memory.inc not matching the builtin declaration. Some of our buildbots need to use an older compiler that doesn't have the clang fix. Since __clear_cache is never used here when __APPLE__ is defined, I'm just conditionalizing the declaration to match that. I also moved the declaration of sys_icache_invalidate inside the conditional for __APPLE__ while I was at it. llvm-svn: 182223
* Add floating point selects on %xcc predicates.Jakob Stoklund Olesen2013-05-192-0/+32
| | | | llvm-svn: 182222
* Implement SPselectfcc for i64 operands.Jakob Stoklund Olesen2013-05-193-27/+42
| | | | | | | Also clean up the arguments to all the MOVCC instructions so the operands always are (true-val, false-val, cond-code). llvm-svn: 182221
* SubArch support in MCJIT unittestRenato Golin2013-05-193-3/+31
| | | | llvm-svn: 182220
* [Sparc] Rearrange integer registers' allocation order so that register ↵Venkatraman Govindaraju2013-05-193-11/+24
| | | | | | | | allocator will use I and G registers before using L and O registers. Also, enable registers %g2-%g4 to be used in application and %g5 in 64 bit mode. llvm-svn: 182219
* Avoid rebuilding the RTSanitizerCommon objects when building clang_rt.san.Richard Smith2013-05-191-3/+3
| | | | llvm-svn: 182218
* AArch64: enable MCJIT unittestsTim Northover2013-05-193-1/+3
| | | | llvm-svn: 182217
OpenPOWER on IntegriCloud