Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[CIR][CodeGen] emit cir.zero for constant string literals #373

Merged
merged 2 commits into from
Jan 4, 2024

Conversation

Lancern
Copy link
Member

@Lancern Lancern commented Dec 30, 2023

This PR addresses #248 .

Currently string literals are always lowered to a cir.const_array attribute even if the string literal only contains null bytes. This patch make the CodeGen emits cir.zero for these string literals.

Currently string literals are always lowered to a cir.const_array
attribute even if the string literal only contains null bytes. This
patch make the CodeGen emits cir.zero for these string literals.
Copy link
Collaborator

@sitio-couto sitio-couto left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good. Just a minor suggestion.

clang/lib/CIR/CodeGen/CIRGenModule.cpp Outdated Show resolved Hide resolved
@bcardosolopes bcardosolopes merged commit c5e1756 into llvm:main Jan 4, 2024
6 checks passed
@Lancern Lancern deleted the cir-zero-in-const-str branch January 5, 2024 13:39
lanza pushed a commit that referenced this pull request Jan 29, 2024
This PR addresses #248 .

Currently string literals are always lowered to a `cir.const_array`
attribute even if the string literal only contains null bytes. This
patch make the CodeGen emits `cir.zero` for these string literals.
lanza pushed a commit that referenced this pull request Mar 23, 2024
This PR addresses #248 .

Currently string literals are always lowered to a `cir.const_array`
attribute even if the string literal only contains null bytes. This
patch make the CodeGen emits `cir.zero` for these string literals.
eZWALT pushed a commit to eZWALT/clangir that referenced this pull request Mar 24, 2024
This PR addresses llvm#248 .

Currently string literals are always lowered to a `cir.const_array`
attribute even if the string literal only contains null bytes. This
patch make the CodeGen emits `cir.zero` for these string literals.
eZWALT pushed a commit to eZWALT/clangir that referenced this pull request Mar 24, 2024
This PR addresses llvm#248 .

Currently string literals are always lowered to a `cir.const_array`
attribute even if the string literal only contains null bytes. This
patch make the CodeGen emits `cir.zero` for these string literals.
lanza pushed a commit that referenced this pull request Apr 29, 2024
This PR addresses #248 .

Currently string literals are always lowered to a `cir.const_array`
attribute even if the string literal only contains null bytes. This
patch make the CodeGen emits `cir.zero` for these string literals.
lanza pushed a commit that referenced this pull request Apr 29, 2024
This PR addresses #248 .

Currently string literals are always lowered to a `cir.const_array`
attribute even if the string literal only contains null bytes. This
patch make the CodeGen emits `cir.zero` for these string literals.
eZWALT pushed a commit to eZWALT/clangir that referenced this pull request Apr 29, 2024
This PR addresses llvm#248 .

Currently string literals are always lowered to a `cir.const_array`
attribute even if the string literal only contains null bytes. This
patch make the CodeGen emits `cir.zero` for these string literals.
lanza pushed a commit that referenced this pull request Apr 29, 2024
This PR addresses #248 .

Currently string literals are always lowered to a `cir.const_array`
attribute even if the string literal only contains null bytes. This
patch make the CodeGen emits `cir.zero` for these string literals.
ivanmurashko added a commit to ivanmurashko/clangir that referenced this pull request May 19, 2024
The patch resolves [issue llvm#248](llvm#248). It can be considered a subsequent patch to [llvm#373](llvm#373), where the case of empty strings was processed.

The new patch adds processing for non-empty strings that may contain trailing zeros, such as:
```
char big_string[100000] = "123";
```
That is converted to
```
@big_string = #cir.const_array<"123" : !cir.array<!s8i x 3>, trailing_zeros> : !cir.array<!s8i x 100000>
```

It's worth noting that ordinary strings that are terminated with a single zero also get the trailing zeros, for instance
```
char string[] = "whatnow";
```
Is converted to
```
@string = #cir.const_array<"whatnow" : !cir.array<!s8i x 7>, trailing_zeros> : !cir.array<!s8i x 8>
```
bcardosolopes pushed a commit that referenced this pull request May 24, 2024
)

The patch resolves [issue
#248](#248). It can be considered
a subsequent patch to [#373](#373),
where the case of empty strings was processed.

The new patch adds processing for non-empty strings that may contain
trailing zeros, such as:
```
char big_string[100000] = "123";
```
That is converted to
```
@big_string = #cir.const_array<"123" : !cir.array<!s8i x 3>, trailing_zeros> : !cir.array<!s8i x 100000>
```
pysuxing pushed a commit to pysuxing/llvm-project that referenced this pull request Jul 17, 2024
…lvm#617)

The patch resolves [issue
llvm#248](llvm/clangir#248). It can be considered
a subsequent patch to [llvm#373](llvm/clangir#373),
where the case of empty strings was processed.

The new patch adds processing for non-empty strings that may contain
trailing zeros, such as:
```
char big_string[100000] = "123";
```
That is converted to
```
@big_string = #cir.const_array<"123" : !cir.array<!s8i x 3>, trailing_zeros> : !cir.array<!s8i x 100000>
```
bruteforceboy pushed a commit to bruteforceboy/clangir that referenced this pull request Oct 2, 2024
This PR addresses llvm#248 .

Currently string literals are always lowered to a `cir.const_array`
attribute even if the string literal only contains null bytes. This
patch make the CodeGen emits `cir.zero` for these string literals.
Hugobros3 pushed a commit to shady-gang/clangir that referenced this pull request Oct 2, 2024
This PR addresses llvm#248 .

Currently string literals are always lowered to a `cir.const_array`
attribute even if the string literal only contains null bytes. This
patch make the CodeGen emits `cir.zero` for these string literals.
Hugobros3 pushed a commit to shady-gang/clangir that referenced this pull request Oct 2, 2024
…lvm#617)

The patch resolves [issue
llvm#248](llvm#248). It can be considered
a subsequent patch to [llvm#373](llvm#373),
where the case of empty strings was processed.

The new patch adds processing for non-empty strings that may contain
trailing zeros, such as:
```
char big_string[100000] = "123";
```
That is converted to
```
@big_string = #cir.const_array<"123" : !cir.array<!s8i x 3>, trailing_zeros> : !cir.array<!s8i x 100000>
```
smeenai pushed a commit to smeenai/clangir that referenced this pull request Oct 9, 2024
…lvm#617)

The patch resolves [issue
llvm#248](llvm#248). It can be considered
a subsequent patch to [llvm#373](llvm#373),
where the case of empty strings was processed.

The new patch adds processing for non-empty strings that may contain
trailing zeros, such as:
```
char big_string[100000] = "123";
```
That is converted to
```
@big_string = #cir.const_array<"123" : !cir.array<!s8i x 3>, trailing_zeros> : !cir.array<!s8i x 100000>
```
keryell pushed a commit to keryell/clangir that referenced this pull request Oct 19, 2024
This PR addresses llvm#248 .

Currently string literals are always lowered to a `cir.const_array`
attribute even if the string literal only contains null bytes. This
patch make the CodeGen emits `cir.zero` for these string literals.
keryell pushed a commit to keryell/clangir that referenced this pull request Oct 19, 2024
…lvm#617)

The patch resolves [issue
llvm#248](llvm#248). It can be considered
a subsequent patch to [llvm#373](llvm#373),
where the case of empty strings was processed.

The new patch adds processing for non-empty strings that may contain
trailing zeros, such as:
```
char big_string[100000] = "123";
```
That is converted to
```
@big_string = #cir.const_array<"123" : !cir.array<!s8i x 3>, trailing_zeros> : !cir.array<!s8i x 100000>
```
lanza pushed a commit that referenced this pull request Nov 5, 2024
This PR addresses #248 .

Currently string literals are always lowered to a `cir.const_array`
attribute even if the string literal only contains null bytes. This
patch make the CodeGen emits `cir.zero` for these string literals.
lanza pushed a commit that referenced this pull request Nov 5, 2024
)

The patch resolves [issue
#248](#248). It can be considered
a subsequent patch to [#373](#373),
where the case of empty strings was processed.

The new patch adds processing for non-empty strings that may contain
trailing zeros, such as:
```
char big_string[100000] = "123";
```
That is converted to
```
@big_string = #cir.const_array<"123" : !cir.array<!s8i x 3>, trailing_zeros> : !cir.array<!s8i x 100000>
```
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants