History log of /llvm-project/llvm/lib/AsmParser/LLParser.cpp (Results 1 – 25 of 1196)
Revision (<<< Hide revision tags) (Show revision tags >>>) Date Author Comments
# 29441e4f 29-Jan-2025 Nikita Popov <npopov@redhat.com>

[IR] Convert from nocapture to captures(none) (#123181)

This PR removes the old `nocapture` attribute, replacing it with the new
`captures` attribute introduced in #116990. This change is
intended

[IR] Convert from nocapture to captures(none) (#123181)

This PR removes the old `nocapture` attribute, replacing it with the new
`captures` attribute introduced in #116990. This change is
intended to be essentially NFC, replacing existing uses of `nocapture`
with `captures(none)` without adding any new analysis capabilities.
Making use of non-`none` values is left for a followup.

Some notes:
* `nocapture` will be upgraded to `captures(none)` by the bitcode
reader.
* `nocapture` will also be upgraded by the textual IR reader. This is to
make it easier to use old IR files and somewhat reduce the test churn in
this PR.
* Helper APIs like `doesNotCapture()` will check for `captures(none)`.
* MLIR import will convert `captures(none)` into an `llvm.nocapture`
attribute. The representation in the LLVM IR dialect should be updated
separately.

show more ...


Revision tags: llvmorg-21-init
# 5139c90d 20-Jan-2025 Nikita Popov <npopov@redhat.com>

[LLParser] Avoid PointerType::get() with type argument (NFC)

Use the methods accepting LLVMContext instead.


# 94e9813a 15-Jan-2025 Kazu Hirata <kazu@google.com>

[AsmParser] Avoid repeated map lookups (NFC) (#123015)


Revision tags: llvmorg-19.1.7
# 22e9024c 13-Jan-2025 Nikita Popov <npopov@redhat.com>

[IR] Introduce captures attribute (#116990)

This introduces the `captures` attribute as described in:
https://discourse.llvm.org/t/rfc-improvements-to-capture-tracking/81420

This initial patch o

[IR] Introduce captures attribute (#116990)

This introduces the `captures` attribute as described in:
https://discourse.llvm.org/t/rfc-improvements-to-capture-tracking/81420

This initial patch only introduces the IR/bitcode support for the
attribute and its in-memory representation as `CaptureInfo`. This will
be followed by a patch to upgrade and remove the `nocapture` attribute,
and then by actual inference/analysis support.

Based on the RFC feedback, I've used a syntax similar to the `memory`
attribute, though the only "location" that can be specified is `ret`.

I've added some pretty extensive documentation to LangRef on the
semantics. One non-obvious bit here is that using ptrtoint will not
result in a "return-only" capture, even if the ptrtoint result is only
used in the return value. Without this requirement we wouldn't be able
to continue ordinary capture analysis on the return value.

show more ...


# 5a3f1aca 19-Dec-2024 Pedro Lobo <pedro.lobo@tecnico.ulisboa.pt>

[LLParser] Remove redundant code (NFC) (#120478)


Revision tags: llvmorg-19.1.6
# 05137cc5 12-Dec-2024 Pedro Lobo <pedro.lobo@tecnico.ulisboa.pt>

[AsmParser] Convert empty arrays to `poison` (#119754)

Empty arrays can be converted to `poison` instead of `undef`.


# ecbe4d1e 04-Dec-2024 John Brawn <john.brawn@arm.com>

[IR] Allow fast math flags on fptrunc and fpext (#115894)

This consists of:
* Make these instructions part of FPMathOperator.
* Adjust bitcode/ir readers/writers to expect fast math flags on thes

[IR] Allow fast math flags on fptrunc and fpext (#115894)

This consists of:
* Make these instructions part of FPMathOperator.
* Adjust bitcode/ir readers/writers to expect fast math flags on these
instructions.
* Make IRBuilder set the fast math flags on these instructions.
* Update langref and release notes.
* Update a bunch of tests. Some of these are due to InstCombineCasts
incorrectly adding fast math flags to fptrunc, which will be fixed in a
later patch.

show more ...


Revision tags: llvmorg-19.1.5
# 7b2a708a 27-Nov-2024 Ramkumar Ramachandra <ramkumar.ramachandra@codasip.com>

AsmParser: parse zeroinitializer, poison constants (#117809)

LLParser::parseConstantValue is missing support for parsing
zeroinitializer and poison constants. Fix this.


Revision tags: llvmorg-19.1.4
# 67fb2686 13-Nov-2024 Augusto Noronha <anoronha@apple.com>

[DebugInfo] Add a specification attribute to LLVM DebugInfo (#115362)

Add a specification attribute to LLVM DebugInfo, which is analogous
to DWARF's DW_AT_specification. According to the DWARF spec

[DebugInfo] Add a specification attribute to LLVM DebugInfo (#115362)

Add a specification attribute to LLVM DebugInfo, which is analogous
to DWARF's DW_AT_specification. According to the DWARF spec:
"A debugging information entry that represents a declaration that
completes another (earlier) non-defining declaration may have a
DW_AT_specification attribute whose value is a reference to the
debugging information entry representing the non-defining declaration."

This patch allows types to be specifications of other types. This is
used by Swift to represent generic types. For example, given this Swift
program:

```
struct MyStruct<T> {
let t: T
}

let variable = MyStruct<Int>(t: 43)
```

The Swift compiler emits (roughly) an unsubtituted type for MyStruct<T>:
```
DW_TAG_structure_type
DW_AT_name ("MyStruct")
// "$s1w8MyStructVyxGD" is a Swift mangled name roughly equivalent to
// MyStruct<T>
DW_AT_linkage_name ("$s1w8MyStructVyxGD")
// other attributes here
```
And a specification for MyStruct<Int>:
```
DW_TAG_structure_type
DW_AT_specification (<link to "MyStruct">)
// "$s1w8MyStructVySiGD" is a Swift mangled name equivalent to
// MyStruct<Int>
DW_AT_linkage_name ("$s1w8MyStructVySiGD")
DW_AT_byte_size (0x08)
// other attributes here
```

show more ...


# f6617d65 06-Nov-2024 Augusto Noronha <anoronha@apple.com>

[DebugInfo] Add num_extra_inhabitants to debug info (#112590)

An extra inhabitant is a bit pattern that does not represent a valid
value for instances of a given type. The number of extra inhabitan

[DebugInfo] Add num_extra_inhabitants to debug info (#112590)

An extra inhabitant is a bit pattern that does not represent a valid
value for instances of a given type. The number of extra inhabitants is
the number of those bit configurations.

This is used by Swift to save space when composing types. For example,
because Bool only needs 2 bit patterns to represent all of its values
(true and false), an Optional<Bool> only occupies 1 byte in memory by
using a bit configuration that is unused by Bool. Which bit patterns are
unused are part of the ABI of the language.

Since Swift generics are not monomorphized, by using dynamic libraries
you can have generic types whose size, alignment, etc, are known only
at runtime (which is why this feature is needed).

This patch adds num_extra_inhabitants to LLVM-IR debug info and in DWARF
as an Apple extension.

show more ...


# 4831e0aa 05-Nov-2024 Jay Foad <jay.foad@amd.com>

[IR] Disallow recursive types (#114799)

StructType::setBody is the only mechanism that can potentially create
recursion in the type system. Add a runtime check that it is not
actually used to crea

[IR] Disallow recursive types (#114799)

StructType::setBody is the only mechanism that can potentially create
recursion in the type system. Add a runtime check that it is not
actually used to create recursion.

If the check fails, report an error from LLParser, BitcodeReader and
IRLinker. In all other cases assert that the check succeeds.

In future StructType::setBody will be removed in favor of specifying the
body when the type is created, so any performance hit from this runtime
check will be temporary.

show more ...


Revision tags: llvmorg-19.1.3
# 90cdc03e 25-Oct-2024 Jay Foad <jay.foad@amd.com>

[IR] Fix undiagnosed cases of structs containing scalable vectors (#113455)

Type::isScalableTy and StructType::containsScalableVectorType failed to
detect some cases of structs containing scalable

[IR] Fix undiagnosed cases of structs containing scalable vectors (#113455)

Type::isScalableTy and StructType::containsScalableVectorType failed to
detect some cases of structs containing scalable vectors because
containsScalableVectorType did not call back into isScalableTy to check
the element types. Fix this, which requires sharing the same Visited set
in both functions. Also change the external API so that callers are
never required to pass in a Visited set, and normalize the naming to
isScalableTy.

show more ...


# 9efb07f2 15-Oct-2024 elhewaty <mohamedatef1698@gmail.com>

[IR] Add `samesign` flag to icmp instruction (#111419)

Inspired by
https://discourse.llvm.org/t/rfc-signedness-independent-icmps/81423


Revision tags: llvmorg-19.1.2
# fa789dff 11-Oct-2024 Rahul Joshi <rjoshi@nvidia.com>

[NFC] Rename `Intrinsic::getDeclaration` to `getOrInsertDeclaration` (#111752)

Rename the function to reflect its correct behavior and to be consistent
with `Module::getOrInsertFunction`. This is a

[NFC] Rename `Intrinsic::getDeclaration` to `getOrInsertDeclaration` (#111752)

Rename the function to reflect its correct behavior and to be consistent
with `Module::getOrInsertFunction`. This is also in preparation of
adding a new `Intrinsic::getDeclaration` that will have behavior similar
to `Module::getFunction` (i.e, just lookup, no creation).

show more ...


# 15de2394 11-Oct-2024 Serge Pavlov <sepavloff@gmail.com>

[IR] Allow MDString in operand bundles (#110805)

This change implements support of metadata strings in operand bundle
values. It makes possible calls like:

call void @some_func(i32 %x) [ "fo

[IR] Allow MDString in operand bundles (#110805)

This change implements support of metadata strings in operand bundle
values. It makes possible calls like:

call void @some_func(i32 %x) [ "foo"(i32 42, metadata !"abc") ]

It requires some extension of the bitcode serialization. As SSA values
and metadata are stored in different tables, there must be a way to
distinguish them during deserialization. It is implemented by putting a
special marker before the metadata index. The marker cannot be treated
as a reference to any SSA value, so it unambiguously identifies
metadata. It allows extending the bitcode serialization without breaking
compatibility.

Metadata as operand bundle values are intended to be used in
floating-point function calls. They would represent the same information
as now is passed by the constrained intrinsic arguments.

show more ...


# 7fa0d05a 08-Oct-2024 Kazu Hirata <kazu@google.com>

[AsmParser] Simplify code with std::map::operator[] (NFC) (#111480)


# 3bace7ef 07-Oct-2024 Rahul Joshi <rjoshi@nvidia.com>

[LLVM][AsmParser] Make error reporting of lexer errors more precise (#111077)

When the lexer hits an error during assembly parsing, it just logs the
error in the `ErrorMsg` object, and it's possibl

[LLVM][AsmParser] Make error reporting of lexer errors more precise (#111077)

When the lexer hits an error during assembly parsing, it just logs the
error in the `ErrorMsg` object, and it's possible that error gets
overwritten later in by the parser with a more generic error message.
This makes some errors reported by the LLVM's asm parser less precise.

Address this by not having the parser overwrite the message logged by
the lexer by assigning error messages generated by the lexer higher
"priority" than those generated by parser and overwriting the error
message only if its same or higher priority.

Update several Assembler unit test to now check the more precise error
messaged reported by the LLVM's AsmParser.

show more ...


Revision tags: llvmorg-19.1.1
# 1b7b3b8d 30-Sep-2024 Rahul Joshi <rjoshi@nvidia.com>

[NFC] Move intrinsic related functions to Intrinsic namespace (#110125)

Move static functions `Function::lookupIntrinsicID` and
`Function::isTargetIntrinsic` to Intrinsic namespace.


# 91b565bd 27-Sep-2024 Amr Hesham <amr96@programmer.net>

[LLVM][NFC] Remove redundant copy parameter in lambda (#110156)

Remove redundant copy parameter in lambda

Fixes: #95643


# e03f4271 19-Sep-2024 Jay Foad <jay.foad@amd.com>

[LLVM] Use {} instead of std::nullopt to initialize empty ArrayRef (#109133)

It is almost always simpler to use {} instead of std::nullopt to
initialize an empty ArrayRef. This patch changes all oc

[LLVM] Use {} instead of std::nullopt to initialize empty ArrayRef (#109133)

It is almost always simpler to use {} instead of std::nullopt to
initialize an empty ArrayRef. This patch changes all occurrences I could
find in LLVM itself. In future the ArrayRef(std::nullopt_t) constructor
could be deprecated or removed.

show more ...


Revision tags: llvmorg-19.1.0
# 51d3829d 07-Sep-2024 Kazu Hirata <kazu@google.com>

[ThinLTO] Shrink FunctionSummary by 8 bytes (#107706)

During the ThinLTO indexing step for one of our large applications, we
create 4 million instances of FunctionSummary.

Changing:

std::ve

[ThinLTO] Shrink FunctionSummary by 8 bytes (#107706)

During the ThinLTO indexing step for one of our large applications, we
create 4 million instances of FunctionSummary.

Changing:

std::vector<EdgeTy> CallGraphEdgeList;

to:

SmallVector<EdgeTy, 0> CallGraphEdgeList;

in FunctionSummary reduces the size of each instance by 8 bytes. The
rest of the patch makes the same change to other places so that the
types stay compatible across function boundaries.

show more ...


# d4ddf06b 06-Sep-2024 Mingming Liu <mingmingl@google.com>

[NFCI]Remove EntryCount from FunctionSummary and clean up surrounding synthetic count passes. (#107471)

The primary motivation is to remove `EntryCount` from `FunctionSummary`.
This frees 8 bytes o

[NFCI]Remove EntryCount from FunctionSummary and clean up surrounding synthetic count passes. (#107471)

The primary motivation is to remove `EntryCount` from `FunctionSummary`.
This frees 8 bytes out of `sizeof(FunctionSummary)` (136 bytes as of
https://github.com/llvm/llvm-project/commit/64498c54831bed9cf069e0923b9b73678c6451d8).

While I'm at it, this PR clean up {SummaryBasedOptimizations,
SyntheticCountsPropagation} since they were not used and there are no
plans to further invest on them.

With this patch, bitcode writer writes a placeholder 0 at the byte
offset of `EntryCount` and bitcode reader can parse the function entry
count at the correct byte offset. Added a TODO to stop writing
`EntryCount` and bump bitcode version

show more ...


# 0ffa377c 06-Sep-2024 Kazu Hirata <kazu@google.com>

[ThinLTO] Shrink GlobalValueSummary by 8 bytes (#107342)

During the ThinLTO indexing step for one of our large applications, we
create 7.5 million instances of GlobalValueSummary.

Changing:

[ThinLTO] Shrink GlobalValueSummary by 8 bytes (#107342)

During the ThinLTO indexing step for one of our large applications, we
create 7.5 million instances of GlobalValueSummary.

Changing:

std::vector<ValueInfo> RefEdgeList;

to:

SmallVector<ValueInfo, 0> RefEdgeList;

in GlobalValueSummary reduces the size of each instance by 8 bytes.
The rest of the patch makes the same change to other places so that
the types stay compatible across function boundaries.

show more ...


# 4af249fe 06-Sep-2024 anjenner <161845516+anjenner@users.noreply.github.com>

Add usub_cond and usub_sat operations to atomicrmw (#105568)

These both perform conditional subtraction, returning the minuend and
zero respectively, if the difference is negative.


# 2f6e4ed3 05-Sep-2024 Jay Foad <jay.foad@amd.com>

[IR] Check parameters of target extension types on construction (#107268)

Since IR Types are immutable it makes sense to check them on
construction instead of in the IR Verifier pass.

This patch

[IR] Check parameters of target extension types on construction (#107268)

Since IR Types are immutable it makes sense to check them on
construction instead of in the IR Verifier pass.

This patch checks that some TargetExtTypes are well-formed in the sense
that they have the expected number of type parameters and integer
parameters. When called from LLParser it gives a diagnostic message.
When called from anywhere else it just asserts that they are
well-formed.

show more ...


12345678910>>...48