Commit Graph

207857 Commits

Author SHA1 Message Date
David Majnemer f49de4814c Add myself as the InstCombine owner.
llvm-svn: 244823
2015-08-12 22:30:45 +00:00
Richard Smith 78d81ecfc3 [modules] If loading a .pcm file would cause us to run out of source locations, attempt to fail more gracefully. (No test; this requires >= 4GB of preprocessed input...)
llvm-svn: 244822
2015-08-12 22:25:24 +00:00
Philip Reames 971dc3a82a [RewriteStatepointsForGC] Avoid using unrelocated pointers after safepoints
To be clear: this is an *optimization* not a correctness change.

CodeGenPrep likes to duplicate icmps feeding branch instructions to take advantage of x86's ability to fuze many comparison/branch patterns into a single micro-op and to reduce the need for materializing i1s into general registers. PlaceSafepoints likes to place safepoint polls right at the end of basic blocks (immediately before terminators) when inserting entry and backedge safepoints. These two heuristics interact in a somewhat unfortunate way where the branch terminating the original block will be controlled by a condition driven by unrelocated pointers. This forces the register allocator to keep both the relocated and unrelocated values of the pointers feeding the icmp alive over the safepoint poll.

One simple fix would have been to just adjust PlaceSafepoints to move one back in the basic block, but you can reach similar cases as a result of LICM or other hoisting passes. As a result, doing a post insertion fixup seems to be more robust.

I considered doing this in CodeGenPrep itself, but having to update the live sets of already rewritten safepoints gets complicated fast. In particular, you can't just use def/use information because by moving the icmp, we're extending the live range of it's inputs potentially.

Instead, this patch teaches RewriteStatepointsForGC to make the required adjustments before making the relocations explicit in the IR. This change really highlights the fact that RSForGC is a CodeGenPrep-like pass which is performing target specific lowering. In the long run, we may even want to combine the two though this would require a lot more smarts to be integrated into RSForGC first. We currently rely on being able to run a set of cleanup passes post rewriting because the IR RSForGC generates is pretty damn ugly.

Differential Revision: http://reviews.llvm.org/D11819

llvm-svn: 244821
2015-08-12 22:11:45 +00:00
Naomi Musgrave 522168f7b8 Revert "Implement poisoning of only class members in dtor, as opposed to also poisoning fields inherited from base classes."
This reverts commit 8dbbf3578a9a5d063232b59e558e5fe46e2cd42c.
Rolled back due to buildbot failures on 'ninja check-clang'.

llvm-svn: 244820
2015-08-12 22:07:24 +00:00
Naomi Musgrave 9bd83fd465 Implement poisoning of only class members in dtor, as opposed to also poisoning fields inherited from base classes.
Verify emitted code for derived class with virtual destructor sanitizes its members only once.
Changed emission order for dtor callback, so only the last dtor for a class emits the sanitizing callback, while ensuring that class members are poisoned before base class destructors are invoked.
Skip poisoning of members, if class has no fields.
Removed patch file containing extraneous changes.

Summary: Poisoning applied to only class members, and before dtors for base class invoked

Reviewers: eugenis, kcc

Differential Revision: http://reviews.llvm.org/D11951

llvm-svn: 244819
2015-08-12 21:37:40 +00:00
Naomi Musgrave 93520f09c8 Removed xfail, since test is passing in line with expanded dtor sanitizing functionality
Summary: Fixed test in response to buildbot failures from last night.

Reviewers: eugenis, kcc

Differential Revision: http://reviews.llvm.org/D11992

llvm-svn: 244818
2015-08-12 21:31:27 +00:00
Alex Lorenz 2791dcca60 MIR Parser: Allow the MI IR references to reference global values.
This commit fixes a bug where MI parser couldn't resolve the named IR
references that referenced named global values.

llvm-svn: 244817
2015-08-12 21:27:16 +00:00
Alex Lorenz 0cc671bf79 MIR Serialization: Serialize the fixed stack pseudo source values.
llvm-svn: 244816
2015-08-12 21:23:17 +00:00
Cong Hou 2a02c1cb1a NFC. Convert comments in MachineBasicBlock.cpp into new style.
llvm-svn: 244815
2015-08-12 21:18:54 +00:00
Alex Lorenz ea88212b41 MIR Parser: Move the parsing of fixed stack object indices into new method. NFC
This commit moves the code that parses the frame indices for the fixed stack
objects from the method 'parseFixedStackObjectOperand' to a new method named
'parseFixedStackFrameIndex', so that it can be reused when parsing fixed stack
pseudo source values.

llvm-svn: 244814
2015-08-12 21:17:02 +00:00
Alex Lorenz 4be56e9370 MIR Serialization: Serialize the jump table pseudo source values.
llvm-svn: 244813
2015-08-12 21:11:08 +00:00
Aaron Ballman c25c9fdf08 Move the object being used to move-initialize when calling the base class' constructor from the ctor-initializer. This should have no effect given the triviality of the class, but it allows for easier maintenance should the semantics of the base class change. NFC intended.
llvm-svn: 244812
2015-08-12 21:10:41 +00:00
Jonathan Peyton bb02c2547f Fix two typos in documentation
llvm-svn: 244811
2015-08-12 21:05:22 +00:00
Alex Lorenz d858f874fa MIR Serialization: Serialize the GOT pseudo source values.
llvm-svn: 244809
2015-08-12 21:00:22 +00:00
Philip Reames 9ac4e38a16 [RewriteStatepointsForGC] Handle extractelement fully in the base pointer algorithm
When rewriting the IR such that base pointers are available for every live pointer, we potentially need to duplicate instructions to propagate the base. The original code had only handled PHI and Select under the belief those were the only instructions which would need duplicated. When I added support for vector instructions, I'd added a collection of hacks for ExtractElement which caught most of the common cases. Of course, I then found the one test case my hacks couldn't cover. :)

This change removes all of the early hacks for extract element. By defining extractelement as a BDV (rather than trying to look through it), we can extend the rewriting algorithm to duplicate the extract as needed.  Note that a couple of peephole optimizations were left in for the moment, because while we now handle extractelement as a first class citizen, we're not yet handling insertelement.  That change will follow in the near future.  

llvm-svn: 244808
2015-08-12 21:00:20 +00:00
Jonathan Peyton 2211cfe0a3 One line fix for hierarchical barrier
There was a missing implicit task init for the ICV PUSH case in hierarchical barrier.

llvm-svn: 244807
2015-08-12 20:59:48 +00:00
Alex Lorenz 46e9558ac6 MIR Serialization: Serialize the stack pseudo source values.
llvm-svn: 244806
2015-08-12 20:44:16 +00:00
Sanjay Patel e24c60eb54 fix typo; NFC
llvm-svn: 244805
2015-08-12 20:36:18 +00:00
Dan Gohman 70e51cb19d Update a comment; Emscripten no longer uses le32 and le64. NFC.
llvm-svn: 244804
2015-08-12 20:34:40 +00:00
Alex Lorenz 91097a3ffa MIR Serialization: Serialize the constant pool pseudo source values.
llvm-svn: 244803
2015-08-12 20:33:26 +00:00
Aaron Ballman 7596bcf726 Switching from an explicit loop to DeleteContainerSeconds; NFC.
llvm-svn: 244802
2015-08-12 20:05:18 +00:00
Greg Clayton 4d48e5b371 Fix process_events.py to auto continue the process if we attached so the process doesn't just sit there suspended.
llvm-svn: 244801
2015-08-12 20:04:01 +00:00
Lenny Maiorani 1230a54970 Fix missing space in libfuzzer's help text.
llvm-svn: 244800
2015-08-12 20:00:10 +00:00
Jonathan Peyton 3bb3e09308 Add recognition of the Intel 16.0 compiler in kmp_version.c
llvm-svn: 244799
2015-08-12 19:48:31 +00:00
Hans Wennborg 32847fb7ab Docs: keep copyright years up-to-date
llvm-svn: 244797
2015-08-12 19:45:01 +00:00
Hans Wennborg 259b71a4d2 Options.td: Drop trailing space in -fsanitize= help text
llvm-svn: 244795
2015-08-12 19:35:05 +00:00
Hans Wennborg 0d08062b7b Docs: update clang-cl command-line documentation
llvm-svn: 244794
2015-08-12 19:35:01 +00:00
Alexander Kornienko b7029d05a1 [clang-tidy] Make FileOptionsProvider fields protected to make extending it easier
llvm-svn: 244793
2015-08-12 19:29:57 +00:00
Aaron Ballman 001f168e94 RangRangify some more for loops; NFC.
llvm-svn: 244792
2015-08-12 19:00:39 +00:00
Douglas Katzman 15a63ed26e Don't compare getArchName() to "tce" as a string. NFC.
llvm-svn: 244791
2015-08-12 18:36:12 +00:00
Hans Wennborg 9aaf0a90e9 Docs: keep copyright years up-to-date.
llvm-svn: 244789
2015-08-12 18:27:23 +00:00
Richard Trieu ecd36ee80b Stop printing macro backtraces that don't help diagnostics.
When displaying the macro backtrace, ignore some of the backtraces that do not
provide extra information to the diagnostic.  Typically, if the problem is
entirely contained within a macro argument, the macro expansion is often not
needed.  Also take into account SourceRange's attached to the diagnostic when
selecting which backtraces to ignore.  Two previous test cases have also been
updated.

Patch by Zhengkai Wu, with minor formatting fixes.

Differential Revision: http://reviews.llvm.org/D11778

llvm-svn: 244788
2015-08-12 18:24:59 +00:00
Chandler Carruth 19ac7d5b29 [PM/AA] Add missing static dependency edges from DSE and memdep to TLI.
I forgot to add these in r244780 and r244778. Sorry about that.

Also order the static dependencies in a lexicographical order.

llvm-svn: 244787
2015-08-12 18:10:45 +00:00
Rafael Espindola cc45ee9a63 Try to fix the MSVC build now that we use /Zc:inline.
Thanks to Majnemer for the help.

llvm-svn: 244786
2015-08-12 18:09:44 +00:00
Chandler Carruth d1a2e05991 [PM/AA] Explicitly depend on TLI rather than getting it out of the
AliasAnalysis.

Same as the other commits, the TLI access from an alias analysis is
going away and isn't very clean -- it is better to explicitly mark the
dependencies.

llvm-svn: 244785
2015-08-12 18:06:08 +00:00
Chaoren Lin b6325d0cad Make dosep.py PEP8 compliant. NFC.
Reviewers: zturner, clayborg

Subscribers: lldb-commits

Differential Revision: http://reviews.llvm.org/D11846

llvm-svn: 244784
2015-08-12 18:02:54 +00:00
Chaoren Lin e80372a43a Refactor dosep to use list comprehension. NFC.
Reviewers: zturner

Subscribers: lldb-commits

Differential Revision: http://reviews.llvm.org/D11910

llvm-svn: 244783
2015-08-12 18:02:53 +00:00
Chaoren Lin 5a59e46460 Don't print number of failures and percentage if no tests ran.
Reviewers: zturner

Subscribers: lldb-commits

Differential Revision: http://reviews.llvm.org/D11909

llvm-svn: 244782
2015-08-12 18:02:51 +00:00
Chaoren Lin ffc63b044c Make dosep output status by overwriting the same line.
Summary: Update to D11816.

Reviewers: zturner

Subscribers: zturner, lldb-commits

Differential Revision: http://reviews.llvm.org/D11843

llvm-svn: 244781
2015-08-12 18:02:49 +00:00
Chandler Carruth dbe40fb45e [PM/AA] Stop getting the TargetLibraryInfo out of the AliasAnalysis and
just depend on it directly.

This was particularly frustrating because there was a really wide
mixture of using a member variable and re-extracting it from the AA that
happened to be around. I think the result is much more clear.

I've also deleted all of the pointless null checks and used references
across the APIs where I could to make it explicit that this cannot be
null in a useful fashion.

llvm-svn: 244780
2015-08-12 18:01:44 +00:00
JF Bastien 71d29acecd WebAssembly: floating-point comparisons
Summary:
D11924 implemented part of the floating-point comparisons, this patch implements the rest:
 * Tell ISelLowering that all booleans are either 0 or 1.
 * Expand the eq/ne/lt/le/gt/ge floating-point comparisons to the canonical ones (similar to what Mips32r6InstrInfo.td does).
 * Add tests for ord/uno.
 * Add tests for ueq/one/ult/ule/ugt/uge.
 * Fix existing comparison tests to remove the (res & 1) code, which setBooleanContents stops from generating.

Reviewers: sunfish

Subscribers: llvm-commits, jfb

Differential Revision: http://reviews.llvm.org/D11970

llvm-svn: 244779
2015-08-12 17:53:29 +00:00
Chandler Carruth d06034d20a [PM/AA] Have memdep explicitly get and use TargetLibraryInfo rather than
relying on sneaking it out of its AliasAnalysis.

This abuse of AA (to shuffle TLI around rather than explicitly depending
on it) is going away with my refactor of AA.

llvm-svn: 244778
2015-08-12 17:47:44 +00:00
Rafael Espindola f846557eb8 Use /Zc:inline when building with MSVC.
This reduces the total .obj size when building llvm from
496,690,342 to 219,334,936 bytes.

llvm-svn: 244767
2015-08-12 17:09:25 +00:00
Simon Pilgrim a5737a44da Cleaned up test. NFCI.
llvm-svn: 244765
2015-08-12 17:00:50 +00:00
Adam Nemet dfaeb33ec7 [LoopVer] Optionally allow using memchecks from LAA
r243382 changed the behavior to always require a set of memchecks to be
passed to LoopVer.  This change restores the prior behavior as an
alternative to the new behavior.  This allows the checks to be
implicitly taken from the LAA object.

Patch by Ashutosh Nema!

llvm-svn: 244763
2015-08-12 16:51:19 +00:00
Hans Wennborg eb2bd9a269 ReleaseNotes: Small version nbr fix
llvm-svn: 244761
2015-08-12 16:40:42 +00:00
John Brawn 2106b7525c The alias.c test now requires arm-registered-target
This should fix a buildbot failure

llvm-svn: 244760
2015-08-12 15:55:55 +00:00
Tamas Berghammer 6a2b73c8b0 Remove printf most likely left from some debugging section
llvm-svn: 244759
2015-08-12 15:55:04 +00:00
Tobias Grosser 72e8f5999e Make sure we increment the reference counter when passing out the isl_pw_aff
llvm-svn: 244758
2015-08-12 15:45:41 +00:00
Tobias Grosser d46fd5ed95 Make the dimension sizes of in ScopArrayInfo available as isl_pw_affs
This makes it easier to reason about the size of an array dimension with isl.

llvm-svn: 244757
2015-08-12 15:27:16 +00:00