[X86] isHorizontalBinOp - discard any shuffle that resolves to an all sentinel shuffle mask (#175931)
If the mask resolves to all-undef/zero then it can't be used - these can
theoretically appear if we're combining before the source operands have
constant folded away (in this case due to the avg intrinsic not folding
away until later into legalisation) - yet another case of working around
a poorly topological sorted DAG
Fixes #175802
[analyzer] Invalidate the object in opaque ctor calls regardless if an arg refers to it (#170887)
The conservative call invalidation logic is a bit complicated, and would
deserve some refactoring.
When a call has some arguments, we escape them. Except, if its a pointer
to constant storage - because we assume that the program honors
const-correctness.
In that case, it puts it in the "Preserved" list to keep its contents.
However, if we had a constructor call that's job is to initialize an
object had a const pointer/reference parameter then the invalidation
didn't take place.
This meant that if the object was on the stack, that we start warning
about uninitialized fields when accessed. (See the example) Similar
could be achieved on the heap of course.
We should have honored the fact that the constructor should initialize
[7 lines not shown]
[Metadata][profcheck] Handle identical MDNodes in getMergedProfMetadata
This fixes a bug where !prof metadata was dropped from SelectInsts when GVN simplified/merged them.
Guarded by -profcheck-disable-metadata-fixes. Exposed by the tests in
Transforms/SampleProfile.
[AArch64] Add lowering for NEON saturating shift intrinsics (#171485)
This patch extends on the work done in #161840 and adds lowering with
bitcasts for saturating shift intrinsics.
[flang][NFC] Converted five tests from old lowering to new lowering (part 8) (#175881)
Tests converted from test/Lower: block.f90, call-copy-in-out.f90,
call-implicit.f90, call.f90, character-compare.f90
[DAG] SDPatternMatch - Implement m_IntrinsicWOChain matchers (#175626)
Resolve #174436
Implemented matchers for intrinsics.
The usage looks something like:
```cpp
sd_match(N , m_IntrinsicWOChain<Intrinsic::${INTRINSIC_ID}>(/* match possible operands of the intrinsic */));
```
[clang] Fix TemplateInstantiator crash transforming loop hint argument (#172289)
A generic lambda inside a generic function is (currently) instantiated twice. Thus the argument expression of a loop hint inside such a lambda may still be value dependent after the first instantiation and we must protect against this in `TransformLoopHintAttr`. We also fix a bug in this function where the special handling of an unroll(0|1) hint could be applied to *other* loop hints, if they receive an argument 1 after instantiation.