[llvm-branch-commits] [cfe-branch] r257654 - Release note for debugger tuning
Author: probinson Date: Wed Jan 13 13:24:51 2016 New Revision: 257654 URL: http://llvm.org/viewvc/llvm-project?rev=257654&view=rev Log: Release note for debugger tuning Modified: cfe/branches/release_38/docs/ReleaseNotes.rst Modified: cfe/branches/release_38/docs/ReleaseNotes.rst URL: http://llvm.org/viewvc/llvm-project/cfe/branches/release_38/docs/ReleaseNotes.rst?rev=257654&r1=257653&r2=257654&view=diff == --- cfe/branches/release_38/docs/ReleaseNotes.rst (original) +++ cfe/branches/release_38/docs/ReleaseNotes.rst Wed Jan 13 13:24:51 2016 @@ -61,7 +61,22 @@ about them. The improvements since the 3 New Compiler Flags -- -The option +Clang can "tune" DWARF debugging information to suit one of several different +debuggers. This fine-tuning can mean omitting DWARF features that the +debugger does not need or use, or including DWARF extensions specific to the +debugger. Clang supports tuning for three debuggers, as follows. + +- ``-ggdb`` is equivalent to ``-g`` plus tuning for the GDB debugger. For + compatibility with GCC, Clang allows this option to be followed by a + single digit from 0 to 3 indicating the debugging information "level." + For example, ``-ggdb1`` is equivalent to ``-ggdb -g1``. + +- ``-glldb`` is equivalent to ``-g`` plus tuning for the LLDB debugger. + +- ``-gsce`` is equivalent to ``-g`` plus tuning for the Sony Computer + Entertainment debugger. + +Specifying ``-g`` without a tuning option will use a target-dependent default. New Pragmas in Clang ___ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
[llvm-branch-commits] [llvm] 6ef9505 - [RGT][ADT] Remove test assertion that will not be executed
Author: Paul Robinson Date: 2021-01-22T14:52:55-08:00 New Revision: 6ef95056b9dce1aa64d975b70f059673484bed87 URL: https://github.com/llvm/llvm-project/commit/6ef95056b9dce1aa64d975b70f059673484bed87 DIFF: https://github.com/llvm/llvm-project/commit/6ef95056b9dce1aa64d975b70f059673484bed87.diff LOG: [RGT][ADT] Remove test assertion that will not be executed Found by the Rotten Green Tests project. Differential Revision: https://reviews.llvm.org/D95255 Added: Modified: llvm/unittests/ADT/ImmutableSetTest.cpp Removed: diff --git a/llvm/unittests/ADT/ImmutableSetTest.cpp b/llvm/unittests/ADT/ImmutableSetTest.cpp index 9fe7a80d9900..e23cd2b3d1a8 100644 --- a/llvm/unittests/ADT/ImmutableSetTest.cpp +++ b/llvm/unittests/ADT/ImmutableSetTest.cpp @@ -180,7 +180,6 @@ TEST_F(ImmutableSetTest, IterLongSetTest) { int i = 0; for (ImmutableSet::iterator I = S.begin(), E = S.end(); I != E; ++I) { -ASSERT_EQ(i, *I); i++; } ASSERT_EQ(0, i); ___ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
[llvm-branch-commits] [llvm] 6ea7ecb - [RGT] Don't use EXPECT* macros in a subprocess that exits by signalling
Author: Paul Robinson Date: 2021-01-22T15:04:34-08:00 New Revision: 6ea7ecbb72aa139ebb1a343a6d544b84b99f1f3a URL: https://github.com/llvm/llvm-project/commit/6ea7ecbb72aa139ebb1a343a6d544b84b99f1f3a DIFF: https://github.com/llvm/llvm-project/commit/6ea7ecbb72aa139ebb1a343a6d544b84b99f1f3a.diff LOG: [RGT] Don't use EXPECT* macros in a subprocess that exits by signalling Found by the Rotten Green Tests project. Differential Revision: https://reviews.llvm.org/D95256 Added: Modified: llvm/unittests/Support/CrashRecoveryTest.cpp Removed: diff --git a/llvm/unittests/Support/CrashRecoveryTest.cpp b/llvm/unittests/Support/CrashRecoveryTest.cpp index c38fa0b4cb25..e95513eb2841 100644 --- a/llvm/unittests/Support/CrashRecoveryTest.cpp +++ b/llvm/unittests/Support/CrashRecoveryTest.cpp @@ -157,8 +157,12 @@ TEST(CrashRecoveryTest, UnixCRCReturnCode) { if (getenv("LLVM_CRC_UNIXCRCRETURNCODE")) { llvm::CrashRecoveryContext::Enable(); CrashRecoveryContext CRC; -EXPECT_FALSE(CRC.RunSafely(abort)); -EXPECT_EQ(CRC.RetCode, 128 + SIGABRT); +// This path runs in a subprocess that exits by signalling, so don't use +// the googletest macros to verify things as they won't report properly. +if (CRC.RunSafely(abort)) + llvm_unreachable("RunSafely returned true!"); +if (CRC.RetCode != 128 + SIGABRT) + llvm_unreachable("Unexpected RetCode!"); // re-throw signal llvm::sys::unregisterHandlers(); raise(CRC.RetCode - 128); ___ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
[llvm-branch-commits] [llvm] 25fefa5 - [RGT][TextAPI] Remove a zero-trip loop and the assertions within it
Author: Paul Robinson Date: 2021-01-22T15:07:41-08:00 New Revision: 25fefa5a098e95496735f793fd01f3e82874 URL: https://github.com/llvm/llvm-project/commit/25fefa5a098e95496735f793fd01f3e82874 DIFF: https://github.com/llvm/llvm-project/commit/25fefa5a098e95496735f793fd01f3e82874.diff LOG: [RGT][TextAPI] Remove a zero-trip loop and the assertions within it Found by the Rotten Green Tests project. Differential Revision: https://reviews.llvm.org/D95259 Added: Modified: llvm/unittests/TextAPI/TextStubV4Tests.cpp Removed: diff --git a/llvm/unittests/TextAPI/TextStubV4Tests.cpp b/llvm/unittests/TextAPI/TextStubV4Tests.cpp index 0ab9c524073f..403e2d691e52 100644 --- a/llvm/unittests/TextAPI/TextStubV4Tests.cpp +++ b/llvm/unittests/TextAPI/TextStubV4Tests.cpp @@ -255,18 +255,9 @@ TEST(TBDv4, ReadMultipleDocuments) { {Targets[0], Targets[2]}); EXPECT_EQ(1U, File->reexportedLibraries().size()); EXPECT_EQ(reexport, File->reexportedLibraries().front()); - ExportedSymbolSeq Exports; - for (const auto *Sym : File->symbols()) { -EXPECT_FALSE(Sym->isWeakReferenced()); -EXPECT_FALSE(Sym->isUndefined()); -Exports.emplace_back(ExportedSymbol{Sym->getKind(), Sym->getName().str(), -Sym->isWeakDefined(), -Sym->isThreadLocalValue()}); - } - EXPECT_EQ(0U, Exports.size()); + EXPECT_TRUE(File->symbols().empty()); // Check Inlined Document - Exports.clear(); Targets.clear(); Uuids.clear(); PlatformKind Platform = PlatformKind::macOS; @@ -292,6 +283,7 @@ TEST(TBDv4, ReadMultipleDocuments) { EXPECT_TRUE(Document->isApplicationExtensionSafe()); EXPECT_FALSE(Document->isInstallAPI()); + ExportedSymbolSeq Exports; ExportedSymbolSeq Reexports, Undefineds; for (const auto *Sym : Document->symbols()) { ExportedSymbol Temp = ___ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
[llvm-branch-commits] [llvm] e5eb5c8 - NFC: Use -LABEL more
Author: Paul Robinson Date: 2021-01-11T08:14:58-08:00 New Revision: e5eb5c8a7f30ddb01b7e00a010714ac9711f29de URL: https://github.com/llvm/llvm-project/commit/e5eb5c8a7f30ddb01b7e00a010714ac9711f29de DIFF: https://github.com/llvm/llvm-project/commit/e5eb5c8a7f30ddb01b7e00a010714ac9711f29de.diff LOG: NFC: Use -LABEL more There were a number of tests needing updates for D91734, and I added a bunch of LABEL directives to help track down where those had to go. These directives are an improvement independent of the functional patch, so I'm committing them as their own separate patch. Added: Modified: llvm/test/CodeGen/AArch64/arm64-fast-isel-call.ll llvm/test/CodeGen/AArch64/arm64-fast-isel.ll llvm/test/CodeGen/AArch64/elf-globals-static.ll llvm/test/CodeGen/ARM/fast-isel-call.ll llvm/test/CodeGen/ARM/fast-isel-ldrh-strh-arm.ll llvm/test/CodeGen/ARM/fast-isel-select.ll llvm/test/CodeGen/PowerPC/fast-isel-load-store.ll Removed: diff --git a/llvm/test/CodeGen/AArch64/arm64-fast-isel-call.ll b/llvm/test/CodeGen/AArch64/arm64-fast-isel-call.ll index 586b7d116f5c..00016a6a7fff 100644 --- a/llvm/test/CodeGen/AArch64/arm64-fast-isel-call.ll +++ b/llvm/test/CodeGen/AArch64/arm64-fast-isel-call.ll @@ -78,7 +78,7 @@ declare i32 @bar(i8 zeroext, i8 zeroext, i8 zeroext, i8 zeroext, i8 zeroext, i8 ; Test materialization of integers. Target-independent selector handles this. define i32 @t2() { entry: -; CHECK-LABEL: t2 +; CHECK-LABEL: t2: ; CHECK: mov x0, xzr ; CHECK: mov w1, #-8 ; CHECK: mov [[REG2:w[0-9]+]], #1023 @@ -99,6 +99,7 @@ declare i32 @func2(i64 zeroext, i32 signext, i16 zeroext, i8 signext, i1 zeroext declare void @callee_b0f(i8 %bp10, i8 %bp11, i8 %bp12, i8 %bp13, i8 %bp14, i8 %bp15, i8 %bp17, i8 %bp18, i8 %bp19) define void @caller_b1f() { entry: +; CHECK-LABEL: caller_b1f ; CHECK-BE-LABEL: caller_b1f ; CHECK-BE: strb w{{.*}}, [sp, #7] call void @callee_b0f(i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 8, i8 42) diff --git a/llvm/test/CodeGen/AArch64/arm64-fast-isel.ll b/llvm/test/CodeGen/AArch64/arm64-fast-isel.ll index 7dc849b7d2c4..6d402c95ee3f 100644 --- a/llvm/test/CodeGen/AArch64/arm64-fast-isel.ll +++ b/llvm/test/CodeGen/AArch64/arm64-fast-isel.ll @@ -2,7 +2,7 @@ define void @t0(i32 %a) nounwind { entry: -; CHECK: t0 +; CHECK-LABEL: t0: ; CHECK: str {{w[0-9]+}}, [sp, #12] ; CHECK-NEXT: ldr [[REGISTER:w[0-9]+]], [sp, #12] ; CHECK-NEXT: str [[REGISTER]], [sp, #12] @@ -15,7 +15,7 @@ entry: } define void @t1(i64 %a) nounwind { -; CHECK: t1 +; CHECK-LABEL: t1: ; CHECK: str {{x[0-9]+}}, [sp, #8] ; CHECK-NEXT: ldr [[REGISTER:x[0-9]+]], [sp, #8] ; CHECK-NEXT: str [[REGISTER]], [sp, #8] @@ -29,7 +29,7 @@ define void @t1(i64 %a) nounwind { define zeroext i1 @i1(i1 %a) nounwind { entry: -; CHECK: @i1 +; CHECK-LABEL: i1: ; CHECK: and [[REG:w[0-9]+]], w0, #0x1 ; CHECK: strb [[REG]], [sp, #15] ; CHECK: ldrb [[REG1:w[0-9]+]], [sp, #15] @@ -84,7 +84,7 @@ entry: } define void @t6() nounwind { -; CHECK: t6 +; CHECK-LABEL: t6: ; CHECK: brk #0x1 tail call void @llvm.trap() ret void diff --git a/llvm/test/CodeGen/AArch64/elf-globals-static.ll b/llvm/test/CodeGen/AArch64/elf-globals-static.ll index 928ec70af0b1..393f42049011 100644 --- a/llvm/test/CodeGen/AArch64/elf-globals-static.ll +++ b/llvm/test/CodeGen/AArch64/elf-globals-static.ll @@ -15,6 +15,7 @@ define i8 @test_i8(i8 %new) { ; CHECK: ldrb {{w[0-9]+}}, [x[[HIREG]], :lo12:var8] ; CHECK: strb {{w[0-9]+}}, [x[[HIREG]], :lo12:var8] +; CHECK-FAST-LABEL: test_i8: ; CHECK-FAST: adrp x[[HIREG:[0-9]+]], var8 ; CHECK-FAST: ldrb {{w[0-9]+}}, [x[[HIREG]], :lo12:var8] } @@ -28,6 +29,7 @@ define i16 @test_i16(i16 %new) { ; CHECK: ldrh {{w[0-9]+}}, [x[[HIREG]], :lo12:var16] ; CHECK: strh {{w[0-9]+}}, [x[[HIREG]], :lo12:var16] +; CHECK-FAST-LABEL: test_i16: ; CHECK-FAST: adrp x[[HIREG:[0-9]+]], var16 ; CHECK-FAST: ldrh {{w[0-9]+}}, [x[[HIREG]], :lo12:var16] } @@ -41,6 +43,7 @@ define i32 @test_i32(i32 %new) { ; CHECK: ldr {{w[0-9]+}}, [x[[HIREG]], :lo12:var32] ; CHECK: str {{w[0-9]+}}, [x[[HIREG]], :lo12:var32] +; CHECK-FAST-LABEL: test_i32: ; CHECK-FAST: adrp x[[HIREG:[0-9]+]], var32 ; CHECK-FAST: add {{x[0-9]+}}, x[[HIREG]], :lo12:var32 } @@ -54,6 +57,7 @@ define i64 @test_i64(i64 %new) { ; CHECK: ldr {{x[0-9]+}}, [x[[HIREG]], :lo12:var64] ; CHECK: str {{x[0-9]+}}, [x[[HIREG]], :lo12:var64] +; CHECK-FAST-LABEL: test_i64: ; CHECK-FAST: adrp x[[HIREG:[0-9]+]], var64 ; CHECK-FAST: add {{x[0-9]+}}, x[[HIREG]], :lo12:var64 } @@ -64,6 +68,7 @@ define i64* @test_addr() { ; CHECK: adrp [[HIREG:x[0-9]+]], var64 ; CHECK: add x0, [[HIREG]], :lo12:var64 +; CHECK-FAST-LABEL: test_addr: ; CHECK-FAST: adrp [[HIREG:x[0-9]+]], var64 ; CHECK-FAST: add x0, [[HIREG]], :lo12:var64 } diff --git a/llvm/test/CodeGen/ARM/fast-isel-call.ll b/llvm/test/CodeGen/
[llvm-branch-commits] [lld] c161775 - [FastISel] Flush local value map on every instruction
Author: Paul Robinson Date: 2021-01-11T08:32:36-08:00 New Revision: c161775decddcc86fbbfefd7485a5d0ef5842aec URL: https://github.com/llvm/llvm-project/commit/c161775decddcc86fbbfefd7485a5d0ef5842aec DIFF: https://github.com/llvm/llvm-project/commit/c161775decddcc86fbbfefd7485a5d0ef5842aec.diff LOG: [FastISel] Flush local value map on every instruction Local values are constants or addresses that can't be folded into the instruction that uses them. FastISel materializes these in a "local value" area that always dominates the current insertion point, to try to avoid materializing these values more than once (per block). https://reviews.llvm.org/D43093 added code to sink these local value instructions to their first use, which has two beneficial effects. One, it is likely to avoid some unnecessary spills and reloads; two, it allows us to attach the debug location of the user to the local value instruction. The latter effect can improve the debugging experience for debuggers with a "set next statement" feature, such as the Visual Studio debugger and PS4 debugger, because instructions to set up constants for a given statement will be associated with the appropriate source line. There are also some constants (primarily addresses) that could be produced by no-op casts or GEP instructions; the main difference from "local value" instructions is that these are values from separate IR instructions, and therefore could have multiple users across multiple basic blocks. D43093 avoided sinking these, even though they were emitted to the same "local value" area as the other instructions. The patch comment for D43093 states: Local values may also be used by no-op casts, which adds the register to the RegFixups table. Without reversing the RegFixups map direction, we don't have enough information to sink these instructions. This patch undoes most of D43093, and instead flushes the local value map after(*) every IR instruction, using that instruction's debug location. This avoids sometimes incorrect locations used previously, and emits instructions in a more natural order. In addition, constants materialized due to PHI instructions are not assigned a debug location immediately; instead, when the local value map is flushed, if the first local value instruction has no debug location, it is given the same location as the first non-local-value-map instruction. This prevents PHIs from introducing unattributed instructions, which would either be implicitly attributed to the location for the preceding IR instruction, or given line 0 if they are at the beginning of a machine basic block. Neither of those consequences is good for debugging. This does mean materialized values are not re-used across IR instruction boundaries; however, only about 5% of those values were reused in an experimental self-build of clang. (*) Actually, just prior to the next instruction. It seems like it would be cleaner the other way, but I was having trouble getting that to work. This reapplies commits cf1c774d and dc35368c, and adds the modification to PHI handling, which should avoid problems with debugging under gdb. Differential Revision: https://reviews.llvm.org/D91734 Added: llvm/test/CodeGen/X86/fast-isel-prolog-dbgloc.ll Modified: lld/test/wasm/debug-removed-fn.ll lldb/test/Shell/SymbolFile/NativePDB/disassembly.cpp lldb/test/Shell/SymbolFile/NativePDB/load-pdb.cpp llvm/include/llvm/CodeGen/FastISel.h llvm/lib/CodeGen/SelectionDAG/FastISel.cpp llvm/test/CodeGen/AArch64/arm64-abi_align.ll llvm/test/CodeGen/AArch64/arm64-fast-isel-call.ll llvm/test/CodeGen/AArch64/arm64-fast-isel-gv.ll llvm/test/CodeGen/AArch64/arm64-fast-isel-intrinsic.ll llvm/test/CodeGen/AArch64/arm64-fast-isel.ll llvm/test/CodeGen/AArch64/arm64-patchpoint-webkit_jscc.ll llvm/test/CodeGen/AArch64/cfguard-checks.ll llvm/test/CodeGen/AArch64/elf-globals-static.ll llvm/test/CodeGen/AArch64/large-stack.ll llvm/test/CodeGen/ARM/fast-isel-call.ll llvm/test/CodeGen/ARM/fast-isel-intrinsic.ll llvm/test/CodeGen/ARM/fast-isel-ldr-str-thumb-neg-index.ll llvm/test/CodeGen/ARM/fast-isel-ldrh-strh-arm.ll llvm/test/CodeGen/ARM/fast-isel-select.ll llvm/test/CodeGen/ARM/fast-isel.ll llvm/test/CodeGen/Mips/Fast-ISel/callabi.ll llvm/test/CodeGen/Mips/Fast-ISel/fastalloca.ll llvm/test/CodeGen/Mips/Fast-ISel/fpcmpa.ll llvm/test/CodeGen/Mips/Fast-ISel/icmpa.ll llvm/test/CodeGen/Mips/Fast-ISel/logopm.ll llvm/test/CodeGen/Mips/Fast-ISel/overflt.ll llvm/test/CodeGen/Mips/Fast-ISel/shftopm.ll llvm/test/CodeGen/Mips/Fast-ISel/simplestore.ll llvm/test/CodeGen/Mips/Fast-ISel/simplestorei.ll llvm/test/CodeGen/Mips/emergency-spill-slot-near-fp.ll llvm/test/CodeGen/PowerPC/elf-common.ll llvm/test/CodeGen/PowerPC/fast-isel-load-store.ll llvm/test/CodeGen/PowerPC/mcm-1.ll llvm/test/CodeGen/PowerPC/mcm-13.ll llvm/test/CodeGen/PowerPC/mcm-2.ll
[llvm-branch-commits] [llvm] be179b9 - [FastISel] NFC: Remove obsolete -fast-isel-sink-local-values option
Author: Paul Robinson Date: 2021-01-11T09:32:49-08:00 New Revision: be179b9946f6dfd6e3d957d9f7a6ee992d1f69d2 URL: https://github.com/llvm/llvm-project/commit/be179b9946f6dfd6e3d957d9f7a6ee992d1f69d2 DIFF: https://github.com/llvm/llvm-project/commit/be179b9946f6dfd6e3d957d9f7a6ee992d1f69d2.diff LOG: [FastISel] NFC: Remove obsolete -fast-isel-sink-local-values option This option is not used for anything after #c161665 (D91737). This commit reapplies #a474657. Added: Modified: llvm/lib/CodeGen/SelectionDAG/FastISel.cpp llvm/test/CodeGen/AArch64/arm64-abi_align.ll llvm/test/CodeGen/AArch64/arm64-fast-isel-call.ll llvm/test/CodeGen/AArch64/arm64-fast-isel-gv.ll llvm/test/CodeGen/AArch64/arm64-fast-isel-intrinsic.ll llvm/test/CodeGen/AArch64/arm64-fast-isel.ll llvm/test/CodeGen/AArch64/arm64-patchpoint-webkit_jscc.ll llvm/test/CodeGen/AArch64/swifterror.ll llvm/test/CodeGen/ARM/fast-isel-call.ll llvm/test/CodeGen/ARM/fast-isel-intrinsic.ll llvm/test/CodeGen/ARM/fast-isel-select.ll llvm/test/CodeGen/ARM/fast-isel-vararg.ll llvm/test/CodeGen/ARM/swifterror.ll llvm/test/CodeGen/Mips/Fast-ISel/callabi.ll llvm/test/CodeGen/Mips/Fast-ISel/simplestore.ll llvm/test/CodeGen/Mips/Fast-ISel/simplestorei.ll llvm/test/CodeGen/X86/avx512-mask-zext-bugfix.ll llvm/test/CodeGen/X86/bmi-intrinsics-fast-isel.ll llvm/test/CodeGen/X86/fast-isel-call-cleanup.ll llvm/test/CodeGen/X86/inreg.ll llvm/test/CodeGen/X86/pr32241.ll llvm/test/CodeGen/X86/pr32284.ll llvm/test/CodeGen/X86/pr32340.ll llvm/test/CodeGen/X86/pr32345.ll llvm/test/CodeGen/X86/pr32484.ll llvm/test/CodeGen/X86/sink-local-value.ll llvm/test/CodeGen/X86/sse-intrinsics-fast-isel.ll llvm/test/DebugInfo/Mips/delay-slot.ll llvm/test/DebugInfo/X86/prologue-stack.ll Removed: diff --git a/llvm/lib/CodeGen/SelectionDAG/FastISel.cpp b/llvm/lib/CodeGen/SelectionDAG/FastISel.cpp index 27e359a5c696..e9b116798ad3 100644 --- a/llvm/lib/CodeGen/SelectionDAG/FastISel.cpp +++ b/llvm/lib/CodeGen/SelectionDAG/FastISel.cpp @@ -113,11 +113,6 @@ using namespace PatternMatch; #define DEBUG_TYPE "isel" -// FIXME: Remove this after the feature has proven reliable. -static cl::opt SinkLocalValues("fast-isel-sink-local-values", - cl::init(true), cl::Hidden, - cl::desc("Sink local values in FastISel")); - STATISTIC(NumFastIselSuccessIndependent, "Number of insts selected by " "target-independent selector"); STATISTIC(NumFastIselSuccessTarget, "Number of insts selected by " diff --git a/llvm/test/CodeGen/AArch64/arm64-abi_align.ll b/llvm/test/CodeGen/AArch64/arm64-abi_align.ll index fe0b31fb2db9..5224eca76619 100644 --- a/llvm/test/CodeGen/AArch64/arm64-abi_align.ll +++ b/llvm/test/CodeGen/AArch64/arm64-abi_align.ll @@ -1,5 +1,5 @@ -; RUN: llc -fast-isel-sink-local-values -aarch64-load-store-renaming=true < %s -mtriple=arm64-apple-darwin -mcpu=cyclone -enable-misched=false -frame-pointer=all | FileCheck %s -; RUN: llc -fast-isel-sink-local-values -aarch64-load-store-renaming=true < %s -mtriple=arm64-apple-darwin -O0 -frame-pointer=all -fast-isel | FileCheck -check-prefix=FAST %s +; RUN: llc -aarch64-load-store-renaming=true < %s -mtriple=arm64-apple-darwin -mcpu=cyclone -enable-misched=false -frame-pointer=all | FileCheck %s +; RUN: llc -aarch64-load-store-renaming=true < %s -mtriple=arm64-apple-darwin -O0 -frame-pointer=all -fast-isel | FileCheck -check-prefix=FAST %s ; rdar://12648441 ; Generated from arm64-arguments.c with -O2. diff --git a/llvm/test/CodeGen/AArch64/arm64-fast-isel-call.ll b/llvm/test/CodeGen/AArch64/arm64-fast-isel-call.ll index a677d4a14353..9b9eb8d29bed 100644 --- a/llvm/test/CodeGen/AArch64/arm64-fast-isel-call.ll +++ b/llvm/test/CodeGen/AArch64/arm64-fast-isel-call.ll @@ -1,6 +1,6 @@ -; RUN: llc -fast-isel-sink-local-values -O0 -fast-isel -fast-isel-abort=2 -code-model=small -verify-machineinstrs -frame-pointer=all -mtriple=arm64-apple-darwin < %s | FileCheck %s -; RUN: llc -fast-isel-sink-local-values -O0 -fast-isel -fast-isel-abort=2 -code-model=large -verify-machineinstrs -frame-pointer=all -mtriple=arm64-apple-darwin < %s | FileCheck %s --check-prefix=LARGE -; RUN: llc -fast-isel-sink-local-values -O0 -fast-isel -fast-isel-abort=2 -code-model=small -verify-machineinstrs -frame-pointer=all -mtriple=aarch64_be-linux-gnu < %s | FileCheck %s --check-prefix=CHECK-BE +; RUN: llc -O0 -fast-isel -fast-isel-abort=2 -code-model=small -verify-machineinstrs -frame-pointer=all -mtriple=arm64-apple-darwin < %s | FileCheck %s +; RUN: llc -O0 -fast-isel -fast-isel-abort=2 -code-model=large -verify-machineinstrs -frame-pointer=all -mtriple=arm64-apple-darwin < %s | FileCheck %s --check-prefix=LARGE +; RUN: llc -O0
[llvm-branch-commits] [llvm] 1f9c292 - [FastISel] NFC: Clean up unnecessary bookkeeping
Author: Paul Robinson Date: 2021-01-11T09:40:39-08:00 New Revision: 1f9c29228cecfde9e993cd2818d9cd3119189163 URL: https://github.com/llvm/llvm-project/commit/1f9c29228cecfde9e993cd2818d9cd3119189163 DIFF: https://github.com/llvm/llvm-project/commit/1f9c29228cecfde9e993cd2818d9cd3119189163.diff LOG: [FastISel] NFC: Clean up unnecessary bookkeeping Now that we flush the local value map for every instruction, we don't need any extra flushes for specific cases. Also, LastFlushPoint is not used for anything. Follow-ups to #c161665 (D91734). This reapplies #3fd39d3. Differential Revision: https://reviews.llvm.org/D92338 Added: Modified: llvm/include/llvm/CodeGen/FastISel.h llvm/lib/CodeGen/SelectionDAG/FastISel.cpp Removed: diff --git a/llvm/include/llvm/CodeGen/FastISel.h b/llvm/include/llvm/CodeGen/FastISel.h index d20f443e3013..81c1d6aad49a 100644 --- a/llvm/include/llvm/CodeGen/FastISel.h +++ b/llvm/include/llvm/CodeGen/FastISel.h @@ -224,10 +224,6 @@ class FastISel { /// makes sense (for example, on function calls) MachineInstr *EmitStartPt; - /// Last local value flush point. On a subsequent flush, no local value will - /// sink past this point. - MachineBasicBlock::iterator LastFlushPoint; - public: virtual ~FastISel(); diff --git a/llvm/lib/CodeGen/SelectionDAG/FastISel.cpp b/llvm/lib/CodeGen/SelectionDAG/FastISel.cpp index e9b116798ad3..c018f1647169 100644 --- a/llvm/lib/CodeGen/SelectionDAG/FastISel.cpp +++ b/llvm/lib/CodeGen/SelectionDAG/FastISel.cpp @@ -236,7 +236,6 @@ void FastISel::flushLocalValueMap() { LastLocalValue = EmitStartPt; recomputeInsertPt(); SavedInsertPt = FuncInfo.InsertPt; - LastFlushPoint = FuncInfo.InsertPt; } bool FastISel::hasTrivialKill(const Value *V) { @@ -458,8 +457,6 @@ void FastISel::removeDeadCode(MachineBasicBlock::iterator I, assert(I.isValid() && E.isValid() && std::distance(I, E) > 0 && "Invalid iterator!"); while (I != E) { -if (LastFlushPoint == I) - LastFlushPoint = E; if (SavedInsertPt == I) SavedInsertPt = E; if (EmitStartPt == I) @@ -1210,11 +1207,6 @@ bool FastISel::selectCall(const User *I) { // Handle simple inline asms. if (const InlineAsm *IA = dyn_cast(Call->getCalledOperand())) { -// If the inline asm has side effects, then make sure that no local value -// lives across by flushing the local value map. -if (IA->hasSideEffects()) - flushLocalValueMap(); - // Don't attempt to handle constraints. if (!IA->getConstraintString().empty()) return false; @@ -1244,15 +1236,6 @@ bool FastISel::selectCall(const User *I) { if (const auto *II = dyn_cast(Call)) return selectIntrinsicCall(II); - // Usually, it does not make sense to initialize a value, - // make an unrelated function call and use the value, because - // it tends to be spilled on the stack. So, we move the pointer - // to the last local value to the beginning of the block, so that - // all the values which have already been materialized, - // appear after the call. It also makes sense to skip intrinsics - // since they tend to be inlined. - flushLocalValueMap(); - return lowerCall(Call); } @@ -1409,20 +1392,6 @@ bool FastISel::selectIntrinsicCall(const IntrinsicInst *II) { return selectXRayCustomEvent(II); case Intrinsic::xray_typedevent: return selectXRayTypedEvent(II); - - case Intrinsic::memcpy: - case Intrinsic::memcpy_element_unordered_atomic: - case Intrinsic::memcpy_inline: - case Intrinsic::memmove: - case Intrinsic::memmove_element_unordered_atomic: - case Intrinsic::memset: - case Intrinsic::memset_element_unordered_atomic: -// Flush the local value map just like we do for regular calls, -// to avoid excessive spills and reloads. -// These intrinsics mostly turn into library calls at O0; and -// even memcpy_inline should be treated like one for this purpose. -flushLocalValueMap(); -break; } return fastLowerIntrinsicCall(II); ___ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
[llvm-branch-commits] [llvm] dc35368 - Remove static function unused after cf1c774.
Author: Paul Robinson Date: 2020-11-25T13:43:06-05:00 New Revision: dc35368ccf17a7dca0874ace7490cc3836fb063f URL: https://github.com/llvm/llvm-project/commit/dc35368ccf17a7dca0874ace7490cc3836fb063f DIFF: https://github.com/llvm/llvm-project/commit/dc35368ccf17a7dca0874ace7490cc3836fb063f.diff LOG: Remove static function unused after cf1c774. Caused some -Werror bot failures. Added: Modified: llvm/lib/CodeGen/SelectionDAG/FastISel.cpp Removed: diff --git a/llvm/lib/CodeGen/SelectionDAG/FastISel.cpp b/llvm/lib/CodeGen/SelectionDAG/FastISel.cpp index 3d935bb0077e..2d3ec0a0367f 100644 --- a/llvm/lib/CodeGen/SelectionDAG/FastISel.cpp +++ b/llvm/lib/CodeGen/SelectionDAG/FastISel.cpp @@ -223,21 +223,6 @@ void FastISel::flushLocalValueMap() { LastFlushPoint = FuncInfo.InsertPt; } -static bool isTerminatingEHLabel(MachineBasicBlock *MBB, MachineInstr &MI) { - // Ignore non-EH labels. - if (!MI.isEHLabel()) -return false; - - // Any EH label outside a landing pad must be for an invoke. Consider it a - // terminator. - if (!MBB->isEHPad()) -return true; - - // If this is a landingpad, the first non-phi instruction will be an EH_LABEL. - // Don't consider that label to be a terminator. - return MI.getIterator() != MBB->getFirstNonPHI(); -} - bool FastISel::hasTrivialKill(const Value *V) { // Don't consider constants or arguments to have trivial kills. const Instruction *I = dyn_cast(V); ___ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
[llvm-branch-commits] [llvm] a474657 - [FastISel] NFC: Remove obsolete -fast-isel-sink-local-values option
Author: Paul Robinson Date: 2020-11-30T10:55:49-08:00 New Revision: a474657e30edccd9e175d92bddeefcfa544751b2 URL: https://github.com/llvm/llvm-project/commit/a474657e30edccd9e175d92bddeefcfa544751b2 DIFF: https://github.com/llvm/llvm-project/commit/a474657e30edccd9e175d92bddeefcfa544751b2.diff LOG: [FastISel] NFC: Remove obsolete -fast-isel-sink-local-values option This option is not used for anything after #dc35368 (D91734). Added: Modified: llvm/lib/CodeGen/SelectionDAG/FastISel.cpp llvm/test/CodeGen/AArch64/arm64-abi_align.ll llvm/test/CodeGen/AArch64/arm64-fast-isel-call.ll llvm/test/CodeGen/AArch64/arm64-fast-isel-gv.ll llvm/test/CodeGen/AArch64/arm64-fast-isel-intrinsic.ll llvm/test/CodeGen/AArch64/arm64-fast-isel.ll llvm/test/CodeGen/AArch64/arm64-patchpoint-webkit_jscc.ll llvm/test/CodeGen/AArch64/swifterror.ll llvm/test/CodeGen/ARM/fast-isel-call.ll llvm/test/CodeGen/ARM/fast-isel-intrinsic.ll llvm/test/CodeGen/ARM/fast-isel-select.ll llvm/test/CodeGen/ARM/fast-isel-vararg.ll llvm/test/CodeGen/ARM/swifterror.ll llvm/test/CodeGen/Mips/Fast-ISel/callabi.ll llvm/test/CodeGen/Mips/Fast-ISel/simplestore.ll llvm/test/CodeGen/Mips/Fast-ISel/simplestorei.ll llvm/test/CodeGen/X86/avx512-mask-zext-bugfix.ll llvm/test/CodeGen/X86/bmi-intrinsics-fast-isel.ll llvm/test/CodeGen/X86/fast-isel-call-cleanup.ll llvm/test/CodeGen/X86/inreg.ll llvm/test/CodeGen/X86/pr32241.ll llvm/test/CodeGen/X86/pr32284.ll llvm/test/CodeGen/X86/pr32340.ll llvm/test/CodeGen/X86/pr32345.ll llvm/test/CodeGen/X86/pr32484.ll llvm/test/CodeGen/X86/sink-local-value.ll llvm/test/CodeGen/X86/sse-intrinsics-fast-isel.ll llvm/test/DebugInfo/Mips/delay-slot.ll llvm/test/DebugInfo/X86/prologue-stack.ll Removed: diff --git a/llvm/lib/CodeGen/SelectionDAG/FastISel.cpp b/llvm/lib/CodeGen/SelectionDAG/FastISel.cpp index 2d3ec0a0367f..7615861149c6 100644 --- a/llvm/lib/CodeGen/SelectionDAG/FastISel.cpp +++ b/llvm/lib/CodeGen/SelectionDAG/FastISel.cpp @@ -113,11 +113,6 @@ using namespace PatternMatch; #define DEBUG_TYPE "isel" -// FIXME: Remove this after the feature has proven reliable. -static cl::opt SinkLocalValues("fast-isel-sink-local-values", - cl::init(true), cl::Hidden, - cl::desc("Sink local values in FastISel")); - STATISTIC(NumFastIselSuccessIndependent, "Number of insts selected by " "target-independent selector"); STATISTIC(NumFastIselSuccessTarget, "Number of insts selected by " diff --git a/llvm/test/CodeGen/AArch64/arm64-abi_align.ll b/llvm/test/CodeGen/AArch64/arm64-abi_align.ll index fe0b31fb2db9..5224eca76619 100644 --- a/llvm/test/CodeGen/AArch64/arm64-abi_align.ll +++ b/llvm/test/CodeGen/AArch64/arm64-abi_align.ll @@ -1,5 +1,5 @@ -; RUN: llc -fast-isel-sink-local-values -aarch64-load-store-renaming=true < %s -mtriple=arm64-apple-darwin -mcpu=cyclone -enable-misched=false -frame-pointer=all | FileCheck %s -; RUN: llc -fast-isel-sink-local-values -aarch64-load-store-renaming=true < %s -mtriple=arm64-apple-darwin -O0 -frame-pointer=all -fast-isel | FileCheck -check-prefix=FAST %s +; RUN: llc -aarch64-load-store-renaming=true < %s -mtriple=arm64-apple-darwin -mcpu=cyclone -enable-misched=false -frame-pointer=all | FileCheck %s +; RUN: llc -aarch64-load-store-renaming=true < %s -mtriple=arm64-apple-darwin -O0 -frame-pointer=all -fast-isel | FileCheck -check-prefix=FAST %s ; rdar://12648441 ; Generated from arm64-arguments.c with -O2. diff --git a/llvm/test/CodeGen/AArch64/arm64-fast-isel-call.ll b/llvm/test/CodeGen/AArch64/arm64-fast-isel-call.ll index a677d4a14353..9b9eb8d29bed 100644 --- a/llvm/test/CodeGen/AArch64/arm64-fast-isel-call.ll +++ b/llvm/test/CodeGen/AArch64/arm64-fast-isel-call.ll @@ -1,6 +1,6 @@ -; RUN: llc -fast-isel-sink-local-values -O0 -fast-isel -fast-isel-abort=2 -code-model=small -verify-machineinstrs -frame-pointer=all -mtriple=arm64-apple-darwin < %s | FileCheck %s -; RUN: llc -fast-isel-sink-local-values -O0 -fast-isel -fast-isel-abort=2 -code-model=large -verify-machineinstrs -frame-pointer=all -mtriple=arm64-apple-darwin < %s | FileCheck %s --check-prefix=LARGE -; RUN: llc -fast-isel-sink-local-values -O0 -fast-isel -fast-isel-abort=2 -code-model=small -verify-machineinstrs -frame-pointer=all -mtriple=aarch64_be-linux-gnu < %s | FileCheck %s --check-prefix=CHECK-BE +; RUN: llc -O0 -fast-isel -fast-isel-abort=2 -code-model=small -verify-machineinstrs -frame-pointer=all -mtriple=arm64-apple-darwin < %s | FileCheck %s +; RUN: llc -O0 -fast-isel -fast-isel-abort=2 -code-model=large -verify-machineinstrs -frame-pointer=all -mtriple=arm64-apple-darwin < %s | FileCheck %s --check-prefix=LARGE +; RUN: llc -O0 -fast-isel -fast-isel-abort=2 -
[llvm-branch-commits] [cfe-branch] r338892 - Release note for DWARF v5 support
Author: probinson Date: Fri Aug 3 07:05:11 2018 New Revision: 338892 URL: http://llvm.org/viewvc/llvm-project?rev=338892&view=rev Log: Release note for DWARF v5 support Modified: cfe/branches/release_70/docs/ReleaseNotes.rst Modified: cfe/branches/release_70/docs/ReleaseNotes.rst URL: http://llvm.org/viewvc/llvm-project/cfe/branches/release_70/docs/ReleaseNotes.rst?rev=338892&r1=338891&r2=338892&view=diff == --- cfe/branches/release_70/docs/ReleaseNotes.rst (original) +++ cfe/branches/release_70/docs/ReleaseNotes.rst Fri Aug 3 07:05:11 2018 @@ -50,6 +50,12 @@ Major New Features was added. Please refer to the :ref:`release-notes-ubsan` section of the release notes for the details. +- Preliminary/experimental support for DWARF v5 debugging information. If you + compile with ``-gdwarf-5 -O0`` you should get fully conforming DWARF v5 + information, including the new .debug_names accelerator table. Type units + and split DWARF are known not to conform, and higher optimization levels + will likely get a mix of v4 and v5 formats. + Improvements to Clang's diagnostics ^^^ ___ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
[llvm-branch-commits] [llvm-branch] r338891 - Release note for DWARF v5 support
Author: probinson Date: Fri Aug 3 07:04:59 2018 New Revision: 338891 URL: http://llvm.org/viewvc/llvm-project?rev=338891&view=rev Log: Release note for DWARF v5 support Modified: llvm/branches/release_70/docs/ReleaseNotes.rst Modified: llvm/branches/release_70/docs/ReleaseNotes.rst URL: http://llvm.org/viewvc/llvm-project/llvm/branches/release_70/docs/ReleaseNotes.rst?rev=338891&r1=338890&r2=338891&view=diff == --- llvm/branches/release_70/docs/ReleaseNotes.rst (original) +++ llvm/branches/release_70/docs/ReleaseNotes.rst Fri Aug 3 07:04:59 2018 @@ -109,6 +109,12 @@ Non-comprehensive list of changes in thi it's now a better choice even on the heap (although when TinyPtrVector works, it's even smaller). +* Preliminary/experimental support for DWARF v5 debugging information, + including the new .debug_names accelerator table. DWARF emitted at ``-O0`` + should be fully DWARF v5 compliant. Type units and split DWARF are known + not to be compliant, and higher optimization levels will still emit some + information in v4 format. + * Note.. .. NOTE ___ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits