summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* adding tests for various dtor decl typesNaomi Musgrave2015-07-151-4/+59
| | | | | | | | | | Reviewers: eugenis, kcc Subscribers: cfe-commits Differential Revision: http://reviews.llvm.org/D11189 llvm-svn: 242351
* [probile] Fix memory leak introduced in r241824.Alexey Samsonov2015-07-151-0/+1
| | | | llvm-svn: 242350
* Create a wrapper pass for BranchProbabilityInfo.Cong Hou2015-07-157-70/+100
| | | | | | | | This new wrapper pass is useful when we want to do branch probability analysis conditionally (e.g. only in PGO mode) but don't want to add one more pass dependence. http://reviews.llvm.org/D11241 llvm-svn: 242349
* Silence GCC -Wparenthesis warningDavid Majnemer2015-07-151-3/+2
| | | | llvm-svn: 242348
* For new archive member we only need to store the full path.Rafael Espindola2015-07-154-18/+13
| | | | | | | We were storing both the path and the file name, which was redundant and easy to get confused up with. llvm-svn: 242347
* [clang-cl] Use the Windows response file tokenizerReid Kleckner2015-07-153-42/+83
| | | | | | | | | | | | | | | | | | | | We were still using the Unix response file tokenizer for all driver modes. This was difficult to get right in the beginning because there is a circular dependency. The Driver class also can't officially determine its mode until it can see all possible --driver-mode= flags, and those flags could come from the response file. Now we use the Windows parsing algorithm if the program name looks like clang-cl, or if the --driver-mode=cl flag is present on the main command line. Fixes PR23709. Reviewers: hans Differential Revision: http://reviews.llvm.org/D11229 llvm-svn: 242346
* [LoopUnswitch] Add an else clause to IsTrivialUnswitchCondition() when ↵Chen Li2015-07-151-1/+2
| | | | | | | | | | | | | | | | | checking HeaderTerm instruction type Summary: This is a trivial code change with no functionality effect. When LoopUnswitch determines trivial unswitch condition, it checks whether the loop header's terminator instruction is a branch instruction or switch instruction since trivial unswitch condition can only apply to these two instruction types. The current code does not fail the check directly on other instruction types, but check the nullness of LoopExitBB variable instead. The added else clause makes the check fail immediately on other instruction types and makes the code more obvious. Reviewers: reames Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D11239 llvm-svn: 242345
* [Makefiles] One more library rename to align with CMakeKeno Fischer2015-07-152-4/+4
| | | | | | | | This one I accidentally missed last time because I confused it with the lldbUtility library. After this, all makefile libraries should have the same names as their CMake counterparts. llvm-svn: 242344
* COFF: Implement x86 delay-load thunks.Rui Ueyama2015-07-152-19/+81
| | | | llvm-svn: 242343
* COFF: Fix mangled dllexported names.Rui Ueyama2015-07-156-23/+29
| | | | | | | | | If a symbol is exported as /export:foo, and foo is resolved as a mangled name (_foo@<number> or ?foo@@Y...), that mangled name should be written to the export table. Previously, we wrote the original name to the export table. llvm-svn: 242342
* test-release.sh: Run both .o files through sed before comparing themHans Wennborg2015-07-151-3/+4
| | | | | | | | | | On some systems (e.g. Mac OS X), sed will add a newline to the end of the output if there wasn't one already. This would cause false cmp errors since the .o file from Phase 2 was passed through sed and the one from Phase 3 wasn't. Work around this by passing both through sed. llvm-svn: 242341
* TargetRegisterInfo: Provide a way to check assigned registers in ↵Matthias Braun2015-07-158-10/+19
| | | | | | | | | | getRegAllocationHints() Pass a const reference to LiveRegMatrix to getRegAllocationHints() because some targets can prodive better hints if they can test whether a physreg has been used for register allocation yet. llvm-svn: 242340
* MIR Serialization: Serialize references from the stack objects to named allocas.Alex Lorenz2015-07-156-13/+61
| | | | | | | | | This commit serializes the references to the named LLVM alloca instructions from the stack objects in the machine frame info. This commit adds a field 'Name' to the struct 'yaml::MachineStackObject'. This new field is used to store the name of the alloca instruction when the alloca is present and when it has a name. llvm-svn: 242339
* Add a "debugger tuning" concept that allows us to fine-tune how wePaul Robinson2015-07-154-11/+116
| | | | | | | | | | | emit debug info, according to the preferences of the different debuggers used on various targets. Darwin and FreeBSD default to tuning for LLDB; PS4 defaults to tuning for the SCE (Sony Computer Entertainment) debugger. All others default to GDB. Differential Revision: http://reviews.llvm.org/D8506 llvm-svn: 242338
* Fix mergefunc infinite loopJF Bastien2015-07-152-2/+46
| | | | | | | | | | | | | | | Self-referential constants containing references to a merged function no longer cause the MergeFunctions pass to infinite loop. Also adds a reproduction IR which would otherwise fail, which was isolated from a similar issue in Chromium. Author: jrkoenig Reviewers: nlewycky, jfb Subscribers: llvm-commits, nlewycky, jfb Differential Revision: http://reviews.llvm.org/D11208 llvm-svn: 242337
* Simplify a few uses of remove_filename by using parent_path instead.Rafael Espindola2015-07-153-7/+4
| | | | llvm-svn: 242334
* Remove shell-specific code from TestLoadUnload Makefile.Chaoren Lin2015-07-151-5/+7
| | | | | | | | | | Reviewers: clayborg, sivachandra Subscribers: lldb-commits Differential Revision: http://reviews.llvm.org/D11202 llvm-svn: 242332
* Switch the release script to build with CMake by default (PR21561)Hans Wennborg2015-07-151-48/+66
| | | | | | | | | | | | | | | | | | | | It retains the possibility to use the autoconf build with a command-line option ('-use-autoconf'), and uses that by default on Darwin since compiler-rt requires it on that platform. This commit also removes the "Release-64" flavour and related logic. The script would previously do two builds unless the '-no-64bit' flag was passed, but on my machine and from those I asked this always ended up producing two 64-bit builds, causing much confusion. It also removes the -build-triple option, which caused the --build= flag to get passed to ./configure. This was presumably intended for cross-compiling, but none of the release testers use it. If someone does want to pass it, they can use '-configure-flags --build=foo' instead. Differential Revision: http://reviews.llvm.org/D10715 llvm-svn: 242331
* Handle the error of trying to convert a regular archive to a thin one.Rafael Espindola2015-07-154-2/+31
| | | | | | While at it, test that we can add to a thin archive. llvm-svn: 242330
* Finally, with no users for shell-preserves-root, remove it from lit.cfg.Yaron Keren2015-07-151-4/+0
| | | | llvm-svn: 242329
* [Static Analyzer] Do not fail silently, when the analyzer is invoked from ↵Gabor Horvath2015-07-151-1/+6
| | | | | | tooling lib, an analyzer plugin is loaded, but the runtime linker fails to link. llvm-svn: 242326
* Erase REQUIRES: shell-preserves-root from remaining tests, see r242312.þYaron Keren2015-07-159-23/+0
| | | | llvm-svn: 242323
* Rename doFunction() in BFI to calculate() and change its parameters from ↵Cong Hou2015-07-153-12/+12
| | | | | | | | pointers to references. http://reviews.llvm.org/D11196 llvm-svn: 242322
* Erase REQUIRES: shell-preserves-root from more tests, see r242312.Yaron Keren2015-07-155-15/+0
| | | | llvm-svn: 242321
* Analyze recursive PHI nodes in BasicAATobias Edler von Koch2015-07-152-0/+101
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: This patch allows phi nodes like %x = phi [ %incptr, ... ] [ %var, ... ] %incptr = getelementptr %x, 1 to be analyzed by BasicAliasAnalysis. In aliasPHI, we can detect incoming values that are recursive GEPs with a constant offset. Instead of trying to analyze a recursive GEP (and failing), we now ignore it and instead set the size of the memory referenced by the PHINode to UnknownSize. This represents all the possible memory locations the pointer represented by the PHINode could be advanced to by the GEP. For now, this new behavior is turned off by default to allow debugging of performance degradations seen with SPEC/x86 and Hexagon benchmarks. The flag -basicaa-recphi turns it on. Reviewers: hfinkel, sanjoy Subscribers: tobiasvk_caf, sanjoy, llvm-commits Differential Revision: http://reviews.llvm.org/D10368 llvm-svn: 242320
* Use accept instead of accept4 for Android.Chaoren Lin2015-07-152-2/+23
| | | | | | | | | | | | | | | Summary: The accept4 syscall is missing on older ARM Android kernels, and the accept() call is implemented with the accept4 syscall, so we'll need to call the accept syscall directly. Reviewers: vharron, tberghammer, labath Subscribers: ovyalov, chaoren, labath, tberghammer, aemerson, lldb-commits Differential Revision: http://reviews.llvm.org/D10887 llvm-svn: 242319
* Default to linking lldb-server statically for Android.Chaoren Lin2015-07-152-6/+15
| | | | | | | | | | Reviewers: vharron, tberghammer Subscribers: chaoren, labath, tberghammer, lldb-commits Differential Revision: http://reviews.llvm.org/D10858 llvm-svn: 242318
* Allow any comment to be a trailing comment when -fparse-all-comments is on.James Dennett2015-07-152-7/+132
| | | | | | | | | | | | | | | | | | | | | | | | This helps with freeform documentation styles, where otherwise code like enum class E { E1, // D1 E2 // D2 }; would result in D1 being associated with E2. To properly associate E1 with D1 and E2 with D2, this patch allows all raw comments C such that C.isParseAllComments() to participate in trailing comment checks inside getRawCommentForDeclNoCache. This takes care of linking the intended documentation with the intended decls. There remains an issue with code like: foo(); // DN int x; To prevent DN from being associated with x, this patch adds a new test on preceding-line comments C (where C.isParseAllComments() and also C's kind is RCK_OrdinaryBCPL or RCK_OrdinaryC) that checks whether C is the first non-whitespace thing on C's starting line. Patch from Luke Zarko <zarko@google.com>, D11069 reviewed by rsmith. llvm-svn: 242317
* clang-format: Fix return type breaking with overloaded operator functionsBirunthan Mohanathas2015-07-153-15/+86
| | | | | | Differential Revision: http://reviews.llvm.org/D11177 llvm-svn: 242316
* -disable-llvm-optzns in one clang test.Evgeniy Stepanov2015-07-151-2/+2
| | | | | | | The intent is to test Clang codegen at -O1, and not the LLVM optimization pipeline. llvm-svn: 242315
* Actually requiring shell disables the test on Windows whereasYaron Keren2015-07-152-5/+0
| | | | | | | previously requiring shell-preserves-root did not, so do not require anything. llvm-svn: 242314
* [PPC64] Update tests for vec_sldBill Schmidt2015-07-151-1/+145
| | | | | | | | | | | Revision 224297 modified the behavior of vec_sld for little endian so that LLVM will generate the correct corresponding vsldoi instruction. I neglected to update the existing tests, which continued to pass because they were not specific enough. This patch adds enough specificity to the tests to make them useful for BE and LE testing of vec_sld. llvm-svn: 242313
* Since r179283, internal shell is default on windows and so shell-preserves-rootYaron Keren2015-07-152-2/+2
| | | | | | | | | | | | | | | is true on MSYS bash although this requires: used to disable tests on MSYS bash. Nevertheless, all tests requiring shell-preserves-root do pass except for Driver/darwin-sdkroot.c. It will require a patch, either by disabling it on Windows or by fixing shell-preserves-root to really be true only on MSYS and making darwin-sdkroot.c its only user. In any case, all other tests requiring shell-preserves-root do not really require it so I'm replacing REQUIRES: shell-preserves-root with REQUIRES: shell in two tests first. llvm-svn: 242312
* Revert "Refactor optimizeUncoalescable logic"Bruno Cardoso Lopes2015-07-151-246/+127
| | | | | | | | | | Likely broke compilation on ARM: http://lab.llvm.org:8011/builders/clang-native-arm-lnt/builds/13054 This reverts commit 0b7824464fbe3d3f386e2d4aef6a431422709e53. llvm-svn: 242311
* Revert "Look through PHIs to find additional register sources"Bruno Cardoso Lopes2015-07-154-378/+83
| | | | | | | | | | Likely broke compilation on ARM: http://lab.llvm.org:8011/builders/clang-native-arm-lnt/builds/13054 This reverts commit 131ce4a838c081516cbfed039fc986b33e3979d6. llvm-svn: 242310
* Run clang-format on Tools.h, the indentation is inconsistentReid Kleckner2015-07-151-392/+378
| | | | llvm-svn: 242309
* Test commit.Cong Hou2015-07-151-1/+0
| | | | | | This is a test commit (one blank line deleted). llvm-svn: 242308
* [Targets] Define __BOOL_DEFINED for Windows targets in C++ modeDavid Majnemer2015-07-152-0/+4
| | | | | | | | | | MSVC 4.2 didn't have bool as a builtin type but MSVC 5.0 does. When they added it, they added a macro (__BOOL_DEFINED) which allows build scripts and the like to know if they should provide their own bool. Clang always supports bool as a builtin type in C++ mode. llvm-svn: 242307
* Fix -data-info-line when source includes column number.Dawn Perchik2015-07-151-1/+1
| | | | | | | | | | | | This fixes an off-by-one bug in CMICmdCmdDataInfoLine::Acknowledge. Given: LineEntry: \[0x0000000100000f37-0x0000000100000f45\): /path/to/file:123:1 -data-info-line would report the line as 12, omitting the last digit. Reviewed by: ki.stfu, abidh Subscribers: lldb-commits Differential Revision: http://reviews.llvm.org/D11209 llvm-svn: 242306
* [NativeProcessLinux] Integrate MainLoopPavel Labath2015-07-159-811/+276
| | | | | | | | | | | | | | | | Summary: This commit integrates MainLoop into NativeProcessLinux. By registering a SIGCHLD handler with the llgs main loop, we can get rid of the special monitor thread in NPL, which saves as a lot of thread ping-pong when responding to client requests (e.g. qThreadInfo processing time has been reduced by about 40%). It also makes the code simpler, IMHO. Reviewers: ovyalov, clayborg, tberghammer, chaoren Subscribers: lldb-commits Differential Revision: http://reviews.llvm.org/D11150 llvm-svn: 242305
* Delete declared but not implemented functions.Rafael Espindola2015-07-151-2/+0
| | | | llvm-svn: 242304
* Add the ability to AST match a variable declaration that is an exception ↵Aaron Ballman2015-07-154-3/+35
| | | | | | variable. llvm-svn: 242303
* Debug Info: Add basic support for external types references.Adrian Prantl2015-07-159-3/+100
| | | | | | | | | | | | | | This is a necessary prerequisite for bootstrapping the emission of debug info inside modules. - Adds a FlagExternalTypeRef to DICompositeType. External types must have a unique identifier. - External type references are emitted using a forward declaration with a DW_AT_signature([DW_FORM_ref_sig8]) based on the UID. http://reviews.llvm.org/D9612 llvm-svn: 242302
* Re-indent the CMake refactor to two-space indentionJonathan Peyton2015-07-1511-1011/+1010
| | | | | | | | | | | I apologize for this nasty commit, but I somehow overlooked Chandler's comment to re-indent these files to two space indention. I know this is a horrible commit, but I figured if it was done quickly after the first one, not too many conflicts would arise. Again, I'm sorry and won't do this again. llvm-svn: 242301
* Add missing load/store flags to thumb2 instructions.Pete Cooper2015-07-152-2/+5
| | | | | | | | | | | | | These were the cause of a verifier error when building 7zip with -verify-machineinstrs. Running 'make check' with the verifier triggered the same error on the test here so i've updated the test to run the verifier on one of its runs instead of adding a new one. While looking at this code, there was a stale comment that these instructions were only used for disassembly. This probably used to be the case, but they are now used in the 'ARM load / store optimization pass' too. llvm-svn: 242300
* clang-format: Fix column layout with a comment in the last line.Daniel Jasper2015-07-152-1/+7
| | | | | | | | | | | | | | | | | | Before: int aaaaa[] = { 1, 2, 3, // comment 4, 5, 6 // comment }; After: int aaaaa[] = { 1, 2, 3, // comment 4, 5, 6 // comment }; llvm-svn: 242299
* Large Refactor of CMake build systemJonathan Peyton2015-07-1528-2390/+1553
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit improves numerous functionalities of the OpenMP CMake build system to be more conducive with LLVM's build system and build philosophies. The CMake build system, as it was before this commit, was not up to LLVM's standards and did not implement the configuration stage like most CMake based build systems offer (check for compiler flags, libraries, etc.) In order to improve it dramatically in a short period of time, a large refactoring had to be done. The main changes done with this commit are as follows: * Compiler flag checks - The flags are no longer grabbed from compiler specific directories. They are checked for availability in config-ix.cmake and added accordingly inside LibompHandleFlags.cmake. * Feature checks were added in config-ix.cmake. For example, the standard CMake module FindThreads is probed for the threading model to use inside the OpenMP library. * OS detection - There is no longer a LIBOMP_OS variable, OS-specifc build logic is wrapped around the WIN32 and APPLE macros with !(WIN32 OR APPLE) meaning a Unix flavor of some sort. * Got rid of vestigial functions/macros/variables * Added new libomp_append() function which is used everywhere to conditionally or undconditionally append to a list * All targets have the libomp prefix so as not to interfere with any other project * LibompCheckLinkerFlag.cmake module was added which checks for linker flags specifically for building shared libraries. * LibompCheckFortranFlag.cmake module was added which checks for fortran flag availability. * Removed most of the cruft from the translation between the perl+Makefile based build system and this one. The remaining components that they share are perl scripts which I'm in the process of removing. There is still more left to do. The perl scripts still need to be removed, and a config.h.in file (or similarly named) needs to be added with #cmakedefine lines in it. But this is a much better first step than the previous system. Differential Revision: http://reviews.llvm.org/D10656 llvm-svn: 242298
* [PPC64LE] Fix vec_sld semantics for little endianBill Schmidt2015-07-151-24/+203
| | | | | | | | | | | | | | | | | | | | | | | | | | | The vec_sld interface provides access to the vsldoi instruction. Unlike most of the vec_* interfaces, we do not attempt to change the generated code for vec_sld based on the endian mode. It is too difficult to correctly infer the desired semantics because of different element types, and the corrected instruction sequence is expensive, involving loading a permute control vector and performing a generalized permute. For GCC, this was implemented as "Don't touch the vec_sld" implementation. When it came time for the LLVM implementation, I did the same thing. However, this was hasty and incorrect. In LLVM's version of altivec.h, vec_sld was previously defined in terms of the vec_perm interface. Because vec_perm semantics are adjusted for little endian, this means that leaving vec_sld untouched causes it to generate something different for LE than for BE. Not good. This patch adjusts the form of vec_perm that is used for vec_sld and vec_vsldoi, effectively undoing the modifications so that the same vsldoi instruction will be generated for both BE and LE. There is an accompanying back-end patch to take care of some small ripple effects caused by these changes. llvm-svn: 242297
* [PPC64LE] Fix vec_sld semantics for little endianBill Schmidt2015-07-151-4/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The vec_sld interface provides access to the vsldoi instruction. Unlike most of the vec_* interfaces, we do not attempt to change the generated code for vec_sld based on the endian mode. It is too difficult to correctly infer the desired semantics because of different element types, and the corrected instruction sequence is expensive, involving loading a permute control vector and performing a generalized permute. For GCC, this was implemented as "Don't touch the vec_sld" implementation. When it came time for the LLVM implementation, I did the same thing. However, this was hasty and incorrect. In LLVM's version of altivec.h, vec_sld was previously defined in terms of the vec_perm interface. Because vec_perm semantics are adjusted for little endian, this means that leaving vec_sld untouched causes it to generate something different for LE than for BE. Not good. This back-end patch accompanies the changes to altivec.h that change vec_sld's behavior for little endian. Those changes mean that we see slightly different code in the back end when trying to recognize a VSLDOI instruction in isVSLDOIShuffleMask. In particular, a ShuffleKind of 1 (where the two inputs are identical) must now be treated the same way as a ShuffleKind of 2 (little endian with different inputs) when little endian mode is in force. This is because ShuffleKind of 1 is defined using big-endian numbering. This has a ripple effect on LowerBUILD_VECTOR, where we create our own internal VSLDOI instructions. Because these are a ShuffleKind of 1, they will now have their shift amounts subtracted from 16 when recognizing the shuffle mask. To avoid problems we have to subtract them from 16 again before creating the VSLDOI instructions. There are a couple of other uses of BuildVSLDOI, but these do not need to be modified because the shift amount is 8, which is unchanged when subtracted from 16. llvm-svn: 242296
* Look through PHIs to find additional register sourcesBruno Cardoso Lopes2015-07-154-83/+378
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - Teaches the ValueTracker in the PeepholeOptimizer to look through PHI instructions. - Add findNextSourceAndRewritePHI method to lookup into multiple sources returnted by the ValueTracker and rewrite PHIs with new sources. With these changes we can find more register sources and rewrite more copies to allow coaslescing of bitcast instructions. Hence, we eliminate unnecessary VR64 <-> GR64 copies in x86, but it could be extended to other archs by marking "isBitcast" on target specific instructions. The x86 example follows: A: psllq %mm1, %mm0 movd %mm0, %r9 jmp C B: por %mm1, %mm0 movd %mm0, %r9 jmp C C: movd %r9, %mm0 pshufw $238, %mm0, %mm0 Becomes: A: psllq %mm1, %mm0 jmp C B: por %mm1, %mm0 jmp C C: pshufw $238, %mm0, %mm0 Differential Revision: http://reviews.llvm.org/D11197 rdar://problem/20404526 llvm-svn: 242295
OpenPOWER on IntegriCloud