[Flang] Adjust pass plugin support to match Clang (#174006)
- Pass plugins can use LLVM options, matching #173287.
- Pass plugins can run a hook before codegen, matching #171872.
- Pass plugins are now tested whenever they can be built, matching
#171998.
Plugins currently don't work on AIX, tracked in #172203.
[llvm-objdump][NFC] Use EnumEntry from Support (#174155)
Don't duplicate the EnumEntry type in llvm-objdump.
Spliced off from #173868, where this is required to avoid the name
collision.
[BOLT][BTI] Fix assertions checking getNumOperands (#174600)
Several BTI-related functions are checking that a call MCInst has one
non-annotation operand.
This patch changes these checks to use MCPlus::getNumPrimeOperands,
instead of getNumOperands.
Testing:
added annotations to existing gtests to serve as regression
tests. These now also explicitly check getNumOperands and getNumPrimeOperands
usage on the annotated MCInsts.
[Clang] prevent assertion failure by avoiding always-dependent lambdas in constraint-related nested scopes (#173776)
Fixes #172814
---
This patch resolves an issue in which a lambda could be classified as
always-dependent while traversing nested scopes, causing an assertion
failure during capture handling.
Changes in PR #93206 expanded scope-based dependency handling in a way
that could mark certain lambdas as always-dependent when no
template-dependent context was present.
This update refines the criteria for assigning
`LambdaDependencyKind::LDK_AlwaysDependent` and applies it only after
traversal reaches a distinct enclosing function scope with
template-dependent parameters.
Reapply [ConstantInt] Disable implicit truncation in ConstantInt::get() (#171456)
Reapply after additional fixes.
-----
Disable implicit truncation in the ConstantInt constructor by default.
This means that it needs to be passed a signed/unsigned (depending on
the IsSigned flag) value matching the bit width.
The intention is to prevent the recurring bug where people write
something like `ConstantInt::get(Ty, -1)`, and this "works" until `Ty`
is larger than 64-bit and then the value is incorrect due to missing
type extension.
This is the continuation of
https://github.com/llvm/llvm-project/pull/112670, which originally
allowed implicit truncation in this constructor to reduce initial scope
of the change.