Page MenuHomePhabricator
Feed Advanced Search

May 12 2020

jyknight added a comment to D79605: MachineBasicBlock::updateTerminator now requires an explicit layout successor..

Is the endgame here that we relax the restriction that updateTerminator() requires an analyzable branch?

May 12 2020, 1:27 PM · Restricted Project
jyknight updated the summary of D79793: Simplify MachineVerifier's block-successor verification..
May 12 2020, 10:11 AM · Restricted Project
jyknight created D79794: Change the INLINEASM_BR MachineInstr to be a non-terminating instruction..
May 12 2020, 10:11 AM · Restricted Project
jyknight created D79793: Simplify MachineVerifier's block-successor verification..
May 12 2020, 10:11 AM · Restricted Project
jyknight committed rGe9536795a350: Add comment for SelectionDAGBuilder::SL field. (authored by jyknight).
Add comment for SelectionDAGBuilder::SL field.
May 12 2020, 8:02 AM

May 11 2020

jyknight added a comment to D75098: Add TCOPY, a terminator form of the COPY instr.

I think the better fix here is to make INLINEASM_BR _not_ be a terminator -- just like the CALL involved in an invoke is not.

May 11 2020, 9:35 PM · Restricted Project

May 10 2020

jyknight committed rG6d23f2985270: [examples] Fix llvm.memset prototype in BrainF example. (authored by ricky).
[examples] Fix llvm.memset prototype in BrainF example.
May 10 2020, 2:22 PM
jyknight closed D79601: [examples] Fix llvm.memset prototype in BrainF example..
May 10 2020, 2:22 PM · Restricted Project

May 7 2020

jyknight accepted D79601: [examples] Fix llvm.memset prototype in BrainF example..

Sounds good. Do you have commit access, or do you need me to commit this for you?

May 7 2020, 4:19 PM · Restricted Project
jyknight committed rG7af9d386da2a: Correctly modify the CFG in IfConverter, and then remove the… (authored by jyknight).
Correctly modify the CFG in IfConverter, and then remove the…
May 7 2020, 3:47 PM
jyknight closed D79527: Correctly modify the CFG in IfConverter, and then remove the CorrectExtraCFGEdges function..
May 7 2020, 3:47 PM · Restricted Project
jyknight created D79605: MachineBasicBlock::updateTerminator now requires an explicit layout successor..
May 7 2020, 3:46 PM · Restricted Project
jyknight added inline comments to D79527: Correctly modify the CFG in IfConverter, and then remove the CorrectExtraCFGEdges function..
May 7 2020, 6:12 AM · Restricted Project
jyknight updated the diff for D79527: Correctly modify the CFG in IfConverter, and then remove the CorrectExtraCFGEdges function..

update function comment.

May 7 2020, 6:12 AM · Restricted Project

May 6 2020

jyknight created D79527: Correctly modify the CFG in IfConverter, and then remove the CorrectExtraCFGEdges function..
May 6 2020, 4:30 PM · Restricted Project
jyknight added inline comments to D79511: [ObjC] Add compatibility mode for type checking of qualified id block parameters..
May 6 2020, 1:35 PM · Restricted Project

May 4 2020

jyknight added a comment to D66831: [ObjC] Fix type checking for qualified id block parameters..

Agree that is a mistake in NSItemProvider API. The solution I offer is not to revert the change but to add cc1 flag -fcompatibility-qualified-id-block-type-checking and to make the driver for Darwin platforms to add this flag. Thus developers using Apple SDKs will see the old behavior and won't need to change their code. While everybody else will use clang with correct type checking. If any other platforms provide APIs relying on the old type checking, the solution for them is to tweak the driver.

The right NSItemProvider fix is to use __kindof, like void (^)(__kindof id<NSSecureCoding> item, NSError *error); It's purpose is to flip substitution principle, so that's the way to express API requirements in the type system. When we have a fix available in SDK, we can change the driver not to add the compatibility flag anymore and NSItemProvider should keep working without developers changing their code.

I'm going to work on the patch to add the compatibility flag, if you have any scenarios not covered by the offered solution, please let me know.

May 4 2020, 6:50 PM · Restricted Project
jyknight added a comment to D66831: [ObjC] Fix type checking for qualified id block parameters..

Hi, it seems that this change is incompatible with the [NSItemProvider loadItemForTypeIdentifier:options:completionHandler:] method's expected (but extremely weird and unusual!) usage.

May 4 2020, 9:04 AM · Restricted Project

Apr 27 2020

jyknight accepted D77213: Handle part-word LL/SC in atomic expansion pass.
Apr 27 2020, 6:20 PM · Restricted Project

Apr 24 2020

jyknight added a comment to D77213: Handle part-word LL/SC in atomic expansion pass.

Functionality seems fine, just some style nits.

Apr 24 2020, 3:44 PM · Restricted Project

Apr 23 2020

jyknight committed rGfb8152dcfe6c: [CallSite removal] Remove the text describing CallSite from the manual. (authored by jyknight).
[CallSite removal] Remove the text describing CallSite from the manual.
Apr 23 2020, 7:35 PM
jyknight committed rG248a5db3f2e5: Change callbr to only define its output SSA variable on the normal path, not… (authored by jyknight).
Change callbr to only define its output SSA variable on the normal path, not…
Apr 23 2020, 4:54 PM
jyknight closed D78341: Change callbr to only define its output SSA variable on the normal path, not the indirect targets..
Apr 23 2020, 4:54 PM · Restricted Project
jyknight committed rG01097dc644e3: Remove InvokeInst methods which duplicate those of its superclass CallBase. (authored by jyknight).
Remove InvokeInst methods which duplicate those of its superclass CallBase.
Apr 23 2020, 4:20 PM
jyknight updated the diff for D78341: Change callbr to only define its output SSA variable on the normal path, not the indirect targets..

Updated with some tests. Committing this shortly.

Apr 23 2020, 3:47 PM · Restricted Project
jyknight added a comment to D78341: Change callbr to only define its output SSA variable on the normal path, not the indirect targets..

There's one part of this that's a little subtle: if an indirect destination is the same as the normal destination, the value is available at that destination even if the indirect edge is taken.

That's not necessarily a problem at the IR level, but we might need to special-case it in isel.

Apr 23 2020, 3:47 PM · Restricted Project

Apr 17 2020

jyknight updated the diff for D78341: Change callbr to only define its output SSA variable on the normal path, not the indirect targets..

Fix crash reported by Nick, InstructionSimplify was bypassing the
Dominators code in some cases, and doing its own thing.

Apr 17 2020, 3:48 PM · Restricted Project

Apr 16 2020

jyknight created D78341: Change callbr to only define its output SSA variable on the normal path, not the indirect targets..
Apr 16 2020, 7:30 PM · Restricted Project

Apr 13 2020

jyknight added a comment to D77213: Handle part-word LL/SC in atomic expansion pass.

My first reaction is to be a bit reticent to extend the IR-level LL/SC expansion code, because generally speaking LL/SC expansion in IR is not sound (per previous discussions over the years). However, I do recall during those discussions, it was also mentioned that the concerns don't apply to Hexagon http://lists.llvm.org/pipermail/llvm-dev/2018-June/124069.html -- that the activity of other simultaneously running threads cannot cause the spurious loss of a reservation. Perhaps that's the case now because there aren't any Hexagon chips that support multiple cores with separate caches.

Apr 13 2020, 10:46 AM · Restricted Project

Apr 9 2020

jyknight committed rG5e7b98fe7510: Fix an unused-variable warning in Release mode. (authored by jyknight).
Fix an unused-variable warning in Release mode.
Apr 9 2020, 1:35 PM

Apr 8 2020

jyknight added a comment to D77740: [CMake] Add a warning message to prepare the upcoming upgrade to CMake 3.13.4.

I don't think there's any point in delaying until after the 11 release. We just branched LLVM 10. I believe we should make the change between now and the September LLVM 11 release, rather than afterwards.

Apr 8 2020, 10:18 AM · Restricted Project

Apr 3 2020

jyknight added a comment to D77330: Consider increasing the default ARM32 max page size to 64k..

We (Android Google folks) have an internal thread going on about what implications this might have, but I can say that I am concerned about making this kind of change for ARM Android targets. Even though we manually set a 4KB max page size in our platform builds for 32-bit, we also have to consider the needs of NDK developers (i.e. those folks making native applications/games/etc.). Some of their build configurations might behave very differently with this change, so my current thinking is that 64KB should not be the default for ARM Android targets.

Apr 3 2020, 9:40 AM · Restricted Project, lld

Mar 25 2020

jyknight added a comment to D76525: Expose cache line size in __builtin_get_cpu_cache_line_size.

I don't think there's a particularly good reason to expose this as a builtin, unless it's to be used by the standard library implementation. (Which again I do not think we should implement.)

Mar 25 2020, 10:15 AM · Restricted Project

Mar 19 2020

jyknight added a comment to D60748: Adds an option "malign-pass-aggregate" to make the alignment of the struct and union parameters compatible with the default gcc.

Since the ABI this is trying to match is not documented literally anywhere, I think we need to have some confidence that what this implements is actually the same as what GCC does. While I wrote up what I think the algorithm is, without some sort of script to allow testing it against a bunch of examples, I wouldn't say I'm confident of its correctness.

Mar 19 2020, 8:37 AM · Restricted Project

Mar 18 2020

jyknight added a comment to D74918: Add method to TargetInfo to get CPU cache line size.

This patch as it stands is harmless, since as it only defines an internal interface, which is unused. So in that sense, it's perfectly fine to commit even with the remaining unresolved questions about the correct values to return. However, unless we're going to actually use it, adding this code to clang is not useful, for the same reason of it only defining an internal interface which is unused.

Mar 18 2020, 11:24 AM · Restricted Project
jyknight added a comment to D72742: Don't assume promotable integers are zero/sign-extended already in x86-64 ABI..

I wrote some stuff on https://bugs.llvm.org/show_bug.cgi?id=44228, probably best to continue the discussion there. I really don't think we should take this patch -- at least not without reopening the ABI discussion first.

Mar 18 2020, 5:24 AM · Restricted Project, Restricted Project

Mar 17 2020

jyknight added a comment to D75703: Splits __wasm_apply_relocs into multiple functions.

Copying what I said from Discord --

Mar 17 2020, 10:10 AM · Restricted Project

Mar 3 2020

jyknight accepted D75557: [test-suite] Add -fcommon.
Mar 3 2020, 12:37 PM
jyknight added inline comments to D75520: [compiler-rt] Fix tests after defaulting to -fno-common. NFC..
Mar 3 2020, 8:00 AM · Restricted Project

Mar 2 2020

jyknight accepted D75056: [Driver] Default to -fno-common for all targets.

Looks good modulo minor comments.

Mar 2 2020, 8:31 AM · Restricted Project

Feb 28 2020

jyknight accepted D75346: [X86] Disable the NOP padding for branches when bundle is enabled.

(Still worth considering removing the bundle_align feature entirely, but in the meantime, definitely good to not blow up).

Feb 28 2020, 2:54 PM · Restricted Project
jyknight added a reviewer for D75382: [lld] Initial commit for new Mach-O backend: bbaren.
Feb 28 2020, 1:42 PM · Restricted Project

Feb 27 2020

jyknight requested changes to D74918: Add method to TargetInfo to get CPU cache line size.

@jyknight It would probably be best if we could account for CPUs who like to use aligned pairs when getting a cache line. It's probably also important that we don't change the value getCPUCacheLineSize returns, so, if we are going to account for that, we should probably update getCPUCacheLineSize before this patch lands.

Feb 27 2020, 1:59 PM · Restricted Project
jyknight accepted D75227: [Sparc] Fix incorrect operand for matching CMPri pattern.

LGTM.

Feb 27 2020, 10:16 AM · Restricted Project

Feb 26 2020

jyknight added a comment to D63744: In the libc++ unstable ABI, use [[no_unique_address]] instead of __compressed_pair when available..

IMO, this is a good idea, and should be committed evendespite the addition of ifdefs in the implementation.

Feb 26 2020, 2:20 PM · Restricted Project
jyknight added a comment to D75056: [Driver] Default to -fno-common for all targets.

Are there any tests remaining that check that with -fcommon, IR generation creates "common" variables, now that all these tests have been modified? If there are not, one should be added.

Feb 26 2020, 12:57 PM · Restricted Project

Feb 24 2020

jyknight accepted D73126: [X86] Generate unaligned access for fixed slots in unaligned stack.

Even if it would be better to avoid using a fixed slots in some case, as long as fixed slots continue to exist this patch seems like the correct change.

Feb 24 2020, 9:53 AM · Restricted Project

Feb 22 2020

jyknight added inline comments to D75009: [Diagnostic] Improve discoverability of ftabstop for misleading indentation.
Feb 22 2020, 11:44 AM · Restricted Project

Feb 21 2020

jyknight accepted D74996: [arcconfig] Delete subproject arcconfigs.
Feb 21 2020, 4:02 PM · Restricted Project, Restricted Project, Restricted Project, Restricted Project, Restricted Project, Restricted Project
jyknight requested changes to D72579: Evaluate __{c11_,}atomic_is_lock_free to 0 (avoid libcall) if larger than MaxAtomicPromoteWidth.

This isn't correct.

Feb 21 2020, 10:41 AM · Restricted Project

Feb 20 2020

jyknight added a comment to D74918: Add method to TargetInfo to get CPU cache line size.

As I've mentioned before, depending on what this will be used for, "64" is not a _useful_ answer if you want to know how your memory accesses will behave on modern intel x86 CPUs, despite being the "correct" answer for cache-line size. But, modern intel CPUs fetch aligned-pairs of cache-lines together. Therefore, you'll start to see cache interference effects as-if the cache-lines were 128 bytes, rather than 64 bytes. (This may or may not also apply to AMD cpus, I haven't looked into it.)

Feb 20 2020, 1:53 PM · Restricted Project

Feb 19 2020

jyknight added a comment to D69868: Allow "callbr" to return non-void values.

Ugh, it's actually been that long, hasn't it...I'm really sorry about that. :(

Feb 19 2020, 2:27 PM · Restricted Project, Restricted Project

Feb 15 2020

jyknight updated the diff for D74678: [libcxxabi] Replace names with single letters in test_demangle..
Feb 15 2020, 2:19 PM · Restricted Project
jyknight created D74678: [libcxxabi] Replace names with single letters in test_demangle..
Feb 15 2020, 2:19 PM · Restricted Project

Feb 10 2020

jyknight added a comment to D67983: [ObjC] Diagnose implicit type coercion from ObjC 'Class' to object pointer types..

Your error looks correct to me -- "self" in a classmethod is not an instance, but the class itself. And while instances of X implement "Delegate", the Class does not.

Got it, thanks! We might need to add a flag to allow the old behavior temporarily to accommodate our codebase while it's being updated.

Feb 10 2020, 12:45 PM · Restricted Project

Feb 7 2020

jyknight added a comment to D67983: [ObjC] Diagnose implicit type coercion from ObjC 'Class' to object pointer types..

@jyknight @rjmccall I'm not sure this change is 100% fine. For example, the following code no longer compiles with ARC:

@protocol Delegate
@end

@interface X <Delegate>

@end

@interface Y
@property id<Delegate> d;
@end

@implementation X

+ (void)foo:(Y *)y with:(X*)x {
 y.d = self; // error: assigning to 'id<Delegate>' from incompatible type 'const Class'
 y.d = x;     // fine
}

@end
Feb 7 2020, 7:33 AM · Restricted Project

Jan 23 2020

jyknight added a comment to D73253: [llvm] Fix file ignoring inside directories.

I think we should instead remove the entire "tracked independently" parts, because that's no longer the recommended directory layout. And also remove these "global" ignores which you moved, because they're already in /.gitignore, and thus don't need to be in /llvm/.gitignore

Jan 23 2020, 12:06 PM · Restricted Project
jyknight added a comment to D69868: Allow "callbr" to return non-void values.

The idea of moving the copies to a new MachineBasicBlock seems a reasonable solution. That said, it does mean there will be allocatable physical registers which are live-in to the following block, which is generally not allowed. As far as I can tell, I _think_ that should be fine in this particular circumstance, but I'm a little uneasy that I might be missing some reason why it'll be incorrect.

Jan 23 2020, 11:07 AM · Restricted Project, Restricted Project

Jan 15 2020

jyknight added a comment to D67847: [Support] make report_fatal_error `abort` instead of `exit`.
In D67847#1693694, @rnk wrote:

The abort() function raises SIGABRT, for which the default behavior is to trigger a coredump. Do we actually want that behavior?

Either _exit() (long available extension, which lld already uses) or quick_exit() (the new C standard way) seem possibly preferable?

It's easy to crash LLVM even without this change, so anyone running LLVM better have core dumps configured the way they like. Failed asserts raise SIGABRT already, for example, and we have tons of those. The only difference is that now end users, who may have never configured this stuff, may see more crashes. If it's a problem, I'd consider it QoI: we should fix the report_fatal_error to use proper diagnostics anyway so end users don't see them as often, just as we would treat any other user-visible crash.

Jan 15 2020, 12:32 PM · Restricted Project, Restricted Project
Herald added a project to D55057: [Headers] Make max_align_t match GCC's implementation.: Restricted Project.
Jan 15 2020, 7:28 AM · Restricted Project

Jan 14 2020

jyknight added a comment to D71848: Allow the discovery of Android NDK's triple-prefixed binaries..

Since this change is not android-only, please update change description, and update some non-android tests.

Jan 14 2020, 3:34 PM · Restricted Project

Jan 10 2020

jyknight added inline comments to D69868: Allow "callbr" to return non-void values.
Jan 10 2020, 3:39 PM · Restricted Project, Restricted Project
jyknight added inline comments to D69868: Allow "callbr" to return non-void values.
Jan 10 2020, 12:15 PM · Restricted Project, Restricted Project
jyknight added a comment to D64830: [Xtensa 4/10] Add basic *td files with Xtensa architecture description..

@andreisfr @jyknight @ivanbaev Ping? Are there any news concerning these pull requests?

Jan 10 2020, 9:53 AM · Restricted Project

Jan 9 2020

jyknight reopened D69876: Support output constraints on "asm goto".

Reopening, since this didn't actually land yet. BTW, this review still has the wrong contents in the latest uploaded-diff (showing llvm changes, not clang changes).

Jan 9 2020, 11:48 AM · Restricted Project, Restricted Project
jyknight added inline comments to D69876: Support output constraints on "asm goto".
Jan 9 2020, 11:48 AM · Restricted Project, Restricted Project
jyknight accepted D72001: CodeGen: Use LLT instead of EVT in getRegisterByName.
Jan 9 2020, 9:45 AM · Restricted Project
jyknight added a comment to D72457: GlobalISel: Move getLLTForMVT/getMVTForLLT.

Can you add a comment noting the deficiencies of these conversions?

Jan 9 2020, 9:45 AM · Restricted Project

Jan 7 2020

jyknight added a comment to D69876: Support output constraints on "asm goto".

I think you pushed the incorrect change? This was the clang half, but now it's showing the LLVM half. Can you re-upload the diff for the clang half?

Jan 7 2020, 2:45 PM · Restricted Project, Restricted Project
jyknight added inline comments to D71848: Allow the discovery of Android NDK's triple-prefixed binaries..
Jan 7 2020, 2:38 PM · Restricted Project

Jan 6 2020

jyknight added inline comments to D72001: CodeGen: Use LLT instead of EVT in getRegisterByName.
Jan 6 2020, 1:39 PM · Restricted Project
jyknight added a comment to D72197: [MC][ELF] Emit a relocation if target is defined in the same section and is non-local.

I think the question I have: What is the value (I don't mean to assume there is no value, but I want to understand the specific use case) of supporting this if the full generality of symbol interposition is not supported? (is there a well defined use case that is usable with this patch and doesn't need the full generality? Or is the use case going to be subtly broken if it changes even slighlty and happens to trip over another part of LLVM that doesn't support symbol interposition? (in which case this is a great patch, but only as part of an effort to fully support the general case))

Jan 6 2020, 11:45 AM · Restricted Project
jyknight accepted D69876: Support output constraints on "asm goto".

LGTM modulo some minor wording.

Jan 6 2020, 9:56 AM · Restricted Project, Restricted Project
jyknight added inline comments to D72001: CodeGen: Use LLT instead of EVT in getRegisterByName.
Jan 6 2020, 9:47 AM · Restricted Project
jyknight added a comment to D72197: [MC][ELF] Emit a relocation if target is defined in the same section and is non-local.

I don't see the behavior you say gnu as has.

Jan 6 2020, 8:31 AM · Restricted Project
jyknight added a comment to D72197: [MC][ELF] Emit a relocation if target is defined in the same section and is non-local.

I don't see the behavior you say gnu as has.

Jan 6 2020, 7:01 AM · Restricted Project

Jan 2 2020

jyknight created D72111: Move inline-asm setup/cleanup directives outside of the "#APP" "#NO_APP" comment..
Jan 2 2020, 2:09 PM · Restricted Project
jyknight committed rGb747607bec4f: update_test_checks: match CHECK-EMPTY lines for replacement. (authored by jyknight).
update_test_checks: match CHECK-EMPTY lines for replacement.
Jan 2 2020, 9:21 AM

Dec 19 2019

jyknight added a comment to D71037: [Diagnostic] Add ftabstop to -Wmisleading-indentation.

BTW, the commit here should mark llvm.org/PR44324 as fixed by it.

Dec 19 2019, 7:23 AM · Restricted Project
jyknight added a comment to D71037: [Diagnostic] Add ftabstop to -Wmisleading-indentation.

after fixing the bug rsmith spotted. there is no test failures in clang + clang-tool + clangd with UseTabStopOption = true (i found this quite surprising but i double checked). the previous test result were incorrect due to this bug sorry. however I am still not sure that UseTabStopOption = true is the right default for every uses of getSpellingColumnNumber.

Dec 19 2019, 7:13 AM · Restricted Project

Dec 17 2019

jyknight added a comment to D70157: Align branches within 32-Byte boundary(NOP padding).

.push_align_branch_boundary [N,] [instruction,]*

I'd like to raise again the possibility of using a more general region directive to denote "It is allowable to add prefixes/nops before instructions in this region if the assembler wants to", as I'd started discussing in https://reviews.llvm.org/D71238#1786885 (but let's move the discussion here).

James, I think this proposal is increasing the scope of this proposal too much. It also ignores some of the use cases identified and described in the writeup (i.e. the scoped semantics). I'm open to discussing such a feature more generally, but I'd prefer to see a more narrowly focused feature immediately.

Dec 17 2019, 1:08 PM · Restricted Project, Restricted Project
jyknight added a comment to D70157: Align branches within 32-Byte boundary(NOP padding).

I'd like to raise again the possibility of using a more general region directive to denote "It is allowable to add prefixes/nops before instructions in this region if the assembler wants to", as I'd started discussing in https://reviews.llvm.org/D71238#1786885 (but let's move the discussion here).

Dec 17 2019, 8:43 AM · Restricted Project, Restricted Project

Dec 16 2019

jyknight added a comment to D71238: Align non-fused branches within 32-Byte boundary (basic case).

I do like the idea of generalizing bundle_lock to mean generally "keep these instructions together and don't introduce anything extraneous in the middle". So, ".boundary_align <argument>" would apply to the next instruction-or-instruction-bundle, and will emit nops at its location, such that the next instruction is guaranteed to have the proper "within but not ending at a given 2**<arg> block" alignment.

Dec 16 2019, 3:47 PM · Restricted Project
jyknight added a comment to D71046: Support Intel "l" suffixes for x86_64 R8-R15 registers..

Yes, I had expressed a dislike to adding these alises, as there's no pressing need to do so.

Dec 16 2019, 12:43 PM · Restricted Project

Dec 10 2019

jyknight added a comment to D71238: Align non-fused branches within 32-Byte boundary (basic case).

Honestly, I both strongly agree with this, and see the argument as a somewhat lost cause. I think in practical terms, we *will* have to support something which works for both compiler generated assembly and legacy hand written assembly. I dislike that fact and the design it encourages, but it's reality.

Dec 10 2019, 10:37 AM · Restricted Project

Dec 9 2019

jyknight added a comment to D71238: Align non-fused branches within 32-Byte boundary (basic case).

In function X86AsmBackend::alignBranchesBegin, I added the comment

// The prefix or nop isn't inserted if the previous item is hard code, which
// may be used to hardcode an instruction, since there is no clear instruction
// boundary.

I'm sorry if I didn't make it clear. As far as i am concerned, I think the hard code case should be dealt with.

I'm still not following. Can you explain the use case here? What test case differs based on the presence of the "hard code" support in the original patch?

Dec 9 2019, 8:03 PM · Restricted Project
jyknight accepted D71106: [MC] Delete MCCodePadder.
Dec 9 2019, 6:50 AM · Restricted Project

Dec 5 2019

jyknight added a comment to D70157: Align branches within 32-Byte boundary(NOP padding).

I've been digging through the code for this for the last day or so. This is a new area for me, so it's possible I'm off base, but I have some concerns about the current design.

First, there appears to already be support for instruction bundling and alignment in the assembler today. I stumbled across the .bundle_align_mode, .bundle_start, and .bundle_end mechanism (https://lists.llvm.org/pipermail/llvm-dev/2012-December/056723.html) which seems to *heavily* overlap with this proposal. I suspect that the compiler support suggested by James and myself earlier in this thread could be implemented on to this existing mechanism.

Second, the new callbacks and infrastructure added appear to overlap heavily w/the MCCodePadding infrastructure. (Which, admitted, appears unused and untested.)

Dec 5 2019, 3:31 PM · Restricted Project, Restricted Project

Dec 4 2019

jyknight committed rG90fce46fa6c9: Fix crash-on-invalid-code in lambda constant evaluation. (authored by jyknight).
Fix crash-on-invalid-code in lambda constant evaluation.
Dec 4 2019, 12:16 PM

Nov 26 2019

jyknight added a comment to D70157: Align branches within 32-Byte boundary(NOP padding).

I have some other concerns about the code itself, but after pondering this a little bit, I'd like to instead bring up some rather more general concerns about the overall approach used here -- with some suggestions. (As these comments are not really comments on the _code_, but on the overall strategy, they also apply to the gnu binutils patch for this same feature.)

Nov 26 2019, 8:07 AM · Restricted Project, Restricted Project

Nov 21 2019

jyknight added a comment to D70157: Align branches within 32-Byte boundary(NOP padding).

Thanks for the comments, they help a little. But it's still somewhat confusing, so let me write down what seems to be happening:

Nov 21 2019, 3:15 PM · Restricted Project, Restricted Project
jyknight added a comment to D70508: Fix an offset underflow bug in DwarfExpression when describing small values with subregisters.

The test dwarf-size-field-overflow.test now takes over 60 seconds to run, which seems quite excessive.

Is there no way to test this in a less-expensive manner?

I almost halved the number of iterations in 1b9ef. On my iMac Pro in Release+Asserts it's running in 1.18s wall clock time now. Note however that even before my change it was only taking ~5s. Were you measuring a debug build?

Nov 21 2019, 10:05 AM · Restricted Project, debug-info
jyknight committed rGd3fec7fb4561: LLD: Don't use the stderrOS stream in link before it's reassigned. (authored by jyknight).
LLD: Don't use the stderrOS stream in link before it's reassigned.
Nov 21 2019, 7:58 AM
jyknight closed D70492: LLD: Assign the stderrOS and stdoutOS globals to the new argument values, before using via enableColors..
Nov 21 2019, 7:58 AM · Restricted Project

Nov 20 2019

jyknight added a comment to D70508: Fix an offset underflow bug in DwarfExpression when describing small values with subregisters.

The test dwarf-size-field-overflow.test now takes over 60 seconds to run, which seems quite excessive.

Nov 20 2019, 7:56 PM · Restricted Project, debug-info
jyknight committed rGe47d6da8a5dd: D'oh. Fix assert after a84922916e6eddf701b39fbd7fe0222cb0fee1d6. (Which was… (authored by jyknight).
D'oh. Fix assert after a84922916e6eddf701b39fbd7fe0222cb0fee1d6. (Which was…
Nov 20 2019, 7:29 PM
jyknight committed rGa84922916e6e: Fix unused variable warning in NDEBUG mode after… (authored by jyknight).
Fix unused variable warning in NDEBUG mode after…
Nov 20 2019, 7:11 PM
jyknight committed rGe74b326b1f50: Rename 'DenormalMode' in CommandFlags.inc to 'DenormalFPMath', as its option is… (authored by jyknight).
Rename 'DenormalMode' in CommandFlags.inc to 'DenormalFPMath', as its option is…
Nov 20 2019, 9:17 AM
jyknight created D70492: LLD: Assign the stderrOS and stdoutOS globals to the new argument values, before using via enableColors..
Nov 20 2019, 7:18 AM · Restricted Project

Nov 16 2019

jyknight committed rGbf142fc43347: MCObjectStreamer: assign MCSymbols in the dummy fragment to offset 0. (authored by jyknight).
MCObjectStreamer: assign MCSymbols in the dummy fragment to offset 0.
Nov 16 2019, 6:53 AM