Colin LeMahieu [Mon, 29 Feb 2016 19:17:56 +0000 (19:17 +0000)]
[Hexagon] Setting sign mismatch flag on expression instead of using bit tricks.
llvm-svn: 262243
Rong Xu [Mon, 29 Feb 2016 19:16:04 +0000 (19:16 +0000)]
Minor code cleanup. NFC
llvm-svn: 262242
David Majnemer [Mon, 29 Feb 2016 19:16:03 +0000 (19:16 +0000)]
[WinEH] Make setjmp work correctly with EH
32-bit X86 EH on Windows utilizes a stack of registration nodes
allocated and deallocated on entry/exit. A registration node contains a
bunch of EH personality specific information like which try-state we are
currently in.
Because a setjmp target allows control flow from arbitrary program
points, there is no way to ensure that the try-state we are in is
correctly updated once we transfer control.
MSVC compatible compilers, like MSVC and ICC, utilize runtime helpers to
reinitialize the try-state when a longjmp occurs. This is implemented
by adding additional arguments to _setjmp3: the desired try-state and
a helper routine to update the try-state.
Differential Revision: http://reviews.llvm.org/D17721
llvm-svn: 262241
Dehao Chen [Mon, 29 Feb 2016 18:59:48 +0000 (18:59 +0000)]
Move discriminator assignment to the right place.
Summary: Now discriminator is assigned per-function instead of per-module.
Reviewers: davidxl, dnovillo
Subscribers: dblaikie, llvm-commits
Differential Revision: http://reviews.llvm.org/D17664
llvm-svn: 262240
Rong Xu [Mon, 29 Feb 2016 18:54:59 +0000 (18:54 +0000)]
[PGO] clang cc1 option change to enable IR level instrumentation
This patch expands cc1 option -fprofile-instrument= with a new value: -fprofile-instrument=llvm
which enables IR level PGO instrumentation.
Reviewers: davidxl, silvas
Differential Revision: http://reviews.llvm.org/D17622
llvm-svn: 262239
Colin LeMahieu [Mon, 29 Feb 2016 18:39:51 +0000 (18:39 +0000)]
[Hexagon] Using MustExtend flag on expression instead of passing around bools.
llvm-svn: 262238
Paul Robinson [Mon, 29 Feb 2016 18:05:21 +0000 (18:05 +0000)]
Fix LLD tests that used CHECK-NEXT-NOT. FileCheck does not support
combined suffixes.
Differential Revision: http://reviews.llvm.org/D17665
llvm-svn: 262237
Adrian Prantl [Mon, 29 Feb 2016 17:06:46 +0000 (17:06 +0000)]
fix typo in comment
llvm-svn: 262236
Michael Kruse [Mon, 29 Feb 2016 16:54:18 +0000 (16:54 +0000)]
[ScopDetection] Fix use-after-free.
removeCachedResults deletes the DetectionContext from
DetectionContextMap such that any it cannot be used anymore.
Unfortunately invalid<ReportUnprofitable> and RejectLogs.insert still do
use it. Because the memory is part of a map and not returned to to the
OS immediatly, such that the observable effect was only a memory leak
due to reference counters not decreased when the second call to
removeCachedResults does not remove the DetectionContext because because
it already has been removed.
Fix by not removing the DetectionContext prematurely. The second call to
removeCachedResults will handle it anyway.
llvm-svn: 262235
Manuel Klimek [Mon, 29 Feb 2016 16:44:16 +0000 (16:44 +0000)]
Revert "Implement new interfaces for code-formatting when applying replacements."
This reverts commit r262232.
llvm-svn: 262234
Nemanja Ivanovic [Mon, 29 Feb 2016 16:42:27 +0000 (16:42 +0000)]
Fix for PR26180
Corresponds to Phabricator review:
http://reviews.llvm.org/D16592
This fix includes both an update to how we handle the "generic" CPU on LE
systems as well as Anton's fix for the Fast Isel issue.
llvm-svn: 262233
Manuel Klimek [Mon, 29 Feb 2016 16:27:41 +0000 (16:27 +0000)]
Implement new interfaces for code-formatting when applying replacements.
Patch by Eric Liu.
llvm-svn: 262232
Daniel Sanders [Mon, 29 Feb 2016 16:06:38 +0000 (16:06 +0000)]
[mips] Range check uimm20 and fixed a bug this revealed.
Summary:
The bug was that dextu's operand 3 would print 0-31 instead of 32-63 when
printing assembly. This came up when replacing
MipsInstPrinter::printUnsignedImm() with a version that could handle arbitrary
bit widths.
MipsAsmPrinter::printUnsignedImm*() don't seem to be used so they have been
removed.
Reviewers: vkalintiris
Subscribers: dsanders, llvm-commits
Differential Revision: http://reviews.llvm.org/D15521
llvm-svn: 262231
Vasileios Kalintiris [Mon, 29 Feb 2016 15:58:12 +0000 (15:58 +0000)]
[mips] Do not use SLL for ANY_EXTEND nodes as the high bits are undefined.
Reviewers: dsanders
Subscribers: dsanders, llvm-commits
Differential Revision: http://reviews.llvm.org/D15420
llvm-svn: 262230
Daniel Sanders [Mon, 29 Feb 2016 15:26:54 +0000 (15:26 +0000)]
[mips] Make isel select the correct DEXT variant up front.
Summary:
Previously, it would always select DEXT and substitute any invalid matches
for DEXTU/DEXTM during MipsMCCodeEmitter::encodeInstruction(). This works
but causes problems when adding range checked immediates to IAS.
Now isel selects the correct variant up front.
Reviewers: vkalintiris
Subscribers: dsanders, llvm-commits
Differential Revision: http://reviews.llvm.org/D16810
llvm-svn: 262229
Tom Stellard [Mon, 29 Feb 2016 15:08:56 +0000 (15:08 +0000)]
AMDGPU: Add missing Volcanic Islands targets
Reviewers: arsenm
Subscribers: cfe-commits
Differential Revision: http://reviews.llvm.org/D17645
llvm-svn: 262228
Michael Kruse [Mon, 29 Feb 2016 14:58:13 +0000 (14:58 +0000)]
Reapply "Add update_test.py script."
Originally committed in r261899 and reverted in r262202 due to failing
in out-of-LLVM tree builds.
Replace the use of LLVM_TOOLS_BINARY_DIR by LLVM_TOOLS_DIR which exists
in both, in-tree and out-of-tree builds.
Original commit message:
The script updates a lit test case that uses FileCheck using the actual
output of the 'RUN:'-lines program. Useful when updating test cases due
to expected output changes and diff'ing expected and actual output.
llvm-svn: 262227
Rafael Espindola [Mon, 29 Feb 2016 14:29:48 +0000 (14:29 +0000)]
lto: don't fetch members for weak undef.
llvm-svn: 262225
Pavel Labath [Mon, 29 Feb 2016 14:26:45 +0000 (14:26 +0000)]
Revert a part of "Add/Improve complex, vector, aggregate types handling for SysV ARM (hard/soft) ABI."
This partially reverts commit r262218.
The commit added additional checks to a test case. The test case is too big so it's not feasible
to XFAIL it completely. Suggest to implement the checks as a separate test case, which can then
be XFAILed more surgically.
llvm-svn: 262223
Rafael Espindola [Mon, 29 Feb 2016 14:26:06 +0000 (14:26 +0000)]
IRObject: Mark extern_weak as weak.
llvm-svn: 262222
Rafael Espindola [Mon, 29 Feb 2016 13:46:39 +0000 (13:46 +0000)]
Remove bogus assert.
llvm-svn: 262219
Omair Javaid [Mon, 29 Feb 2016 13:39:20 +0000 (13:39 +0000)]
Add/Improve complex, vector, aggregate types handling for SysV ARM (hard/soft) ABI.
For details see:
Differential revision: http://reviews.llvm.org/D17708
llvm-svn: 262218
Daniel Jasper [Mon, 29 Feb 2016 12:26:20 +0000 (12:26 +0000)]
clang-format: Don't format unrelated nested blocks.
With this change:
SomeFunction(
[] {
int i;
return i; // Format this line.
},
[] {
return 2; // Don't "fix" this.
});
llvm-svn: 262216
Benjamin Kramer [Mon, 29 Feb 2016 12:18:25 +0000 (12:18 +0000)]
[InstSimplify] Restore fsub 0.0, (fsub 0.0, X) ==> X optzn
I accidentally removed this in r262212 but there was no test coverage to
detect it.
llvm-svn: 262215
Pavel Labath [Mon, 29 Feb 2016 11:44:15 +0000 (11:44 +0000)]
Fix compiler warnings in the java code
llvm-svn: 262214
Daniel Sanders [Mon, 29 Feb 2016 11:24:49 +0000 (11:24 +0000)]
[mips] Make symbols an acceptable branch target when expanding compare-to-immediate-and-branch macros.
Reviewers: vkalintiris
Subscribers: llvm-commits, vkalintiris, dim, seanbruno, dsanders
Differential Revision: http://reviews.llvm.org/D15369
llvm-svn: 262213
Benjamin Kramer [Mon, 29 Feb 2016 11:12:23 +0000 (11:12 +0000)]
[InstSimplify] fsub 0.0, (fsub -0.0, X) ==> X is only safe if signed zeros are ignored.
Only allow fsub -0.0, (fsub -0.0, X) ==> X without nsz. PR26746.
llvm-svn: 262212
Daniel Sanders [Mon, 29 Feb 2016 11:04:39 +0000 (11:04 +0000)]
[test-release.sh] Add lldb to list of projects (disabled by default)
Reviewers: hans
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D17070
llvm-svn: 262211
Maxim Ostapenko [Mon, 29 Feb 2016 08:56:26 +0000 (08:56 +0000)]
[asan] Fix UB in test/asan/TestCases/Linux/recvfrom.cc testcase.
llvm-svn: 262210
Mohit K. Bhakkad [Mon, 29 Feb 2016 08:22:55 +0000 (08:22 +0000)]
Update the link of issue
llvm-svn: 262209
Argyrios Kyrtzidis [Mon, 29 Feb 2016 07:56:07 +0000 (07:56 +0000)]
[index] Print and test module import references.
llvm-svn: 262208
Argyrios Kyrtzidis [Mon, 29 Feb 2016 07:56:00 +0000 (07:56 +0000)]
[index] Add a caller relation for a call reference.
llvm-svn: 262207
Argyrios Kyrtzidis [Mon, 29 Feb 2016 07:55:55 +0000 (07:55 +0000)]
[AST/RecursiveASTVisitor] Correction so that dataTraverseStmtPost will get called after the statement has been visited.
Fixes the indexing client of this.
llvm-svn: 262206
Argyrios Kyrtzidis [Mon, 29 Feb 2016 07:55:51 +0000 (07:55 +0000)]
[index] Use ',' to separate symbol roles when printing.
llvm-svn: 262205
Maxim Ostapenko [Mon, 29 Feb 2016 07:47:35 +0000 (07:47 +0000)]
[asan] Re-enable test/asan/TestCases/Linux/recvfrom.cc testcase.
This testcase failed on sanitizer-x86_64-linux buildbot in large parallel build due to race on
port 1234 between AddressSanitizer-i386-linux and AddressSanitizer-x86_64-linux instances of recvfrom.cc.
This patch tries to resolve the issue by relying on kernel to choose available port instead of hardcoding
its number in testcase.
Differential Revision: http://reviews.llvm.org/D17639
llvm-svn: 262204
Tobias Grosser [Mon, 29 Feb 2016 07:29:42 +0000 (07:29 +0000)]
ScopInfo: Remove indentation in hoistInvariantLoads
We move verifyInvariantLoads out of this function to allow for an early return
without the need for code duplication. A similar transformation was suggested
by Johannes Doerfert in post commit review of r262033.
llvm-svn: 262203
Tobias Grosser [Mon, 29 Feb 2016 07:12:10 +0000 (07:12 +0000)]
Revert "Add update_test.py script."
This reverts commit r261899. Even though I am not yet 100% certain, this is
commit is the only one that has some relation to the recent cmake failures
in Polly.
llvm-svn: 262202
Craig Topper [Mon, 29 Feb 2016 06:51:38 +0000 (06:51 +0000)]
[X86] Disabling avx512f should also disable avx512vbmi and avx512ifma. Enabling avx512vbmi or avx512ifma should enable avx512f. Add command line switches and header defines for avx512ifma and avx512vbmi.
llvm-svn: 262201
Craig Topper [Mon, 29 Feb 2016 06:51:34 +0000 (06:51 +0000)]
[X86] Enabling xsave should not enable AVX. I seem to have done this, but I don't know why.
llvm-svn: 262200
Alexey Bataev [Mon, 29 Feb 2016 05:54:20 +0000 (05:54 +0000)]
[OPENMP 4.5] Initial support for data members in 'reduction' clauses.
OpenMP 4.5 allows to privatize non-static data members of current class
in non-static member functions. Patch adds initial parsing/semantic
analysis for data members support in 'reduction' clauses.
llvm-svn: 262199
David Majnemer [Mon, 29 Feb 2016 01:40:36 +0000 (01:40 +0000)]
[clang-cl] /EHc should not effect functions with explicit exception specifications
Functions with an explicit exception specification have their behavior
dictated by the specification. The additional /EHc behavior only comes
into play if no exception specification is given.
llvm-svn: 262198
David Majnemer [Mon, 29 Feb 2016 01:40:30 +0000 (01:40 +0000)]
[clang-cl] /EHc should not have an effect on /EHa
This matches behavior with MSVC.
llvm-svn: 262197
Chandler Carruth [Sun, 28 Feb 2016 22:16:03 +0000 (22:16 +0000)]
[PM] Wire up optimization levels and default pipeline construction APIs
in the PassBuilder.
These are really just stubs for now, but they give a nice API surface
that Clang or other tools can start learning about and enabling for
experimentation.
I've also wired up parsing various synthetic module pass names to
generate these set pipelines. This allows the pipelines to be combined
with other passes and have their order controlled, with clear separation
between the *kind* of canned pipeline, and the *level* of optimization
to be used within that canned pipeline.
The most interesting part of this patch is almost certainly the spec for
the different optimization levels. I don't think we can ever have hard
and fast rules that would make it easy to determine whether a particular
optimization makes sense at a particular level -- it will always be in
large part a judgement call. But hopefully this will outline the
expected rationale that should be used, and the direction that the
pipelines should be taken. Much of this was based on a long llvm-dev
discussion I started years ago to try and crystalize the intent behind
these pipelines, and now, at long long last I'm returning to the task of
actually writing it down somewhere that we can cite and try to be
consistent with.
Differential Revision: http://reviews.llvm.org/D12826
llvm-svn: 262196
Rui Ueyama [Sun, 28 Feb 2016 21:59:02 +0000 (21:59 +0000)]
Remove dead code for ELF.
llvm-svn: 262195
Rui Ueyama [Sun, 28 Feb 2016 21:22:44 +0000 (21:22 +0000)]
Remove dead code for ELF.
The preload feature was buggy that we had disabled it even for ELF.
llvm-svn: 262194
Rui Ueyama [Sun, 28 Feb 2016 21:22:40 +0000 (21:22 +0000)]
Remove remaining code for COFF.
llvm-svn: 262193
Rui Ueyama [Sun, 28 Feb 2016 20:56:34 +0000 (20:56 +0000)]
Remove DriverTest.h.
Because the class is used only by one instance, we do not have to
use template there in DriverTest.h. Everything can be moved to
DarwinLdDriverTest.cpp.
llvm-svn: 262192
Rui Ueyama [Sun, 28 Feb 2016 19:54:51 +0000 (19:54 +0000)]
Make the entry point function calls consistent. NFC.
llvm-svn: 262191
Rui Ueyama [Sun, 28 Feb 2016 19:50:14 +0000 (19:50 +0000)]
Move functionality of UniversalDriver to the entry point file.
UniversalDriver was used as a dispatcher to each platform-specific driver.
It had its own Options.td file. It was not just too much to parse only a
few options (we only want to parse -core, -flavor or argv[0]),
but also interpreted arguments too early. For example, if you invoke lld as
"lld -flavor gnu ... -help", then you'd get the UniversalDriver's help
message instead of GnuDriver's. This patch eliminates the use of Options
from the dispatcher.
http://reviews.llvm.org/D17686
llvm-svn: 262190
Vassil Vassilev [Sun, 28 Feb 2016 19:08:24 +0000 (19:08 +0000)]
[modules] Prefer more complete array types.
If we import a module that has a complete array type and one that has an
incomplete array type, the declaration found by name lookup might be the one with
the incomplete type, possibly resulting in rejects-valid.
Now, the name lookup prefers decls with a complete array types. Also,
diagnose cases when the redecl chain has array bound, different from the merge
candidate.
Reviewed by Richard Smith.
llvm-svn: 262189
NAKAMURA Takumi [Sun, 28 Feb 2016 17:17:00 +0000 (17:17 +0000)]
[PM] Appease mingw32's auto-import DLL build with minimal tweaks, with fix for clang.
char AnalysisBase::ID should be declared as extern and defined in one module.
llvm-svn: 262188
Vasileios Kalintiris [Sun, 28 Feb 2016 16:55:28 +0000 (16:55 +0000)]
[mips] Remove unused function declarations from MipsRegisterInfo.h. NFC.
llvm-svn: 262187
NAKAMURA Takumi [Sun, 28 Feb 2016 16:54:06 +0000 (16:54 +0000)]
Revert r262185, "[PM] Appease mingw32's auto-import DLL build with minimal tweaks."
I'll rework soon.
llvm-svn: 262186
NAKAMURA Takumi [Sun, 28 Feb 2016 16:38:46 +0000 (16:38 +0000)]
[PM] Appease mingw32's auto-import DLL build with minimal tweaks.
char AnalysisBase::ID should be declared as extern and defined in one module.
llvm-svn: 262185
Rafael Espindola [Sun, 28 Feb 2016 16:27:08 +0000 (16:27 +0000)]
Delete more COFF and ELF bits from the old linker.
llvm-svn: 262184
Rafael Espindola [Sun, 28 Feb 2016 16:11:53 +0000 (16:11 +0000)]
Delete dead arch types.
llvm-svn: 262183
Rafael Espindola [Sun, 28 Feb 2016 16:08:21 +0000 (16:08 +0000)]
Delete a bit more ELF and COFF from the old linker.
llvm-svn: 262182
Rafael Espindola [Sun, 28 Feb 2016 16:03:37 +0000 (16:03 +0000)]
Delete more ELF bits from the old linker.
llvm-svn: 262181
JF Bastien [Sun, 28 Feb 2016 15:44:54 +0000 (15:44 +0000)]
WebAssembly: fix test
Operand order seems to have changed, the new one is nicer.
llvm-svn: 262180
JF Bastien [Sun, 28 Feb 2016 15:33:53 +0000 (15:33 +0000)]
WebAssembly: fix build
More API churn, experimental target got sad.
llvm-svn: 262179
Logan Chien [Sun, 28 Feb 2016 15:01:42 +0000 (15:01 +0000)]
Add ARM EHABI-related constants to unwind.h.
Adds a number of constants, defined in the ARM EHABI spec, to the Clang
lib/Headers/unwind.h header. This is prerequisite for landing
http://reviews.llvm.org/D15781, as previously discussed there.
Patch by Timon Van Overveldt.
llvm-svn: 262178
Michael Zuckerman [Sun, 28 Feb 2016 07:39:34 +0000 (07:39 +0000)]
[CLANG] [AVX512] [BUILTIN] Adding PSLL{V|W|Wi}{128|256|512} builtin
Differential Revision: http://reviews.llvm.org/D17685
llvm-svn: 262177
Michael Zuckerman [Sun, 28 Feb 2016 07:32:10 +0000 (07:32 +0000)]
[AVX512][PSLLW ][PSLLV] Change imm8 to int
Differential Revision: http://reviews.llvm.org/D17684
llvm-svn: 262176
Rui Ueyama [Sun, 28 Feb 2016 05:09:11 +0000 (05:09 +0000)]
ELF: Remove OutSection class and use a map instead.
It is easier to handle section filler data separately rather than
merging with section names.
llvm-svn: 262175
Rui Ueyama [Sun, 28 Feb 2016 04:48:54 +0000 (04:48 +0000)]
Simplify. NFC.
llvm-svn: 262174
Rui Ueyama [Sun, 28 Feb 2016 04:44:10 +0000 (04:44 +0000)]
Remove dead header file.
llvm-svn: 262173
Rui Ueyama [Sun, 28 Feb 2016 04:07:16 +0000 (04:07 +0000)]
Remove obsolte TODOs. They are for the old gnu driver.
llvm-svn: 262172
Rui Ueyama [Sun, 28 Feb 2016 04:03:01 +0000 (04:03 +0000)]
Remove lld/Core/range.h.
IIUC, range was an experiment to see how N3350 would work in LLD.
It turned out it didn't get traction, and it is basically duplicate
of iterator_range in ADT. We have only two occurrences of range,
and all of them are easily rewritten without it.
http://reviews.llvm.org/D17687
llvm-svn: 262171
Rui Ueyama [Sun, 28 Feb 2016 03:34:34 +0000 (03:34 +0000)]
Remove an empty TODO file.
llvm-svn: 262170
Rui Ueyama [Sun, 28 Feb 2016 03:27:09 +0000 (03:27 +0000)]
Remove unused #include.
llvm-svn: 262169
Rui Ueyama [Sun, 28 Feb 2016 03:18:09 +0000 (03:18 +0000)]
ELF: Add --help option.
llvm-svn: 262168
Rui Ueyama [Sun, 28 Feb 2016 03:18:07 +0000 (03:18 +0000)]
ELF: Add --version option.
llvm-svn: 262167
Rui Ueyama [Sun, 28 Feb 2016 02:51:02 +0000 (02:51 +0000)]
Remove dead code. This error type is for the old linker script reader.
llvm-svn: 262166
Rui Ueyama [Sun, 28 Feb 2016 02:47:52 +0000 (02:47 +0000)]
Remove dead header files.
llvm-svn: 262165
Rafael Espindola [Sun, 28 Feb 2016 02:22:24 +0000 (02:22 +0000)]
Remove a few bits of elf from the old linker.
llvm-svn: 262164
Rafael Espindola [Sun, 28 Feb 2016 02:14:48 +0000 (02:14 +0000)]
Delete the old script parser.
It was ELF specific.
llvm-svn: 262163
Xinliang David Li [Sun, 28 Feb 2016 00:54:28 +0000 (00:54 +0000)]
Test cleanups
llvm-svn: 262162
Xinliang David Li [Sun, 28 Feb 2016 00:45:13 +0000 (00:45 +0000)]
[PGO] add a test for available_externally functions
llvm-svn: 262161
Rui Ueyama [Sun, 28 Feb 2016 00:37:52 +0000 (00:37 +0000)]
Remove dead code.
llvm-svn: 262160
Rafael Espindola [Sun, 28 Feb 2016 00:25:54 +0000 (00:25 +0000)]
Rename elf2 to elf.
llvm-svn: 262159
Rafael Espindola [Sun, 28 Feb 2016 00:10:58 +0000 (00:10 +0000)]
Remove the old ELF linker.
I think it is clear by now that the new linker is viable.
llvm-svn: 262158
Xinliang David Li [Sat, 27 Feb 2016 23:11:30 +0000 (23:11 +0000)]
[PGO] Remove redundant counter copies for avail_extern functions.
Differential Revision: http://reviews.llvm.org/D17654
llvm-svn: 262157
Todd Fiala [Sat, 27 Feb 2016 22:48:50 +0000 (22:48 +0000)]
Revert "Fix bug with register values byte order in expression evaluation."
This reverts commit r262041, which caused asserts starting yesterday on the OS X testbot.
See details in:
https://llvm.org/bugs/show_bug.cgi?id=26758
llvm-svn: 262156
Rui Ueyama [Sat, 27 Feb 2016 20:29:45 +0000 (20:29 +0000)]
ELF: Remove relSize function from ICF.cpp. NFC.
llvm-svn: 262155
Duncan P. N. Exon Smith [Sat, 27 Feb 2016 20:27:44 +0000 (20:27 +0000)]
CodeGen: Remove an iterator => pointer conversion, NFC
Part of PR26753.
llvm-svn: 262154
Matt Arsenault [Sat, 27 Feb 2016 20:26:57 +0000 (20:26 +0000)]
AMDGPU: More bits of frame index are known to be zero
The maximum private allocation for the whole GPU is 4G,
so the maximum possible index for a single workitem is the
maximum size divided by the smallest granularity for a dispatch.
This increases the number of known zero high bits, which
enables more offset folding. The maximum private size per
workitem with this is 128M but may be smaller still.
llvm-svn: 262153
Duncan P. N. Exon Smith [Sat, 27 Feb 2016 20:23:14 +0000 (20:23 +0000)]
CodeGen: Use MachineInstr& in InlineSpiller::rematerializeFor()
InlineSpiller::rematerializeFor() never uses its parameter as an
iterator, so take it by reference instead. This removes an implicit
conversion from MachineBasicBlock::iterator to MachineInstr*.
llvm-svn: 262152
Duncan P. N. Exon Smith [Sat, 27 Feb 2016 20:14:29 +0000 (20:14 +0000)]
CodeGen: Update LiveIntervalAnalysis API to use MachineInstr&, NFC
These parameters aren't expected to be null, so take them by reference.
llvm-svn: 262151
Duncan P. N. Exon Smith [Sat, 27 Feb 2016 20:01:33 +0000 (20:01 +0000)]
CodeGen: Change MachineInstr to use MachineInstr&, NFC
Change MachineInstr API to prefer MachineInstr& over MachineInstr*
whenever the parameter is expected to be non-null. Slowly inching
toward being able to fix PR26753.
llvm-svn: 262149
Matt Arsenault [Sat, 27 Feb 2016 19:57:45 +0000 (19:57 +0000)]
DAGCombiner: Don't unnecessarily swap operands in ReassociateOps
In the case where op = add, y = base_ptr, and x = offset, this
transform:
(op y, (op x, c1)) -> (op (op x, y), c1)
breaks the canonical form of add by putting the base pointer in the
second operand and the offset in the first.
This fix is important for the R600 target, because for some address
spaces the base pointer and the offset are stored in separate register
classes. The old pattern caused the ISel code for matching addressing
modes to put the base pointer and offset in the wrong register classes,
which required no-trivial code transformations to fix.
llvm-svn: 262148
Filipe Cabecinhas [Sat, 27 Feb 2016 19:57:44 +0000 (19:57 +0000)]
[UBSan] Fix isDerivedFromAtOffset on iOS ARM64
Summary:
iOS on ARM64 doesn't unique RTTI.
Ref: clang's iOS64CXXABI::shouldRTTIBeUnique()
Due to this, pointer-equality will not necessarily work in this
architecture, across dylib boundaries.
dynamic_cast<>() will (as expected) still work, since Apple ships with
one prepared for this, but we can't rely on the type names being
pointer-equal.
I've limited the expensive strcmp check to the specific architecture
which needs it.
Example which triggers this bug:
lib.h:
struct X {
virtual ~X() {}
};
X *libCall();
lib.mm:
X *libCall() {
return new X;
}
prog.mm:
int main() {
X *px = libCall();
delete px;
}
Expected output: Nothing
Actual output:
<unknown>: runtime error: member call on address 0x00017001ef50 which does not point to an object of type 'X'
0x00017001ef50: note: object is of type 'X'
00 00 00 00 60 00 0f 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
^~~~~~~~~~~~~~~~~~~~~~~
vptr for ‘X’
Reviewers: kubabrecka, samsonov, eugenis, rsmith
Subscribers: aemerson, llvm-commits, rengolin
Differential Revision: http://reviews.llvm.org/D11502
llvm-svn: 262147
Duncan P. N. Exon Smith [Sat, 27 Feb 2016 19:48:01 +0000 (19:48 +0000)]
CodeGen: Use MachineInstr& in HashMachineInstr, NFC
Also update HashEndOfMBB to take MachineBasicBlock&.
llvm-svn: 262146
Duncan P. N. Exon Smith [Sat, 27 Feb 2016 19:33:37 +0000 (19:33 +0000)]
CodeGen: Use MachineInstr& in AntiDepBreaker API, NFC
Take parameters as MachineInstr& instead of MachineInstr* in
AntiDepBreaker API, since these are required to be non-null. No
functionality change intended. Looking toward PR26753.
llvm-svn: 262145
Duncan P. N. Exon Smith [Sat, 27 Feb 2016 19:23:34 +0000 (19:23 +0000)]
CodeGen: Assert valid MI in AntiDepBreaker::UpdateDbgValue
This already assumes a valid MI, since it dereferences the MI in an
assertion before checking for null. At an explicit assert.
llvm-svn: 262144
Duncan P. N. Exon Smith [Sat, 27 Feb 2016 19:12:54 +0000 (19:12 +0000)]
AArch64: Use MachineInstr& in guaranteesZeroRegInBlock(), NFC
llvm-svn: 262143
Duncan P. N. Exon Smith [Sat, 27 Feb 2016 19:09:00 +0000 (19:09 +0000)]
CodeGen: Update DFAPacketizer API to take MachineInstr&, NFC
In all but one case, change the DFAPacketizer API to take MachineInstr&
instead of MachineInstr*. In DFAPacketizer::endPacket(), take
MachineBasicBlock::iterator. Besides cleaning up the API, this is in
search of PR26753.
llvm-svn: 262142
Duncan P. N. Exon Smith [Sat, 27 Feb 2016 17:05:33 +0000 (17:05 +0000)]
WIP: CodeGen: Use MachineInstr& in MachineInstrBundle.h, NFC
Update APIs in MachineInstrBundle.h to take and return MachineInstr&
instead of MachineInstr* when the instruction cannot be null. Besides
being a nice cleanup, this is tacking toward a fix for PR26753.
llvm-svn: 262141
JF Bastien [Sat, 27 Feb 2016 16:38:23 +0000 (16:38 +0000)]
WebAssembly: fix build
It was broken by the work for PR26753.
llvm-svn: 262140
Renato Golin [Sat, 27 Feb 2016 14:19:19 +0000 (14:19 +0000)]
Revert "[sancov] do not instrument nodes that are full pre-dominators"
This reverts commit r262103, as it broke all ARM and AArch64 bots.
llvm-svn: 262139
Alexander Kornienko [Sat, 27 Feb 2016 14:02:08 +0000 (14:02 +0000)]
Workaround doxygen bug https://bugzilla.gnome.org/show_bug.cgi?id=506243
llvm-svn: 262138