hfinkel (Hal Finkel)
User

Projects

User does not belong to any projects.

User Details

User Since
Nov 16 2012, 6:02 PM (283 w, 1 d)

Recent Activity

Today

hfinkel accepted D45876: [doc] Removed obsolete -count-aa from AliasAnalysis documentation.

L:GTM

Sun, Apr 22, 4:29 PM
hfinkel added a comment to D45872: [DA] Enable -da-delinearize by default.

We probably need to also add code that ensures that the arrays that result from delinearization remain within bounds. Without this code, the resulting checks are likely incorrect.

Sun, Apr 22, 3:50 PM

Thu, Apr 12

hfinkel added a comment to D45510: [RFC][AliasAnalysis][BasicAA] Return MayAlias for the pointer plus variable offset to structure object member.

The LLVM version, of course, does not make this undefined behavior AFAIK (which is a source of much imprecision)

Thu, Apr 12, 8:49 PM

Mon, Apr 9

hfinkel accepted D42381: [DA] Correct size parameter from dependency analysis to AA.

But in here:

for (int i = 0; i < n; i++) {
  A[i + 2] = i;
  ... = A[i];

the load and store are mayalias. We need the fact that the underlying obects are mustalias (otherwise a number of tests are failing in a way that looks like it's discovering less dependencies, more are confused)

Mon, Apr 9, 4:08 AM
hfinkel added a comment to D42381: [DA] Correct size parameter from dependency analysis to AA.

Does the fallback add anything?

We need to detect things like this as mustalias (to find the flow dependence), not mayalias (confused):

for (int i = 0; i < n; i++) {
  A[i + 2] = i;
  ... = A[i];

Unless you mean just do the alias analysis like this:?

return AA->alias(GetUnderlyingObject(LocA.Ptr), MemoryLocation::UnknownSize, LocA.AATags, GetUnderlyingObject(LocB.Ptr), MemoryLocation::UnknownSize, LocB.AATags)
Mon, Apr 9, 3:31 AM
hfinkel added a comment to D42381: [DA] Correct size parameter from dependency analysis to AA.

Thanks for the pointers. I've folded the tbaa changes into this patch as they are related. This now checks the alias on the original locations, on the assumption that if they don't alias for any reason then there is no dependency. Then falls back to underlying object.

Mon, Apr 9, 1:34 AM

Fri, Apr 6

hfinkel added inline comments to D42381: [DA] Correct size parameter from dependency analysis to AA.
Fri, Apr 6, 5:19 AM

Wed, Apr 4

hfinkel added inline comments to D42381: [DA] Correct size parameter from dependency analysis to AA.
Wed, Apr 4, 2:56 PM

Mar 21 2018

hfinkel added a comment to D44232: [SimplifyCFG] Create attribute for fuzzing-specific optimizations..

Yea, I think that we should name this something else. It's more than just disabling select formation (which, as we discussed, we'd probably just want to undo in CGP). The problem is optimizations that interfere with the libFuzzer input-value-matching heuristics -- that's really the thing that we need to disable earlier in the pipeline. Thoughts?

no_cfg_select_formation -> no_cfg_cmp_simplification?

Mar 21 2018, 4:16 PM
hfinkel added a comment to D44232: [SimplifyCFG] Create attribute for fuzzing-specific optimizations..

Ping. Any objections to moving forward with this patch?

Mar 21 2018, 2:26 PM

Mar 20 2018

hfinkel added a comment to D44318: [LangRef] describe the default FP environment.

I'm OK with this.

Mar 20 2018, 9:09 AM

Mar 14 2018

hfinkel added inline comments to D44483: [ELF] Add basic support for PPC LE.
Mar 14 2018, 1:57 PM

Mar 8 2018

hfinkel added inline comments to D39386: [Power9] Allow gpr callee saved spills in prologue to vector registers rather than stack.
Mar 8 2018, 7:07 PM
hfinkel added a comment to D44232: [SimplifyCFG] Create attribute for fuzzing-specific optimizations..

Another question: Do we actually want to disable select formation, or, do we want to expand all selects into control flow late in the pipeline (i.e., during instruction selection)? The issue here, as I understand it, is that fuzzing depends on control flow paths to differentiate executions. As a result, we really just don't want to have any selects (we don't want ones that the frontend might generate either).

I don't think we could do it during instruction selection, since SanitizerCoverage instrumentation is inserted before that. But if we could expand selects right before the SanitizerCoverage instrumentation happens (maybe even during the SanitizerCoverage pass?), that would provide even better coverage signal for fuzzing. Of course, that would be significantly more work.

Mar 8 2018, 10:40 AM
hfinkel added a comment to D44232: [SimplifyCFG] Create attribute for fuzzing-specific optimizations..

Another question: Do we actually want to disable select formation, or, do we want to expand all selects into control flow late in the pipeline (i.e., during instruction selection)? The issue here, as I understand it, is that fuzzing depends on control flow paths to differentiate executions. As a result, we really just don't want to have any selects (we don't want ones that the frontend might generate either).

Mar 8 2018, 9:45 AM

Mar 7 2018

hfinkel accepted D40855: [PowerPC] LSR tunings for PowerPC.

LGTM

Mar 7 2018, 1:53 AM

Mar 2 2018

hfinkel accepted D43977: [PowerPC] Do not emit record-form rotates when record-form andi suffices.

LGTM

Mar 2 2018, 9:04 PM
hfinkel added a comment to D44057: [SimplifyCFG] Create attribute to disable simplifyCFG..

Do you actually want to disable all CFG simplifications, or do you just need to disable things that convert from control flow to something else (e.g., select formation)?

Mar 2 2018, 6:56 PM

Feb 23 2018

hfinkel accepted D43677: [PowerPC] Disable shrink-wrapping when PC address is acquired through the link register.

LGTM

Feb 23 2018, 12:03 PM

Feb 22 2018

hfinkel added a comment to D42366: [CodeGen] Fix generation of TBAA tags for may-alias accesses.

I think zero would serve better as the unknown-size value. People who are not aware of TBAA internals would guess that since zero-sized accesses make no sense, they are likely to have some special meaning. Similarly, for code that is supposed to process the size fields of access descriptors zero would be an obvious "illegal size value". In contrast, UINT64_MAX is just a very large number that doesn't hint anything on its special purpose.

My thoughts exactly.

John.

Feb 22 2018, 9:54 AM · Restricted Project

Feb 20 2018

hfinkel added a comment to D42366: [CodeGen] Fix generation of TBAA tags for may-alias accesses.

I'm fine with that plan. LGTM.

Feb 20 2018, 9:39 AM · Restricted Project

Feb 15 2018

hfinkel accepted D41563: [Transforms] Propagate TBAA info in SROA.

LGTM

Feb 15 2018, 10:16 AM

Feb 12 2018

hfinkel accepted D43169: Include <sys/time.h> to get struct timeval definition.

Looks good.

Feb 12 2018, 7:25 PM

Feb 9 2018

hfinkel updated subscribers of D42576: [test-suite] Add prototypes to functions in Olden and MiBench.

I'll just add that what we do in WebAssembly right now for unprototyped functions is to codegen them using the fixed-arg calling convention; at link-time if there are any mismatches between the definition and any calls, then the program has UB, and the resulting WebAssembly module will be invalid. I think this currently has the problem that if the definition does turn out to be vararg, then we have generated an invalid module even though the program is correct (I consider that a bug or shortcoming in our toolchain though). In any case, we do aim to support correct programs with prototypeless functions. If the test suite has non-vararg cases where there are mismatches between the callsites and/or the definition (I have seen that in some other test/benchmark suites), then even though that works on most X86 and ARM ABIs that I know of it's still UB and I'd be in favor of removing it from LLVM's test suite.

  • My reading of the C standard is that using a prototype less declaration and defining that as a vararg functions is invalid in C. If you find bugs in this area we should fix them.

We should eliminate UB from the test suite. I'm also not sure that this is UB, however. Looking at http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf section 6.5.2.2 on Function calls, it seems that this is okay so long as the types actually used to define the function agree with the types used for the call (after default promotion rules are applied). The most relevant text seems to be in p6, " If the number of arguments does not equal the number of parameters, the behavior is undefined. If the function is defined with a type that includes a prototype, and either the prototype ends with an ellipsis (, ...) or the types of the arguments after promotion are not compatible with the types of the parameters, the behavior is undefined."

Feb 9 2018, 11:47 AM
hfinkel added a comment to D42576: [test-suite] Add prototypes to functions in Olden and MiBench.

I'll just add that what we do in WebAssembly right now for unprototyped functions is to codegen them using the fixed-arg calling convention; at link-time if there are any mismatches between the definition and any calls, then the program has UB, and the resulting WebAssembly module will be invalid. I think this currently has the problem that if the definition does turn out to be vararg, then we have generated an invalid module even though the program is correct (I consider that a bug or shortcoming in our toolchain though). In any case, we do aim to support correct programs with prototypeless functions. If the test suite has non-vararg cases where there are mismatches between the callsites and/or the definition (I have seen that in some other test/benchmark suites), then even though that works on most X86 and ARM ABIs that I know of it's still UB and I'd be in favor of removing it from LLVM's test suite.

  • My reading of the C standard is that using a prototype less declaration and defining that as a vararg functions is invalid in C. If you find bugs in this area we should fix them.
Feb 9 2018, 11:46 AM

Feb 8 2018

hfinkel added inline comments to D43079: [TTI CostModel] change default cost of FP ops to 1 (PR36280).
Feb 8 2018, 1:37 PM
hfinkel added inline comments to D43079: [TTI CostModel] change default cost of FP ops to 1 (PR36280).
Feb 8 2018, 12:01 PM

Feb 7 2018

hfinkel added a comment to D41953: [LoopUnroll] Unroll and Jam.

Ping. Anyone interested in unroll and jam? (I wasn't sure who, if anyone, to add as reviewers)

Feb 7 2018, 8:45 PM

Feb 1 2018

hfinkel accepted D41501: [Analysis] Support aggregate access types in TBAA.

A couple comments, but otherwise LGTM.

Feb 1 2018, 8:01 PM

Jan 23 2018

hfinkel accepted D42411: [test-suite] Fix ambigous call to overloaded function isnan.

LGTM

Jan 23 2018, 3:05 PM

Jan 17 2018

hfinkel added a comment to D42191: [RFC] [TargetTransformInfo] Introduce isRegisterRich, it returns true if the target architecture is register-rich..

In part, it looks like you're looking to modify heuristics that prevent increased spilling around calls. I can imagine that, in general, architectures with lots of registers suffer from less of that, but that's really a statement about the ABI of the call, not the architecture itself.

Jan 17 2018, 2:24 PM

Jan 16 2018

hfinkel accepted D41798: [LegalizeDAG] Fix ATOMIC_CMP_SWAP_WITH_SUCCESS legalization..

LGTM

Jan 16 2018, 9:39 AM

Jan 15 2018

hfinkel accepted D41565: [Transforms] Support making mutable versions of new-format TBAA access tags.

LGTM

Jan 15 2018, 11:23 AM
hfinkel added inline comments to D41501: [Analysis] Support aggregate access types in TBAA.
Jan 15 2018, 11:18 AM

Jan 12 2018

hfinkel added a comment to D41283: [InstCombine] Missed optimization in math expression: tan(a) * cos(a) == sin(a).

Why doesn't tan have an LLVM intrinsic like sin/cos?

I don't know

Then we should find out. :)
I should've asked before D41286, but oops.
cc @efriedma in case he knows the history. If not, you should ask on llvm-dev. Maybe it's just not as common to see tan in code, but if we're going to do more trig transforms, I think it would make sense to have uniformity of trig intrinsics, so it's easier to do these folds. Also, if the vectorizers recognize trig functions, it would make it easier for them if we have more intrinsics for these functions?

Jan 12 2018, 10:44 AM

Jan 8 2018

hfinkel accepted D41236: [Nios2] Arithmetic instructions for R1 and R2 ISA..

LGTM

Jan 8 2018, 7:43 PM
hfinkel added a comment to D41689: [SCEVAA] Don't crash on pointers with no dominance relationship..

If we wanted to handle this somehow in SCEVAAResult::alias, can't we just put a dominance check on the values directly instead of trying to examine the SCEVs?

Oh. Yes, that would be simpler. :) Maybe slightly less powerful, depending on the structure of the code.

I think that what AliasSetPrinter is doing is just not well defined

In this case, it's probably worth noting that I have a testcase which doesn't involve aa-eval; BasicAA also makes queries like this (see BasicAAResult::aliasPHI). I can reduce it if that would be interesting.

Jan 8 2018, 7:26 PM
hfinkel added a comment to D40055: [SelectionDAG][X86] Explicitly store the scale in the gather/scatter ISD nodes.

This looks like the right approach to me. I think the previously expressed concern was about making the IR representation overly specific to what current hardware supports. This looks largely orthogonal to me and much less confusing as well.

Jan 8 2018, 7:09 PM

Jan 7 2018

hfinkel accepted D40196: Add functions to MachineLICM to hoist invariant stores..

LGTM

Jan 7 2018, 12:04 PM
hfinkel accepted D41603: [InstCombine] fold min/max tree with common operand (PR35717).

If I'm right about the easy FP cases, I'd like to see those handled in follow-up. Regardless, this LGTM.

Jan 7 2018, 9:20 AM
hfinkel committed rL321962: [LV][VPlan] NFC patch to move LoopVectorizationPlanner class out of….
[LV][VPlan] NFC patch to move LoopVectorizationPlanner class out of…
Jan 7 2018, 8:04 AM
hfinkel closed D41420: [LV][VPlan] NFC patch to move LoopVectorizationPlanner class out of LoopVectorize.cpp.
Jan 7 2018, 8:04 AM

Jan 6 2018

hfinkel accepted D41758: [PowerPC] Fix assertion due to assuming a type is simple..
Jan 6 2018, 9:32 PM
hfinkel added inline comments to D41467: PR35710: Nary reassociation falls into infinite loop.
Jan 6 2018, 9:24 PM
hfinkel accepted D41786: [SLP] Fix PR35628: Count external uses on extra reduction arguments..

LGTM

Jan 6 2018, 9:08 PM
hfinkel accepted D41654: [PowerPC] Add an ISD::TRUNCATE to the legalization for ppc_is_decremented_ctr_nonzero.

In this case the intrinsic returns i1 and the legalization promotes it to i32, but we need to return an i1, to insert a truncate back to i1. The new truncate will get added to worklist and end up being legalized itself, but won't require custom legalization.

Jan 6 2018, 8:28 PM
hfinkel added a comment to D41689: [SCEVAA] Don't crash on pointers with no dominance relationship..

I'm not sure this is the right fix; it seems like I'm working around the underlying issue rather than actually solving it.

Jan 6 2018, 7:41 PM
hfinkel accepted D41338: [CodeGen] lower math intrinsics to finite version of libcalls when possible (PR35672).

LGTM

Jan 6 2018, 6:33 PM
hfinkel accepted D41420: [LV][VPlan] NFC patch to move LoopVectorizationPlanner class out of LoopVectorize.cpp.

Legality and CostModel classes under llvm namespace. Avoiding build warnings.

Jan 6 2018, 6:21 PM
hfinkel added inline comments to D41737: [PowerPC] Try to move the stack pointer update instruction later in the prologue and earlier in the epilogue.
Jan 6 2018, 6:10 PM
hfinkel added a comment to D41236: [Nios2] Arithmetic instructions for R1 and R2 ISA..

Are you planning to soon introduce an asm parser and disassembler so that you can test the encodings? I recommend doing this early do that you can test those along the way.

Jan 6 2018, 6:03 PM
hfinkel added a comment to D41702: Add SysV Abi for PPC64le.

Is the only difference between ppc64 and ppc64le ABIs in the endianness of the values?
If so, could we make one unified ABI which takes the endianness as an argument (in the constructor, or as a template argument, or deduces it from target endiannes, ...) ?

Jan 6 2018, 1:39 PM

Jan 5 2018

hfinkel accepted D41296: Limit size of non-GlobalValue name.

LGTM

Jan 5 2018, 8:02 AM
hfinkel added inline comments to D41296: Limit size of non-GlobalValue name.
Jan 5 2018, 7:35 AM

Jan 4 2018

hfinkel added inline comments to D41467: PR35710: Nary reassociation falls into infinite loop.
Jan 4 2018, 7:08 PM

Jan 3 2018

hfinkel requested changes to D41420: [LV][VPlan] NFC patch to move LoopVectorizationPlanner class out of LoopVectorize.cpp.

LGTM

Jan 3 2018, 4:14 AM
hfinkel accepted D41420: [LV][VPlan] NFC patch to move LoopVectorizationPlanner class out of LoopVectorize.cpp.

LGTM

Jan 3 2018, 3:49 AM
hfinkel added a comment to D39457: [OPENMP] Current status of OpenMP support..

@hfinkel I think you requested this documentation on the mailing list. Can you take a look if it matches your expectations so we can get this bundled in the 6.0 release?

Jan 3 2018, 3:40 AM
hfinkel committed rL321704: [TableGen] Add support of Intrinsics with multiple returns.
[TableGen] Add support of Intrinsics with multiple returns
Jan 3 2018, 3:36 AM
hfinkel closed D32888: TableGen: Add support of Intrinsics with multiple returns.
Jan 3 2018, 3:36 AM

Dec 29 2017

hfinkel added a comment to D41381: [InstSimplify] Missed optimization in math expression: squashing exp(log), log(exp).

Since this hasn't been committed yet, let me ask: why are we doing this in instcombine rather than instsimplify? When no new instructions are created, we generally want that transform in InstSimplify because that makes passes like GVN more powerful. InstSimplify already has "SimplifyIntrinsic", so I think this could fit neatly in there.

Dec 29 2017, 7:17 AM
hfinkel accepted D24926: Added support of configuration files.

LGTM

Dec 29 2017, 7:12 AM

Dec 28 2017

hfinkel added inline comments to D24926: Added support of configuration files.
Dec 28 2017, 4:26 PM
hfinkel added a comment to D39352: [SimplifyCFG] Don't do if-conversion if there is a long dependence chain.

Doing this so early on means that we can't recognize common, direct patterns in terms of select. While perhaps it would be better to go and teach everything to generically reason about either a select or a phi around control flow, that will need a really massive undertaking.

Dec 28 2017, 3:27 PM
hfinkel added inline comments to D41330: [X86] Reduce Store Forward Block issues in HW.
Dec 28 2017, 6:56 AM

Dec 21 2017

hfinkel added a comment to D22792: VecClone Pass.

Thanks for the comments, Hal.

Dec 21 2017, 5:20 PM
hfinkel added a comment to D41104: Set the NoRecurse attribute for the dbg intrinsics..
Dec 21 2017, 9:55 AM
hfinkel accepted D41494: [InlineCost] Find more free binary operations.

It looks like we could do a similar thing in visitCmpInst too (and visitCallSite, however, we'd also need to fix the FIXME about interface inefficiency in CallAnalyzer::simplifyCallSite first?).

Dec 21 2017, 9:40 AM
hfinkel added a comment to D36045: Extend syntax of response files.

Is there any opinion about feasibility of this extension?
This patch is a prerequisite for D24933 (Enable configuration files in clang), which is now accepted.
If it is not acceptable for all response files, then it must be implemented for config files only.

Dec 21 2017, 8:58 AM
hfinkel added a comment to D41296: Limit size of non-GlobalValue name.

Why don't we just cap all names at some point (and then just start adding numbers as we generally do to break degeneracies). It seems like, otherwise, we'll end up with these kinds of fixes in many places. Fixing this in one common place seems better. I'd be much happier, for example, to see a change in lib/IR/Value.cpp where we have:

Dec 21 2017, 8:35 AM
hfinkel added inline comments to D38413: [PowerPC] Add handling for ColdCC calling convention and a pass to mark candidates with coldcc attribute.
Dec 21 2017, 8:09 AM

Dec 20 2017

hfinkel accepted D41399: [CodeGen] Represent array members in new-format TBAA type descriptors.

LGTM. The array accesses here are just being represented as their scalar-access types. In the future, we should update this to represent them as fields in their parent structs, but this is fine for now.

Dec 20 2017, 8:29 PM · Restricted Project
hfinkel accepted D41452: [CodeGen] Fix access sizes in new-format TBAA tags.

LGTM.

Dec 20 2017, 8:24 PM · Restricted Project
hfinkel accepted D41411: [PowerPC] Fix parest build failure in SPEC2017..

LGTM

Dec 20 2017, 8:17 PM
hfinkel accepted D24933: Enable configuration files in clang.

LGTM

Dec 20 2017, 7:23 PM
hfinkel added a comment to D41361: [SimplifyCFG] Avoid quadratic on a predecessors number behavior in instruction sinking..

The question is how you materialize all the immediates. On ARM, at least, the "select" version generates two instructions per PHI node, with a sequence like "mov imm; mowmi imm; mov imm; movwmi imm" etc. while the branchy version generates a branch, where each block has one instruction per PHI node. AArch64 is similar (except that we use "csel" there). x86 is similar; we generate a "mov+mov+cmov" sequence, except for some special cases which get lowered to "lea".

So clearly there's some threshold where the select-based lowering is worse, simply because the processor is executing more instructions. Of course, the exact threshold where the branch is faster probably depends on the target, the length of the critical path, and how predictable the branch is.

Dec 20 2017, 4:44 PM
hfinkel accepted D41464: Expose a TargetMachine::getTargetTransformInfo function.

Refactoring this to move the std::function wrapping into once place (as opposed to repeating it in all backends) seems like a good step in general.

Dec 20 2017, 4:18 PM
hfinkel updated subscribers of D41361: [SimplifyCFG] Avoid quadratic on a predecessors number behavior in instruction sinking..

The change to arm64-jumptable.ll looks fine. I think something is going wrong in avoid-cpsr-rmw.ll.

Since we're not changing logic for generating selects and we're ending up with them now, I assume that it's also a desirable form of IR in this case.

We have thresholds in various places to avoid transforming control flow into straight-line computation if it gets too expensive; they're scattered all over the place, though, so we might not handle it consistently.

Dec 20 2017, 4:10 PM
hfinkel accepted D40448: Add a printing policy for AST dumping.

P-p-p-power ping! :-)

Dec 20 2017, 1:54 PM
hfinkel added a comment to D41338: [CodeGen] lower math intrinsics to finite version of libcalls when possible (PR35672).

and calls to <foo>l/__<foo>l_finite for f128 everywhere else. No?

There are four ways to lower C long double to LLVM IR: fp128, ppc_f128, x86_fp80, and double. If you assume the IR doesn't contain any intrinsic calls which can't be lowered, the logic becomes simpler, but I'm not sure that's a safe assumption.

Dec 20 2017, 1:01 PM
hfinkel added inline comments to D14254: [OpenMP] Initial implementation of OpenMP offloading library - libomptarget device RTLs..
Dec 20 2017, 12:50 PM · Restricted Project
hfinkel added inline comments to D41338: [CodeGen] lower math intrinsics to finite version of libcalls when possible (PR35672).
Dec 20 2017, 12:37 PM
hfinkel added inline comments to D41373: [GISel][RFC]: GlobalISel Combiner prototype.
Dec 20 2017, 11:12 AM
hfinkel added a comment to D41358: [PowerPC] Fix minor bug to avoid a failure in createTailCallBranchInstr.

@hfinkel
Hi Hal,
Thank you for the approval. After doing a bit more investigation I realized that the condition should always be true. Before calling this function we always check that this is a return block. Therefore, I've change it slightly so that the guard is now an assert.

Dec 20 2017, 9:16 AM
hfinkel added inline comments to D41399: [CodeGen] Represent array members in new-format TBAA type descriptors.
Dec 20 2017, 9:00 AM · Restricted Project
hfinkel added a comment to D41286: [InstCombine] Missed optimization in math expression: sin(x) / cos(x) => tan(x).

@hfinkel I'd like to thank you for your help and patience reviewing my patches, as I'm new to the community. I hope it's ok when I include you as a reviewer.

Dec 20 2017, 7:15 AM

Dec 19 2017

hfinkel added inline comments to D41330: [X86] Reduce Store Forward Block issues in HW.
Dec 19 2017, 10:21 PM
hfinkel added a comment to D41338: [CodeGen] lower math intrinsics to finite version of libcalls when possible (PR35672).

Do the finite calls need the double-leading underscores? I saw an existing test with __sqrt_finite, so I assume we want those, but I'm not sure if/how the regular calls acquire the underscores.

That's just how they're named; the names come from the glibc headers.

Does this make sense for ISD::STRICT_FEXP (the strict version of the node)?

I would guess strict and fast math don't really mix...

Dec 19 2017, 10:13 PM
hfinkel added a comment to D41341: [X86] Disable 512-bit vectors during type legalization for prefer-vector-width.

I looked into trying to add a 512-bit register feature that could be disabled instead like D41096 proposed, but I couldn't find a good way to make the existing command line options work. The tablegen generated subtarget feature system just doesn't allow for a wrapper/alias feature that implies other features.

Dec 19 2017, 9:48 PM
hfinkel added a comment to D40782: [tablegen] Replace strconcat, listconcat by concat.

I use a different approach now, WDYT?

Dec 19 2017, 9:36 PM
hfinkel accepted D41083: DAG: Tolerate non-MemSDNOdes for OPC_RecordMemRef.

LGTM

Dec 19 2017, 9:29 PM
hfinkel accepted D40978: TableGen: Allow setting SDNodeProperties on intrinsics.

LGTM

Dec 19 2017, 9:28 PM
hfinkel added inline comments to D38413: [PowerPC] Add handling for ColdCC calling convention and a pass to mark candidates with coldcc attribute.
Dec 19 2017, 9:23 PM
hfinkel accepted D41358: [PowerPC] Fix minor bug to avoid a failure in createTailCallBranchInstr.

LGTM

Dec 19 2017, 9:12 PM
hfinkel accepted D39352: [SimplifyCFG] Don't do if-conversion if there is a long dependence chain.

LGTM, however, the testing here is fairly light. We should have some cases where we do perform the if conversion because of the DependenceChainLatency check, where we do perform the if conversion because of the IPC check, and because of the BB size check. Also, where the if-converted block has some non-trivial adjustment because of LatencyAdjustment.

Dec 19 2017, 9:10 PM
hfinkel added inline comments to D41373: [GISel][RFC]: GlobalISel Combiner prototype.
Dec 19 2017, 8:28 PM
hfinkel added inline comments to D41342: [InstCombine] Missed optimization in math expression: simplify calls exp functions.
Dec 19 2017, 8:13 PM
hfinkel added inline comments to D41322: [InstCombine] Missed optimization in math expression: squashing sqrt functions.
Dec 19 2017, 8:13 PM
hfinkel added inline comments to D41286: [InstCombine] Missed optimization in math expression: sin(x) / cos(x) => tan(x).
Dec 19 2017, 8:10 PM
hfinkel added inline comments to D41283: [InstCombine] Missed optimization in math expression: tan(a) * cos(a) == sin(a).
Dec 19 2017, 8:06 PM